diff --git a/sw/airborne/subsystems/gps/gps_ubx.c b/sw/airborne/subsystems/gps/gps_ubx.c index f87d99b030..a90c3935fe 100644 --- a/sw/airborne/subsystems/gps/gps_ubx.c +++ b/sw/airborne/subsystems/gps/gps_ubx.c @@ -175,7 +175,8 @@ void gps_ubx_read_message(void) gps_ubx_raw.week = UBX_RXM_RAW_week(gps_ubx.msg_buf); gps_ubx_raw.numSV = UBX_RXM_RAW_numSV(gps_ubx.msg_buf); uint8_t i; - for (i = 0; i < gps_ubx_raw.numSV; i++) { + uint8_t max_SV = Min(gps_ubx_raw.numSV, GPS_UBX_NB_CHANNELS); + for (i = 0; i < max_SV; i++) { gps_ubx_raw.measures[i].cpMes = UBX_RXM_RAW_cpMes(gps_ubx.msg_buf, i); gps_ubx_raw.measures[i].prMes = UBX_RXM_RAW_prMes(gps_ubx.msg_buf, i); gps_ubx_raw.measures[i].doMes = UBX_RXM_RAW_doMes(gps_ubx.msg_buf, i); @@ -355,4 +356,4 @@ void ubx_gps_register(void) #else gps_register_impl(ubx_gps_impl_init, ubx_gps_event, &gps_ubx_state, &gps_ubx_time_sync, 0); #endif -} \ No newline at end of file +} diff --git a/sw/airborne/subsystems/gps/gps_ubx.h b/sw/airborne/subsystems/gps/gps_ubx.h index 4dfbafdb52..5fa69409f1 100644 --- a/sw/airborne/subsystems/gps/gps_ubx.h +++ b/sw/airborne/subsystems/gps/gps_ubx.h @@ -53,7 +53,7 @@ void ubx_gps_impl_init(void); void ubx_gps_event(void); extern void ubx_gps_register(void); -//#define GPS_NB_CHANNELS 16 +#define GPS_UBX_NB_CHANNELS 16 #define GPS_UBX_MAX_PAYLOAD 255 struct GpsUbx { @@ -92,7 +92,7 @@ struct GpsUbxRaw { int32_t iTOW; int16_t week; uint8_t numSV; - struct GpsUbxRawMes measures[GPS_NB_CHANNELS]; + struct GpsUbxRawMes measures[GPS_UBX_NB_CHANNELS]; }; extern struct GpsUbxRaw gps_ubx_raw;