@@ -239,6 +239,66 @@ void Varmint::battery_current_set_multiplier(double multiplier)
239239 adc_.setScaleFactor (ADC_BATTERY_CURRENT, multiplier);
240240}
241241
242+ // /////////////////////////////////////////////////////////////////////////////////////////////
243+ // GNSS
244+ // bool Varmint::gnss_read(rosflight_firmware::GnssStruct * gnss)
245+ // {
246+ // UbxPacket p;
247+ //
248+ // if (gps_.rxFifoReadMostRecent((uint8_t *) &p, sizeof(p))) {
249+ // gnss->header = p.header;
250+ // gnss->pps = p.pps;
251+ // 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->u = 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;
282+ // 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+ //
296+ // return true;
297+ // }
298+ //
299+ // return false;
300+ // }
301+
242302// /////////////////////////////////////////////////////////////////////////////////////////////
243303// GNSS
244304bool Varmint::gnss_read (rosflight_firmware::GnssStruct * gnss)
@@ -249,53 +309,20 @@ bool Varmint::gnss_read(rosflight_firmware::GnssStruct * gnss)
249309 gnss->header = p.header ;
250310 gnss->pps = p.pps ;
251311 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 ;
312+ gnss->unix_nanos = p.pvt .nano ;
282313 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-
314+ gnss->num_sat = p.pvt .numSV ;
315+ gnss->lon = (double )p.pvt .lon * 1e-7 ; // Convert 100's of nanodegs into deg (DDS format)
316+ gnss->lat = (double )p.pvt .lat * 1e-7 ; // Convert 100's of nanodegs into deg (DDS format)
317+ gnss->height_msl = (float )p.pvt .hMSL * 1e-3 ; // mm to m
318+ gnss->vel_n = (float )p.pvt .velN * 1e-3 ; // mm/s to m/s
319+ gnss->vel_e = (float )p.pvt .velE * 1e-3 ; // mm/s to m/s
320+ gnss->vel_d = (float )p.pvt .velD * 1e-3 ; // mm/s to m/s
321+ gnss->h_acc = (float )p.pvt .hAcc * 1e-3 ; // mm to m
322+ gnss->v_acc = (float )p.pvt .vAcc * 1e-3 ; // mm to m
323+ gnss->speed_accy = (float )p.pvt .sAcc * 1e-3 ; // mm/s to m/s
296324 return true ;
297325 }
298-
299326 return false ;
300327}
301328
0 commit comments