Adding support for multiple message rates

This commit is contained in:
PaulZC
2021-04-01 18:19:27 +01:00
parent de5e73947b
commit c701d67a5f
4 changed files with 326 additions and 89 deletions
@@ -7,9 +7,9 @@
basically do whatever you want with this code. basically do whatever you want with this code.
This example shows how to configure the U-Blox GNSS to output multiple messages at different rates: This example shows how to configure the U-Blox GNSS to output multiple messages at different rates:
PVT is output once per measurement; PVT is output every second;
POS_ECEF is output every second measurement; POSECEF is output every five seconds;
VEL_NED is output every third measurement. VELNED is output every ten seconds.
Feel like supporting open source hardware? Feel like supporting open source hardware?
Buy a board from SparkFun! Buy a board from SparkFun!
@@ -46,9 +46,9 @@ void setup()
myGNSS.setMeasurementRate(1000); //Produce a measurement every 1000ms myGNSS.setMeasurementRate(1000); //Produce a measurement every 1000ms
myGNSS.setNavigationRate(1); //Produce a navigation solution every measurement myGNSS.setNavigationRate(1); //Produce a navigation solution every measurement
myGNSS.setAutoPVTrate(1); //Tell the GNSS to "send" each PVT solution every measurement myGNSS.setAutoPVTrate(1); //Tell the GNSS to send the PVT solution every measurement
//myGNSS.setAutoPOSECEFrate(2); //Tell the GNSS to "send" each POS_ECEF solution every second measurement myGNSS.setAutoNAVPOSECEFrate(5); //Tell the GNSS to send each POSECEF solution every 5th measurement
myGNSS.setAutoNAVVELNEDrate(3); //Tell the GNSS to "send" each VEL_NED solution every third measurement myGNSS.setAutoNAVVELNEDrate(10); //Tell the GNSS to send each VELNED solution every 10th measurement
//myGNSS.saveConfiguration(); //Optional: Save the current settings to flash and BBR //myGNSS.saveConfiguration(); //Optional: Save the current settings to flash and BBR
} }
@@ -72,7 +72,23 @@ void loop()
Serial.println(F(" (mm)")); Serial.println(F(" (mm)"));
} }
// Calling getVELNED returns true if there actually is fresh velocity data available. // Calling getNAVPOSECEF returns true if there actually is a fresh position solution available.
if (myGNSS.getNAVPOSECEF())
{
Serial.print(F("ecefX: "));
Serial.print((float)myGNSS.packetUBXNAVPOSECEF->data.ecefX / 100.0, 2); // convert ecefX to m
Serial.print(F(" ecefY: "));
Serial.print((float)myGNSS.packetUBXNAVPOSECEF->data.ecefY / 100.0, 2); // convert ecefY to m
Serial.print(F(" ecefZ: "));
Serial.print((float)myGNSS.packetUBXNAVPOSECEF->data.ecefZ / 100.0, 2); // convert ecefY to m
Serial.println(F(" (m)"));
myGNSS.flushNAVPOSECEF(); //Mark all the data as read/stale so we get fresh data next time
}
// Calling getNAVVELNED returns true if there actually is fresh velocity data available.
if (myGNSS.getNAVVELNED()) if (myGNSS.getNAVVELNED())
{ {
Serial.print(F("velN: ")); Serial.print(F("velN: "));
+23 -12
View File
@@ -166,7 +166,7 @@ sendCfgValset32 KEYWORD2
getNAVPOSECEF KEYWORD2 getNAVPOSECEF KEYWORD2
setAutoNAVPOSECEF KEYWORD2 setAutoNAVPOSECEF KEYWORD2
setAutoNAVPOSECEF KEYWORD2 setAutoNAVPOSECEFrate KEYWORD2
setAutoNAVPOSECEFcallback KEYWORD2 setAutoNAVPOSECEFcallback KEYWORD2
assumeAutoNAVPOSECEF KEYWORD2 assumeAutoNAVPOSECEF KEYWORD2
initPacketUBXNAVPOSECEF KEYWORD2 initPacketUBXNAVPOSECEF KEYWORD2
@@ -175,7 +175,7 @@ logNAVPOSECEF KEYWORD2
getNAVSTATUS KEYWORD2 getNAVSTATUS KEYWORD2
setAutoNAVSTATUS KEYWORD2 setAutoNAVSTATUS KEYWORD2
setAutoNAVSTATUS KEYWORD2 setAutoNAVSTATUSrate KEYWORD2
setAutoNAVSTATUScallback KEYWORD2 setAutoNAVSTATUScallback KEYWORD2
assumeAutoNAVSTATUS KEYWORD2 assumeAutoNAVSTATUS KEYWORD2
initPacketUBXNAVSTATUS KEYWORD2 initPacketUBXNAVSTATUS KEYWORD2
@@ -184,7 +184,7 @@ logNAVSTATUS KEYWORD2
getDOP KEYWORD2 getDOP KEYWORD2
setAutoDOP KEYWORD2 setAutoDOP KEYWORD2
setAutoDOP KEYWORD2 setAutoDOPrate KEYWORD2
setAutoDOPcallback KEYWORD2 setAutoDOPcallback KEYWORD2
assumeAutoDOP KEYWORD2 assumeAutoDOP KEYWORD2
initPacketUBXNAVDOP KEYWORD2 initPacketUBXNAVDOP KEYWORD2
@@ -194,7 +194,7 @@ logNAVDOP KEYWORD2
getVehAtt KEYWORD2 getVehAtt KEYWORD2
getNAVATT KEYWORD2 getNAVATT KEYWORD2
setAutoNAVATT KEYWORD2 setAutoNAVATT KEYWORD2
setAutoNAVATT KEYWORD2 setAutoNAVATTrate KEYWORD2
setAutoNAVATTcallback KEYWORD2 setAutoNAVATTcallback KEYWORD2
assumeAutoNAVATT KEYWORD2 assumeAutoNAVATT KEYWORD2
initPacketUBXNAVATT KEYWORD2 initPacketUBXNAVATT KEYWORD2
@@ -203,7 +203,7 @@ logNAVATT KEYWORD2
getPVT KEYWORD2 getPVT KEYWORD2
setAutoPVT KEYWORD2 setAutoPVT KEYWORD2
setAutoPVT KEYWORD2 setAutoPVTrate KEYWORD2
setAutoPVTcallback KEYWORD2 setAutoPVTcallback KEYWORD2
assumeAutoPVT KEYWORD2 assumeAutoPVT KEYWORD2
initPacketUBXNAVPVT KEYWORD2 initPacketUBXNAVPVT KEYWORD2
@@ -212,7 +212,7 @@ logNAVPVT KEYWORD2
getNAVODO KEYWORD2 getNAVODO KEYWORD2
setAutoNAVODO KEYWORD2 setAutoNAVODO KEYWORD2
setAutoNAVODO KEYWORD2 setAutoNAVODOrate KEYWORD2
setAutoNAVODOcallback KEYWORD2 setAutoNAVODOcallback KEYWORD2
assumeAutoNAVODO KEYWORD2 assumeAutoNAVODO KEYWORD2
initPacketUBXNAVODO KEYWORD2 initPacketUBXNAVODO KEYWORD2
@@ -221,7 +221,7 @@ logNAVODO KEYWORD2
getNAVVELECEF KEYWORD2 getNAVVELECEF KEYWORD2
setAutoNAVVELECEF KEYWORD2 setAutoNAVVELECEF KEYWORD2
setAutoNAVVELECEF KEYWORD2 setAutoNAVVELECEFrate KEYWORD2
setAutoNAVVELECEFcallback KEYWORD2 setAutoNAVVELECEFcallback KEYWORD2
assumeAutoNAVVELECEF KEYWORD2 assumeAutoNAVVELECEF KEYWORD2
initPacketUBXNAVVELECEF KEYWORD2 initPacketUBXNAVVELECEF KEYWORD2
@@ -230,6 +230,7 @@ logNAVVELECEF KEYWORD2
getNAVVELNED KEYWORD2 getNAVVELNED KEYWORD2
setAutoNAVVELNED KEYWORD2 setAutoNAVVELNED KEYWORD2
setAutoNAVVELNEDrate KEYWORD2
setAutoNAVVELNEDcallback KEYWORD2 setAutoNAVVELNEDcallback KEYWORD2
assumeAutoNAVVELNED KEYWORD2 assumeAutoNAVVELNED KEYWORD2
initPacketUBXNAVVELNED KEYWORD2 initPacketUBXNAVVELNED KEYWORD2
@@ -238,7 +239,7 @@ logNAVVELNED KEYWORD2
getNAVHPPOSECEF KEYWORD2 getNAVHPPOSECEF KEYWORD2
setAutoNAVHPPOSECEF KEYWORD2 setAutoNAVHPPOSECEF KEYWORD2
setAutoNAVHPPOSECEF KEYWORD2 setAutoNAVHPPOSECEFrate KEYWORD2
setAutoNAVHPPOSECEFcallback KEYWORD2 setAutoNAVHPPOSECEFcallback KEYWORD2
assumeAutoNAVHPPOSECEF KEYWORD2 assumeAutoNAVHPPOSECEF KEYWORD2
initPacketUBXNAVHPPOSECEF KEYWORD2 initPacketUBXNAVHPPOSECEF KEYWORD2
@@ -247,7 +248,7 @@ logNAVHPPOSECEF KEYWORD2
getHPPOSLLH KEYWORD2 getHPPOSLLH KEYWORD2
setAutoHPPOSLLH KEYWORD2 setAutoHPPOSLLH KEYWORD2
setAutoHPPOSLLH KEYWORD2 setAutoHPPOSLLHrate KEYWORD2
setAutoHPPOSLLHcallback KEYWORD2 setAutoHPPOSLLHcallback KEYWORD2
assumeAutoHPPOSLLH KEYWORD2 assumeAutoHPPOSLLH KEYWORD2
initPacketUBXNAVHPPOSLLH KEYWORD2 initPacketUBXNAVHPPOSLLH KEYWORD2
@@ -256,7 +257,7 @@ logNAVHPPOSLLH KEYWORD2
getNAVCLOCK KEYWORD2 getNAVCLOCK KEYWORD2
setAutoNAVCLOCK KEYWORD2 setAutoNAVCLOCK KEYWORD2
setAutoNAVCLOCK KEYWORD2 setAutoNAVCLOCKrate KEYWORD2
setAutoNAVCLOCKcallback KEYWORD2 setAutoNAVCLOCKcallback KEYWORD2
assumeAutoNAVCLOCK KEYWORD2 assumeAutoNAVCLOCK KEYWORD2
initPacketUBXNAVCLOCK KEYWORD2 initPacketUBXNAVCLOCK KEYWORD2
@@ -268,6 +269,7 @@ initPacketUBXNAVSVIN KEYWORD2
getRELPOSNED KEYWORD2 getRELPOSNED KEYWORD2
setAutoRELPOSNED KEYWORD2 setAutoRELPOSNED KEYWORD2
setAutoRELPOSNEDrate KEYWORD2
setAutoRELPOSNEDcallback KEYWORD2 setAutoRELPOSNEDcallback KEYWORD2
assumeAutoRELPOSNED KEYWORD2 assumeAutoRELPOSNED KEYWORD2
initPacketUBXNAVRELPOSNED KEYWORD2 initPacketUBXNAVRELPOSNED KEYWORD2
@@ -276,6 +278,7 @@ logNAVRELPOSNED KEYWORD2
getRXMSFRBX KEYWORD2 getRXMSFRBX KEYWORD2
setAutoRXMSFRBX KEYWORD2 setAutoRXMSFRBX KEYWORD2
setAutoRXMSFRBXrate KEYWORD2
setAutoRXMSFRBXcallback KEYWORD2 setAutoRXMSFRBXcallback KEYWORD2
assumeAutoRXMSFRBX KEYWORD2 assumeAutoRXMSFRBX KEYWORD2
initPacketUBXRXMSFRBX KEYWORD2 initPacketUBXRXMSFRBX KEYWORD2
@@ -284,7 +287,7 @@ logRXMSFRBX KEYWORD2
getRXMRAWX KEYWORD2 getRXMRAWX KEYWORD2
setAutoRXMRAWX KEYWORD2 setAutoRXMRAWX KEYWORD2
setAutoRXMRAWX KEYWORD2 setAutoRXMRAWXrate KEYWORD2
setAutoRXMRAWXcallback KEYWORD2 setAutoRXMRAWXcallback KEYWORD2
assumeAutoRXMRAWX KEYWORD2 assumeAutoRXMRAWX KEYWORD2
initPacketUBXRXMRAWX KEYWORD2 initPacketUBXRXMRAWX KEYWORD2
@@ -293,6 +296,7 @@ logRXMRAWX KEYWORD2
getTIMTM2 KEYWORD2 getTIMTM2 KEYWORD2
setAutoTIMTM2 KEYWORD2 setAutoTIMTM2 KEYWORD2
setAutoTIMTM2rate KEYWORD2
setAutoTIMTM2callback KEYWORD2 setAutoTIMTM2callback KEYWORD2
assumeAutoTIMTM2 KEYWORD2 assumeAutoTIMTM2 KEYWORD2
initPacketUBXTIMTM2 KEYWORD2 initPacketUBXTIMTM2 KEYWORD2
@@ -302,6 +306,7 @@ logTIMTM2 KEYWORD2
getEsfAlignment KEYWORD2 getEsfAlignment KEYWORD2
getESFALG KEYWORD2 getESFALG KEYWORD2
setAutoESFALG KEYWORD2 setAutoESFALG KEYWORD2
setAutoESFALGrate KEYWORD2
setAutoESFALGcallback KEYWORD2 setAutoESFALGcallback KEYWORD2
assumeAutoESFALG KEYWORD2 assumeAutoESFALG KEYWORD2
initPacketUBXESFALG KEYWORD2 initPacketUBXESFALG KEYWORD2
@@ -311,6 +316,7 @@ logESFALG KEYWORD2
getEsfInfo KEYWORD2 getEsfInfo KEYWORD2
getESFSTATUS KEYWORD2 getESFSTATUS KEYWORD2
setAutoESFSTATUS KEYWORD2 setAutoESFSTATUS KEYWORD2
setAutoESFSTATUSrate KEYWORD2
setAutoESFSTATUScallback KEYWORD2 setAutoESFSTATUScallback KEYWORD2
assumeAutoESFSTATUS KEYWORD2 assumeAutoESFSTATUS KEYWORD2
initPacketUBXESFSTATUS KEYWORD2 initPacketUBXESFSTATUS KEYWORD2
@@ -320,6 +326,7 @@ logESFSTATUS KEYWORD2
getEsfIns KEYWORD2 getEsfIns KEYWORD2
getESFINS KEYWORD2 getESFINS KEYWORD2
setAutoESFINS KEYWORD2 setAutoESFINS KEYWORD2
setAutoESFINSrate KEYWORD2
setAutoESFINScallback KEYWORD2 setAutoESFINScallback KEYWORD2
assumeAutoESFINS KEYWORD2 assumeAutoESFINS KEYWORD2
initPacketUBXESFINS KEYWORD2 initPacketUBXESFINS KEYWORD2
@@ -329,6 +336,7 @@ logESFINS KEYWORD2
getEsfDataInfo KEYWORD2 getEsfDataInfo KEYWORD2
getESFMEAS KEYWORD2 getESFMEAS KEYWORD2
setAutoESFMEAS KEYWORD2 setAutoESFMEAS KEYWORD2
setAutoESFMEASrate KEYWORD2
setAutoESFMEAScallback KEYWORD2 setAutoESFMEAScallback KEYWORD2
assumeAutoESFMEAS KEYWORD2 assumeAutoESFMEAS KEYWORD2
initPacketUBXESFMEAS KEYWORD2 initPacketUBXESFMEAS KEYWORD2
@@ -338,6 +346,7 @@ logESFMEAS KEYWORD2
getEsfRawDataInfo KEYWORD2 getEsfRawDataInfo KEYWORD2
getESFRAW KEYWORD2 getESFRAW KEYWORD2
setAutoESFRAW KEYWORD2 setAutoESFRAW KEYWORD2
setAutoESFRAWrate KEYWORD2
setAutoESFRAWcallback KEYWORD2 setAutoESFRAWcallback KEYWORD2
assumeAutoESFRAW KEYWORD2 assumeAutoESFRAW KEYWORD2
initPacketUBXESFRAW KEYWORD2 initPacketUBXESFRAW KEYWORD2
@@ -347,6 +356,7 @@ logESFRAW KEYWORD2
getHNRAtt KEYWORD2 getHNRAtt KEYWORD2
getHNRATT KEYWORD2 getHNRATT KEYWORD2
setAutoHNRATT KEYWORD2 setAutoHNRATT KEYWORD2
setAutoHNRATTrate KEYWORD2
setAutoHNRATTcallback KEYWORD2 setAutoHNRATTcallback KEYWORD2
assumeAutoHNRATT KEYWORD2 assumeAutoHNRATT KEYWORD2
initPacketUBXHNRATT KEYWORD2 initPacketUBXHNRATT KEYWORD2
@@ -356,6 +366,7 @@ logHNRATT KEYWORD2
getHNRDyn KEYWORD2 getHNRDyn KEYWORD2
getHNRINS KEYWORD2 getHNRINS KEYWORD2
setAutoHNRINS KEYWORD2 setAutoHNRINS KEYWORD2
setAutoHNRINSrate KEYWORD2
setAutoHNRINScallback KEYWORD2 setAutoHNRINScallback KEYWORD2
assumeAutoHNRINS KEYWORD2 assumeAutoHNRINS KEYWORD2
initPacketUBXHNRINS KEYWORD2 initPacketUBXHNRINS KEYWORD2
@@ -364,7 +375,7 @@ logHNRINS KEYWORD2
getHNRPVT KEYWORD2 getHNRPVT KEYWORD2
setAutoHNRPVT KEYWORD2 setAutoHNRPVT KEYWORD2
setAutoHNRPVT KEYWORD2 setAutoHNRPVTrate KEYWORD2
setAutoHNRPVTcallback KEYWORD2 setAutoHNRPVTcallback KEYWORD2
assumeAutoHNRPVT KEYWORD2 assumeAutoHNRPVT KEYWORD2
initPacketUBXHNRPVT KEYWORD2 initPacketUBXHNRPVT KEYWORD2
+257 -68
View File
@@ -5112,29 +5112,38 @@ boolean SFE_UBLOX_GNSS::getNAVPOSECEF(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoNAVPOSECEF(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoNAVPOSECEF(boolean enable, uint16_t maxWait)
{ {
return setAutoNAVPOSECEF(enable, true, maxWait); return setAutoNAVPOSECEFrate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getPOSECEF //Enable or disable automatic navigation message generation by the GNSS. This changes the way getPOSECEF
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoNAVPOSECEF(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoNAVPOSECEF(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoNAVPOSECEFrate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getPOSECEF
//works.
boolean SFE_UBLOX_GNSS::setAutoNAVPOSECEFrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXNAVPOSECEF == NULL) initPacketUBXNAVPOSECEF(); //Check that RAM has been allocated for the data if (packetUBXNAVPOSECEF == NULL) initPacketUBXNAVPOSECEF(); //Check that RAM has been allocated for the data
if (packetUBXNAVPOSECEF == NULL) //Only attempt this if RAM allocation was successful if (packetUBXNAVPOSECEF == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV; payloadCfg[0] = UBX_CLASS_NAV;
payloadCfg[1] = UBX_NAV_POSECEF; payloadCfg[1] = UBX_NAV_POSECEF;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXNAVPOSECEF->automaticFlags.flags.bits.automatic = enable; packetUBXNAVPOSECEF->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVPOSECEF->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXNAVPOSECEF->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXNAVPOSECEF->moduleQueried.moduleQueried.bits.all = false; packetUBXNAVPOSECEF->moduleQueried.moduleQueried.bits.all = false;
@@ -5256,33 +5265,42 @@ boolean SFE_UBLOX_GNSS::getNAVSTATUS(uint16_t maxWait)
} }
} }
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getSTATUS //Enable or disable automatic navigation message generation by the GNSS. This changes the way getNAVSTATUS
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoNAVSTATUS(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoNAVSTATUS(boolean enable, uint16_t maxWait)
{ {
return setAutoNAVSTATUS(enable, true, maxWait); return setAutoNAVSTATUSrate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getSTATUS //Enable or disable automatic navigation message generation by the GNSS. This changes the way getNAVSTATUS
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoNAVSTATUS(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoNAVSTATUS(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoNAVSTATUSrate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getNAVSTATUS
//works.
boolean SFE_UBLOX_GNSS::setAutoNAVSTATUSrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXNAVSTATUS == NULL) initPacketUBXNAVSTATUS(); //Check that RAM has been allocated for the data if (packetUBXNAVSTATUS == NULL) initPacketUBXNAVSTATUS(); //Check that RAM has been allocated for the data
if (packetUBXNAVSTATUS == NULL) //Only attempt this if RAM allocation was successful if (packetUBXNAVSTATUS == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV; payloadCfg[0] = UBX_CLASS_NAV;
payloadCfg[1] = UBX_NAV_STATUS; payloadCfg[1] = UBX_NAV_STATUS;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXNAVSTATUS->automaticFlags.flags.bits.automatic = enable; packetUBXNAVSTATUS->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVSTATUS->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXNAVSTATUS->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXNAVSTATUS->moduleQueried.moduleQueried.bits.all = false; packetUBXNAVSTATUS->moduleQueried.moduleQueried.bits.all = false;
@@ -5430,12 +5448,19 @@ boolean SFE_UBLOX_GNSS::getDOP(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoDOP(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoDOP(boolean enable, uint16_t maxWait)
{ {
return setAutoDOP(enable, true, maxWait); return setAutoDOPrate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getDOP //Enable or disable automatic navigation message generation by the GNSS. This changes the way getDOP
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoDOP(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoDOP(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoDOPrate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getDOP
//works.
boolean SFE_UBLOX_GNSS::setAutoDOPrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXNAVDOP == NULL) initPacketUBXNAVDOP(); //Check that RAM has been allocated for the data if (packetUBXNAVDOP == NULL) initPacketUBXNAVDOP(); //Check that RAM has been allocated for the data
if (packetUBXNAVDOP == NULL) //Only attempt this if RAM allocation was successful if (packetUBXNAVDOP == NULL) //Only attempt this if RAM allocation was successful
@@ -5447,12 +5472,12 @@ boolean SFE_UBLOX_GNSS::setAutoDOP(boolean enable, boolean implicitUpdate, uint1
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV; payloadCfg[0] = UBX_CLASS_NAV;
payloadCfg[1] = UBX_NAV_DOP; payloadCfg[1] = UBX_NAV_DOP;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXNAVDOP->automaticFlags.flags.bits.automatic = enable; packetUBXNAVDOP->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVDOP->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXNAVDOP->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXNAVDOP->moduleQueried.moduleQueried.bits.all = false; packetUBXNAVDOP->moduleQueried.moduleQueried.bits.all = false;
@@ -5584,29 +5609,38 @@ boolean SFE_UBLOX_GNSS::getNAVATT(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoNAVATT(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoNAVATT(boolean enable, uint16_t maxWait)
{ {
return setAutoNAVATT(enable, true, maxWait); return setAutoNAVATTrate(enable ? 1 : 0, true, maxWait);
}
//Enable or disable automatic NAV ATT message generation by the GNSS. This changes the way getVehAtt
//works.
boolean SFE_UBLOX_GNSS::setAutoNAVATT(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoNAVATTrate(enable ? 1 : 0, implicitUpdate, maxWait);
} }
//Enable or disable automatic NAV ATT attitude message generation by the GNSS. This changes the way getVehAtt //Enable or disable automatic NAV ATT attitude message generation by the GNSS. This changes the way getVehAtt
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoNAVATT(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoNAVATTrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXNAVATT == NULL) initPacketUBXNAVATT(); //Check that RAM has been allocated for the data if (packetUBXNAVATT == NULL) initPacketUBXNAVATT(); //Check that RAM has been allocated for the data
if (packetUBXNAVATT == NULL) //Only attempt this if RAM allocation was successful if (packetUBXNAVATT == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV; payloadCfg[0] = UBX_CLASS_NAV;
payloadCfg[1] = UBX_NAV_ATT; payloadCfg[1] = UBX_NAV_ATT;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXNAVATT->automaticFlags.flags.bits.automatic = enable; packetUBXNAVATT->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVATT->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXNAVATT->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXNAVATT->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale packetUBXNAVATT->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -5773,6 +5807,8 @@ boolean SFE_UBLOX_GNSS::setAutoPVTrate(uint8_t rate, boolean implicitUpdate, uin
if (packetUBXNAVPVT == NULL) //Only attempt this if RAM allocation was successful if (packetUBXNAVPVT == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
@@ -5912,29 +5948,38 @@ boolean SFE_UBLOX_GNSS::getNAVODO(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoNAVODO(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoNAVODO(boolean enable, uint16_t maxWait)
{ {
return setAutoNAVODO(enable, true, maxWait); return setAutoNAVODOrate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getODO //Enable or disable automatic navigation message generation by the GNSS. This changes the way getODO
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoNAVODO(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoNAVODO(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoNAVODOrate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getODO
//works.
boolean SFE_UBLOX_GNSS::setAutoNAVODOrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXNAVODO == NULL) initPacketUBXNAVODO(); //Check that RAM has been allocated for the data if (packetUBXNAVODO == NULL) initPacketUBXNAVODO(); //Check that RAM has been allocated for the data
if (packetUBXNAVODO == NULL) //Only attempt this if RAM allocation was successful if (packetUBXNAVODO == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV; payloadCfg[0] = UBX_CLASS_NAV;
payloadCfg[1] = UBX_NAV_ODO; payloadCfg[1] = UBX_NAV_ODO;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXNAVODO->automaticFlags.flags.bits.automatic = enable; packetUBXNAVODO->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVODO->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXNAVODO->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXNAVODO->moduleQueried.moduleQueried.bits.all = false; packetUBXNAVODO->moduleQueried.moduleQueried.bits.all = false;
@@ -6059,29 +6104,38 @@ boolean SFE_UBLOX_GNSS::getNAVVELECEF(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoNAVVELECEF(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoNAVVELECEF(boolean enable, uint16_t maxWait)
{ {
return setAutoNAVVELECEF(enable, true, maxWait); return setAutoNAVVELECEFrate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getVELECEF //Enable or disable automatic navigation message generation by the GNSS. This changes the way getVELECEF
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoNAVVELECEF(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoNAVVELECEF(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoNAVVELECEFrate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getVELECEF
//works.
boolean SFE_UBLOX_GNSS::setAutoNAVVELECEFrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXNAVVELECEF == NULL) initPacketUBXNAVVELECEF(); //Check that RAM has been allocated for the data if (packetUBXNAVVELECEF == NULL) initPacketUBXNAVVELECEF(); //Check that RAM has been allocated for the data
if (packetUBXNAVVELECEF == NULL) //Only attempt this if RAM allocation was successful if (packetUBXNAVVELECEF == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV; payloadCfg[0] = UBX_CLASS_NAV;
payloadCfg[1] = UBX_NAV_VELECEF; payloadCfg[1] = UBX_NAV_VELECEF;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXNAVVELECEF->automaticFlags.flags.bits.automatic = enable; packetUBXNAVVELECEF->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVVELECEF->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXNAVVELECEF->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXNAVVELECEF->moduleQueried.moduleQueried.bits.all = false; packetUBXNAVVELECEF->moduleQueried.moduleQueried.bits.all = false;
@@ -6360,29 +6414,38 @@ boolean SFE_UBLOX_GNSS::getNAVHPPOSECEF(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoNAVHPPOSECEF(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoNAVHPPOSECEF(boolean enable, uint16_t maxWait)
{ {
return setAutoNAVHPPOSECEF(enable, true, maxWait); return setAutoNAVHPPOSECEFrate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getHPPOSECEF //Enable or disable automatic navigation message generation by the GNSS. This changes the way getHPPOSECEF
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoNAVHPPOSECEF(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoNAVHPPOSECEF(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoNAVHPPOSECEFrate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getHPPOSECEF
//works.
boolean SFE_UBLOX_GNSS::setAutoNAVHPPOSECEFrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXNAVHPPOSECEF == NULL) initPacketUBXNAVHPPOSECEF(); //Check that RAM has been allocated for the data if (packetUBXNAVHPPOSECEF == NULL) initPacketUBXNAVHPPOSECEF(); //Check that RAM has been allocated for the data
if (packetUBXNAVHPPOSECEF == NULL) //Only attempt this if RAM allocation was successful if (packetUBXNAVHPPOSECEF == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV; payloadCfg[0] = UBX_CLASS_NAV;
payloadCfg[1] = UBX_NAV_HPPOSECEF; payloadCfg[1] = UBX_NAV_HPPOSECEF;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXNAVHPPOSECEF->automaticFlags.flags.bits.automatic = enable; packetUBXNAVHPPOSECEF->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVHPPOSECEF->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXNAVHPPOSECEF->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXNAVHPPOSECEF->moduleQueried.moduleQueried.bits.all = false; packetUBXNAVHPPOSECEF->moduleQueried.moduleQueried.bits.all = false;
@@ -6529,29 +6592,38 @@ boolean SFE_UBLOX_GNSS::getHPPOSLLH(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoHPPOSLLH(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoHPPOSLLH(boolean enable, uint16_t maxWait)
{ {
return setAutoHPPOSLLH(enable, true, maxWait); return setAutoHPPOSLLHrate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getHPPOSLLH //Enable or disable automatic navigation message generation by the GNSS. This changes the way getHPPOSLLH
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoHPPOSLLH(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoHPPOSLLH(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoHPPOSLLHrate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getHPPOSLLH
//works.
boolean SFE_UBLOX_GNSS::setAutoHPPOSLLHrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXNAVHPPOSLLH == NULL) initPacketUBXNAVHPPOSLLH(); //Check that RAM has been allocated for the data if (packetUBXNAVHPPOSLLH == NULL) initPacketUBXNAVHPPOSLLH(); //Check that RAM has been allocated for the data
if (packetUBXNAVHPPOSLLH == NULL) //Only attempt this if RAM allocation was successful if (packetUBXNAVHPPOSLLH == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV; payloadCfg[0] = UBX_CLASS_NAV;
payloadCfg[1] = UBX_NAV_HPPOSLLH; payloadCfg[1] = UBX_NAV_HPPOSLLH;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXNAVHPPOSLLH->automaticFlags.flags.bits.automatic = enable; packetUBXNAVHPPOSLLH->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVHPPOSLLH->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXNAVHPPOSLLH->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXNAVHPPOSLLH->moduleQueried.moduleQueried.bits.all = false; packetUBXNAVHPPOSLLH->moduleQueried.moduleQueried.bits.all = false;
@@ -6676,29 +6748,38 @@ boolean SFE_UBLOX_GNSS::getNAVCLOCK(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoNAVCLOCK(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoNAVCLOCK(boolean enable, uint16_t maxWait)
{ {
return setAutoNAVCLOCK(enable, true, maxWait); return setAutoNAVCLOCKrate(enable ? 1 : 0, true, maxWait);
}
//Enable or disable automatic CLOCK message generation by the GNSS. This changes the way getNAVCLOCK
//works.
boolean SFE_UBLOX_GNSS::setAutoNAVCLOCK(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoNAVCLOCKrate(enable ? 1 : 0, implicitUpdate, maxWait);
} }
//Enable or disable automatic CLOCK attitude message generation by the GNSS. This changes the way getNAVCLOCK //Enable or disable automatic CLOCK attitude message generation by the GNSS. This changes the way getNAVCLOCK
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoNAVCLOCK(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoNAVCLOCKrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXNAVCLOCK == NULL) initPacketUBXNAVCLOCK(); //Check that RAM has been allocated for the data if (packetUBXNAVCLOCK == NULL) initPacketUBXNAVCLOCK(); //Check that RAM has been allocated for the data
if (packetUBXNAVCLOCK == NULL) //Only attempt this if RAM allocation was successful if (packetUBXNAVCLOCK == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV; payloadCfg[0] = UBX_CLASS_NAV;
payloadCfg[1] = UBX_NAV_CLOCK; payloadCfg[1] = UBX_NAV_CLOCK;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXNAVCLOCK->automaticFlags.flags.bits.automatic = enable; packetUBXNAVCLOCK->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVCLOCK->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXNAVCLOCK->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXNAVCLOCK->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale packetUBXNAVCLOCK->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -6875,29 +6956,38 @@ boolean SFE_UBLOX_GNSS::getRELPOSNED(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoRELPOSNED(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoRELPOSNED(boolean enable, uint16_t maxWait)
{ {
return setAutoRELPOSNED(enable, true, maxWait); return setAutoRELPOSNEDrate(enable ? 1 : 0, true, maxWait);
}
//Enable or disable automatic RELPOSNED message generation by the GNSS. This changes the way getRELPOSNED
//works.
boolean SFE_UBLOX_GNSS::setAutoRELPOSNED(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoRELPOSNEDrate(enable ? 1 : 0, implicitUpdate, maxWait);
} }
//Enable or disable automatic HNR attitude message generation by the GNSS. This changes the way getRELPOSNED //Enable or disable automatic HNR attitude message generation by the GNSS. This changes the way getRELPOSNED
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoRELPOSNED(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoRELPOSNEDrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXNAVRELPOSNED == NULL) initPacketUBXNAVRELPOSNED(); //Check that RAM has been allocated for the data if (packetUBXNAVRELPOSNED == NULL) initPacketUBXNAVRELPOSNED(); //Check that RAM has been allocated for the data
if (packetUBXNAVRELPOSNED == NULL) //Only attempt this if RAM allocation was successful if (packetUBXNAVRELPOSNED == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV; payloadCfg[0] = UBX_CLASS_NAV;
payloadCfg[1] = UBX_NAV_RELPOSNED; payloadCfg[1] = UBX_NAV_RELPOSNED;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXNAVRELPOSNED->automaticFlags.flags.bits.automatic = enable; packetUBXNAVRELPOSNED->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVRELPOSNED->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXNAVRELPOSNED->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXNAVRELPOSNED->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale packetUBXNAVRELPOSNED->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -7022,29 +7112,38 @@ boolean SFE_UBLOX_GNSS::getRXMSFRBX(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoRXMSFRBX(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoRXMSFRBX(boolean enable, uint16_t maxWait)
{ {
return setAutoRXMSFRBX(enable, true, maxWait); return setAutoRXMSFRBXrate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getRXMSFRBX //Enable or disable automatic navigation message generation by the GNSS. This changes the way getRXMSFRBX
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoRXMSFRBX(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoRXMSFRBX(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoRXMSFRBXrate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getRXMSFRBX
//works.
boolean SFE_UBLOX_GNSS::setAutoRXMSFRBXrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXRXMSFRBX == NULL) initPacketUBXRXMSFRBX(); //Check that RAM has been allocated for the data if (packetUBXRXMSFRBX == NULL) initPacketUBXRXMSFRBX(); //Check that RAM has been allocated for the data
if (packetUBXRXMSFRBX == NULL) //Only attempt this if RAM allocation was successful if (packetUBXRXMSFRBX == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_RXM; payloadCfg[0] = UBX_CLASS_RXM;
payloadCfg[1] = UBX_RXM_SFRBX; payloadCfg[1] = UBX_RXM_SFRBX;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXRXMSFRBX->automaticFlags.flags.bits.automatic = enable; packetUBXRXMSFRBX->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXRXMSFRBX->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXRXMSFRBX->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXRXMSFRBX->moduleQueried = false; packetUBXRXMSFRBX->moduleQueried = false;
@@ -7169,29 +7268,38 @@ boolean SFE_UBLOX_GNSS::getRXMRAWX(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoRXMRAWX(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoRXMRAWX(boolean enable, uint16_t maxWait)
{ {
return setAutoRXMRAWX(enable, true, maxWait); return setAutoRXMRAWXrate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getRXMRAWX //Enable or disable automatic navigation message generation by the GNSS. This changes the way getRXMRAWX
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoRXMRAWX(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoRXMRAWX(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoRXMRAWXrate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getRXMRAWX
//works.
boolean SFE_UBLOX_GNSS::setAutoRXMRAWXrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXRXMRAWX == NULL) initPacketUBXRXMRAWX(); //Check that RAM has been allocated for the data if (packetUBXRXMRAWX == NULL) initPacketUBXRXMRAWX(); //Check that RAM has been allocated for the data
if (packetUBXRXMRAWX == NULL) //Only attempt this if RAM allocation was successful if (packetUBXRXMRAWX == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_RXM; payloadCfg[0] = UBX_CLASS_RXM;
payloadCfg[1] = UBX_RXM_RAWX; payloadCfg[1] = UBX_RXM_RAWX;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXRXMRAWX->automaticFlags.flags.bits.automatic = enable; packetUBXRXMRAWX->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXRXMRAWX->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXRXMRAWX->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXRXMRAWX->moduleQueried = false; packetUBXRXMRAWX->moduleQueried = false;
@@ -7376,29 +7484,38 @@ boolean SFE_UBLOX_GNSS::getTIMTM2(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoTIMTM2(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoTIMTM2(boolean enable, uint16_t maxWait)
{ {
return setAutoTIMTM2(enable, true, maxWait); return setAutoTIMTM2rate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getTIMTM2 //Enable or disable automatic navigation message generation by the GNSS. This changes the way getTIMTM2
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoTIMTM2(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoTIMTM2(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoTIMTM2rate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic navigation message generation by the GNSS. This changes the way getTIMTM2
//works.
boolean SFE_UBLOX_GNSS::setAutoTIMTM2rate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXTIMTM2 == NULL) initPacketUBXTIMTM2(); //Check that RAM has been allocated for the data if (packetUBXTIMTM2 == NULL) initPacketUBXTIMTM2(); //Check that RAM has been allocated for the data
if (packetUBXTIMTM2 == NULL) //Only attempt this if RAM allocation was successful if (packetUBXTIMTM2 == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_TIM; payloadCfg[0] = UBX_CLASS_TIM;
payloadCfg[1] = UBX_TIM_TM2; payloadCfg[1] = UBX_TIM_TM2;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXTIMTM2->automaticFlags.flags.bits.automatic = enable; packetUBXTIMTM2->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXTIMTM2->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXTIMTM2->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXTIMTM2->moduleQueried.moduleQueried.bits.all = false; packetUBXTIMTM2->moduleQueried.moduleQueried.bits.all = false;
@@ -7552,29 +7669,38 @@ boolean SFE_UBLOX_GNSS::getESFALG(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoESFALG(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoESFALG(boolean enable, uint16_t maxWait)
{ {
return setAutoESFALG(enable, true, maxWait); return setAutoESFALGrate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic ESF ALG message generation by the GNSS. This changes the way getEsfAlignment //Enable or disable automatic ESF ALG message generation by the GNSS. This changes the way getEsfAlignment
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoESFALG(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoESFALG(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoESFALGrate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic ESF ALG message generation by the GNSS. This changes the way getEsfAlignment
//works.
boolean SFE_UBLOX_GNSS::setAutoESFALGrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXESFALG == NULL) initPacketUBXESFALG(); //Check that RAM has been allocated for the data if (packetUBXESFALG == NULL) initPacketUBXESFALG(); //Check that RAM has been allocated for the data
if (packetUBXESFALG == NULL) //Only attempt this if RAM allocation was successful if (packetUBXESFALG == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_ESF; payloadCfg[0] = UBX_CLASS_ESF;
payloadCfg[1] = UBX_ESF_ALG; payloadCfg[1] = UBX_ESF_ALG;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXESFALG->automaticFlags.flags.bits.automatic = enable; packetUBXESFALG->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXESFALG->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXESFALG->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXESFALG->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale packetUBXESFALG->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -7728,29 +7854,38 @@ boolean SFE_UBLOX_GNSS::getESFSTATUS(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoESFSTATUS(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoESFSTATUS(boolean enable, uint16_t maxWait)
{ {
return setAutoESFSTATUS(enable, true, maxWait); return setAutoESFSTATUSrate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic ESF STATUS message generation by the GNSS. This changes the way getESFInfo //Enable or disable automatic ESF STATUS message generation by the GNSS. This changes the way getESFInfo
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoESFSTATUS(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoESFSTATUS(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoESFSTATUSrate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic ESF STATUS message generation by the GNSS. This changes the way getESFInfo
//works.
boolean SFE_UBLOX_GNSS::setAutoESFSTATUSrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXESFSTATUS == NULL) initPacketUBXESFSTATUS(); //Check that RAM has been allocated for the data if (packetUBXESFSTATUS == NULL) initPacketUBXESFSTATUS(); //Check that RAM has been allocated for the data
if (packetUBXESFSTATUS == NULL) //Only attempt this if RAM allocation was successful if (packetUBXESFSTATUS == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_ESF; payloadCfg[0] = UBX_CLASS_ESF;
payloadCfg[1] = UBX_ESF_STATUS; payloadCfg[1] = UBX_ESF_STATUS;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXESFSTATUS->automaticFlags.flags.bits.automatic = enable; packetUBXESFSTATUS->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXESFSTATUS->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXESFSTATUS->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXESFSTATUS->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale packetUBXESFSTATUS->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -7905,29 +8040,38 @@ boolean SFE_UBLOX_GNSS::getESFINS(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoESFINS(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoESFINS(boolean enable, uint16_t maxWait)
{ {
return setAutoESFINS(enable, true, maxWait); return setAutoESFINSrate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic ESF INS message generation by the GNSS. This changes the way getESFIns //Enable or disable automatic ESF INS message generation by the GNSS. This changes the way getESFIns
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoESFINS(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoESFINS(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoESFINSrate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic ESF INS message generation by the GNSS. This changes the way getESFIns
//works.
boolean SFE_UBLOX_GNSS::setAutoESFINSrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXESFINS == NULL) initPacketUBXESFINS(); //Check that RAM has been allocated for the data if (packetUBXESFINS == NULL) initPacketUBXESFINS(); //Check that RAM has been allocated for the data
if (packetUBXESFINS == NULL) //Only attempt this if RAM allocation was successful if (packetUBXESFINS == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_ESF; payloadCfg[0] = UBX_CLASS_ESF;
payloadCfg[1] = UBX_ESF_INS; payloadCfg[1] = UBX_ESF_INS;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXESFINS->automaticFlags.flags.bits.automatic = enable; packetUBXESFINS->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXESFINS->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXESFINS->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXESFINS->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale packetUBXESFINS->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -8081,29 +8225,38 @@ boolean SFE_UBLOX_GNSS::getESFMEAS(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoESFMEAS(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoESFMEAS(boolean enable, uint16_t maxWait)
{ {
return setAutoESFMEAS(enable, true, maxWait); return setAutoESFMEASrate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic ESF MEAS message generation by the GNSS. This changes the way getESFDataInfo //Enable or disable automatic ESF MEAS message generation by the GNSS. This changes the way getESFDataInfo
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoESFMEAS(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoESFMEAS(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoESFMEASrate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic ESF MEAS message generation by the GNSS. This changes the way getESFDataInfo
//works.
boolean SFE_UBLOX_GNSS::setAutoESFMEASrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXESFMEAS == NULL) initPacketUBXESFMEAS(); //Check that RAM has been allocated for the data if (packetUBXESFMEAS == NULL) initPacketUBXESFMEAS(); //Check that RAM has been allocated for the data
if (packetUBXESFMEAS == NULL) //Only attempt this if RAM allocation was successful if (packetUBXESFMEAS == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_ESF; payloadCfg[0] = UBX_CLASS_ESF;
payloadCfg[1] = UBX_ESF_MEAS; payloadCfg[1] = UBX_ESF_MEAS;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXESFMEAS->automaticFlags.flags.bits.automatic = enable; packetUBXESFMEAS->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXESFMEAS->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXESFMEAS->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXESFMEAS->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale packetUBXESFMEAS->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -8257,29 +8410,38 @@ boolean SFE_UBLOX_GNSS::getESFRAW(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoESFRAW(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoESFRAW(boolean enable, uint16_t maxWait)
{ {
return setAutoESFRAW(enable, true, maxWait); return setAutoESFRAWrate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic ESF RAW message generation by the GNSS. This changes the way getESFRawDataInfo //Enable or disable automatic ESF RAW message generation by the GNSS. This changes the way getESFRawDataInfo
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoESFRAW(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoESFRAW(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoESFRAWrate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic ESF RAW message generation by the GNSS. This changes the way getESFRawDataInfo
//works.
boolean SFE_UBLOX_GNSS::setAutoESFRAWrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXESFRAW == NULL) initPacketUBXESFRAW(); //Check that RAM has been allocated for the data if (packetUBXESFRAW == NULL) initPacketUBXESFRAW(); //Check that RAM has been allocated for the data
if (packetUBXESFRAW == NULL) //Only attempt this if RAM allocation was successful if (packetUBXESFRAW == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_ESF; payloadCfg[0] = UBX_CLASS_ESF;
payloadCfg[1] = UBX_ESF_RAW; payloadCfg[1] = UBX_ESF_RAW;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXESFRAW->automaticFlags.flags.bits.automatic = enable; packetUBXESFRAW->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXESFRAW->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXESFRAW->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXESFRAW->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale packetUBXESFRAW->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -8438,29 +8600,38 @@ boolean SFE_UBLOX_GNSS::getHNRATT(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoHNRATT(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoHNRATT(boolean enable, uint16_t maxWait)
{ {
return setAutoHNRATT(enable, true, maxWait); return setAutoHNRATTrate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic HNR attitude message generation by the GNSS. This changes the way getHNRAtt //Enable or disable automatic HNR attitude message generation by the GNSS. This changes the way getHNRAtt
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoHNRATT(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoHNRATT(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoHNRATTrate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic HNR attitude message generation by the GNSS. This changes the way getHNRAtt
//works.
boolean SFE_UBLOX_GNSS::setAutoHNRATTrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXHNRATT == NULL) initPacketUBXHNRATT(); //Check that RAM has been allocated for the data if (packetUBXHNRATT == NULL) initPacketUBXHNRATT(); //Check that RAM has been allocated for the data
if (packetUBXHNRATT == NULL) //Only attempt this if RAM allocation was successful if (packetUBXHNRATT == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_HNR; payloadCfg[0] = UBX_CLASS_HNR;
payloadCfg[1] = UBX_HNR_ATT; payloadCfg[1] = UBX_HNR_ATT;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXHNRATT->automaticFlags.flags.bits.automatic = enable; packetUBXHNRATT->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXHNRATT->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXHNRATT->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXHNRATT->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale packetUBXHNRATT->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -8620,29 +8791,38 @@ boolean SFE_UBLOX_GNSS::getHNRINS(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoHNRINS(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoHNRINS(boolean enable, uint16_t maxWait)
{ {
return setAutoHNRINS(enable, true, maxWait); return setAutoHNRINSrate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic HNR vehicle dynamics message generation by the GNSS. This changes the way getHNRDyn //Enable or disable automatic HNR vehicle dynamics message generation by the GNSS. This changes the way getHNRDyn
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoHNRINS(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoHNRINS(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoHNRINSrate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic HNR vehicle dynamics message generation by the GNSS. This changes the way getHNRDyn
//works.
boolean SFE_UBLOX_GNSS::setAutoHNRINSrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXHNRINS == NULL) initPacketUBXHNRINS(); //Check that RAM has been allocated for the data if (packetUBXHNRINS == NULL) initPacketUBXHNRINS(); //Check that RAM has been allocated for the data
if (packetUBXHNRINS == NULL) //Only attempt this if RAM allocation was successful if (packetUBXHNRINS == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_HNR; payloadCfg[0] = UBX_CLASS_HNR;
payloadCfg[1] = UBX_HNR_INS; payloadCfg[1] = UBX_HNR_INS;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXHNRINS->automaticFlags.flags.bits.automatic = enable; packetUBXHNRINS->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXHNRINS->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXHNRINS->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXHNRINS->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale packetUBXHNRINS->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -8796,29 +8976,38 @@ boolean SFE_UBLOX_GNSS::getHNRPVT(uint16_t maxWait)
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoHNRPVT(boolean enable, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoHNRPVT(boolean enable, uint16_t maxWait)
{ {
return setAutoHNRPVT(enable, true, maxWait); return setAutoHNRPVTrate(enable ? 1 : 0, true, maxWait);
} }
//Enable or disable automatic HNR PVT message generation by the GNSS. This changes the way getHNRPVT //Enable or disable automatic HNR PVT message generation by the GNSS. This changes the way getHNRPVT
//works. //works.
boolean SFE_UBLOX_GNSS::setAutoHNRPVT(boolean enable, boolean implicitUpdate, uint16_t maxWait) boolean SFE_UBLOX_GNSS::setAutoHNRPVT(boolean enable, boolean implicitUpdate, uint16_t maxWait)
{
return setAutoHNRPVTrate(enable ? 1 : 0, implicitUpdate, maxWait);
}
//Enable or disable automatic HNR PVT message generation by the GNSS. This changes the way getHNRPVT
//works.
boolean SFE_UBLOX_GNSS::setAutoHNRPVTrate(uint8_t rate, boolean implicitUpdate, uint16_t maxWait)
{ {
if (packetUBXHNRPVT == NULL) initPacketUBXHNRPVT(); //Check that RAM has been allocated for the data if (packetUBXHNRPVT == NULL) initPacketUBXHNRPVT(); //Check that RAM has been allocated for the data
if (packetUBXHNRPVT == NULL) //Only attempt this if RAM allocation was successful if (packetUBXHNRPVT == NULL) //Only attempt this if RAM allocation was successful
return false; return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG; packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG; packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3; packetCfg.len = 3;
packetCfg.startingSpot = 0; packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_HNR; payloadCfg[0] = UBX_CLASS_HNR;
payloadCfg[1] = UBX_HNR_PVT; payloadCfg[1] = UBX_HNR_PVT;
payloadCfg[2] = enable ? 1 : 0; // rate relative to navigation freq. payloadCfg[2] = rate; // rate relative to navigation freq.
boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK boolean ok = ((sendCommand(&packetCfg, maxWait)) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
if (ok) if (ok)
{ {
packetUBXHNRPVT->automaticFlags.flags.bits.automatic = enable; packetUBXHNRPVT->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXHNRPVT->automaticFlags.flags.bits.implicitUpdate = implicitUpdate; packetUBXHNRPVT->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
} }
packetUBXHNRPVT->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale packetUBXHNRPVT->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
+23 -2
View File
@@ -700,6 +700,7 @@ public:
boolean getNAVPOSECEF(uint16_t maxWait = defaultMaxWait); // NAV POSECEF boolean getNAVPOSECEF(uint16_t maxWait = defaultMaxWait); // NAV POSECEF
boolean setAutoNAVPOSECEF(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic POSECEF reports at the navigation frequency boolean setAutoNAVPOSECEF(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic POSECEF reports at the navigation frequency
boolean setAutoNAVPOSECEF(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic POSECEF reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoNAVPOSECEF(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic POSECEF reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoNAVPOSECEFrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic POSECEF reports
boolean setAutoNAVPOSECEFcallback(void (*callbackPointer)(UBX_NAV_POSECEF_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic POSECEF reports at the navigation frequency. Data is accessed from the callback. boolean setAutoNAVPOSECEFcallback(void (*callbackPointer)(UBX_NAV_POSECEF_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic POSECEF reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoNAVPOSECEF(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and POSECEF is send cyclically already boolean assumeAutoNAVPOSECEF(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and POSECEF is send cyclically already
void flushNAVPOSECEF(); //Mark all the data as read/stale void flushNAVPOSECEF(); //Mark all the data as read/stale
@@ -708,6 +709,7 @@ public:
boolean getNAVSTATUS(uint16_t maxWait = defaultMaxWait); // NAV STATUS boolean getNAVSTATUS(uint16_t maxWait = defaultMaxWait); // NAV STATUS
boolean setAutoNAVSTATUS(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic STATUS reports at the navigation frequency boolean setAutoNAVSTATUS(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic STATUS reports at the navigation frequency
boolean setAutoNAVSTATUS(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic STATUS reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoNAVSTATUS(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic STATUS reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoNAVSTATUSrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic STATUS reports
boolean setAutoNAVSTATUScallback(void (*callbackPointer)(UBX_NAV_STATUS_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic STATUS reports at the navigation frequency. Data is accessed from the callback. boolean setAutoNAVSTATUScallback(void (*callbackPointer)(UBX_NAV_STATUS_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic STATUS reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoNAVSTATUS(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and STATUS is send cyclically already boolean assumeAutoNAVSTATUS(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and STATUS is send cyclically already
void flushNAVSTATUS(); //Mark all the data as read/stale void flushNAVSTATUS(); //Mark all the data as read/stale
@@ -716,6 +718,7 @@ public:
boolean getDOP(uint16_t maxWait = defaultMaxWait); //Query module for latest dilution of precision values and load global vars:. If autoDOP is disabled, performs an explicit poll and waits, if enabled does not block. Returns true if new DOP is available. boolean getDOP(uint16_t maxWait = defaultMaxWait); //Query module for latest dilution of precision values and load global vars:. If autoDOP is disabled, performs an explicit poll and waits, if enabled does not block. Returns true if new DOP is available.
boolean setAutoDOP(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic DOP reports at the navigation frequency boolean setAutoDOP(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic DOP reports at the navigation frequency
boolean setAutoDOP(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic DOP reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoDOP(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic DOP reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoDOPrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic DOP reports
boolean setAutoDOPcallback(void (*callbackPointer)(UBX_NAV_DOP_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic DOP reports at the navigation frequency. Data is accessed from the callback. boolean setAutoDOPcallback(void (*callbackPointer)(UBX_NAV_DOP_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic DOP reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoDOP(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and DOP is send cyclically already boolean assumeAutoDOP(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and DOP is send cyclically already
void flushDOP(); //Mark all the DOP data as read/stale void flushDOP(); //Mark all the DOP data as read/stale
@@ -725,6 +728,7 @@ public:
boolean getNAVATT(uint16_t maxWait = defaultMaxWait); // NAV ATT boolean getNAVATT(uint16_t maxWait = defaultMaxWait); // NAV ATT
boolean setAutoNAVATT(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic vehicle attitude reports at the navigation frequency boolean setAutoNAVATT(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic vehicle attitude reports at the navigation frequency
boolean setAutoNAVATT(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic vehicle attitude reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoNAVATT(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic vehicle attitude reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoNAVATTrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic ATT reports
boolean setAutoNAVATTcallback(void (*callbackPointer)(UBX_NAV_ATT_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic ATT reports at the navigation frequency. Data is accessed from the callback. boolean setAutoNAVATTcallback(void (*callbackPointer)(UBX_NAV_ATT_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic ATT reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoNAVATT(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and vehicle attitude is send cyclically already boolean assumeAutoNAVATT(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and vehicle attitude is send cyclically already
void flushNAVATT(); //Mark all the data as read/stale void flushNAVATT(); //Mark all the data as read/stale
@@ -733,7 +737,7 @@ public:
boolean getPVT(uint16_t maxWait = defaultMaxWait); //Query module for latest group of datums and load global vars: lat, long, alt, speed, SIV, accuracies, etc. If autoPVT is disabled, performs an explicit poll and waits, if enabled does not block. Returns true if new PVT is available. boolean getPVT(uint16_t maxWait = defaultMaxWait); //Query module for latest group of datums and load global vars: lat, long, alt, speed, SIV, accuracies, etc. If autoPVT is disabled, performs an explicit poll and waits, if enabled does not block. Returns true if new PVT is available.
boolean setAutoPVT(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic PVT reports at the navigation frequency boolean setAutoPVT(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic PVT reports at the navigation frequency
boolean setAutoPVT(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic PVT reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoPVT(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic PVT reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoPVTrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic PVT reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoPVTrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic PVT reports
boolean setAutoPVTcallback(void (*callbackPointer)(UBX_NAV_PVT_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic PVT reports at the navigation frequency. Data is accessed from the callback. boolean setAutoPVTcallback(void (*callbackPointer)(UBX_NAV_PVT_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic PVT reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoPVT(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and PVT is send cyclically already boolean assumeAutoPVT(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and PVT is send cyclically already
void flushPVT(); //Mark all the PVT data as read/stale void flushPVT(); //Mark all the PVT data as read/stale
@@ -742,6 +746,7 @@ public:
boolean getNAVODO(uint16_t maxWait = defaultMaxWait); // NAV ODO boolean getNAVODO(uint16_t maxWait = defaultMaxWait); // NAV ODO
boolean setAutoNAVODO(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ODO reports at the navigation frequency boolean setAutoNAVODO(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ODO reports at the navigation frequency
boolean setAutoNAVODO(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ODO reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoNAVODO(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ODO reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoNAVODOrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic ODO reports
boolean setAutoNAVODOcallback(void (*callbackPointer)(UBX_NAV_ODO_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic ODO reports at the navigation frequency. Data is accessed from the callback. boolean setAutoNAVODOcallback(void (*callbackPointer)(UBX_NAV_ODO_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic ODO reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoNAVODO(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and ODO is send cyclically already boolean assumeAutoNAVODO(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and ODO is send cyclically already
void flushNAVODO(); //Mark all the data as read/stale void flushNAVODO(); //Mark all the data as read/stale
@@ -750,6 +755,7 @@ public:
boolean getNAVVELECEF(uint16_t maxWait = defaultMaxWait); // NAV VELECEF boolean getNAVVELECEF(uint16_t maxWait = defaultMaxWait); // NAV VELECEF
boolean setAutoNAVVELECEF(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic VELECEF reports at the navigation frequency boolean setAutoNAVVELECEF(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic VELECEF reports at the navigation frequency
boolean setAutoNAVVELECEF(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic VELECEF reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoNAVVELECEF(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic VELECEF reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoNAVVELECEFrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic VELECEF reports
boolean setAutoNAVVELECEFcallback(void (*callbackPointer)(UBX_NAV_VELECEF_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic VELECEF reports at the navigation frequency. Data is accessed from the callback. boolean setAutoNAVVELECEFcallback(void (*callbackPointer)(UBX_NAV_VELECEF_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic VELECEF reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoNAVVELECEF(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and VELECEF is send cyclically already boolean assumeAutoNAVVELECEF(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and VELECEF is send cyclically already
void flushNAVVELECEF(); //Mark all the data as read/stale void flushNAVVELECEF(); //Mark all the data as read/stale
@@ -758,7 +764,7 @@ public:
boolean getNAVVELNED(uint16_t maxWait = defaultMaxWait); // NAV VELNED boolean getNAVVELNED(uint16_t maxWait = defaultMaxWait); // NAV VELNED
boolean setAutoNAVVELNED(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic VELNED reports at the navigation frequency boolean setAutoNAVVELNED(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic VELNED reports at the navigation frequency
boolean setAutoNAVVELNED(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic VELNED reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoNAVVELNED(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic VELNED reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoNAVVELNEDrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic VELNED reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoNAVVELNEDrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic VELNED reports
boolean setAutoNAVVELNEDcallback(void (*callbackPointer)(UBX_NAV_VELNED_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic VELNED reports at the navigation frequency. Data is accessed from the callback. boolean setAutoNAVVELNEDcallback(void (*callbackPointer)(UBX_NAV_VELNED_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic VELNED reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoNAVVELNED(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and VELNED is send cyclically already boolean assumeAutoNAVVELNED(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and VELNED is send cyclically already
void flushNAVVELNED(); //Mark all the data as read/stale void flushNAVVELNED(); //Mark all the data as read/stale
@@ -767,6 +773,7 @@ public:
boolean getNAVHPPOSECEF(uint16_t maxWait = defaultMaxWait); // NAV HPPOSECEF boolean getNAVHPPOSECEF(uint16_t maxWait = defaultMaxWait); // NAV HPPOSECEF
boolean setAutoNAVHPPOSECEF(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HPPOSECEF reports at the navigation frequency boolean setAutoNAVHPPOSECEF(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HPPOSECEF reports at the navigation frequency
boolean setAutoNAVHPPOSECEF(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HPPOSECEF reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoNAVHPPOSECEF(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HPPOSECEF reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoNAVHPPOSECEFrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic HPPOSECEF reports
boolean setAutoNAVHPPOSECEFcallback(void (*callbackPointer)(UBX_NAV_HPPOSECEF_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic HPPOSECEF reports at the navigation frequency. Data is accessed from the callback. boolean setAutoNAVHPPOSECEFcallback(void (*callbackPointer)(UBX_NAV_HPPOSECEF_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic HPPOSECEF reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoNAVHPPOSECEF(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and HPPOSECEF is send cyclically already boolean assumeAutoNAVHPPOSECEF(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and HPPOSECEF is send cyclically already
void flushNAVHPPOSECEF(); //Mark all the data as read/stale void flushNAVHPPOSECEF(); //Mark all the data as read/stale
@@ -775,6 +782,7 @@ public:
boolean getHPPOSLLH(uint16_t maxWait = defaultMaxWait); //Query module for latest group of datums and load global vars: lat, long, alt, speed, SIV, accuracies, etc. If autoPVT is disabled, performs an explicit poll and waits, if enabled does not block. Returns true if new HPPOSLLH is available. boolean getHPPOSLLH(uint16_t maxWait = defaultMaxWait); //Query module for latest group of datums and load global vars: lat, long, alt, speed, SIV, accuracies, etc. If autoPVT is disabled, performs an explicit poll and waits, if enabled does not block. Returns true if new HPPOSLLH is available.
boolean setAutoHPPOSLLH(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HPPOSLLH reports at the navigation frequency boolean setAutoHPPOSLLH(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HPPOSLLH reports at the navigation frequency
boolean setAutoHPPOSLLH(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HPPOSLLH reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoHPPOSLLH(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HPPOSLLH reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoHPPOSLLHrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic HPPOSLLH reports
boolean setAutoHPPOSLLHcallback(void (*callbackPointer)(UBX_NAV_HPPOSLLH_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic HPPOSLLH reports at the navigation frequency. Data is accessed from the callback. boolean setAutoHPPOSLLHcallback(void (*callbackPointer)(UBX_NAV_HPPOSLLH_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic HPPOSLLH reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoHPPOSLLH(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and HPPOSLLH is send cyclically already boolean assumeAutoHPPOSLLH(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and HPPOSLLH is send cyclically already
void flushHPPOSLLH(); //Mark all the HPPPOSLLH data as read/stale. This is handy to get data alignment after CRC failure void flushHPPOSLLH(); //Mark all the HPPPOSLLH data as read/stale. This is handy to get data alignment after CRC failure
@@ -783,6 +791,7 @@ public:
boolean getNAVCLOCK(uint16_t maxWait = defaultMaxWait); // NAV CLOCK boolean getNAVCLOCK(uint16_t maxWait = defaultMaxWait); // NAV CLOCK
boolean setAutoNAVCLOCK(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic clock reports at the navigation frequency boolean setAutoNAVCLOCK(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic clock reports at the navigation frequency
boolean setAutoNAVCLOCK(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic clock reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoNAVCLOCK(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic clock reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoNAVCLOCKrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic CLOCK reports
boolean setAutoNAVCLOCKcallback(void (*callbackPointer)(UBX_NAV_CLOCK_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic CLOCK reports at the navigation frequency. Data is accessed from the callback. boolean setAutoNAVCLOCKcallback(void (*callbackPointer)(UBX_NAV_CLOCK_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic CLOCK reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoNAVCLOCK(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and clock is send cyclically already boolean assumeAutoNAVCLOCK(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and clock is send cyclically already
void flushNAVCLOCK(); //Mark all the data as read/stale void flushNAVCLOCK(); //Mark all the data as read/stale
@@ -794,6 +803,7 @@ public:
boolean getRELPOSNED(uint16_t maxWait = defaultMaxWait); //Get Relative Positioning Information of the NED frame boolean getRELPOSNED(uint16_t maxWait = defaultMaxWait); //Get Relative Positioning Information of the NED frame
boolean setAutoRELPOSNED(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic RELPOSNED reports boolean setAutoRELPOSNED(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic RELPOSNED reports
boolean setAutoRELPOSNED(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic RELPOSNED, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoRELPOSNED(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic RELPOSNED, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoRELPOSNEDrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic RELPOSNEDreports
boolean setAutoRELPOSNEDcallback(void (*callbackPointer)(UBX_NAV_RELPOSNED_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic RELPOSNED reports at the navigation frequency. Data is accessed from the callback. boolean setAutoRELPOSNEDcallback(void (*callbackPointer)(UBX_NAV_RELPOSNED_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic RELPOSNED reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoRELPOSNED(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and RELPOSNED is send cyclically already boolean assumeAutoRELPOSNED(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and RELPOSNED is send cyclically already
void flushNAVRELPOSNED(); //Mark all the data as read/stale void flushNAVRELPOSNED(); //Mark all the data as read/stale
@@ -804,6 +814,7 @@ public:
boolean getRXMSFRBX(uint16_t maxWait = defaultMaxWait); // RXM SFRBX boolean getRXMSFRBX(uint16_t maxWait = defaultMaxWait); // RXM SFRBX
boolean setAutoRXMSFRBX(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic RXM SFRBX reports at the navigation frequency boolean setAutoRXMSFRBX(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic RXM SFRBX reports at the navigation frequency
boolean setAutoRXMSFRBX(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic RXM SFRBX reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoRXMSFRBX(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic RXM SFRBX reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoRXMSFRBXrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic SFRBX reports
boolean setAutoRXMSFRBXcallback(void (*callbackPointer)(UBX_RXM_SFRBX_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic SFRBX reports at the navigation frequency. Data is accessed from the callback. boolean setAutoRXMSFRBXcallback(void (*callbackPointer)(UBX_RXM_SFRBX_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic SFRBX reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoRXMSFRBX(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and RXM SFRBX is send cyclically already boolean assumeAutoRXMSFRBX(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and RXM SFRBX is send cyclically already
void flushRXMSFRBX(); //Mark all the data as read/stale void flushRXMSFRBX(); //Mark all the data as read/stale
@@ -812,6 +823,7 @@ public:
boolean getRXMRAWX(uint16_t maxWait = defaultMaxWait); // RXM RAWX boolean getRXMRAWX(uint16_t maxWait = defaultMaxWait); // RXM RAWX
boolean setAutoRXMRAWX(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic RXM RAWX reports at the navigation frequency boolean setAutoRXMRAWX(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic RXM RAWX reports at the navigation frequency
boolean setAutoRXMRAWX(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic RXM RAWX reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoRXMRAWX(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic RXM RAWX reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoRXMRAWXrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic RAWX reports
boolean setAutoRXMRAWXcallback(void (*callbackPointer)(UBX_RXM_RAWX_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic RAWX reports at the navigation frequency. Data is accessed from the callback. boolean setAutoRXMRAWXcallback(void (*callbackPointer)(UBX_RXM_RAWX_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic RAWX reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoRXMRAWX(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and RXM RAWX is send cyclically already boolean assumeAutoRXMRAWX(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and RXM RAWX is send cyclically already
void flushRXMRAWX(); //Mark all the data as read/stale void flushRXMRAWX(); //Mark all the data as read/stale
@@ -827,6 +839,7 @@ public:
boolean getTIMTM2(uint16_t maxWait = defaultMaxWait); // TIM TM2 boolean getTIMTM2(uint16_t maxWait = defaultMaxWait); // TIM TM2
boolean setAutoTIMTM2(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic TIM TM2 reports at the navigation frequency boolean setAutoTIMTM2(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic TIM TM2 reports at the navigation frequency
boolean setAutoTIMTM2(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic TIM TM2 reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoTIMTM2(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic TIM TM2 reports at the navigation frequency, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoTIMTM2rate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic TIM TM2 reports
boolean setAutoTIMTM2callback(void (*callbackPointer)(UBX_TIM_TM2_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic TM2 reports at the navigation frequency. Data is accessed from the callback. boolean setAutoTIMTM2callback(void (*callbackPointer)(UBX_TIM_TM2_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic TM2 reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoTIMTM2(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and TIM TM2 is send cyclically already boolean assumeAutoTIMTM2(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and TIM TM2 is send cyclically already
void flushTIMTM2(); //Mark all the data as read/stale void flushTIMTM2(); //Mark all the data as read/stale
@@ -838,6 +851,7 @@ public:
boolean getESFALG(uint16_t maxWait = defaultMaxWait); // ESF ALG boolean getESFALG(uint16_t maxWait = defaultMaxWait); // ESF ALG
boolean setAutoESFALG(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF ALG reports boolean setAutoESFALG(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF ALG reports
boolean setAutoESFALG(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF ALG reports, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoESFALG(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF ALG reports, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoESFALGrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic ALG reports
boolean setAutoESFALGcallback(void (*callbackPointer)(UBX_ESF_ALG_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic ALG reports at the navigation frequency. Data is accessed from the callback. boolean setAutoESFALGcallback(void (*callbackPointer)(UBX_ESF_ALG_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic ALG reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoESFALG(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and ESF ALG is send cyclically already boolean assumeAutoESFALG(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and ESF ALG is send cyclically already
void flushESFALG(); //Mark all the data as read/stale void flushESFALG(); //Mark all the data as read/stale
@@ -847,6 +861,7 @@ public:
boolean getESFSTATUS(uint16_t maxWait = defaultMaxWait); // ESF STATUS boolean getESFSTATUS(uint16_t maxWait = defaultMaxWait); // ESF STATUS
boolean setAutoESFSTATUS(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF STATUS reports boolean setAutoESFSTATUS(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF STATUS reports
boolean setAutoESFSTATUS(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF STATUS reports, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoESFSTATUS(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF STATUS reports, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoESFSTATUSrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic STATUS reports
boolean setAutoESFSTATUScallback(void (*callbackPointer)(UBX_ESF_STATUS_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic STATUS reports at the navigation frequency. Data is accessed from the callback. boolean setAutoESFSTATUScallback(void (*callbackPointer)(UBX_ESF_STATUS_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic STATUS reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoESFSTATUS(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and ESF STATUS is send cyclically already boolean assumeAutoESFSTATUS(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and ESF STATUS is send cyclically already
void flushESFSTATUS(); //Mark all the data as read/stale void flushESFSTATUS(); //Mark all the data as read/stale
@@ -856,6 +871,7 @@ public:
boolean getESFINS(uint16_t maxWait = defaultMaxWait); // ESF INS boolean getESFINS(uint16_t maxWait = defaultMaxWait); // ESF INS
boolean setAutoESFINS(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF INS reports boolean setAutoESFINS(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF INS reports
boolean setAutoESFINS(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF INS reports, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoESFINS(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF INS reports, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoESFINSrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic INS reports
boolean setAutoESFINScallback(void (*callbackPointer)(UBX_ESF_INS_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic INS reports at the navigation frequency. Data is accessed from the callback. boolean setAutoESFINScallback(void (*callbackPointer)(UBX_ESF_INS_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic INS reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoESFINS(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and ESF INS is send cyclically already boolean assumeAutoESFINS(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and ESF INS is send cyclically already
void flushESFINS(); //Mark all the data as read/stale void flushESFINS(); //Mark all the data as read/stale
@@ -865,6 +881,7 @@ public:
boolean getESFMEAS(uint16_t maxWait = defaultMaxWait); // ESF MEAS boolean getESFMEAS(uint16_t maxWait = defaultMaxWait); // ESF MEAS
boolean setAutoESFMEAS(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF MEAS reports boolean setAutoESFMEAS(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF MEAS reports
boolean setAutoESFMEAS(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF MEAS reports, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoESFMEAS(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF MEAS reports, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoESFMEASrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic MEAS reports
boolean setAutoESFMEAScallback(void (*callbackPointer)(UBX_ESF_MEAS_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic MEAS reports at the navigation frequency. Data is accessed from the callback. boolean setAutoESFMEAScallback(void (*callbackPointer)(UBX_ESF_MEAS_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic MEAS reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoESFMEAS(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and ESF MEAS is send cyclically already boolean assumeAutoESFMEAS(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and ESF MEAS is send cyclically already
void flushESFMEAS(); //Mark all the data as read/stale void flushESFMEAS(); //Mark all the data as read/stale
@@ -874,6 +891,7 @@ public:
boolean getESFRAW(uint16_t maxWait = defaultMaxWait); // ESF RAW boolean getESFRAW(uint16_t maxWait = defaultMaxWait); // ESF RAW
boolean setAutoESFRAW(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF RAW reports boolean setAutoESFRAW(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF RAW reports
boolean setAutoESFRAW(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF RAW reports, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoESFRAW(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic ESF RAW reports, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoESFRAWrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic RAW reports
boolean setAutoESFRAWcallback(void (*callbackPointer)(UBX_ESF_RAW_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic RAW reports at the navigation frequency. Data is accessed from the callback. boolean setAutoESFRAWcallback(void (*callbackPointer)(UBX_ESF_RAW_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic RAW reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoESFRAW(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and ESF RAW is send cyclically already boolean assumeAutoESFRAW(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and ESF RAW is send cyclically already
void flushESFRAW(); //Mark all the data as read/stale void flushESFRAW(); //Mark all the data as read/stale
@@ -885,6 +903,7 @@ public:
boolean getHNRATT(uint16_t maxWait = defaultMaxWait); // Returns true if the get HNR attitude is successful boolean getHNRATT(uint16_t maxWait = defaultMaxWait); // Returns true if the get HNR attitude is successful
boolean setAutoHNRATT(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HNR Attitude reports at the HNR rate boolean setAutoHNRATT(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HNR Attitude reports at the HNR rate
boolean setAutoHNRATT(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HNR Attitude reports at the HNR rate, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoHNRATT(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HNR Attitude reports at the HNR rate, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoHNRATTrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic ATT reports
boolean setAutoHNRATTcallback(void (*callbackPointer)(UBX_HNR_ATT_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic ATT reports at the navigation frequency. Data is accessed from the callback. boolean setAutoHNRATTcallback(void (*callbackPointer)(UBX_HNR_ATT_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic ATT reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoHNRATT(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and HNR Attitude is send cyclically already boolean assumeAutoHNRATT(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and HNR Attitude is send cyclically already
void flushHNRATT(); //Mark all the data as read/stale void flushHNRATT(); //Mark all the data as read/stale
@@ -894,6 +913,7 @@ public:
boolean getHNRINS(uint16_t maxWait = defaultMaxWait); // Returns true if the get HNR dynamics is successful boolean getHNRINS(uint16_t maxWait = defaultMaxWait); // Returns true if the get HNR dynamics is successful
boolean setAutoHNRINS(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HNR dynamics reports at the HNR rate boolean setAutoHNRINS(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HNR dynamics reports at the HNR rate
boolean setAutoHNRINS(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HNR dynamics reports at the HNR rate, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoHNRINS(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HNR dynamics reports at the HNR rate, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoHNRINSrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic INS reports
boolean setAutoHNRINScallback(void (*callbackPointer)(UBX_HNR_INS_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic INS reports at the navigation frequency. Data is accessed from the callback. boolean setAutoHNRINScallback(void (*callbackPointer)(UBX_HNR_INS_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic INS reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoHNRINS(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and HNR dynamics is send cyclically already boolean assumeAutoHNRINS(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and HNR dynamics is send cyclically already
void flushHNRINS(); //Mark all the data as read/stale void flushHNRINS(); //Mark all the data as read/stale
@@ -902,6 +922,7 @@ public:
boolean getHNRPVT(uint16_t maxWait = defaultMaxWait); // Returns true if the get HNR PVT is successful boolean getHNRPVT(uint16_t maxWait = defaultMaxWait); // Returns true if the get HNR PVT is successful
boolean setAutoHNRPVT(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HNR PVT reports at the HNR rate boolean setAutoHNRPVT(boolean enabled, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HNR PVT reports at the HNR rate
boolean setAutoHNRPVT(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HNR PVT reports at the HNR rate, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update boolean setAutoHNRPVT(boolean enabled, boolean implicitUpdate, uint16_t maxWait = defaultMaxWait); //Enable/disable automatic HNR PVT reports at the HNR rate, with implicitUpdate == false accessing stale data will not issue parsing of data in the rxbuffer of your interface, instead you have to call checkUblox when you want to perform an update
boolean setAutoHNRPVTrate(uint8_t rate, boolean implicitUpdate = true, uint16_t maxWait = defaultMaxWait); //Set the rate for automatic PVT reports
boolean setAutoHNRPVTcallback(void (*callbackPointer)(UBX_HNR_PVT_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic PVT reports at the navigation frequency. Data is accessed from the callback. boolean setAutoHNRPVTcallback(void (*callbackPointer)(UBX_HNR_PVT_data_t), uint16_t maxWait = defaultMaxWait); //Enable automatic PVT reports at the navigation frequency. Data is accessed from the callback.
boolean assumeAutoHNRPVT(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and HNR PVT is send cyclically already boolean assumeAutoHNRPVT(boolean enabled, boolean implicitUpdate = true); //In case no config access to the GPS is possible and HNR PVT is send cyclically already
void flushHNRPVT(); //Mark all the data as read/stale void flushHNRPVT(); //Mark all the data as read/stale