mirror of https://github.com/ArduPilot/ardupilot
GCS_MAVLink: refactor code into new retry_deferred method
This commit is contained in:
parent
fdac13d3d3
commit
0c5f66dc59
|
@ -191,7 +191,10 @@ public:
|
|||
|
||||
// send queued parameters if needed
|
||||
void send_queued_parameters(void);
|
||||
|
||||
|
||||
// push send_message() messages and queued statustext messages etc:
|
||||
void retry_deferred();
|
||||
|
||||
/*
|
||||
send a MAVLink message to all components with this vehicle's system id
|
||||
This is a no-op if no routes to components have been learned
|
||||
|
@ -411,6 +414,8 @@ private:
|
|||
virtual void handle_change_alt_request(AP_Mission::Mission_Command &cmd) = 0;
|
||||
void handle_common_mission_message(mavlink_message_t *msg);
|
||||
|
||||
void push_deferred_messages();
|
||||
|
||||
void lock_channel(mavlink_channel_t chan, bool lock);
|
||||
|
||||
mavlink_signing_t signing;
|
||||
|
@ -458,6 +463,8 @@ public:
|
|||
void send_message(enum ap_message id);
|
||||
void send_mission_item_reached_message(uint16_t mission_index);
|
||||
void send_home(const Location &home) const;
|
||||
// push send_message() messages and queued statustext messages etc:
|
||||
void retry_deferred();
|
||||
void data_stream_send();
|
||||
void update();
|
||||
virtual void setup_uarts(AP_SerialManager &serial_manager);
|
||||
|
|
|
@ -755,16 +755,8 @@ mission_ack:
|
|||
return mission_is_complete;
|
||||
}
|
||||
|
||||
// send a message using mavlink, handling message queueing
|
||||
void GCS_MAVLINK::send_message(enum ap_message id)
|
||||
void GCS_MAVLINK::push_deferred_messages()
|
||||
{
|
||||
uint8_t i, nextid;
|
||||
|
||||
if (id == MSG_HEARTBEAT) {
|
||||
save_signing_timestamp(false);
|
||||
}
|
||||
|
||||
// see if we can send the deferred messages, if any:
|
||||
while (num_deferred_messages != 0) {
|
||||
if (!try_send_message(deferred_messages[next_deferred_message])) {
|
||||
break;
|
||||
|
@ -775,12 +767,25 @@ void GCS_MAVLINK::send_message(enum ap_message id)
|
|||
}
|
||||
num_deferred_messages--;
|
||||
}
|
||||
}
|
||||
|
||||
// MSG_RETRY_DEFERRED is a "marker" message only used to push the queue
|
||||
if (id == MSG_RETRY_DEFERRED) {
|
||||
return;
|
||||
void GCS_MAVLINK::retry_deferred()
|
||||
{
|
||||
push_deferred_messages();
|
||||
}
|
||||
|
||||
// send a message using mavlink, handling message queueing
|
||||
void GCS_MAVLINK::send_message(enum ap_message id)
|
||||
{
|
||||
uint8_t i, nextid;
|
||||
|
||||
if (id == MSG_HEARTBEAT) {
|
||||
save_signing_timestamp(false);
|
||||
}
|
||||
|
||||
// see if we can send the deferred messages, if any:
|
||||
push_deferred_messages();
|
||||
|
||||
// if there are no deferred messages, attempt to send straight away:
|
||||
if (num_deferred_messages == 0) {
|
||||
if (try_send_message(id)) {
|
||||
|
@ -1284,6 +1289,16 @@ void GCS::send_message(enum ap_message id)
|
|||
}
|
||||
}
|
||||
|
||||
void GCS::retry_deferred()
|
||||
{
|
||||
for (uint8_t i=0; i<num_gcs(); i++) {
|
||||
if (chan(i).initialised) {
|
||||
chan(i).retry_deferred();
|
||||
}
|
||||
}
|
||||
service_statustext();
|
||||
}
|
||||
|
||||
void GCS::data_stream_send()
|
||||
{
|
||||
for (uint8_t i=0; i<num_gcs(); i++) {
|
||||
|
|
Loading…
Reference in New Issue