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.timeToLsEvent = extractSignedLong(msg, 12);
|
||||||
packetUBXNAVTIMELS->data.dateOfLsGpsWn = extractInt(msg, 16);
|
packetUBXNAVTIMELS->data.dateOfLsGpsWn = extractInt(msg, 16);
|
||||||
packetUBXNAVTIMELS->data.dateOfLsGpsDn = extractInt(msg, 18);
|
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)
|
//Mark all datums as fresh (not read before)
|
||||||
packetUBXNAVTIMELS->moduleQueried.moduleQueried.all = 0xFFFFFFFF;
|
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
|
if (packetUBXNAVTIMELS == NULL) //Bail if the RAM allocation failed
|
||||||
return 3;
|
return 3;
|
||||||
|
|
||||||
if (packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.valid == false)
|
if (packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.validTimeToLsEvent == false)
|
||||||
getLeapSecondEvent(maxWait);
|
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.lsChange = false;
|
||||||
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.timeToLsEvent = false;
|
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.timeToLsEvent = false;
|
||||||
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.all = 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
|
// 1 -last minute of the day has 61 seconds
|
||||||
// 2 -last minute of the day has 59 seconds
|
// 2 -last minute of the day has 59 seconds
|
||||||
// 3 -unknown (clock unsynchronized)
|
// 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)
|
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
|
if (packetUBXNAVTIMELS == NULL) //Bail if the RAM allocation failed
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.valid == false)
|
if (packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.validCurrLs == false)
|
||||||
getLeapSecondEvent(maxWait);
|
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.srcOfCurrLs = false;
|
||||||
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.currLs = false;
|
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.currLs = false;
|
||||||
packetUBXNAVTIMELS->moduleQueried.moduleQueried.bits.all = 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 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
|
uint16_t dateOfLsGpsDn; //GPS day of week num (DN) for the next or last leap second event
|
||||||
uint8_t reserved2[3];
|
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;
|
} UBX_NAV_TIMELS_data_t;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
@@ -891,7 +899,8 @@ typedef struct
|
|||||||
uint32_t timeToLsEvent : 1;
|
uint32_t timeToLsEvent : 1;
|
||||||
uint32_t dateOfLsGpsWn : 1;
|
uint32_t dateOfLsGpsWn : 1;
|
||||||
uint32_t dateOfLsGpsDn : 1;
|
uint32_t dateOfLsGpsDn : 1;
|
||||||
uint32_t valid : 1;
|
uint32_t validCurrLs : 1;
|
||||||
|
uint32_t validTimeToLsEvent : 1;
|
||||||
} bits;
|
} bits;
|
||||||
} moduleQueried;
|
} moduleQueried;
|
||||||
} UBX_NAV_TIMELS_moduleQueried_t;
|
} UBX_NAV_TIMELS_moduleQueried_t;
|
||||||
|
|||||||
Reference in New Issue
Block a user