diff --git a/src/uas/UAS.cc b/src/uas/UAS.cc index 6be68ccafc5ae93d5a5301941514398927112a21..bbbd9acc8167ed532ef3fdfe0eccb9978f190472 100644 --- a/src/uas/UAS.cc +++ b/src/uas/UAS.cc @@ -1209,15 +1209,46 @@ void UAS::setManual6DOFControlCommands(double x, double y, double z, double roll */ void UAS::pairRX(int rxType, int rxSubType) { - if (!_vehicle) { - return; + if (_vehicle) { + _vehicle->sendMavCommand(_vehicle->defaultComponentId(), // target component + MAV_CMD_IMAGE_START_CAPTURE, // command id + MAV_CMD_START_RX_PAIR, // command id + true, // showError + rxType, + rxSubType); } +} - _vehicle->sendMavCommand(_vehicle->defaultComponentId(), // target component - MAV_CMD_START_RX_PAIR, // command id - true, // showError - rxType, - rxSubType); +/** +* Order the robot to take a picture (Testing -- Incomplete API) +*/ +void UAS::takePhoto() +{ + if (_vehicle) { + _vehicle->sendMavCommand(_vehicle->defaultComponentId(), // target component + MAV_CMD_IMAGE_START_CAPTURE, // command id + 0, // Duration between two consecutive pictures (in seconds) + 1, // Number of images to capture total - 0 for unlimited capture + 0, // Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc), set to 0 if param 4/5 are used + 1920, // Resolution horizontal in pixels + 1080); // Resolution horizontal in pixels + } +} + +/** +* Order the robot to toggle video recording (Testing -- Incomplete API) +*/ +void UAS::toggleVideo() +{ + if (_vehicle) { + _vehicle->sendMavCommand(_vehicle->defaultComponentId(), // target component + MAV_CMD_VIDEO_START_CAPTURE, // command id + 0, // Camera ID (0 for all cameras), 1 for first, 2 for second, etc. + 60, // Frames per second + 0, // Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc), set to 0 if param 4/5 are used + 1920, // Resolution horizontal in pixels + 1080); // Resolution horizontal in pixels + } } /** diff --git a/src/uas/UAS.h b/src/uas/UAS.h index 4dad4d5fda8c5c9052b553db57801099c0955e16..4820fb41adc4a7c1f1f4c173d1bc93073fab61cb 100644 --- a/src/uas/UAS.h +++ b/src/uas/UAS.h @@ -262,6 +262,10 @@ public: public slots: /** @brief Order the robot to pair its receiver **/ void pairRX(int rxType, int rxSubType); + /** @brief Order the robot to take a picture **/ + void takePhoto(); + /** @brief Order the robot to toggle video recording **/ + void toggleVideo(); /** @brief Enable / disable HIL */ #ifndef __mobile__ diff --git a/src/uas/UASInterface.h b/src/uas/UASInterface.h index 8ce2460b9749afcb758598276ce991f1fafb50b2..515fb599b64364240bc4d94040a09b400336e023 100644 --- a/src/uas/UASInterface.h +++ b/src/uas/UASInterface.h @@ -137,6 +137,10 @@ public: public slots: /** @brief Order the robot to pair its receiver **/ virtual void pairRX(int rxType, int rxSubType) = 0; + /** @brief Order the robot to take a picture **/ + virtual void takePhoto() {} + /** @brief Order the robot to toggle video recording **/ + virtual void toggleVideo() {} /** @brief Send the full HIL state to the MAV */ #ifndef __mobile__