UBX-NAV-TIMELS validity bits fixes
This commit is contained in:
@@ -2086,7 +2086,7 @@ void SFE_UBLOX_GNSS::processUBXpacket(ubxPacket *msg)
|
||||
packetUBXNAVTIMELS->data.timeToLsEvent = extractSignedLong(msg, 12);
|
||||
packetUBXNAVTIMELS->data.dateOfLsGpsWn = extractInt(msg, 16);
|
||||
packetUBXNAVTIMELS->data.dateOfLsGpsDn = extractInt(msg, 18);
|
||||
packetUBXNAVTIMELS->data.valid = extractSignedChar(msg, 23);
|
||||
packetUBXNAVTIMELS->data.valid.all = extractSignedChar(msg, 23);
|
||||
|
||||
//Mark all datums as fresh (not read before)
|
||||
packetUBXNAVTIMELS->moduleQueried.moduleQueried.all = 0xFFFFFFFF;
|
||||
@@ -10391,9 +10391,9 @@ uint8_t SFE_UBLOX_GNSS::getLeapIndicator(int32_t& timeToLsEvent, uint16_t maxWai
|
||||
if (packetUBXNAVTIMELS == NULL) //Bail if the RAM allocation failed
|
||||
return 3;
|
||||
|
||||
if (packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.valid == false)
|
||||
if (packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.validTimeToLsEvent == false)
|
||||
getLeapSecondEvent(maxWait);
|
||||
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.valid = false; //Since we are about to give this to user, mark this data as stale
|
||||
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.validTimeToLsEvent = false; //Since we are about to give this to user, mark this data as stale
|
||||
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.lsChange = false;
|
||||
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.timeToLsEvent = false;
|
||||
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.all = false;
|
||||
@@ -10403,7 +10403,7 @@ uint8_t SFE_UBLOX_GNSS::getLeapIndicator(int32_t& timeToLsEvent, uint16_t maxWai
|
||||
// 1 -last minute of the day has 61 seconds
|
||||
// 2 -last minute of the day has 59 seconds
|
||||
// 3 -unknown (clock unsynchronized)
|
||||
return ((boolean)packetUBXNAVTIMELS->data.valid ? (uint8_t)(packetUBXNAVTIMELS->data.lsChange == -1 ? 2 : packetUBXNAVTIMELS->data.lsChange) : 3);
|
||||
return ((boolean)packetUBXNAVTIMELS->data.valid.bits.validTimeToLsEvent ? (uint8_t)(packetUBXNAVTIMELS->data.lsChange == -1 ? 2 : packetUBXNAVTIMELS->data.lsChange) : 3);
|
||||
}
|
||||
|
||||
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_
|
||||
if (packetUBXNAVTIMELS == NULL) //Bail if the RAM allocation failed
|
||||
return false;
|
||||
|
||||
if (packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.valid == false)
|
||||
if (packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.validCurrLs == false)
|
||||
getLeapSecondEvent(maxWait);
|
||||
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.valid = false; //Since we are about to give this to user, mark this data as stale
|
||||
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.validCurrLs = false; //Since we are about to give this to user, mark this data as stale
|
||||
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.srcOfCurrLs = false;
|
||||
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.currLs = false;
|
||||
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.all = false;
|
||||
|
||||
+11
-2
@@ -870,7 +870,15 @@ typedef struct
|
||||
uint16_t dateOfLsGpsWn; //GPS week num (WN) of the next or the last leap second event
|
||||
uint16_t dateOfLsGpsDn; //GPS day of week num (DN) for the next or last leap second event
|
||||
uint8_t reserved2[3];
|
||||
int8_t valid; // Validity flag, 1 = valid, otherwise 0
|
||||
union
|
||||
{
|
||||
uint8_t all;
|
||||
struct
|
||||
{
|
||||
uint8_t validCurrLs : 1; // 1 = Valid current number of leap seconds value
|
||||
uint8_t validTimeToLsEvent : 1; // 1 = Valid time to next leap second event or from the last leap second event if no future event scheduled
|
||||
} bits;
|
||||
} valid;
|
||||
} UBX_NAV_TIMELS_data_t;
|
||||
|
||||
typedef struct
|
||||
@@ -891,7 +899,8 @@ typedef struct
|
||||
uint32_t timeToLsEvent : 1;
|
||||
uint32_t dateOfLsGpsWn : 1;
|
||||
uint32_t dateOfLsGpsDn : 1;
|
||||
uint32_t valid : 1;
|
||||
uint32_t validCurrLs : 1;
|
||||
uint32_t validTimeToLsEvent : 1;
|
||||
} bits;
|
||||
} moduleQueried;
|
||||
} UBX_NAV_TIMELS_moduleQueried_t;
|
||||
|
||||
Reference in New Issue
Block a user