Skip to content

Commit 5c7298c

Browse files
committed
UBX-NAV-TIMELS validity bits fixes
1 parent 103d7b5 commit 5c7298c

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

src/SparkFun_u-blox_GNSS_Arduino_Library.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2086,7 +2086,7 @@ void SFE_UBLOX_GNSS::processUBXpacket(ubxPacket *msg)
20862086
packetUBXNAVTIMELS->data.timeToLsEvent = extractSignedLong(msg, 12);
20872087
packetUBXNAVTIMELS->data.dateOfLsGpsWn = extractInt(msg, 16);
20882088
packetUBXNAVTIMELS->data.dateOfLsGpsDn = extractInt(msg, 18);
2089-
packetUBXNAVTIMELS->data.valid = extractSignedChar(msg, 23);
2089+
packetUBXNAVTIMELS->data.valid.all = extractSignedChar(msg, 23);
20902090

20912091
//Mark all datums as fresh (not read before)
20922092
packetUBXNAVTIMELS->moduleQueried.moduleQueried.all = 0xFFFFFFFF;
@@ -10391,9 +10391,9 @@ uint8_t SFE_UBLOX_GNSS::getLeapIndicator(int32_t& timeToLsEvent, uint16_t maxWai
1039110391
if (packetUBXNAVTIMELS == NULL) //Bail if the RAM allocation failed
1039210392
return 3;
1039310393

10394-
if (packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.valid == false)
10394+
if (packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.validTimeToLsEvent == false)
1039510395
getLeapSecondEvent(maxWait);
10396-
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.valid = false; //Since we are about to give this to user, mark this data as stale
10396+
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.validTimeToLsEvent = false; //Since we are about to give this to user, mark this data as stale
1039710397
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.lsChange = false;
1039810398
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.timeToLsEvent = false;
1039910399
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.all = false;
@@ -10403,7 +10403,7 @@ uint8_t SFE_UBLOX_GNSS::getLeapIndicator(int32_t& timeToLsEvent, uint16_t maxWai
1040310403
// 1 -last minute of the day has 61 seconds
1040410404
// 2 -last minute of the day has 59 seconds
1040510405
// 3 -unknown (clock unsynchronized)
10406-
return ((boolean)packetUBXNAVTIMELS->data.valid ? (uint8_t)(packetUBXNAVTIMELS->data.lsChange == -1 ? 2 : packetUBXNAVTIMELS->data.lsChange) : 3);
10406+
return ((boolean)packetUBXNAVTIMELS->data.valid.bits.validTimeToLsEvent ? (uint8_t)(packetUBXNAVTIMELS->data.lsChange == -1 ? 2 : packetUBXNAVTIMELS->data.lsChange) : 3);
1040710407
}
1040810408

1040910409
int8_t SFE_UBLOX_GNSS::getCurrentLeapSeconds(sfe_ublox_ls_src_e& source, uint16_t maxWait)
@@ -10412,9 +10412,9 @@ int8_t SFE_UBLOX_GNSS::getCurrentLeapSeconds(sfe_ublox_ls_src_e& source, uint16_
1041210412
if (packetUBXNAVTIMELS == NULL) //Bail if the RAM allocation failed
1041310413
return false;
1041410414

10415-
if (packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.valid == false)
10415+
if (packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.validCurrLs == false)
1041610416
getLeapSecondEvent(maxWait);
10417-
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.valid = false; //Since we are about to give this to user, mark this data as stale
10417+
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.validCurrLs = false; //Since we are about to give this to user, mark this data as stale
1041810418
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.srcOfCurrLs = false;
1041910419
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.currLs = false;
1042010420
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.all = false;

src/u-blox_structs.h

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -870,7 +870,15 @@ typedef struct
870870
uint16_t dateOfLsGpsWn; //GPS week num (WN) of the next or the last leap second event
871871
uint16_t dateOfLsGpsDn; //GPS day of week num (DN) for the next or last leap second event
872872
uint8_t reserved2[3];
873-
int8_t valid; // Validity flag, 1 = valid, otherwise 0
873+
union
874+
{
875+
uint8_t all;
876+
struct
877+
{
878+
uint8_t validCurrLs : 1; // 1 = Valid current number of leap seconds value
879+
uint8_t validTimeToLsEvent : 1; // 1 = Valid time to next leap second event or from the last leap second event if no future event scheduled
880+
} bits;
881+
} valid;
874882
} UBX_NAV_TIMELS_data_t;
875883

876884
typedef struct
@@ -891,7 +899,8 @@ typedef struct
891899
uint32_t timeToLsEvent : 1;
892900
uint32_t dateOfLsGpsWn : 1;
893901
uint32_t dateOfLsGpsDn : 1;
894-
uint32_t valid : 1;
902+
uint32_t validCurrLs : 1;
903+
uint32_t validTimeToLsEvent : 1;
895904
} bits;
896905
} moduleQueried;
897906
} UBX_NAV_TIMELS_moduleQueried_t;

0 commit comments

Comments
 (0)