gps_osp get gps time

main-solar-only
Richard Meadows 2015-11-23 08:03:15 +00:00
rodzic de619c94a7
commit 66564a452c
3 zmienionych plików z 33 dodań i 5 usunięć

Wyświetl plik

@ -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);

Wyświetl plik

@ -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 */

Wyświetl plik

@ -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;