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