mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-11-01 03:41:36 +08:00
mavlink: GPS_GLOBAL_ORIGIN message added, set message rate depending on baudrate
This commit is contained in:
@@ -1531,18 +1531,19 @@ Mavlink::task_main(int argc, char *argv[])
|
|||||||
mavlink_log_info(_mavlink_fd, "[mavlink] started");
|
mavlink_log_info(_mavlink_fd, "[mavlink] started");
|
||||||
|
|
||||||
/* add default streams, intervals depend on baud rate */
|
/* add default streams, intervals depend on baud rate */
|
||||||
// if (_baudrate >= 230400) {
|
float rate_mult = _baudrate / 57600.0f;
|
||||||
// } else if (_baudrate >= 115200) {
|
if (rate_mult > 4.0f) {
|
||||||
// } else if (_baudrate >= 57600) {
|
rate_mult = 4.0f;
|
||||||
// }
|
}
|
||||||
|
|
||||||
add_stream("HEARTBEAT", 1.0f);
|
add_stream("HEARTBEAT", 1.0f);
|
||||||
add_stream("SYS_STATUS", 1.0f);
|
add_stream("SYS_STATUS", 1.0f * rate_mult);
|
||||||
add_stream("HIGHRES_IMU", 1.0f);
|
add_stream("GPS_GLOBAL_ORIGIN", 0.5f * rate_mult);
|
||||||
add_stream("ATTITUDE", 10.0f);
|
add_stream("HIGHRES_IMU", 1.0f * rate_mult);
|
||||||
add_stream("GPS_RAW_INT", 1.0f);
|
add_stream("ATTITUDE", 10.0f * rate_mult);
|
||||||
add_stream("GLOBAL_POSITION_INT", 5.0f);
|
add_stream("GPS_RAW_INT", 1.0f * rate_mult);
|
||||||
add_stream("LOCAL_POSITION_NED", 5.0f);
|
add_stream("GLOBAL_POSITION_INT", 5.0f * rate_mult);
|
||||||
|
add_stream("LOCAL_POSITION_NED", 5.0f * rate_mult);
|
||||||
|
|
||||||
while (!_task_should_exit) {
|
while (!_task_should_exit) {
|
||||||
/* main loop */
|
/* main loop */
|
||||||
|
|||||||
@@ -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[] = {
|
MavlinkStream *streams_list[] = {
|
||||||
new MavlinkStreamHeartbeat(),
|
new MavlinkStreamHeartbeat(),
|
||||||
new MavlinkStreamSysStatus(),
|
new MavlinkStreamSysStatus(),
|
||||||
@@ -438,6 +474,7 @@ MavlinkStream *streams_list[] = {
|
|||||||
new MavlinkStreamGPSRawInt(),
|
new MavlinkStreamGPSRawInt(),
|
||||||
new MavlinkStreamGlobalPositionInt(),
|
new MavlinkStreamGlobalPositionInt(),
|
||||||
new MavlinkStreamLocalPositionNED(),
|
new MavlinkStreamLocalPositionNED(),
|
||||||
|
new MavlinkStreamGPSGlobalOrigin(),
|
||||||
nullptr
|
nullptr
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -517,14 +554,6 @@ MavlinkStream *streams_list[] = {
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
//void
|
//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)
|
//MavlinkOrbListener::l_input_rc(const struct listener *l)
|
||||||
//{
|
//{
|
||||||
// /* copy rc _mavlink->get_chan()nels into local buffer */
|
// /* copy rc _mavlink->get_chan()nels into local buffer */
|
||||||
@@ -801,14 +830,6 @@ MavlinkStream *streams_list[] = {
|
|||||||
//}
|
//}
|
||||||
//
|
//
|
||||||
//void
|
//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)
|
//MavlinkOrbListener::l_airspeed(const struct listener *l)
|
||||||
//{
|
//{
|
||||||
// orb_copy(ORB_ID(airspeed), l->mavlink->get_subs()->airspeed_sub, &l->listener->airspeed);
|
// orb_copy(ORB_ID(airspeed), l->mavlink->get_subs()->airspeed_sub, &l->listener->airspeed);
|
||||||
|
|||||||
Reference in New Issue
Block a user