mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-11-13 21:41:35 +08:00
mavlink: integrate MavlinkULog into the main Mavlink task & receiver
This commit is contained in:
@@ -266,6 +266,10 @@ MavlinkReceiver::handle_message(mavlink_message_t *msg)
|
||||
handle_message_serial_control(msg);
|
||||
break;
|
||||
|
||||
case MAVLINK_MSG_ID_LOGGING_ACK:
|
||||
handle_message_logging_ack(msg);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -380,6 +384,16 @@ MavlinkReceiver::handle_message_command_long(mavlink_message_t *msg)
|
||||
return;
|
||||
}
|
||||
|
||||
if (cmd_mavlink.command == MAV_CMD_LOGGING_START) {
|
||||
// we already instanciate the streaming object, because at this point we know on which
|
||||
// mavlink channel streaming was requested. But in fact it's possible that the logger is
|
||||
// not even running. The main mavlink thread takes care of this by waiting for an ack
|
||||
// from the logger.
|
||||
_mavlink->try_start_ulog_streaming();
|
||||
} else if (cmd_mavlink.command == MAV_CMD_LOGGING_STOP) {
|
||||
_mavlink->request_stop_ulog_streaming();
|
||||
}
|
||||
|
||||
struct vehicle_command_s vcmd;
|
||||
|
||||
memset(&vcmd, 0, sizeof(vcmd));
|
||||
@@ -1220,6 +1234,18 @@ MavlinkReceiver::handle_message_serial_control(mavlink_message_t *msg)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MavlinkReceiver::handle_message_logging_ack(mavlink_message_t *msg)
|
||||
{
|
||||
mavlink_logging_ack_t logging_ack;
|
||||
mavlink_msg_logging_ack_decode(msg, &logging_ack);
|
||||
|
||||
MavlinkULog *ulog_streaming = _mavlink->get_ulog_streaming();
|
||||
if (ulog_streaming) {
|
||||
ulog_streaming->handle_ack(logging_ack);
|
||||
}
|
||||
}
|
||||
|
||||
switch_pos_t
|
||||
MavlinkReceiver::decode_switch_pos(uint16_t buttons, unsigned sw)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user