[gps] have one gps_t shared between all GPSs

main-solar-only
Richard Meadows 2016-07-29 10:49:43 +01:00
rodzic f41936c8de
commit 849798e2c0
3 zmienionych plików z 36 dodań i 40 usunięć

Wyświetl plik

@ -53,19 +53,23 @@ enum gps_lock_state {
GPS_LOCKED = 1,
};
/* UBX ------------------------------------------------------------- */
#ifdef GPS_TYPE_UBX
/**
* 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 */
};
/* UBX ------------------------------------------------------------- */
#ifdef GPS_TYPE_UBX
void gps_update_time(void);
void gps_update_position(void);
int gps_update_time_pending(void);
@ -89,19 +93,6 @@ void gps_set_powersave_auto(void);
/* OSP ------------------------------------------------------------- */
#ifdef GPS_TYPE_OSP
/**
* 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 gps_get_error_state(void);
struct gps_data_t gps_get_data(void);
@ -117,18 +108,6 @@ void gps_reinit(void);
/* Dummy ------------------------------------------------------------- */
#ifdef GPS_TYPE_DUMMY
/**
* 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 gps_get_error_state(void);
struct gps_data_t gps_get_data(void);

Wyświetl plik

@ -154,20 +154,23 @@ struct tracker_datapoint* collect_data(void)
} else { /* GPS position updated correctly */
/* GPS Status */
struct gps_data_t data = gps_get_data();
struct ubx_nav_sol sol = gps_get_nav_sol();
datapoint.satillite_count = sol.payload.numSV;
datapoint.time_to_first_fix = 0;
datapoint.latitude = data.latitude; /* hndeg */
datapoint.longitude = data.longitude; /* hdeg */
datapoint.altitude = data.altitude; /* mm */
datapoint.satillite_count = data.satillite_count;
datapoint.time_to_first_fix = data.time_to_first_fix; /* seconds / counts */
/* GPS Position */
if (gps_is_locked()) {
struct ubx_nav_posllh pos = gps_get_nav_posllh();
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 */
datapoint.latitude = pos.payload.lat;
datapoint.longitude = pos.payload.lon;
datapoint.altitude = pos.payload.height;
}
/* calculate epoch */
datapoint.time.epoch = get_epoch_from_time(&datapoint.time);
/* GPS Powersave */
gps_set_powersave_auto();

Wyświetl plik

@ -422,9 +422,11 @@ uint8_t gps_is_locked(void)
struct gps_data_t gps_get_data(void)
{
struct gps_data_t data;
struct ubx_nav_sol sol = gps_get_nav_sol();
/* GPS Status */
struct ubx_nav_sol sol = gps_get_nav_sol();
data.satillite_count = sol.payload.numSV;
data.time_to_first_fix = 0;
/* GPS Position */
if (gps_is_locked()) {
@ -435,9 +437,21 @@ struct gps_data_t gps_get_data(void)
data.altitude = pos.payload.height;
data.is_locked = 1;
} else {
data.latitude = 0;
data.longitude = 0;
data.altitude = 0;
data.is_locked = 0;
}
/* GPS Time */
struct ubx_nav_timeutc timeutc = gps_get_nav_timeutc();
data.year = timeutc.payload.year;
data.month = timeutc.payload.month;
data.day = timeutc.payload.day;
data.hour = timeutc.payload.hour;
data.minute = timeutc.payload.min;
data.second = timeutc.payload.sec;
return data;
}