mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-22 05:03:34 +08:00
mavlink: use reference instead of pointer to access the MAVLink instance from protocol classes
This commit is contained in:
@@ -72,7 +72,7 @@ constexpr uint16_t MavlinkMissionManager::MAX_COUNT[];
|
||||
(_msg.target_component == MAV_COMP_ID_MISSIONPLANNER) || \
|
||||
(_msg.target_component == MAV_COMP_ID_ALL)))
|
||||
|
||||
MavlinkMissionManager::MavlinkMissionManager(Mavlink *mavlink) :
|
||||
MavlinkMissionManager::MavlinkMissionManager(Mavlink &mavlink) :
|
||||
_mavlink(mavlink)
|
||||
{
|
||||
if (!_dataman_init) {
|
||||
@@ -209,7 +209,7 @@ MavlinkMissionManager::update_geofence_count(dm_item_t fence_dataman_id, unsigne
|
||||
} else {
|
||||
|
||||
if (_filesystem_errcount++ < FILESYSTEM_ERRCOUNT_NOTIFY_LIMIT) {
|
||||
_mavlink->send_statustext_critical("Mission storage: Unable to write to microSD\t");
|
||||
_mavlink.send_statustext_critical("Mission storage: Unable to write to microSD\t");
|
||||
events::send(events::ID("mavlink_mission_storage_write_failure2"), events::Log::Critical,
|
||||
"Mission: Unable to write to storage");
|
||||
}
|
||||
@@ -245,7 +245,7 @@ MavlinkMissionManager::update_safepoint_count(dm_item_t safepoint_dataman_id, un
|
||||
} else {
|
||||
|
||||
if (_filesystem_errcount++ < FILESYSTEM_ERRCOUNT_NOTIFY_LIMIT) {
|
||||
_mavlink->send_statustext_critical("Mission storage: Unable to write to microSD\t");
|
||||
_mavlink.send_statustext_critical("Mission storage: Unable to write to microSD\t");
|
||||
events::send(events::ID("mavlink_mission_storage_write_failure3"), events::Log::Critical,
|
||||
"Mission: Unable to write to storage");
|
||||
}
|
||||
@@ -270,7 +270,7 @@ MavlinkMissionManager::send_mission_ack(uint8_t sysid, uint8_t compid, uint8_t t
|
||||
wpa.mission_type = _mission_type;
|
||||
wpa.opaque_id = opaque_id;
|
||||
|
||||
mavlink_msg_mission_ack_send_struct(_mavlink->get_channel(), &wpa);
|
||||
mavlink_msg_mission_ack_send_struct(_mavlink.get_channel(), &wpa);
|
||||
|
||||
PX4_DEBUG("WPM: Send MISSION_ACK type %u to ID %u", wpa.type, wpa.target_system);
|
||||
}
|
||||
@@ -284,7 +284,7 @@ MavlinkMissionManager::send_mission_current(uint16_t seq)
|
||||
wpc.mission_id = _crc32[MAV_MISSION_TYPE_MISSION];
|
||||
wpc.fence_id = _crc32[MAV_MISSION_TYPE_FENCE];
|
||||
wpc.rally_points_id = _crc32[MAV_MISSION_TYPE_RALLY];
|
||||
mavlink_msg_mission_current_send_struct(_mavlink->get_channel(), &wpc);
|
||||
mavlink_msg_mission_current_send_struct(_mavlink.get_channel(), &wpc);
|
||||
|
||||
PX4_DEBUG("WPM: Send MISSION_CURRENT seq %d", seq);
|
||||
}
|
||||
@@ -303,7 +303,7 @@ MavlinkMissionManager::send_mission_count(uint8_t sysid, uint8_t compid, uint16_
|
||||
wpc.mission_type = mission_type;
|
||||
wpc.opaque_id = opaque_id;
|
||||
|
||||
mavlink_msg_mission_count_send_struct(_mavlink->get_channel(), &wpc);
|
||||
mavlink_msg_mission_count_send_struct(_mavlink.get_channel(), &wpc);
|
||||
|
||||
PX4_DEBUG("WPM: Send MISSION_COUNT %u to ID %u, mission type=%i", wpc.count, wpc.target_system, mission_type);
|
||||
}
|
||||
@@ -350,7 +350,7 @@ MavlinkMissionManager::send_mission_item(uint8_t sysid, uint8_t compid, uint16_t
|
||||
break;
|
||||
|
||||
default:
|
||||
_mavlink->send_statustext_critical("Received unknown mission type, abort.\t");
|
||||
_mavlink.send_statustext_critical("Received unknown mission type, abort.\t");
|
||||
events::send(events::ID("mavlink_mission_recv_unknown_mis_type"), events::Log::Error,
|
||||
"Received unknown mission type, abort");
|
||||
break;
|
||||
@@ -368,7 +368,7 @@ MavlinkMissionManager::send_mission_item(uint8_t sysid, uint8_t compid, uint16_t
|
||||
wp.seq = seq;
|
||||
wp.current = (_current_seq == seq) ? 1 : 0;
|
||||
|
||||
mavlink_msg_mission_item_int_send_struct(_mavlink->get_channel(), &wp);
|
||||
mavlink_msg_mission_item_int_send_struct(_mavlink.get_channel(), &wp);
|
||||
|
||||
PX4_DEBUG("WPM: Send MISSION_ITEM_INT seq %u to ID %u", wp.seq, wp.target_system);
|
||||
|
||||
@@ -381,7 +381,7 @@ MavlinkMissionManager::send_mission_item(uint8_t sysid, uint8_t compid, uint16_t
|
||||
wp.seq = seq;
|
||||
wp.current = (_current_seq == seq) ? 1 : 0;
|
||||
|
||||
mavlink_msg_mission_item_send_struct(_mavlink->get_channel(), &wp);
|
||||
mavlink_msg_mission_item_send_struct(_mavlink.get_channel(), &wp);
|
||||
|
||||
PX4_DEBUG("WPM: Send MISSION_ITEM seq %u to ID %u", wp.seq, wp.target_system);
|
||||
}
|
||||
@@ -390,7 +390,7 @@ MavlinkMissionManager::send_mission_item(uint8_t sysid, uint8_t compid, uint16_t
|
||||
send_mission_ack(_transfer_partner_sysid, _transfer_partner_compid, MAV_MISSION_ERROR);
|
||||
|
||||
if (_filesystem_errcount++ < FILESYSTEM_ERRCOUNT_NOTIFY_LIMIT) {
|
||||
mavlink_log_critical(_mavlink->get_mavlink_log_pub(),
|
||||
mavlink_log_critical(_mavlink.get_mavlink_log_pub(),
|
||||
"Mission storage: Unable to read from storage, type: %" PRId8 "\t", (uint8_t)_mission_type);
|
||||
/* EVENT
|
||||
* @description Mission type: {1}
|
||||
@@ -448,7 +448,7 @@ MavlinkMissionManager::send_mission_request(uint8_t sysid, uint8_t compid, uint1
|
||||
wpr.target_component = compid;
|
||||
wpr.seq = seq;
|
||||
wpr.mission_type = _mission_type;
|
||||
mavlink_msg_mission_request_int_send_struct(_mavlink->get_channel(), &wpr);
|
||||
mavlink_msg_mission_request_int_send_struct(_mavlink.get_channel(), &wpr);
|
||||
|
||||
PX4_DEBUG("WPM: Send MISSION_REQUEST_INT seq %u to ID %u", wpr.seq, wpr.target_system);
|
||||
|
||||
@@ -460,13 +460,13 @@ MavlinkMissionManager::send_mission_request(uint8_t sysid, uint8_t compid, uint1
|
||||
wpr.seq = seq;
|
||||
wpr.mission_type = _mission_type;
|
||||
|
||||
mavlink_msg_mission_request_send_struct(_mavlink->get_channel(), &wpr);
|
||||
mavlink_msg_mission_request_send_struct(_mavlink.get_channel(), &wpr);
|
||||
|
||||
PX4_DEBUG("WPM: Send MISSION_REQUEST seq %u to ID %u", wpr.seq, wpr.target_system);
|
||||
}
|
||||
|
||||
} else {
|
||||
_mavlink->send_statustext_critical("ERROR: Waypoint index exceeds list capacity\t");
|
||||
_mavlink.send_statustext_critical("ERROR: Waypoint index exceeds list capacity\t");
|
||||
events::send<uint16_t>(events::ID("mavlink_mission_wp_index_exceeds_list"), events::Log::Error,
|
||||
"Waypoint index eceeds list capacity (maximum: {1})", current_max_item_count());
|
||||
|
||||
@@ -481,7 +481,7 @@ MavlinkMissionManager::send_mission_item_reached(uint16_t seq)
|
||||
|
||||
wp_reached.seq = seq;
|
||||
|
||||
mavlink_msg_mission_item_reached_send_struct(_mavlink->get_channel(), &wp_reached);
|
||||
mavlink_msg_mission_item_reached_send_struct(_mavlink.get_channel(), &wp_reached);
|
||||
|
||||
PX4_DEBUG("WPM: Send MISSION_ITEM_REACHED reached_seq %u", wp_reached.seq);
|
||||
}
|
||||
@@ -490,7 +490,7 @@ void
|
||||
MavlinkMissionManager::send()
|
||||
{
|
||||
// do not send anything over high latency communication
|
||||
if (_mavlink->get_mode() == Mavlink::MAVLINK_MODE_IRIDIUM) {
|
||||
if (_mavlink.get_mode() == Mavlink::MAVLINK_MODE_IRIDIUM) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -509,7 +509,7 @@ MavlinkMissionManager::send()
|
||||
send_mission_current(_current_seq);
|
||||
|
||||
} else {
|
||||
_mavlink->send_statustext_critical("ERROR: wp index out of bounds\t");
|
||||
_mavlink.send_statustext_critical("ERROR: wp index out of bounds\t");
|
||||
events::send<uint16_t, uint16_t>(events::ID("mavlink_mission_wp_index_out_of_bounds"), events::Log::Error,
|
||||
"Waypoint index out of bounds (current {1} \\>= total {2})", mission_result.seq_current, mission_result.seq_total);
|
||||
}
|
||||
@@ -562,7 +562,7 @@ MavlinkMissionManager::send()
|
||||
} else if (_state != MAVLINK_WPM_STATE_IDLE && (_time_last_recv > 0)
|
||||
&& hrt_elapsed_time(&_time_last_recv) > MAVLINK_MISSION_PROTOCOL_TIMEOUT_DEFAULT) {
|
||||
|
||||
_mavlink->send_statustext_critical("Operation timeout\t");
|
||||
_mavlink.send_statustext_critical("Operation timeout\t");
|
||||
events::send(events::ID("mavlink_mission_op_timeout"), events::Log::Error,
|
||||
"Operation timeout, aborting transfer");
|
||||
|
||||
@@ -674,7 +674,7 @@ MavlinkMissionManager::handle_mission_ack(const mavlink_message_t *msg)
|
||||
}
|
||||
|
||||
} else {
|
||||
_mavlink->send_statustext_critical("REJ. WP CMD: partner id mismatch\t");
|
||||
_mavlink.send_statustext_critical("REJ. WP CMD: partner id mismatch\t");
|
||||
events::send(events::ID("mavlink_mission_partner_id_mismatch"), events::Log::Error,
|
||||
"Rejecting waypoint command, component or system ID mismatch");
|
||||
|
||||
@@ -699,7 +699,7 @@ MavlinkMissionManager::handle_mission_set_current(const mavlink_message_t *msg)
|
||||
} else {
|
||||
PX4_ERR("WPM: MISSION_SET_CURRENT seq=%d ERROR: not in list", wpc.seq);
|
||||
|
||||
_mavlink->send_statustext_critical("WPM: WP CURR CMD: Not in list\t");
|
||||
_mavlink.send_statustext_critical("WPM: WP CURR CMD: Not in list\t");
|
||||
events::send(events::ID("mavlink_mission_seq_out_of_bounds"), events::Log::Error,
|
||||
"New mission waypoint sequence out of bounds");
|
||||
}
|
||||
@@ -707,7 +707,7 @@ MavlinkMissionManager::handle_mission_set_current(const mavlink_message_t *msg)
|
||||
} else {
|
||||
PX4_DEBUG("WPM: MISSION_SET_CURRENT ERROR: busy");
|
||||
|
||||
_mavlink->send_statustext_critical("WPM: IGN WP CURR CMD: Busy\t");
|
||||
_mavlink.send_statustext_critical("WPM: IGN WP CURR CMD: Busy\t");
|
||||
events::send(events::ID("mavlink_mission_state_busy"), events::Log::Error,
|
||||
"Mission manager currently busy, ignoring new waypoint index");
|
||||
}
|
||||
@@ -768,7 +768,7 @@ MavlinkMissionManager::handle_mission_request_list(const mavlink_message_t *msg)
|
||||
} else {
|
||||
PX4_DEBUG("WPM: MISSION_REQUEST_LIST ERROR: busy");
|
||||
|
||||
_mavlink->send_statustext_info("Mission download request ignored, already active\t");
|
||||
_mavlink.send_statustext_info("Mission download request ignored, already active\t");
|
||||
events::send(events::ID("mavlink_mission_req_ignored"), events::Log::Warning,
|
||||
"Mission download request ignored, already active");
|
||||
}
|
||||
@@ -843,7 +843,7 @@ MavlinkMissionManager::handle_mission_request_both(const mavlink_message_t *msg)
|
||||
switch_to_idle_state();
|
||||
|
||||
send_mission_ack(_transfer_partner_sysid, _transfer_partner_compid, MAV_MISSION_ERROR);
|
||||
_mavlink->send_statustext_critical("WPM: REJ. CMD: Req. WP was unexpected\t");
|
||||
_mavlink.send_statustext_critical("WPM: REJ. CMD: Req. WP was unexpected\t");
|
||||
events::send(events::ID("mavlink_mission_wp_unexpected"), events::Log::Error,
|
||||
"Unexpected waypoint index, aborting transfer");
|
||||
return;
|
||||
@@ -860,7 +860,7 @@ MavlinkMissionManager::handle_mission_request_both(const mavlink_message_t *msg)
|
||||
switch_to_idle_state();
|
||||
|
||||
send_mission_ack(_transfer_partner_sysid, _transfer_partner_compid, MAV_MISSION_ERROR);
|
||||
_mavlink->send_statustext_critical("WPM: REJ. CMD: Req. WP was unexpected\t");
|
||||
_mavlink.send_statustext_critical("WPM: REJ. CMD: Req. WP was unexpected\t");
|
||||
events::send(events::ID("mavlink_mission_wp_unexpected2"), events::Log::Error,
|
||||
"Unexpected waypoint index, aborting mission transfer");
|
||||
}
|
||||
@@ -869,18 +869,18 @@ MavlinkMissionManager::handle_mission_request_both(const mavlink_message_t *msg)
|
||||
PX4_DEBUG("WPM: MISSION_ITEM_REQUEST(_INT) ERROR: no transfer");
|
||||
|
||||
// Silently ignore this as some OSDs have buggy mission protocol implementations
|
||||
//_mavlink->send_statustext_critical("IGN MISSION_ITEM_REQUEST(_INT): No active transfer");
|
||||
//_mavlink.send_statustext_critical("IGN MISSION_ITEM_REQUEST(_INT): No active transfer");
|
||||
|
||||
} else {
|
||||
PX4_DEBUG("WPM: MISSION_ITEM_REQUEST(_INT) ERROR: busy (state %d).", _state);
|
||||
|
||||
_mavlink->send_statustext_critical("WPM: REJ. CMD: Busy\t");
|
||||
_mavlink.send_statustext_critical("WPM: REJ. CMD: Busy\t");
|
||||
events::send(events::ID("mavlink_mission_mis_req_ignored_busy"), events::Log::Error,
|
||||
"Ignoring mission request, currently busy");
|
||||
}
|
||||
|
||||
} else {
|
||||
_mavlink->send_statustext_critical("WPM: REJ. CMD: partner id mismatch\t");
|
||||
_mavlink.send_statustext_critical("WPM: REJ. CMD: partner id mismatch\t");
|
||||
events::send(events::ID("mavlink_mission_partner_id_mismatch2"), events::Log::Error,
|
||||
"Rejecting mission request command, component or system ID mismatch");
|
||||
|
||||
@@ -1000,7 +1000,7 @@ MavlinkMissionManager::handle_mission_count(const mavlink_message_t *msg)
|
||||
} else {
|
||||
PX4_DEBUG("WPM: MISSION_COUNT ERROR: busy, already receiving seq %u", _transfer_seq);
|
||||
|
||||
_mavlink->send_statustext_critical("WPM: REJ. CMD: Busy\t");
|
||||
_mavlink.send_statustext_critical("WPM: REJ. CMD: Busy\t");
|
||||
events::send(events::ID("mavlink_mission_getlist_busy"), events::Log::Error,
|
||||
"Mission upload busy, already receiving waypoint");
|
||||
|
||||
@@ -1011,7 +1011,7 @@ MavlinkMissionManager::handle_mission_count(const mavlink_message_t *msg)
|
||||
} else {
|
||||
PX4_DEBUG("WPM: MISSION_COUNT ERROR: busy, state %i", _state);
|
||||
|
||||
_mavlink->send_statustext_critical("WPM: IGN MISSION_COUNT: Busy\t");
|
||||
_mavlink.send_statustext_critical("WPM: IGN MISSION_COUNT: Busy\t");
|
||||
events::send(events::ID("mavlink_mission_ignore_mis_count"), events::Log::Error,
|
||||
"Mission upload busy, ignoring MISSION_COUNT");
|
||||
send_mission_ack(_transfer_partner_sysid, _transfer_partner_compid, MAV_MISSION_ERROR);
|
||||
@@ -1088,7 +1088,7 @@ MavlinkMissionManager::handle_mission_item_both(const mavlink_message_t *msg)
|
||||
} else {
|
||||
PX4_DEBUG("WPM: MISSION_ITEM ERROR: no transfer");
|
||||
|
||||
_mavlink->send_statustext_critical("IGN MISSION_ITEM: No transfer\t");
|
||||
_mavlink.send_statustext_critical("IGN MISSION_ITEM: No transfer\t");
|
||||
events::send(events::ID("mavlink_mission_no_transfer"), events::Log::Error,
|
||||
"Ignoring mission item, no transfer in progress");
|
||||
send_mission_ack(_transfer_partner_sysid, _transfer_partner_compid, MAV_MISSION_ERROR);
|
||||
@@ -1099,7 +1099,7 @@ MavlinkMissionManager::handle_mission_item_both(const mavlink_message_t *msg)
|
||||
} else {
|
||||
PX4_DEBUG("WPM: MISSION_ITEM ERROR: busy, state %i", _state);
|
||||
|
||||
_mavlink->send_statustext_critical("IGN MISSION_ITEM: Busy\t");
|
||||
_mavlink.send_statustext_critical("IGN MISSION_ITEM: Busy\t");
|
||||
events::send(events::ID("mavlink_mission_mis_item_busy"), events::Log::Error,
|
||||
"Ignoring mission item, busy");
|
||||
send_mission_ack(_transfer_partner_sysid, _transfer_partner_compid, MAV_MISSION_ERROR);
|
||||
@@ -1113,7 +1113,7 @@ MavlinkMissionManager::handle_mission_item_both(const mavlink_message_t *msg)
|
||||
if (ret != PX4_OK) {
|
||||
PX4_DEBUG("WPM: MISSION_ITEM ERROR: seq %u invalid item", wp.seq);
|
||||
|
||||
_mavlink->send_statustext_critical("IGN MISSION_ITEM: Invalid item\t");
|
||||
_mavlink.send_statustext_critical("IGN MISSION_ITEM: Invalid item\t");
|
||||
events::send(events::ID("mavlink_mission_mis_item_invalid"), events::Log::Error,
|
||||
"Ignoring mission item, invalid item");
|
||||
|
||||
@@ -1208,7 +1208,7 @@ MavlinkMissionManager::handle_mission_item_both(const mavlink_message_t *msg)
|
||||
break;
|
||||
|
||||
default:
|
||||
_mavlink->send_statustext_critical("Received unknown mission type, abort.\t");
|
||||
_mavlink.send_statustext_critical("Received unknown mission type, abort.\t");
|
||||
events::send(events::ID("mavlink_mission_unknown_mis_type"), events::Log::Error,
|
||||
"Received unknown mission type, abort");
|
||||
break;
|
||||
@@ -1220,7 +1220,7 @@ MavlinkMissionManager::handle_mission_item_both(const mavlink_message_t *msg)
|
||||
send_mission_ack(_transfer_partner_sysid, _transfer_partner_compid, MAV_MISSION_ERROR);
|
||||
|
||||
if (write_failed) {
|
||||
_mavlink->send_statustext_critical("Unable to write on micro SD\t");
|
||||
_mavlink.send_statustext_critical("Unable to write on micro SD\t");
|
||||
events::send(events::ID("mavlink_mission_storage_failure"), events::Log::Error,
|
||||
"Mission: unable to write to storage");
|
||||
}
|
||||
@@ -1361,7 +1361,7 @@ MavlinkMissionManager::handle_mission_clear_all(const mavlink_message_t *msg)
|
||||
}
|
||||
|
||||
} else {
|
||||
_mavlink->send_statustext_critical("WPM: IGN CLEAR CMD: Busy\t");
|
||||
_mavlink.send_statustext_critical("WPM: IGN CLEAR CMD: Busy\t");
|
||||
events::send(events::ID("mavlink_mission_ignore_clear"), events::Log::Error,
|
||||
"Ignoring mission clear command, busy");
|
||||
|
||||
@@ -1839,7 +1839,7 @@ void MavlinkMissionManager::copy_params_from_mavlink_to_mission_item(struct miss
|
||||
void MavlinkMissionManager::check_active_mission()
|
||||
{
|
||||
// do not send anything over high latency communication
|
||||
if (_mavlink->get_mode() == Mavlink::MAVLINK_MODE_IRIDIUM) {
|
||||
if (_mavlink.get_mode() == Mavlink::MAVLINK_MODE_IRIDIUM) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user