From cfbccf096cb83f59cbd0e8c0d3d8c7bf3b75077d Mon Sep 17 00:00:00 2001 From: Richard Meadows Date: Sat, 16 Jan 2016 16:55:29 +0000 Subject: [PATCH] [data] Don't keep repeating old GPS data if there's no lock. Zeros are more informative Also [gps-osp] should give the date/time even if there's no position lock. --- firmware/src/data.c | 24 +++++++++++------------- firmware/src/gps_osp.c | 8 ++++++++ 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/firmware/src/data.c b/firmware/src/data.c index 1220e29..47894d5 100644 --- a/firmware/src/data.c +++ b/firmware/src/data.c @@ -73,20 +73,18 @@ struct tracker_datapoint* collect_data(void) struct gps_data_t data = gps_get_data(); - if (data.is_locked) { /* valid? */ - 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 */ + 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 */ - 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.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 6b5c9fb..74afe20 100644 --- a/firmware/src/gps_osp.c +++ b/firmware/src/gps_osp.c @@ -620,7 +620,15 @@ struct gps_data_t gps_get_data(void) /* invalid */ memset(&data, 0, sizeof(struct gps_data_t)); gps_is_locked_priv = 0; /* not locked */ + + /* We can still return some data */ data.time_to_first_fix = i; + 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 */ return data; }