aboutsummaryrefslogtreecommitdiff
path: root/src/modules/mavlink/mavlink_messages.cpp
diff options
context:
space:
mode:
authorAnton Babushkin <anton.babushkin@me.com>2014-02-26 23:02:53 +0400
committerAnton Babushkin <anton.babushkin@me.com>2014-02-26 23:02:53 +0400
commit18f72f8dd7a3bd4a9af00fe28afd29e0cc65e2e9 (patch)
tree472ab71f19ca649435b3ecd10b53cadb66270524 /src/modules/mavlink/mavlink_messages.cpp
parent85dc422d9804c894009e37c6eaab67a10c5dca28 (diff)
downloadpx4-firmware-18f72f8dd7a3bd4a9af00fe28afd29e0cc65e2e9.tar.gz
px4-firmware-18f72f8dd7a3bd4a9af00fe28afd29e0cc65e2e9.tar.bz2
px4-firmware-18f72f8dd7a3bd4a9af00fe28afd29e0cc65e2e9.zip
mavlink: GPS_GLOBAL_ORIGIN message added, set message rate depending on baudrate
Diffstat (limited to 'src/modules/mavlink/mavlink_messages.cpp')
-rw-r--r--src/modules/mavlink/mavlink_messages.cpp53
1 files changed, 37 insertions, 16 deletions
diff --git a/src/modules/mavlink/mavlink_messages.cpp b/src/modules/mavlink/mavlink_messages.cpp
index 27ae197a6..48443fbdc 100644
--- a/src/modules/mavlink/mavlink_messages.cpp
+++ b/src/modules/mavlink/mavlink_messages.cpp
@@ -430,6 +430,42 @@ protected:
};
+class MavlinkStreamGPSGlobalOrigin : public MavlinkStream {
+public:
+ const char *get_name()
+ {
+ return "GPS_GLOBAL_ORIGIN";
+ }
+
+ MavlinkStream *new_instance()
+ {
+ return new MavlinkStreamGPSGlobalOrigin();
+ }
+
+private:
+ MavlinkOrbSubscription *home_sub;
+
+ struct home_position_s *home;
+
+protected:
+
+ void subscribe(Mavlink *mavlink)
+ {
+ home_sub = mavlink->add_orb_subscription(ORB_ID(home_position), sizeof(struct home_position_s));
+ home = (struct home_position_s *)home_sub->get_data();
+ }
+
+ void send(const hrt_abstime t) {
+ home_sub->update(t);
+
+ mavlink_msg_gps_global_origin_send(_channel,
+ (int32_t)(home->lat * 1e7),
+ (int32_t)(home->lon * 1e7),
+ (int32_t)(home->alt) * 1000.0f);
+ }
+};
+
+
MavlinkStream *streams_list[] = {
new MavlinkStreamHeartbeat(),
new MavlinkStreamSysStatus(),
@@ -438,6 +474,7 @@ MavlinkStream *streams_list[] = {
new MavlinkStreamGPSRawInt(),
new MavlinkStreamGlobalPositionInt(),
new MavlinkStreamLocalPositionNED(),
+ new MavlinkStreamGPSGlobalOrigin(),
nullptr
};
@@ -517,14 +554,6 @@ MavlinkStream *streams_list[] = {
//
//
//void
-//MavlinkOrbListener::l_rc_channels(const struct listener *l)
-//{
-// /* copy rc channels into local buffer */
-// orb_copy(ORB_ID(rc_channels), l->mavlink->get_subs()->rc_sub, &l->listener->rc);
-// // XXX Add RC channels scaled message here
-//}
-//
-//void
//MavlinkOrbListener::l_input_rc(const struct listener *l)
//{
// /* copy rc _mavlink->get_chan()nels into local buffer */
@@ -801,14 +830,6 @@ MavlinkStream *streams_list[] = {
//}
//
//void
-//MavlinkOrbListener::l_home(const struct listener *l)
-//{
-// orb_copy(ORB_ID(home_position), l->mavlink->get_subs()->home_sub, &l->listener->home);
-//
-// mavlink_msg_gps_global_origin_send(l->mavlink->get_chan(), (int32_t)(l->listener->home.lat*1e7d), (int32_t)(l->listener->home.lon*1e7d), (int32_t)(l->listener->home.alt)*1e3f);
-//}
-//
-//void
//MavlinkOrbListener::l_airspeed(const struct listener *l)
//{
// orb_copy(ORB_ID(airspeed), l->mavlink->get_subs()->airspeed_sub, &l->listener->airspeed);