|
QGroundControl
Ground Control Station for MAVLink Drones
|
Coordinates MAV_CMD_REQUEST_MESSAGE workflows: per-component queueing, ack/message correlation, duplicate suppression, and timeout handling for the requested message. More...
#include <RequestMessageCoordinator.h>
Inheritance diagram for RequestMessageCoordinator:
Collaboration diagram for RequestMessageCoordinator:Public Member Functions | |
| RequestMessageCoordinator (Vehicle *vehicle, MavCommandQueue *commandQueue) | |
| ~RequestMessageCoordinator () | |
| void | requestMessage (RequestMessageResultHandler resultHandler, void *resultHandlerData, int compId, int messageId, float param1=0.0f, float param2=0.0f, float param3=0.0f, float param4=0.0f, float param5=0.0f) |
| void | handleReceivedMessage (const mavlink_message_t &message) |
| void | stop () |
| Clear pending state without firing callbacks (used during vehicle shutdown). | |
| void | cancelRequests (void *resultHandlerData) |
Static Public Member Functions | |
| static QString | failureCodeToString (RequestMessageResultHandlerFailureCode_t failureCode) |
Additional Inherited Members | |
Public Types inherited from VehicleTypes | |
| enum | MavCmdResultFailureCode_t { MavCmdResultCommandResultOnly , MavCmdResultFailureNoResponseToCommand , MavCmdResultFailureDuplicateCommand } |
| enum | RequestMessageResultHandlerFailureCode_t { RequestMessageNoFailure , RequestMessageFailureCommandError , RequestMessageFailureCommandNotAcked , RequestMessageFailureMessageNotReceived , RequestMessageFailureDuplicate } |
| typedef void(* | MavCmdProgressHandler) (void *progressHandlerData, int compId, const mavlink_command_ack_t &ack) |
| Callback for sendMavCommandWithHandler which handles MAV_RESULT_IN_PROGRESS acks. | |
| typedef void(* | MavCmdResultHandler) (void *resultHandlerData, int compId, const mavlink_command_ack_t &ack, MavCmdResultFailureCode_t failureCode) |
| Callback for sendMavCommandWithHandler which handles all non-IN_PROGRESS acks. | |
| typedef struct VehicleTypes::MavCmdAckHandlerInfo_s | MavCmdAckHandlerInfo_t |
| Callback info bundle for sendMavCommandWithHandler. | |
| typedef void(* | RequestMessageResultHandler) (void *resultHandlerData, MAV_RESULT commandResult, RequestMessageResultHandlerFailureCode_t failureCode, const mavlink_message_t &message) |
| Callback for requestMessage — delivered when the ack/message pair resolves or a failure occurs. | |
Static Public Attributes inherited from VehicleTypes | |
| static const int | versionNotSetValue = -1 |
Coordinates MAV_CMD_REQUEST_MESSAGE workflows: per-component queueing, ack/message correlation, duplicate suppression, and timeout handling for the requested message.
Layers on top of MavCommandQueue for the actual command send + ack callback.
Definition at line 20 of file RequestMessageCoordinator.h.
| RequestMessageCoordinator::RequestMessageCoordinator | ( | Vehicle * | vehicle, |
| MavCommandQueue * | commandQueue | ||
| ) |
Definition at line 11 of file RequestMessageCoordinator.cc.
| RequestMessageCoordinator::~RequestMessageCoordinator | ( | ) |
Definition at line 18 of file RequestMessageCoordinator.cc.
References stop().
| void RequestMessageCoordinator::cancelRequests | ( | void * | resultHandlerData | ) |
Neutralizes any outstanding requests owned by resultHandlerData so their result callback is never invoked. Call this when the callback's context is being destroyed while the vehicle (and this coordinator) keep running.
Definition at line 40 of file RequestMessageCoordinator.cc.
|
static |
Definition at line 375 of file RequestMessageCoordinator.cc.
References VehicleTypes::RequestMessageFailureCommandError, VehicleTypes::RequestMessageFailureCommandNotAcked, VehicleTypes::RequestMessageFailureDuplicate, VehicleTypes::RequestMessageFailureMessageNotReceived, and VehicleTypes::RequestMessageNoFailure.
Referenced by Vehicle::requestMessageResultHandlerFailureCodeToString().
| void RequestMessageCoordinator::handleReceivedMessage | ( | const mavlink_message_t & | message | ) |
Called for every inbound mavlink message so the coordinator can correlate arrivals with outstanding requests and enforce per-request timeouts.
Definition at line 179 of file RequestMessageCoordinator.cc.
References VehicleTypes::RequestMessageFailureMessageNotReceived, VehicleTypes::RequestMessageNoFailure, and QGC::runningUnitTests().
| void RequestMessageCoordinator::requestMessage | ( | RequestMessageResultHandler | resultHandler, |
| void * | resultHandlerData, | ||
| int | compId, | ||
| int | messageId, | ||
| float | param1 = 0.0f, |
||
| float | param2 = 0.0f, |
||
| float | param3 = 0.0f, |
||
| float | param4 = 0.0f, |
||
| float | param5 = 0.0f |
||
| ) |
Requests the vehicle to send the specified message. Will retry a number of times.
| resultHandler | Callback for result |
| resultHandlerData | Opaque data passed back to resultHandler |
Definition at line 322 of file RequestMessageCoordinator.cc.
References Vehicle::compId(), and VehicleTypes::RequestMessageFailureDuplicate.
Referenced by Vehicle::requestMessage().
| void RequestMessageCoordinator::stop | ( | ) |
Clear pending state without firing callbacks (used during vehicle shutdown).
Definition at line 23 of file RequestMessageCoordinator.cc.
Referenced by ~RequestMessageCoordinator().