@@ -17368,6 +17368,21 @@ bool SFE_UBLOX_GNSS::getDiffSoln(uint16_t maxWait)
1736817368 return (packetUBXNAVPVT->data.flags.bits.diffSoln);
1736917369}
1737017370
17371+ // Get power save mode from NAV-PVT
17372+ bool SFE_UBLOX_GNSS::getNAVPVTPSMMode(uint16_t maxWait)
17373+ {
17374+ if (packetUBXNAVPVT == NULL)
17375+ initPacketUBXNAVPVT(); // Check that RAM has been allocated for the PVT data
17376+ if (packetUBXNAVPVT == NULL) // Bail if the RAM allocation failed
17377+ return 0;
17378+
17379+ if (packetUBXNAVPVT->moduleQueried.moduleQueried1.bits.psmState== false)
17380+ getPVT(maxWait);
17381+ packetUBXNAVPVT->moduleQueried.moduleQueried1.bits.psmState= false; // Since we are about to give this to user, mark this data as stale
17382+ packetUBXNAVPVT->moduleQueried.moduleQueried1.bits.all = false;
17383+ return (packetUBXNAVPVT->data.flags.bits.psmState);
17384+ }
17385+
1737117386// Get whether head vehicle valid or not
1737217387bool SFE_UBLOX_GNSS::getHeadVehValid(uint16_t maxWait)
1737317388{
@@ -18522,3 +18537,48 @@ int8_t SFE_UBLOX_GNSS::extractSignedChar(ubxPacket *msg, uint16_t spotToStart)
1852218537 stSignedByte.unsignedByte = extractByte(msg, spotToStart);
1852318538 return (stSignedByte.signedByte);
1852418539}
18540+
18541+ boolean SFE_UBLOX_GNSS::setPMS(sfe_ublox_pms_mode_e mode, uint16_t period, uint16_t onTime, uint16_t maxWait)
18542+ {
18543+ // INVALID only valid in response
18544+ if (mode == SFE_UBLOX_PMS_MODE_INVALID)
18545+ return false;
18546+ packetCfg.cls = UBX_CLASS_CFG;
18547+ packetCfg.id = UBX_CFG_PMS;
18548+ packetCfg.len = 8;
18549+ packetCfg.startingSpot = 0;
18550+
18551+ packetCfg.payload[0] = 0x0; //message version
18552+ packetCfg.payload[1] = mode;
18553+ // only valid if mode==SFE_UBLOX_PMS_MODE_INTERVAL
18554+ if (mode == SFE_UBLOX_PMS_MODE_INTERVAL)
18555+ {
18556+ packetCfg.payload[2] = period >> 8;
18557+ packetCfg.payload[3] = period & 0xff;
18558+ packetCfg.payload[4] = onTime >> 8;
18559+ packetCfg.payload[5] = onTime & 0xff;
18560+ }
18561+ else
18562+ {
18563+ packetCfg.payload[2] = 0;
18564+ packetCfg.payload[3] = 0;
18565+ packetCfg.payload[4] = 0;
18566+ packetCfg.payload[5] = 0;
18567+ }
18568+ packetCfg.payload[6] = 0x0; //reserved
18569+ packetCfg.payload[7] = 0x0; //reserved
18570+ return sendCommand(&packetCfg, maxWait);
18571+ }
18572+
18573+ boolean SFE_UBLOX_GNSS::setRXM(sfe_ublox_rxm_mode_e mode, uint16_t maxWait)
18574+ {
18575+ packetCfg.cls = UBX_CLASS_CFG;
18576+ packetCfg.id = UBX_CFG_RXM;
18577+ packetCfg.len = 2;
18578+ packetCfg.startingSpot = 0;
18579+
18580+ packetCfg.payload[0] = 0x0; //reserved
18581+ packetCfg.payload[1] = mode; //low power mode
18582+
18583+ return sendCommand(&packetCfg, maxWait);
18584+ }
0 commit comments