@@ -148,7 +148,7 @@ uint16_t Varmint::sensors_init_message(char * message, uint16_t size, uint16_t i
148148bool Varmint::imu_read (rosflight_firmware::ImuStruct * imu)
149149{
150150 ImuPacket p;
151- if (imu0_.rxFifoReadMostRecent ((uint8_t *) &p, sizeof (p))) {
151+ if (imu0_.read ((uint8_t *) &p, sizeof (p))) {
152152 imu->header = p.header ;
153153 imu->accel [0 ] = p.accel [0 ];
154154 imu->accel [1 ] = p.accel [1 ];
@@ -167,7 +167,7 @@ bool Varmint::imu_read(rosflight_firmware::ImuStruct * imu)
167167bool Varmint::mag_read (rosflight_firmware::MagStruct * mag)
168168{
169169 MagPacket p;
170- if (mag_.rxFifoReadMostRecent ((uint8_t *) &p, sizeof (p))) {
170+ if (mag_.read ((uint8_t *) &p, sizeof (p))) {
171171 mag->header = p.header ;
172172 mag->flux [0 ] = p.flux [0 ];
173173 mag->flux [1 ] = p.flux [1 ];
@@ -183,7 +183,7 @@ bool Varmint::mag_read(rosflight_firmware::MagStruct * mag)
183183bool Varmint::baro_read (rosflight_firmware::PressureStruct * baro)
184184{
185185 PressurePacket p;
186- if (baro_.rxFifoReadMostRecent ((uint8_t *) &p, sizeof (p))) {
186+ if (baro_.read ((uint8_t *) &p, sizeof (p))) {
187187 baro->header = p.header ;
188188 baro->pressure = p.pressure ;
189189 baro->temperature = p.temperature ;
@@ -197,7 +197,7 @@ bool Varmint::baro_read(rosflight_firmware::PressureStruct * baro)
197197bool Varmint::diff_pressure_read (rosflight_firmware::PressureStruct * diff_pressure)
198198{
199199 PressurePacket p;
200- if (pitot_.rxFifoReadMostRecent ((uint8_t *) &p, sizeof (p))) {
200+ if (pitot_.read ((uint8_t *) &p, sizeof (p))) {
201201 diff_pressure->header = p.header ;
202202 diff_pressure->pressure = p.pressure ;
203203 diff_pressure->temperature = p.temperature ;
@@ -219,7 +219,7 @@ bool Varmint::sonar_read(rosflight_firmware::RangeStruct * sonar)
219219bool Varmint::battery_read (rosflight_firmware::BatteryStruct * batt)
220220{
221221 AdcPacket p;
222- if (adc_.rxFifoReadMostRecent ((uint8_t *) &p, sizeof (p))) {
222+ if (adc_.read ((uint8_t *) &p, sizeof (p))) {
223223 batt->header = p.header ;
224224 batt->current = p.volts [ADC_BATTERY_CURRENT];
225225 batt->voltage = p.volts [ADC_BATTERY_VOLTS];
@@ -245,57 +245,24 @@ bool Varmint::gnss_read(rosflight_firmware::GnssStruct * gnss)
245245{
246246 UbxPacket p;
247247
248- if (gps_.rxFifoReadMostRecent ((uint8_t *) &p, sizeof (p))) {
248+ if (gps_.read ((uint8_t *) &p, sizeof (p))) {
249249 gnss->header = p.header ;
250250 gnss->pps = p.pps ;
251251 gnss->unix_seconds = p.unix_seconds ; // Unix time
252- gnss->t_acc = p.pvt .tAcc ;
253- gnss->time_of_week = p.pvt .iTOW ;
254- gnss->year = p.pvt .year ;
255- gnss->month = p.pvt .month ;
256- gnss->day = p.pvt .day ;
257- gnss->hour = p.pvt .hour ;
258- gnss->min = p.pvt .min ;
259- gnss->sec = p.pvt .sec ;
260- gnss->nano = p.pvt .nano ;
261- gnss->lon = p.pvt .lon ;
262- gnss->lat = p.pvt .lat ;
263- gnss->height_ellipsoid = p.pvt .height ;
264- gnss->height_msl = p.pvt .hMSL ;
265- gnss->h_acc = p.pvt .hAcc ;
266- gnss->v_acc = p.pvt .vAcc ;
267- gnss->vel_n = p.pvt .velN ;
268- gnss->vel_e = p.pvt .velE ;
269- gnss->vel_d = p.pvt .velD ;
270- gnss->mag_var = p.pvt .magDec ;
271- gnss->ground_speed = p.pvt .gSpeed ;
272- gnss->course = p.pvt .headMot ;
273- gnss->course_accy = p.pvt .headAcc ;
274- gnss->vel_n = p.pvt .velN ;
275- gnss->vel_e = p.pvt .velE ;
276- gnss->vel_d = p.pvt .velD ;
277- gnss->speed_accy = p.pvt .sAcc ;
278- gnss->mag_var = p.pvt .magDec ;
279- gnss->valid = ((p.pvt .flags & 0x01 ) != 0 );
280- gnss->num_sat = p.pvt .numSV ;
281- gnss->dop = p.pvt .pDOP ;
252+ gnss->unix_nanos = p.unix_nanos ;
282253 gnss->fix_type = p.pvt .fixType ;
283-
284- // These are not available from standard NMEA messages
285- // from ublox Class 0x01, ID 0x20
286- gnss->ecef .x = p.ecefp .ecefX ;
287- gnss->ecef .y = p.ecefp .ecefY ;
288- gnss->ecef .z = p.ecefp .ecefZ ;
289- gnss->ecef .p_acc = p.ecefp .pAcc ;
290- // from ublox Class 0x01, ID 0x11
291- gnss->ecef .vx = p.ecefv .ecefVX ;
292- gnss->ecef .vy = p.ecefv .ecefVY ;
293- gnss->ecef .vz = p.ecefv .ecefVZ ;
294- gnss->ecef .s_acc = p.ecefv .sAcc ;
295-
254+ gnss->num_sat = p.pvt .numSV ;
255+ gnss->lon = (double )p.pvt .lon * 1e-7 ; // Convert 100's of nanodegs into deg (DDS format)
256+ gnss->lat = (double )p.pvt .lat * 1e-7 ; // Convert 100's of nanodegs into deg (DDS format)
257+ gnss->height_msl = (float )p.pvt .hMSL * 1e-3 ; // mm to m
258+ gnss->vel_n = (float )p.pvt .velN * 1e-3 ; // mm/s to m/s
259+ gnss->vel_e = (float )p.pvt .velE * 1e-3 ; // mm/s to m/s
260+ gnss->vel_d = (float )p.pvt .velD * 1e-3 ; // mm/s to m/s
261+ gnss->h_acc = (float )p.pvt .hAcc * 1e-3 ; // mm to m
262+ gnss->v_acc = (float )p.pvt .vAcc * 1e-3 ; // mm to m
263+ gnss->speed_accy = (float )p.pvt .sAcc * 1e-3 ; // mm/s to m/s
296264 return true ;
297265 }
298-
299266 return false ;
300267}
301268
@@ -306,7 +273,7 @@ bool Varmint::rc_read(rosflight_firmware::RcStruct * rc_struct)
306273{
307274 RcPacket p;
308275
309- if (rc_.rxFifoReadMostRecent ((uint8_t *) &p, sizeof (p))) {
276+ if (rc_.read ((uint8_t *) &p, sizeof (p))) {
310277 rc_struct->header = p.header ;
311278 uint16_t len = RC_STRUCT_CHANNELS < RC_PACKET_CHANNELS ? RC_STRUCT_CHANNELS : RC_PACKET_CHANNELS;
312279 for (uint16_t i = 0 ; i < len; i++) { rc_struct->chan [i] = p.chan [i]; }
0 commit comments