*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
#define AO_LOG_GPS_LON 'W'
#define AO_LOG_GPS_ALT 'H'
#define AO_LOG_GPS_SAT 'V'
+#define AO_LOG_GPS_DATE 'Y'
#define AO_LOG_POS_NONE (~0UL)
* any stale data before adding this record
*/
gps.time = tick;
+ gps.hour = (a & 0xff);
+ gps.minute = (a >> 8) & 0xff;
+ gps.second = (b & 0xff);
+ gps.flags = (b >> 8) & 0xff;
gps_valid = GPS_TIME;
break;
case AO_LOG_GPS_LAT:
sat.c_n = (b >> 8) & 0xff;
gpssat_add(&f->gps, &sat);
break;
+ case AO_LOG_GPS_DATE:
+ f->year = 2000 + (a & 0xff);
+ f->month = (a >> 8) & 0xff;
+ f->day = (b & 0xff);
+ break;
default:
return 0;
}
{
struct cc_telem telem;
struct cc_gpselt gps;
+ struct cc_gpssat sat;
+ int s;
+
if (!cc_telem_parse(line, &telem))
return 0;
f->ground_accel = telem.ground_accel;
timedata_add(&f->main, telem.tick, telem.main);
timedata_add(&f->state, telem.tick, state_name_to_state(telem.state));
if (telem.gps.gps_locked) {
+ f->year = telem.gps.gps_time.year;
+ f->month = telem.gps.gps_time.month;
+ f->day = telem.gps.gps_time.day;
gps.time = telem.tick;
gps.lat = telem.gps.lat;
gps.lon = telem.gps.lon;
gps.alt = telem.gps.alt;
+ gps.hour = telem.gps.gps_time.hour;
+ gps.minute = telem.gps.gps_time.minute;
+ gps.second = telem.gps.gps_time.second;
gpsdata_add(&f->gps, &gps);
}
+ for (s = 0; s < telem.gps_tracking.channels; s++) {
+ sat.time = telem.tick;
+ sat.svid = telem.gps_tracking.sats[s].svid;
+ sat.c_n = telem.gps_tracking.sats[s].c_n0;
+ gpssat_add(&f->gps, &sat);
+ }
return 1;
}
{
struct cc_flightraw *f;
char line[8192];
- double ground_pres;
- int ground_pres_count;
+ double ground_pres = 0.0;
+ int ground_pres_count = 0;
f = calloc(1, sizeof (struct cc_flightraw));
if (!f)