Skip to content

Commit 7ab87ae

Browse files
authored
Merge pull request #131 from sparkfun/release_candidate
v2.2.8
2 parents 729a88d + 5b1ed81 commit 7ab87ae

7 files changed

+347
-82
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ v2.1 of the library adds support for u-blox AssistNow<sup>TM</sup> Assisted GNSS
4848
This library is the new and improved version of the very popular SparkFun u-blox GNSS Arduino Library. v2.0 contains some big changes and improvements:
4949

5050
* Seamless support for "automatic" message delivery:
51-
* In v1.8, you could ask for the NAV PVT (Navigation Position Velocity Time) message to be delivered _automatically_, without polling. v2.0 adds automatic support for [**26 messages**](./Theory.md#auto-messages), covering the full range of: standard and High Precision position, velocity, attitude and time information; relative positioning; event capture with nanosecond time resolution; raw GNSS signal data including carrier phase; Sensor Fusion; and High Navigation Rate data.
51+
* In v1.8, you could ask for the NAV PVT (Navigation Position Velocity Time) message to be delivered _automatically_, without polling. v2.0 adds automatic support for [**27 messages**](./Theory.md#auto-messages), covering the full range of: standard and High Precision position, velocity, attitude and time information; relative positioning; event capture with nanosecond time resolution; raw GNSS signal data including carrier phase; Sensor Fusion; and High Navigation Rate data.
5252
* Don't see the message you really need? [Adding_New_Messages](./Adding_New_Messages.md) provides details on how to add "auto" support for your favourite message.
5353
* Dynamic memory allocation with clearly-defined data storage structs for each message:
5454
* There are no static 'global' variables to eat up your RAM. v2.0 automatically allocates memory for the automatic messages when they are enabled. You may find your total RAM use is lower with v2.0 than with v1.8.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
/*
2+
Configuring the GNSS to automatically send NAV SVIN reports over I2C and display them using a callback
3+
By: Paul Clark
4+
SparkFun Electronics
5+
Date: April 4th, 2022
6+
License: MIT. See license file for more information but you can
7+
basically do whatever you want with this code.
8+
9+
This example shows how to configure the u-blox GNSS to send NAV SVIN reports automatically
10+
and access the data via a callback. No more polling!
11+
12+
Feel like supporting open source hardware?
13+
Buy a board from SparkFun!
14+
ZED-F9P RTK2: https://www.sparkfun.com/products/15136
15+
16+
Hardware Connections:
17+
Plug a Qwiic cable into the GPS and a BlackBoard
18+
If you don't have a platform with a Qwiic connection use the SparkFun Qwiic Breadboard Jumper (https://www.sparkfun.com/products/14425)
19+
Open the serial monitor at 115200 baud to see the output
20+
*/
21+
22+
#include <Wire.h> //Needed for I2C to GNSS
23+
24+
#include <SparkFun_u-blox_GNSS_Arduino_Library.h> //http://librarymanager/All#SparkFun_u-blox_GNSS
25+
SFE_UBLOX_GNSS myGNSS;
26+
27+
// Callback: newNAVSVIN will be called when new NAV SVIN data arrives
28+
// See u-blox_structs.h for the full definition of UBX_NAV_SVIN_data_t
29+
// _____ You can use any name you like for the callback. Use the same name when you call setAutoNAVSVINcallbackPtr
30+
// / _____ This _must_ be UBX_NAV_SVIN_data_t
31+
// | / _____ You can use any name you like for the struct
32+
// | | /
33+
// | | |
34+
void newNAVSVIN(UBX_NAV_SVIN_data_t *ubxDataStruct)
35+
{
36+
Serial.println();
37+
38+
Serial.print(F("Survey-in is "));
39+
if (ubxDataStruct->active == 0)
40+
Serial.print(F("not "));
41+
Serial.println(F("in progress"));
42+
43+
Serial.print(F("Survey-in position is "));
44+
if (ubxDataStruct->valid == 0)
45+
Serial.print(F("not "));
46+
Serial.println(F("valid"));
47+
48+
Serial.print(F("Survey-in observation time (s): "));
49+
Serial.println(ubxDataStruct->dur);
50+
51+
Serial.print(F("ECEF position (cm): "));
52+
Serial.print(ubxDataStruct->meanX);
53+
Serial.print(F(" ("));
54+
if (ubxDataStruct->meanXHP >= 0)
55+
Serial.print(F("+"));
56+
Serial.print((float)ubxDataStruct->meanXHP * 0.01); // Convert 0.1mm to cm
57+
Serial.print(F("), "));
58+
Serial.print(ubxDataStruct->meanY);
59+
Serial.print(F(" ("));
60+
if (ubxDataStruct->meanYHP >= 0)
61+
Serial.print(F("+"));
62+
Serial.print((float)ubxDataStruct->meanYHP * 0.01); // Convert 0.1mm to cm
63+
Serial.print(F("), "));
64+
Serial.print(ubxDataStruct->meanZ);
65+
Serial.print(F(" ("));
66+
if (ubxDataStruct->meanZHP >= 0)
67+
Serial.print(F("+"));
68+
Serial.print((float)ubxDataStruct->meanZHP * 0.01); // Convert 0.1mm to cm
69+
Serial.println(F(")"));
70+
71+
Serial.print(F("Mean position accuracy (cm): "));
72+
Serial.println((float)ubxDataStruct->meanAcc * 0.01); // Convert 0.1mm to cm
73+
}
74+
75+
void setup()
76+
{
77+
Serial.begin(115200);
78+
while (!Serial); //Wait for user to open terminal
79+
Serial.println(F("u-blox Base Station example"));
80+
81+
Wire.begin();
82+
83+
//myGNSS.enableDebugging(); // Uncomment this line to enable debug messages on Serial
84+
85+
if (myGNSS.begin() == false) //Connect to the u-blox module using Wire port
86+
{
87+
Serial.println(F("u-blox GNSS not detected at default I2C address. Please check wiring. Freezing."));
88+
while (1);
89+
}
90+
91+
// Uncomment the next line if you want to reset your module back to the default settings with 1Hz navigation rate
92+
//myGNSS.factoryDefault(); delay(5000);
93+
94+
myGNSS.setI2COutput(COM_TYPE_UBX); //Set the I2C port to output UBX only (turn off NMEA noise)
95+
myGNSS.saveConfigSelective(VAL_CFG_SUBSEC_IOPORT); //Save the communications port settings to flash and BBR
96+
97+
// Set up the callback for NAV SVIN. This will enable SVIN messages at the navigation rate
98+
myGNSS.setAutoNAVSVINcallbackPtr(&newNAVSVIN);
99+
100+
while (Serial.available()) Serial.read(); //Clear the serial buffer
101+
Serial.println(F("Press any key to begin Survey-In"));
102+
}
103+
104+
void loop()
105+
{
106+
myGNSS.checkUblox(); //See if new data is available. Process bytes as they come in.
107+
myGNSS.checkCallbacks(); //Process any waiting callbacks
108+
109+
if (Serial.available()) // Check if user has pressed a key
110+
{
111+
bool success = myGNSS.enableSurveyMode(60, 5.000); //Enable Survey in, 60 seconds, 5.0m
112+
//bool success = myGNSS.enableSurveyModeFull(86400, 2.000); //Enable Survey in, 24 hours, 2.0m
113+
114+
Serial.println();
115+
116+
if (success)
117+
{
118+
Serial.println(F("Survey-In started!"));
119+
}
120+
else
121+
{
122+
Serial.println(F("Survey start failed!"));
123+
}
124+
125+
while (Serial.available()) Serial.read(); //Clear the serial buffer
126+
}
127+
}

keywords.txt

+6-27
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,6 @@ setAutoNAVPOSECEFrate KEYWORD2
238238
setAutoNAVPOSECEFcallback KEYWORD2
239239
setAutoNAVPOSECEFcallbackPtr KEYWORD2
240240
assumeAutoNAVPOSECEF KEYWORD2
241-
initPacketUBXNAVPOSECEF KEYWORD2
242241
flushNAVPOSECEF KEYWORD2
243242
logNAVPOSECEF KEYWORD2
244243

@@ -248,7 +247,6 @@ setAutoNAVSTATUSrate KEYWORD2
248247
setAutoNAVSTATUScallback KEYWORD2
249248
setAutoNAVSTATUScallbackPtr KEYWORD2
250249
assumeAutoNAVSTATUS KEYWORD2
251-
initPacketUBXNAVSTATUS KEYWORD2
252250
flushNAVSTATUS KEYWORD2
253251
logNAVSTATUS KEYWORD2
254252

@@ -258,7 +256,6 @@ setAutoDOPrate KEYWORD2
258256
setAutoDOPcallback KEYWORD2
259257
setAutoDOPcallbackPtr KEYWORD2
260258
assumeAutoDOP KEYWORD2
261-
initPacketUBXNAVDOP KEYWORD2
262259
flushDOP KEYWORD2
263260
logNAVDOP KEYWORD2
264261

@@ -269,7 +266,6 @@ setAutoNAVATTrate KEYWORD2
269266
setAutoNAVATTcallback KEYWORD2
270267
setAutoNAVATTcallbackPtr KEYWORD2
271268
assumeAutoNAVATT KEYWORD2
272-
initPacketUBXNAVATT KEYWORD2
273269
flushNAVATT KEYWORD2
274270
logNAVATT KEYWORD2
275271

@@ -279,7 +275,6 @@ setAutoPVTrate KEYWORD2
279275
setAutoPVTcallback KEYWORD2
280276
setAutoPVTcallbackPtr KEYWORD2
281277
assumeAutoPVT KEYWORD2
282-
initPacketUBXNAVPVT KEYWORD2
283278
flushPVT KEYWORD2
284279
logNAVPVT KEYWORD2
285280

@@ -289,7 +284,6 @@ setAutoNAVODOrate KEYWORD2
289284
setAutoNAVODOcallback KEYWORD2
290285
setAutoNAVODOcallbackPtr KEYWORD2
291286
assumeAutoNAVODO KEYWORD2
292-
initPacketUBXNAVODO KEYWORD2
293287
flushNAVODO KEYWORD2
294288
logNAVODO KEYWORD2
295289

@@ -299,7 +293,6 @@ setAutoNAVVELECEFrate KEYWORD2
299293
setAutoNAVVELECEFcallback KEYWORD2
300294
setAutoNAVVELECEFcallbackPtr KEYWORD2
301295
assumeAutoNAVVELECEF KEYWORD2
302-
initPacketUBXNAVVELECEF KEYWORD2
303296
flushNAVVELECEF KEYWORD2
304297
logNAVVELECEF KEYWORD2
305298

@@ -309,7 +302,6 @@ setAutoNAVVELNEDrate KEYWORD2
309302
setAutoNAVVELNEDcallback KEYWORD2
310303
setAutoNAVVELNEDcallbackPtr KEYWORD2
311304
assumeAutoNAVVELNED KEYWORD2
312-
initPacketUBXNAVVELNED KEYWORD2
313305
flushNAVVELNED KEYWORD2
314306
logNAVVELNED KEYWORD2
315307

@@ -319,7 +311,6 @@ setAutoNAVHPPOSECEFrate KEYWORD2
319311
setAutoNAVHPPOSECEFcallback KEYWORD2
320312
setAutoNAVHPPOSECEFcallbackPtr KEYWORD2
321313
assumeAutoNAVHPPOSECEF KEYWORD2
322-
initPacketUBXNAVHPPOSECEF KEYWORD2
323314
flushNAVHPPOSECEF KEYWORD2
324315
logNAVHPPOSECEF KEYWORD2
325316

@@ -329,7 +320,6 @@ setAutoHPPOSLLHrate KEYWORD2
329320
setAutoHPPOSLLHcallback KEYWORD2
330321
setAutoHPPOSLLHcallbackPtr KEYWORD2
331322
assumeAutoHPPOSLLH KEYWORD2
332-
initPacketUBXNAVHPPOSLLH KEYWORD2
333323
flushHPPOSLLH KEYWORD2
334324
logNAVHPPOSLLH KEYWORD2
335325

@@ -349,25 +339,27 @@ setAutoNAVCLOCKrate KEYWORD2
349339
setAutoNAVCLOCKcallback KEYWORD2
350340
setAutoNAVCLOCKcallbackPtr KEYWORD2
351341
assumeAutoNAVCLOCK KEYWORD2
352-
initPacketUBXNAVCLOCK KEYWORD2
353342
flushNAVCLOCK KEYWORD2
354343
logNAVCLOCK KEYWORD2
355344

356345
getLeapSecondEvent KEYWORD2
357346
getLeapIndicator KEYWORD2
358347
getCurrentLeapSeconds KEYWORD2
359-
initPacketUBXNAVTIMELS KEYWORD2
360348

361349
getSurveyStatus KEYWORD2
362-
initPacketUBXNAVSVIN KEYWORD2
350+
setAutoNAVSVIN KEYWORD2
351+
setAutoNAVSVINrate KEYWORD2
352+
setAutoNAVSVINcallbackPtr KEYWORD2
353+
assumeAutoNAVSVIN KEYWORD2
354+
flushNAVSVIN KEYWORD2
355+
logNAVSVIN KEYWORD2
363356

364357
getNAVSAT KEYWORD2
365358
setAutoNAVSAT KEYWORD2
366359
setAutoNAVSATrate KEYWORD2
367360
setAutoNAVSATcallback KEYWORD2
368361
setAutoNAVSATcallbackPtr KEYWORD2
369362
assumeAutoNAVSAT KEYWORD2
370-
initPacketUBXNAVSAT KEYWORD2
371363
flushNAVSAT KEYWORD2
372364
logNAVSAT KEYWORD2
373365

@@ -377,7 +369,6 @@ setAutoRELPOSNEDrate KEYWORD2
377369
setAutoRELPOSNEDcallback KEYWORD2
378370
setAutoRELPOSNEDcallbackPtr KEYWORD2
379371
assumeAutoRELPOSNED KEYWORD2
380-
initPacketUBXNAVRELPOSNED KEYWORD2
381372
flushNAVRELPOSNED KEYWORD2
382373
logNAVRELPOSNED KEYWORD2
383374

@@ -387,7 +378,6 @@ setAutoAOPSTATUSrate KEYWORD2
387378
setAutoAOPSTATUScallback KEYWORD2
388379
setAutoAOPSTATUScallbackPtr KEYWORD2
389380
assumeAutoAOPSTATUS KEYWORD2
390-
initPacketUBXAOPSTATUS KEYWORD2
391381
flushAOPSTATUS KEYWORD2
392382
logAOPSTATUS KEYWORD2
393383

@@ -402,7 +392,6 @@ setAutoRXMSFRBXrate KEYWORD2
402392
setAutoRXMSFRBXcallback KEYWORD2
403393
setAutoRXMSFRBXcallbackPtr KEYWORD2
404394
assumeAutoRXMSFRBX KEYWORD2
405-
initPacketUBXRXMSFRBX KEYWORD2
406395
flushRXMSFRBX KEYWORD2
407396
logRXMSFRBX KEYWORD2
408397

@@ -412,7 +401,6 @@ setAutoRXMRAWXrate KEYWORD2
412401
setAutoRXMRAWXcallback KEYWORD2
413402
setAutoRXMRAWXcallbackPtr KEYWORD2
414403
assumeAutoRXMRAWX KEYWORD2
415-
initPacketUBXRXMRAWX KEYWORD2
416404
flushRXMRAWX KEYWORD2
417405
logRXMRAWX KEYWORD2
418406

@@ -422,7 +410,6 @@ setAutoTIMTM2rate KEYWORD2
422410
setAutoTIMTM2callback KEYWORD2
423411
setAutoTIMTM2callbackPtr KEYWORD2
424412
assumeAutoTIMTM2 KEYWORD2
425-
initPacketUBXTIMTM2 KEYWORD2
426413
flushTIMTM2 KEYWORD2
427414
logTIMTM2 KEYWORD2
428415

@@ -433,7 +420,6 @@ setAutoESFALGrate KEYWORD2
433420
setAutoESFALGcallback KEYWORD2
434421
setAutoESFALGcallbackPtr KEYWORD2
435422
assumeAutoESFALG KEYWORD2
436-
initPacketUBXESFALG KEYWORD2
437423
flushESFALG KEYWORD2
438424
logESFALG KEYWORD2
439425

@@ -444,7 +430,6 @@ setAutoESFSTATUSrate KEYWORD2
444430
setAutoESFSTATUScallback KEYWORD2
445431
setAutoESFSTATUScallbackPtr KEYWORD2
446432
assumeAutoESFSTATUS KEYWORD2
447-
initPacketUBXESFSTATUS KEYWORD2
448433
flushESFSTATUS KEYWORD2
449434
logESFSTATUS KEYWORD2
450435

@@ -455,7 +440,6 @@ setAutoESFINSrate KEYWORD2
455440
setAutoESFINScallback KEYWORD2
456441
setAutoESFINScallbackPtr KEYWORD2
457442
assumeAutoESFINS KEYWORD2
458-
initPacketUBXESFINS KEYWORD2
459443
flushESFINS KEYWORD2
460444
logESFINS KEYWORD2
461445

@@ -466,7 +450,6 @@ setAutoESFMEASrate KEYWORD2
466450
setAutoESFMEAScallback KEYWORD2
467451
setAutoESFMEAScallbackPtr KEYWORD2
468452
assumeAutoESFMEAS KEYWORD2
469-
initPacketUBXESFMEAS KEYWORD2
470453
flushESFMEAS KEYWORD2
471454
logESFMEAS KEYWORD2
472455

@@ -477,7 +460,6 @@ setAutoESFRAWrate KEYWORD2
477460
setAutoESFRAWcallback KEYWORD2
478461
setAutoESFRAWcallbackPtr KEYWORD2
479462
assumeAutoESFRAW KEYWORD2
480-
initPacketUBXESFRAW KEYWORD2
481463
flushESFRAW KEYWORD2
482464
logESFRAW KEYWORD2
483465

@@ -488,7 +470,6 @@ setAutoHNRATTrate KEYWORD2
488470
setAutoHNRATTcallback KEYWORD2
489471
setAutoHNRATTcallbackPtr KEYWORD2
490472
assumeAutoHNRATT KEYWORD2
491-
initPacketUBXHNRATT KEYWORD2
492473
flushHNRATT KEYWORD2
493474
logHNRATT KEYWORD2
494475

@@ -499,7 +480,6 @@ setAutoHNRINSrate KEYWORD2
499480
setAutoHNRINScallback KEYWORD2
500481
setAutoHNRINScallbackPtr KEYWORD2
501482
assumeAutoHNRINS KEYWORD2
502-
initPacketUBXHNRINS KEYWORD2
503483
flushHNRINS KEYWORD2
504484
logHNRINS KEYWORD2
505485

@@ -509,7 +489,6 @@ setAutoHNRPVTrate KEYWORD2
509489
setAutoHNRPVTcallback KEYWORD2
510490
setAutoHNRPVTcallbackPtr KEYWORD2
511491
assumeAutoHNRPVT KEYWORD2
512-
initPacketUBXHNRPVT KEYWORD2
513492
flushHNRPVT KEYWORD2
514493
logHNRPVT KEYWORD2
515494

library.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=SparkFun u-blox GNSS Arduino Library
2-
version=2.2.7
2+
version=2.2.8
33
author=SparkFun Electronics <[email protected]>
44
maintainer=SparkFun Electronics <sparkfun.com>
55
sentence=Library for I2C, Serial and SPI Communication with u-blox GNSS modules<br/><br/>

0 commit comments

Comments
 (0)