diff options
author | Julian Oes <julian@oes.ch> | 2014-03-17 20:12:12 +0100 |
---|---|---|
committer | Julian Oes <julian@oes.ch> | 2014-03-17 20:12:12 +0100 |
commit | 8fe3475b41b76ecf07aa6cd1d73196c17b4c8ebe (patch) | |
tree | 5b4809899ef1479ad71ca3299e17844adc739009 /src/modules/mavlink/mavlink_messages.cpp | |
parent | 295f87f22cc471fccb44e3f3dee3e8fcab263de2 (diff) | |
download | px4-firmware-8fe3475b41b76ecf07aa6cd1d73196c17b4c8ebe.tar.gz px4-firmware-8fe3475b41b76ecf07aa6cd1d73196c17b4c8ebe.tar.bz2 px4-firmware-8fe3475b41b76ecf07aa6cd1d73196c17b4c8ebe.zip |
mavlink: add onboard function for camera capture commands
Diffstat (limited to 'src/modules/mavlink/mavlink_messages.cpp')
-rw-r--r-- | src/modules/mavlink/mavlink_messages.cpp | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/src/modules/mavlink/mavlink_messages.cpp b/src/modules/mavlink/mavlink_messages.cpp index 7d388f88d..014b53829 100644 --- a/src/modules/mavlink/mavlink_messages.cpp +++ b/src/modules/mavlink/mavlink_messages.cpp @@ -230,7 +230,6 @@ protected: mavlink_base_mode, mavlink_custom_mode, mavlink_state); - } }; @@ -1127,6 +1126,48 @@ protected: } }; +class MavlinkStreamCameraCapture : public MavlinkStream +{ +public: + const char *get_name() + { + return "CAMERA_CAPTURE"; + } + + MavlinkStream *new_instance() + { + return new MavlinkStreamCameraCapture(); + } + +private: + MavlinkOrbSubscription *status_sub; + struct vehicle_status_s *status; + +protected: + void subscribe(Mavlink *mavlink) + { + status_sub = mavlink->add_orb_subscription(ORB_ID(vehicle_status)); + status = (struct vehicle_status_s *)status_sub->get_data(); + + + } + + void send(const hrt_abstime t) + { + (void)status_sub->update(t); + + if (status->arming_state == ARMING_STATE_ARMED + || status->arming_state == ARMING_STATE_ARMED_ERROR) { + + /* send camera capture on */ + mavlink_msg_command_long_send(_channel, 42, 30, MAV_CMD_DO_CONTROL_VIDEO, 0, 0, 0, 0, 1, 0, 0, 0); + } else { + /* send camera capture off */ + mavlink_msg_command_long_send(_channel, 42, 30, MAV_CMD_DO_CONTROL_VIDEO, 0, 0, 0, 0, 0, 0, 0, 0); + } + } +}; + MavlinkStream *streams_list[] = { new MavlinkStreamHeartbeat(), @@ -1151,6 +1192,7 @@ MavlinkStream *streams_list[] = { new MavlinkStreamRCChannelsRaw(), new MavlinkStreamManualControl(), new MavlinkStreamOpticalFlow(), + new MavlinkStreamCameraCapture(), nullptr }; |