diff --git a/conf/modules/gps.xml b/conf/modules/gps.xml index 50871facee..2a6d803e20 100644 --- a/conf/modules/gps.xml +++ b/conf/modules/gps.xml @@ -8,6 +8,7 @@ Still requires at least one module providing the actual GPS implementation. + diff --git a/sw/airborne/modules/multi/traffic_info.c b/sw/airborne/modules/multi/traffic_info.c index a6abd4c2f0..c8d9605f42 100644 --- a/sw/airborne/modules/multi/traffic_info.c +++ b/sw/airborne/modules/multi/traffic_info.c @@ -79,7 +79,11 @@ bool parse_acinfo_dl(void) uint8_t msg_id = IdOfPprzMsg(dl_buffer); /* handle telemetry message */ +#if PPRZLINK_DEFAULT_VER == 2 + if (pprzlink_get_msg_class_id(dl_buffer) == DL_telemetry_CLASS_ID) { +#else if (sender_id > 0) { +#endif switch (msg_id) { case DL_GPS_SMALL: { uint32_t multiplex_speed = DL_GPS_SMALL_multiplex_speed(dl_buffer); diff --git a/sw/airborne/subsystems/gps.c b/sw/airborne/subsystems/gps.c index 60e837dc97..65038b11bc 100644 --- a/sw/airborne/subsystems/gps.c +++ b/sw/airborne/subsystems/gps.c @@ -134,7 +134,19 @@ static void send_gps(struct transport_tx *trans, struct link_device *dev) int16_t climb = -gps.ned_vel.z; int16_t course = (DegOfRad(gps.course) / ((int32_t)1e6)); struct UtmCoor_i utm = utm_int_from_gps(&gps, 0); - pprz_msg_send_GPS(trans, dev, AC_ID, &gps.fix, +#if PPRZLINK_DEFAULT_VER == 2 && GPS_POS_BROADCAST + // broadcast GPS message + struct pprzlink_msg msg; + msg.trans = trans; + msg.dev = dev; + msg.sender_id = AC_ID; + msg.receiver_id = PPRZLINK_MSG_BROADCAST; + msg.component_id = 0; + pprzlink_msg_send_GPS(&msg, +#else + pprz_msg_send_GPS(trans, dev, AC_ID, +#endif + &gps.fix, &utm.east, &utm.north, &course, &gps.hmsl, &gps.gspeed, &climb, &gps.week, &gps.tow, &utm.zone, &zero); @@ -169,7 +181,18 @@ static void send_gps_rxmrtcm(struct transport_tx *trans, struct link_device *dev static void send_gps_int(struct transport_tx *trans, struct link_device *dev) { +#if PPRZLINK_DEFAULT_VER == 2 && GPS_POS_BROADCAST + // broadcast GPS message + struct pprzlink_msg msg; + msg.trans = trans; + msg.dev = dev; + msg.sender_id = AC_ID; + msg.receiver_id = PPRZLINK_MSG_BROADCAST; + msg.component_id = 0; + pprzlink_msg_send_GPS_INT(&msg, +#else pprz_msg_send_GPS_INT(trans, dev, AC_ID, +#endif &gps.ecef_pos.x, &gps.ecef_pos.y, &gps.ecef_pos.z, &gps.lla_pos.lat, &gps.lla_pos.lon, &gps.lla_pos.alt, &gps.hmsl, @@ -189,7 +212,18 @@ static void send_gps_lla(struct transport_tx *trans, struct link_device *dev) uint8_t err = 0; int16_t climb = -gps.ned_vel.z; int16_t course = (DegOfRad(gps.course) / ((int32_t)1e6)); +#if PPRZLINK_DEFAULT_VER == 2 && GPS_POS_BROADCAST + // broadcast GPS message + struct pprzlink_msg msg; + msg.trans = trans; + msg.dev = dev; + msg.sender_id = AC_ID; + msg.receiver_id = PPRZLINK_MSG_BROADCAST; + msg.component_id = 0; + pprzlink_msg_send_GPS_LLA(&msg, +#else pprz_msg_send_GPS_LLA(trans, dev, AC_ID, +#endif &gps.lla_pos.lat, &gps.lla_pos.lon, &gps.lla_pos.alt, &gps.hmsl, &course, &gps.gspeed, &climb, &gps.week, &gps.tow,