diff --git a/firmware/inc/gps.h b/firmware/inc/gps.h index cdcc9ac..df870df 100644 --- a/firmware/inc/gps.h +++ b/firmware/inc/gps.h @@ -45,6 +45,9 @@ enum gps_flight_state_t { GPS_FLIGHT_STATE_FLOAT, }; +/* UBX ------------------------------------------------------------- */ +#ifdef GPS_TYPE_UBX + /** * GPS Data */ @@ -53,12 +56,8 @@ struct gps_data_t { int32_t altitude; /* mm */ uint8_t satillite_count; uint8_t is_locked; /* 1 = locked, 0 = not locked */ - uint8_t time_to_first_fix; /* seconds / counts */ }; -/* UBX ------------------------------------------------------------- */ -#ifdef GPS_TYPE_UBX - void gps_update_time(void); void gps_update_position(void); int gps_update_time_pending(void); @@ -82,8 +81,21 @@ void gps_set_powersave_auto(void); /* OSP ------------------------------------------------------------- */ #ifdef GPS_TYPE_OSP -enum gps_error_t gps_get_error_state(void); +/** + * GPS Data + */ +struct gps_data_t { + uint16_t year; /* years */ + uint8_t month, day, hour, minute, second; /* months, days, hours, minutes, seconds */ + int32_t latitude, longitude; /* hndeg */ + int32_t altitude; /* mm */ + uint8_t satillite_count; + uint8_t is_locked; /* 1 = locked, 0 = not locked */ + uint8_t time_to_first_fix; /* seconds / counts */ +}; + +enum gps_error_t gps_get_error_state(void); struct gps_data_t gps_get_data(void); void gps_setup(void); diff --git a/firmware/src/data.c b/firmware/src/data.c index 57e7046..bad8965 100644 --- a/firmware/src/data.c +++ b/firmware/src/data.c @@ -79,7 +79,16 @@ struct tracker_datapoint* collect_data(void) datapoint.altitude = data.altitude; /* mm */ datapoint.satillite_count = data.satillite_count; datapoint.time_to_first_fix = data.time_to_first_fix; /* seconds / counts */ + + datapoint.time.year = data.year; + datapoint.time.month = data.month; + datapoint.time.day = data.day; + datapoint.time.hour = data.hour; + datapoint.time.minute = data.minute; + datapoint.time.second = data.second; /* seconds */ } + + #endif /* GPS_TYPE_OSP */ diff --git a/firmware/src/gps_osp.c b/firmware/src/gps_osp.c index 57a7845..3580d62 100644 --- a/firmware/src/gps_osp.c +++ b/firmware/src/gps_osp.c @@ -580,6 +580,13 @@ struct gps_data_t gps_get_data(void) data.satillite_count = osp_out_geodetic_navigation_data.payload.svs_in_fix; data.time_to_first_fix = i+1; /* number of geo nav packets this took */ + data.year = osp_out_geodetic_navigation_data.payload.utc_year; + data.month = osp_out_geodetic_navigation_data.payload.utc_month; + data.day = osp_out_geodetic_navigation_data.payload.utc_day; + data.hour = osp_out_geodetic_navigation_data.payload.utc_hour; + data.minute = osp_out_geodetic_navigation_data.payload.utc_minute; + data.second = (osp_out_geodetic_navigation_data.payload.utc_second+500)/1000; /* ms -> s */ + gps_set_flight_state(data.altitude); return data;