summaryrefslogtreecommitdiff
path: root/driver_sirf.c
diff options
context:
space:
mode:
authorGary E. Miller <gem@rellim.com>2019-04-23 15:35:10 -0700
committerGary E. Miller <gem@rellim.com>2019-04-23 15:35:10 -0700
commitebad90541fc56a32cce0c6e157e2b1afba0f7272 (patch)
tree8758447873cf9494cde5c2463832bb62773056b3 /driver_sirf.c
parent6173fc06d486cfe9404afacff98f85c0fa929c58 (diff)
downloadgpsd-ebad90541fc56a32cce0c6e157e2b1afba0f7272.tar.gz
driver_sirf: Consistently init struct tm.
Diffstat (limited to 'driver_sirf.c')
-rw-r--r--driver_sirf.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/driver_sirf.c b/driver_sirf.c
index ba52967d..f81bfca5 100644
--- a/driver_sirf.c
+++ b/driver_sirf.c
@@ -639,13 +639,13 @@ static gps_mask_t sirf_msg_67_1(struct gps_device_t *session,
time_accuracy = getub(buf, 22);
time_source = getub(buf, 23); /* unused */
+ memset(&unpacked_date, 0, sizeof(unpacked_date));
unpacked_date.tm_year = (int)getbeu16(buf, 24) - 1900;
unpacked_date.tm_mon = (int)getub(buf, 26) - 1;
unpacked_date.tm_mday = (int)getub(buf, 27);
unpacked_date.tm_hour = (int)getub(buf, 28);
unpacked_date.tm_min = (int)getub(buf, 29);
unpacked_date.tm_sec = (int)getbeu16(buf, 30) / 1000;
- unpacked_date.tm_isdst = 0;
session->newdata.time = (timestamp_t)mkgmtime(&unpacked_date);
/* add back in the fractional seconds */
session->newdata.time += (timestamp_t)gps_tow_sub_ms / NS_IN_SEC;
@@ -1649,14 +1649,12 @@ static gps_mask_t sirf_msg_geodetic(struct gps_device_t *session,
* Documentation of this field was corrected in the 1.6 version
* of the protocol manual.
*/
+ memset(&unpacked_date, 0, sizeof(unpacked_date));
unpacked_date.tm_year = (int)getbeu16(buf, 11) - 1900;
unpacked_date.tm_mon = (int)getub(buf, 13) - 1;
unpacked_date.tm_mday = (int)getub(buf, 14);
unpacked_date.tm_hour = (int)getub(buf, 15);
unpacked_date.tm_min = (int)getub(buf, 16);
- unpacked_date.tm_sec = 0;
- unpacked_date.tm_isdst = 0;
- unpacked_date.tm_wday = unpacked_date.tm_yday = 0;
subseconds = getbeu16(buf, 17) * 1e-3;
session->newdata.time = (timestamp_t)mkgmtime(&unpacked_date) + subseconds;
gpsd_log(&session->context->errout, LOG_PROG,
@@ -1781,14 +1779,12 @@ static gps_mask_t sirf_msg_ublox(struct gps_device_t *session,
if ( 3 <= session->gpsdata.satellites_visible ) {
mask |= NTPTIME_IS;
}
+ memset(&unpacked_date, 0, sizeof(unpacked_date));
unpacked_date.tm_year = (int)getbeu16(buf, 26) - 1900;
unpacked_date.tm_mon = (int)getub(buf, 28) - 1;
unpacked_date.tm_mday = (int)getub(buf, 29);
unpacked_date.tm_hour = (int)getub(buf, 30);
unpacked_date.tm_min = (int)getub(buf, 31);
- unpacked_date.tm_sec = 0;
- unpacked_date.tm_isdst = 0;
- unpacked_date.tm_wday = unpacked_date.tm_yday = 0;
subseconds = ((unsigned short)getbeu16(buf, 32)) * 1e-3;
session->newdata.time = (timestamp_t)mkgmtime(&unpacked_date) + subseconds;
#ifdef TIMEHINT_ENABLE
@@ -1836,13 +1832,13 @@ static gps_mask_t sirf_msg_ppstime(struct gps_device_t *session,
getub(buf, 14));
if (((int)getub(buf, 14) & 0x07) == 0x07) { /* valid UTC time? */
struct tm unpacked_date;
+ memset(&unpacked_date, 0, sizeof(unpacked_date));
unpacked_date.tm_hour = (int)getub(buf, 1);
unpacked_date.tm_min = (int)getub(buf, 2);
unpacked_date.tm_sec = (int)getub(buf, 3);
unpacked_date.tm_mday = (int)getub(buf, 4);
unpacked_date.tm_mon = (int)getub(buf, 5) - 1;
unpacked_date.tm_year = (int)getbeu16(buf, 6) - 1900;
- unpacked_date.tm_isdst = 0;
session->newdata.time = (timestamp_t)mkgmtime(&unpacked_date);
session->context->leap_seconds = (int)getbeu16(buf, 8);
session->context->valid |= LEAP_SECOND_VALID;