GCS_MAVLink: handle message interval commands as both long and int

This commit is contained in:
Peter Barker 2023-09-28 17:28:07 +10:00 committed by Randy Mackay
parent c1110d4b43
commit 423a88f9cd
2 changed files with 18 additions and 18 deletions

View File

@ -580,10 +580,10 @@ protected:
void deadlock_sem(void);
// reset a message interval via mavlink:
MAV_RESULT handle_command_set_message_interval(const mavlink_command_long_t &packet);
MAV_RESULT handle_command_get_message_interval(const mavlink_command_long_t &packet);
MAV_RESULT handle_command_set_message_interval(const mavlink_command_int_t &packet);
MAV_RESULT handle_command_get_message_interval(const mavlink_command_int_t &packet);
bool get_ap_message_interval(ap_message id, uint16_t &interval_ms) const;
MAV_RESULT handle_command_request_message(const mavlink_command_long_t &packet);
MAV_RESULT handle_command_request_message(const mavlink_command_int_t &packet);
MAV_RESULT handle_rc_bind(const mavlink_command_long_t &packet);

View File

@ -2847,7 +2847,7 @@ MAV_RESULT GCS_MAVLINK::handle_command_do_aux_function(const mavlink_command_lon
return MAV_RESULT_ACCEPTED;
}
MAV_RESULT GCS_MAVLINK::handle_command_set_message_interval(const mavlink_command_long_t &packet)
MAV_RESULT GCS_MAVLINK::handle_command_set_message_interval(const mavlink_command_int_t &packet)
{
return set_message_interval((uint32_t)packet.param1, (int32_t)packet.param2);
}
@ -2917,7 +2917,7 @@ uint8_t GCS::get_channel_from_port_number(uint8_t port_num)
return UINT8_MAX;
}
MAV_RESULT GCS_MAVLINK::handle_command_request_message(const mavlink_command_long_t &packet)
MAV_RESULT GCS_MAVLINK::handle_command_request_message(const mavlink_command_int_t &packet)
{
const uint32_t mavlink_id = (uint32_t)packet.param1;
const ap_message id = mavlink_id_to_ap_message_id(mavlink_id);
@ -2949,7 +2949,7 @@ bool GCS_MAVLINK::get_ap_message_interval(ap_message id, uint16_t &interval_ms)
return false;
}
MAV_RESULT GCS_MAVLINK::handle_command_get_message_interval(const mavlink_command_long_t &packet)
MAV_RESULT GCS_MAVLINK::handle_command_get_message_interval(const mavlink_command_int_t &packet)
{
if (txspace() < PAYLOAD_SIZE(chan, MESSAGE_INTERVAL) + PAYLOAD_SIZE(chan, COMMAND_ACK)) {
return MAV_RESULT_TEMPORARILY_REJECTED;
@ -4840,18 +4840,6 @@ MAV_RESULT GCS_MAVLINK::handle_command_long_packet(const mavlink_command_long_t
result = handle_command_do_aux_function(packet);
break;
case MAV_CMD_SET_MESSAGE_INTERVAL:
result = handle_command_set_message_interval(packet);
break;
case MAV_CMD_GET_MESSAGE_INTERVAL:
result = handle_command_get_message_interval(packet);
break;
case MAV_CMD_REQUEST_MESSAGE:
result = handle_command_request_message(packet);
break;
default:
result = try_command_long_as_command_int(packet, msg);
break;
@ -5167,6 +5155,18 @@ MAV_RESULT GCS_MAVLINK::handle_command_int_packet(const mavlink_command_int_t &p
case MAV_CMD_STORAGE_FORMAT:
return handle_command_storage_format(packet, msg);
#endif
// support for dealing with streamrate for a specific message and
// requesting a message instance:
case MAV_CMD_SET_MESSAGE_INTERVAL:
return handle_command_set_message_interval(packet);
case MAV_CMD_GET_MESSAGE_INTERVAL:
return handle_command_get_message_interval(packet);
case MAV_CMD_REQUEST_MESSAGE:
return handle_command_request_message(packet);
}
return MAV_RESULT_UNSUPPORTED;