diff options
author | Julian Oes <julian@oes.ch> | 2014-07-02 14:59:43 +0200 |
---|---|---|
committer | Julian Oes <julian@oes.ch> | 2014-07-02 14:59:43 +0200 |
commit | fdceb8b0620c347c9f7f477dbf295dcfff12012c (patch) | |
tree | 4b41752c9cb81cb035034b3893872476495a3acd /src/modules/mavlink/mavlink_receiver.cpp | |
parent | 40780e29164f323d4896d75d9f585434375d83b0 (diff) | |
parent | 28a31708f98eefa4ceb04617f2da3dd7892c99fa (diff) | |
download | px4-firmware-fdceb8b0620c347c9f7f477dbf295dcfff12012c.tar.gz px4-firmware-fdceb8b0620c347c9f7f477dbf295dcfff12012c.tar.bz2 px4-firmware-fdceb8b0620c347c9f7f477dbf295dcfff12012c.zip |
Merge branch 'master' into navigator_rewrite_offboard2_merge
Conflicts:
mavlink/include/mavlink/v1.0/common/common.h
src/modules/mavlink/mavlink_receiver.cpp
Diffstat (limited to 'src/modules/mavlink/mavlink_receiver.cpp')
-rw-r--r-- | src/modules/mavlink/mavlink_receiver.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/modules/mavlink/mavlink_receiver.cpp b/src/modules/mavlink/mavlink_receiver.cpp index 3b9bd207b..6aba72161 100644 --- a/src/modules/mavlink/mavlink_receiver.cpp +++ b/src/modules/mavlink/mavlink_receiver.cpp @@ -121,6 +121,9 @@ MavlinkReceiver::MavlinkReceiver(Mavlink *parent) : _control_mode_sub = orb_subscribe(ORB_ID(vehicle_control_mode)); memset(&hil_local_pos, 0, sizeof(hil_local_pos)); memset(&_control_mode, 0, sizeof(_control_mode)); + + // make sure the FTP server is started + (void)MavlinkFTP::getServer(); } MavlinkReceiver::~MavlinkReceiver() @@ -163,6 +166,14 @@ MavlinkReceiver::handle_message(mavlink_message_t *msg) handle_message_heartbeat(msg); break; + case MAVLINK_MSG_ID_REQUEST_DATA_STREAM: + handle_message_request_data_stream(msg); + break; + + case MAVLINK_MSG_ID_ENCAPSULATED_DATA: + MavlinkFTP::getServer()->handle_message(_mavlink, msg); + break; + default: break; } @@ -469,6 +480,24 @@ MavlinkReceiver::handle_message_heartbeat(mavlink_message_t *msg) } void +MavlinkReceiver::handle_message_request_data_stream(mavlink_message_t *msg) +{ + mavlink_request_data_stream_t req; + mavlink_msg_request_data_stream_decode(msg, &req); + + if (req.target_system == mavlink_system.sysid && req.target_component == mavlink_system.compid) { + float rate = req.start_stop ? (1000.0f / req.req_message_rate) : 0.0f; + + MavlinkStream *stream; + LL_FOREACH(_mavlink->get_streams(), stream) { + if (req.req_stream_id == stream->get_id()) { + _mavlink->configure_stream_threadsafe(stream->get_name(), rate); + } + } + } +} + +void MavlinkReceiver::handle_message_hil_sensor(mavlink_message_t *msg) { mavlink_hil_sensor_t imu; |