kopia lustrzana https://github.com/bristol-seds/pico-tracker
[gps] have one gps_t shared between all GPSs
rodzic
f41936c8de
commit
849798e2c0
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue