From a58fab96a83f0d1c516f89e42333e1ffc4c9d4fe Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Thu, 26 Oct 2023 12:48:04 +1100 Subject: [PATCH] Vehicle: add sendMavCommandIntWithHandler equivalent to the non-int function, allows a caller to specify a callback when ACK is received --- src/Vehicle/Vehicle.cc | 12 ++++++++++++ src/Vehicle/Vehicle.h | 5 +++++ 2 files changed, 17 insertions(+) diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index 3d2a361..a82fa79 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -3006,6 +3006,18 @@ void Vehicle::sendMavCommandInt(int compId, MAV_CMD command, MAV_FRAME frame, bo param1, param2, param3, param4, param5, param6, param7); } +void Vehicle::sendMavCommandIntWithHandler(MavCmdResultHandler resultHandler, void *resultHandlerData, int compId, MAV_CMD command, MAV_FRAME frame, float param1, float param2, float param3, float param4, double param5, double param6, float param7) +{ + _sendMavCommandWorker(true, // commandInt + false, // showError + resultHandler, + resultHandlerData, + compId, + command, + frame, + param1, param2, param3, param4, param5, param6, param7); +} + bool Vehicle::isMavCommandPending(int targetCompId, MAV_CMD command) { return ((-1) < _findMavCommandListEntryIndex(targetCompId, command)); diff --git a/src/Vehicle/Vehicle.h b/src/Vehicle/Vehicle.h index d929708..1eb292f 100644 --- a/src/Vehicle/Vehicle.h +++ b/src/Vehicle/Vehicle.h @@ -774,6 +774,11 @@ public: /// @param resultHandleData Opaque data passed through callback void sendMavCommandWithHandler(MavCmdResultHandler resultHandler, void* resultHandlerData, int compId, MAV_CMD command, float param1 = 0.0f, float param2 = 0.0f, float param3 = 0.0f, float param4 = 0.0f, float param5 = 0.0f, float param6 = 0.0f, float param7 = 0.0f); + /// Sends the command and calls the callback with the result + /// @param resultHandler Callback for result, nullptr for no callback + /// @param resultHandleData Opaque data passed through callback + void sendMavCommandIntWithHandler(MavCmdResultHandler resultHandler, void* resultHandlerData, int compId, MAV_CMD command, MAV_FRAME frame, float param1 = 0.0f, float param2 = 0.0f, float param3 = 0.0f, float param4 = 0.0f, double param5 = 0.0f, double param6 = 0.0f, float param7 = 0.0f); + typedef enum { RequestMessageNoFailure, RequestMessageFailureCommandError,