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
+257 -68
View File
@@ -5112,29 +5112,38 @@ boolean SFE_UBLOX_GNSS::getNAVPOSECEF(uint16_t maxWait)
//works.
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
//works.
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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV;
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
if (ok)
{
packetUBXNAVPOSECEF->automaticFlags.flags.bits.automatic = enable;
packetUBXNAVPOSECEF->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVPOSECEF->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
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.
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.
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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV;
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
if (ok)
{
packetUBXNAVSTATUS->automaticFlags.flags.bits.automatic = enable;
packetUBXNAVSTATUS->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVSTATUS->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXNAVSTATUS->moduleQueried.moduleQueried.bits.all = false;
@@ -5430,12 +5448,19 @@ boolean SFE_UBLOX_GNSS::getDOP(uint16_t maxWait)
//works.
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
//works.
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) //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;
payloadCfg[0] = UBX_CLASS_NAV;
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
if (ok)
{
packetUBXNAVDOP->automaticFlags.flags.bits.automatic = enable;
packetUBXNAVDOP->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVDOP->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXNAVDOP->moduleQueried.moduleQueried.bits.all = false;
@@ -5584,29 +5609,38 @@ boolean SFE_UBLOX_GNSS::getNAVATT(uint16_t maxWait)
//works.
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
//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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV;
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
if (ok)
{
packetUBXNAVATT->automaticFlags.flags.bits.automatic = enable;
packetUBXNAVATT->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVATT->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
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
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
@@ -5912,29 +5948,38 @@ boolean SFE_UBLOX_GNSS::getNAVODO(uint16_t maxWait)
//works.
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
//works.
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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV;
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
if (ok)
{
packetUBXNAVODO->automaticFlags.flags.bits.automatic = enable;
packetUBXNAVODO->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVODO->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXNAVODO->moduleQueried.moduleQueried.bits.all = false;
@@ -6059,29 +6104,38 @@ boolean SFE_UBLOX_GNSS::getNAVVELECEF(uint16_t maxWait)
//works.
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
//works.
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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV;
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
if (ok)
{
packetUBXNAVVELECEF->automaticFlags.flags.bits.automatic = enable;
packetUBXNAVVELECEF->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVVELECEF->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXNAVVELECEF->moduleQueried.moduleQueried.bits.all = false;
@@ -6360,29 +6414,38 @@ boolean SFE_UBLOX_GNSS::getNAVHPPOSECEF(uint16_t maxWait)
//works.
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
//works.
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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV;
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
if (ok)
{
packetUBXNAVHPPOSECEF->automaticFlags.flags.bits.automatic = enable;
packetUBXNAVHPPOSECEF->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVHPPOSECEF->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXNAVHPPOSECEF->moduleQueried.moduleQueried.bits.all = false;
@@ -6529,29 +6592,38 @@ boolean SFE_UBLOX_GNSS::getHPPOSLLH(uint16_t maxWait)
//works.
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
//works.
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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV;
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
if (ok)
{
packetUBXNAVHPPOSLLH->automaticFlags.flags.bits.automatic = enable;
packetUBXNAVHPPOSLLH->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVHPPOSLLH->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXNAVHPPOSLLH->moduleQueried.moduleQueried.bits.all = false;
@@ -6676,29 +6748,38 @@ boolean SFE_UBLOX_GNSS::getNAVCLOCK(uint16_t maxWait)
//works.
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
//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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV;
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
if (ok)
{
packetUBXNAVCLOCK->automaticFlags.flags.bits.automatic = enable;
packetUBXNAVCLOCK->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVCLOCK->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXNAVCLOCK->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -6875,29 +6956,38 @@ boolean SFE_UBLOX_GNSS::getRELPOSNED(uint16_t maxWait)
//works.
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
//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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_NAV;
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
if (ok)
{
packetUBXNAVRELPOSNED->automaticFlags.flags.bits.automatic = enable;
packetUBXNAVRELPOSNED->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXNAVRELPOSNED->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXNAVRELPOSNED->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -7022,29 +7112,38 @@ boolean SFE_UBLOX_GNSS::getRXMSFRBX(uint16_t maxWait)
//works.
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
//works.
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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_RXM;
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
if (ok)
{
packetUBXRXMSFRBX->automaticFlags.flags.bits.automatic = enable;
packetUBXRXMSFRBX->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXRXMSFRBX->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXRXMSFRBX->moduleQueried = false;
@@ -7169,29 +7268,38 @@ boolean SFE_UBLOX_GNSS::getRXMRAWX(uint16_t maxWait)
//works.
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
//works.
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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_RXM;
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
if (ok)
{
packetUBXRXMRAWX->automaticFlags.flags.bits.automatic = enable;
packetUBXRXMRAWX->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXRXMRAWX->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXRXMRAWX->moduleQueried = false;
@@ -7376,29 +7484,38 @@ boolean SFE_UBLOX_GNSS::getTIMTM2(uint16_t maxWait)
//works.
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
//works.
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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_TIM;
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
if (ok)
{
packetUBXTIMTM2->automaticFlags.flags.bits.automatic = enable;
packetUBXTIMTM2->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXTIMTM2->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXTIMTM2->moduleQueried.moduleQueried.bits.all = false;
@@ -7552,29 +7669,38 @@ boolean SFE_UBLOX_GNSS::getESFALG(uint16_t maxWait)
//works.
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
//works.
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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_ESF;
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
if (ok)
{
packetUBXESFALG->automaticFlags.flags.bits.automatic = enable;
packetUBXESFALG->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXESFALG->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXESFALG->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -7728,29 +7854,38 @@ boolean SFE_UBLOX_GNSS::getESFSTATUS(uint16_t maxWait)
//works.
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
//works.
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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_ESF;
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
if (ok)
{
packetUBXESFSTATUS->automaticFlags.flags.bits.automatic = enable;
packetUBXESFSTATUS->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXESFSTATUS->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXESFSTATUS->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -7905,29 +8040,38 @@ boolean SFE_UBLOX_GNSS::getESFINS(uint16_t maxWait)
//works.
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
//works.
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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_ESF;
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
if (ok)
{
packetUBXESFINS->automaticFlags.flags.bits.automatic = enable;
packetUBXESFINS->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXESFINS->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXESFINS->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -8081,29 +8225,38 @@ boolean SFE_UBLOX_GNSS::getESFMEAS(uint16_t maxWait)
//works.
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
//works.
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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_ESF;
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
if (ok)
{
packetUBXESFMEAS->automaticFlags.flags.bits.automatic = enable;
packetUBXESFMEAS->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXESFMEAS->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXESFMEAS->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -8257,29 +8410,38 @@ boolean SFE_UBLOX_GNSS::getESFRAW(uint16_t maxWait)
//works.
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
//works.
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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_ESF;
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
if (ok)
{
packetUBXESFRAW->automaticFlags.flags.bits.automatic = enable;
packetUBXESFRAW->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXESFRAW->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXESFRAW->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -8438,29 +8600,38 @@ boolean SFE_UBLOX_GNSS::getHNRATT(uint16_t maxWait)
//works.
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
//works.
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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_HNR;
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
if (ok)
{
packetUBXHNRATT->automaticFlags.flags.bits.automatic = enable;
packetUBXHNRATT->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXHNRATT->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXHNRATT->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -8620,29 +8791,38 @@ boolean SFE_UBLOX_GNSS::getHNRINS(uint16_t maxWait)
//works.
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
//works.
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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_HNR;
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
if (ok)
{
packetUBXHNRINS->automaticFlags.flags.bits.automatic = enable;
packetUBXHNRINS->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXHNRINS->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXHNRINS->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale
@@ -8796,29 +8976,38 @@ boolean SFE_UBLOX_GNSS::getHNRPVT(uint16_t maxWait)
//works.
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
//works.
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) //Only attempt this if RAM allocation was successful
return false;
if (rate > 127) rate = 127;
packetCfg.cls = UBX_CLASS_CFG;
packetCfg.id = UBX_CFG_MSG;
packetCfg.len = 3;
packetCfg.startingSpot = 0;
payloadCfg[0] = UBX_CLASS_HNR;
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
if (ok)
{
packetUBXHNRPVT->automaticFlags.flags.bits.automatic = enable;
packetUBXHNRPVT->automaticFlags.flags.bits.automatic = (rate > 0);
packetUBXHNRPVT->automaticFlags.flags.bits.implicitUpdate = implicitUpdate;
}
packetUBXHNRPVT->moduleQueried.moduleQueried.bits.all = false; // Mark data as stale