-
Notifications
You must be signed in to change notification settings - Fork 103
UBX-NAV-TIMELS support added for leap second event #25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 8 commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
d398dd4
Merge pull request #3 from sparkfun/release_candidate
UT2UH 8e6986a
Merge pull request #4 from sparkfun/release_candidate
UT2UH c912fce
Merge pull request #6 from sparkfun/release_candidate
UT2UH c97f192
Merge pull request #7 from sparkfun/release_candidate
UT2UH c351fb5
UBX-NAV-TIMELS support added for leap second event
UT2UH c879fb8
Merge pull request #8 from sparkfun/release_candidate
UT2UH 2706d41
Merge branch 'leap_second' into release_candidate
UT2UH 103d7b5
TIMELS RAM deleted on 'end'
UT2UH 5c7298c
UBX-NAV-TIMELS validity bits fixes
UT2UH File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
143 changes: 143 additions & 0 deletions
143
examples/Example28_GetLeapSecondInfo/Example28_GetLeapSecondInfo.ino
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
/* | ||
Getting leap second event info as SNTP Leap Indicator, time to a leap second event and the number of leap seconds since GPS epoch | ||
By: UT2UH | ||
Date: April 14th, 2021 | ||
License: MIT. See license file for more information but you can | ||
basically do whatever you want with this code. | ||
This example shows how to query a u-blox module for the leap second event info to cast to SNTP Leap Indicator enumeration. | ||
We also turn off the NMEA output on the I2C port. This decreases the amount of I2C traffic dramatically. | ||
Leave NMEA parsing behind. Now you can simply ask the module for the datums you want! | ||
Feel like supporting open source hardware? | ||
Buy a board from SparkFun! | ||
ZED-F9P RTK2: https://www.sparkfun.com/products/15136 | ||
NEO-M8P RTK: https://www.sparkfun.com/products/15005 | ||
SAM-M8Q: https://www.sparkfun.com/products/15106 | ||
Hardware Connections: | ||
Plug a Qwiic cable into the GNSS and a BlackBoard | ||
If you don't have a platform with a Qwiic connection use the SparkFun Qwiic Breadboard Jumper (https://www.sparkfun.com/products/14425) | ||
Open the serial monitor at 115200 baud to see the output | ||
*/ | ||
|
||
#include <Wire.h> //Needed for I2C to GNSS | ||
|
||
#include <SparkFun_u-blox_GNSS_Arduino_Library.h> //http://librarymanager/All#SparkFun_u-blox_GNSS | ||
SFE_UBLOX_GNSS myGNSS; | ||
|
||
typedef enum { | ||
LI_NO_WARNING, //Time leaping not scheduled | ||
LI_LAST_MINUTE_61_SEC, //Last minute has 61 seconds | ||
LI_LAST_MINUTE_59_SEC, //Last minute has 59 seconds | ||
LI_ALARM_CONDITION //The NTP server's clock not synchronized | ||
} ntp_LI_e; | ||
|
||
|
||
long lastTime = 0; //Simple local timer. Limits amount if I2C traffic to u-blox module. | ||
|
||
void setup() | ||
{ | ||
Serial.begin(115200); | ||
while (!Serial) | ||
; //Wait for user to open terminal | ||
Serial.println("SparkFun u-blox Example"); | ||
|
||
Wire.begin(); | ||
|
||
if (myGNSS.begin() == false) //Connect to the u-blox module using Wire port | ||
{ | ||
Serial.println(F("u-blox GNSS not detected at default I2C address. Please check wiring. Freezing.")); | ||
while (1) | ||
; | ||
} | ||
|
||
// Uncomment the next line if you need to completely reset your module | ||
//myGNSS.factoryDefault(); delay(5000); // Reset everything and wait while the module restarts | ||
|
||
myGNSS.setI2COutput(COM_TYPE_UBX); //Set the I2C port to output UBX only (turn off NMEA noise) | ||
myGNSS.saveConfiguration(); //Optional: Save the current settings to flash and BBR | ||
|
||
Serial.println("Compare Unix Epoch given with reference one from https://www.epochconverter.com/"); | ||
|
||
} | ||
|
||
void loop() | ||
{ | ||
//Query module only every second. Doing it more often will just cause I2C traffic. | ||
//The module only responds when a new position is available | ||
if (millis() - lastTime > 1000) | ||
{ | ||
lastTime = millis(); //Update the timer | ||
|
||
// getUnixEpoch marks the PVT data as stale so you will get Unix time and PVT time on alternate seconds | ||
|
||
uint32_t us; //microseconds returned by getUnixEpoch() | ||
uint32_t epoch = myGNSS.getUnixEpoch(); | ||
Serial.print("Unix Epoch rounded: "); | ||
Serial.print(epoch, DEC); | ||
epoch = myGNSS.getUnixEpoch(us); | ||
Serial.print(" Exact Unix Epoch: "); | ||
Serial.print(epoch, DEC); | ||
Serial.print(" micros: "); | ||
Serial.println(us, DEC); | ||
int32_t timeToLeapSecEvent; | ||
ntp_LI_e leapIndicator = (ntp_LI_e)myGNSS.getLeapIndicator(timeToLeapSecEvent); | ||
Serial.print("NTP LI: "); | ||
Serial.print(leapIndicator, DEC); | ||
switch (leapIndicator){ | ||
case LI_NO_WARNING: | ||
Serial.print(" - No event scheduled"); | ||
break; | ||
case LI_LAST_MINUTE_61_SEC: | ||
Serial.print(" - last minute will end at 23:60"); | ||
break; | ||
case LI_LAST_MINUTE_59_SEC: | ||
Serial.print(" - last minute will end at 23:58"); | ||
break; | ||
case LI_ALARM_CONDITION: | ||
default: | ||
Serial.print(" - Unknown (clock not synchronized)"); | ||
break; | ||
} | ||
Serial.print(". Time to the next leap second event: "); | ||
Serial.println(timeToLeapSecEvent, DEC); | ||
|
||
sfe_ublox_ls_src_e leapSecSource; | ||
Serial.print("Leap seconds since GPS Epoch (Jan 6th, 1980): "); | ||
Serial.print(myGNSS.getCurrentLeapSeconds(leapSecSource), DEC); | ||
switch (leapSecSource){ | ||
case SFE_UBLOX_LS_SRC_DEFAULT: | ||
Serial.print(" - hardcoded"); | ||
break; | ||
case SFE_UBLOX_LS_SRC_GLONASS: | ||
Serial.print(" - derived from GPS and GLONASS time difference"); | ||
break; | ||
case SFE_UBLOX_LS_SRC_GPS: | ||
Serial.print(" - according to GPS"); | ||
break; | ||
case SFE_UBLOX_LS_SRC_SBAS: | ||
Serial.print(" - according to SBAS"); | ||
break; | ||
case SFE_UBLOX_LS_SRC_BEIDOU: | ||
Serial.print(" - according to BeiDou"); | ||
break; | ||
case SFE_UBLOX_LS_SRC_GALILEO: | ||
Serial.print(" - according to Galileo"); | ||
break; | ||
case SFE_UBLOX_LS_SRC_AIDED: | ||
Serial.print(" - last minute will end at 23:58"); | ||
break; | ||
case SFE_UBLOX_LS_SRC_CONFIGURED: | ||
Serial.print(" - as configured)"); | ||
break; | ||
case SFE_UBLOX_LS_SRC_UNKNOWN: | ||
default: | ||
Serial.print(" - source unknown"); | ||
break; | ||
} | ||
Serial.println(); | ||
} | ||
Serial.println(); | ||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.