@@ -7978,28 +7978,7 @@ bool SFE_UBLOX_GNSS::powerSaveMode(bool power_save, uint16_t maxWait)
79787978 }
79797979
79807980 // Now let's change the power setting using UBX-CFG-RXM
7981- packetCfg.cls = UBX_CLASS_CFG;
7982- packetCfg.id = UBX_CFG_RXM;
7983- packetCfg.len = 0;
7984- packetCfg.startingSpot = 0;
7985-
7986- // Ask module for the current power management settings. Loads into payloadCfg.
7987- if (sendCommand(&packetCfg, maxWait) != SFE_UBLOX_STATUS_DATA_RECEIVED) // We are expecting data and an ACK
7988- return (false);
7989-
7990- if (power_save)
7991- {
7992- payloadCfg[1] = 1; // Power Save Mode
7993- }
7994- else
7995- {
7996- payloadCfg[1] = 0; // Continuous Mode
7997- }
7998-
7999- packetCfg.len = 2;
8000- packetCfg.startingSpot = 0;
8001-
8002- return (sendCommand(&packetCfg, maxWait) == SFE_UBLOX_STATUS_DATA_SENT); // We are only expecting an ACK
7981+ return setupPowerMode(power_save ? SFE_UBLOX_CFG_RXM_POWERSAVE : SFE_UBLOX_CFG_RXM_CONTINUOUS, maxWait);
80037982}
80047983
80057984// Get Power Save Mode
@@ -8165,6 +8144,51 @@ bool SFE_UBLOX_GNSS::powerOffWithInterrupt(uint32_t durationInMs, uint32_t wakeu
81658144 }
81668145}
81678146
8147+ bool SFE_UBLOX_GNSS::setPowerManagement(sfe_ublox_pms_mode_e mode, uint16_t period, uint16_t onTime, uint16_t maxWait)
8148+ {
8149+ // INVALID only valid in response
8150+ if (mode == SFE_UBLOX_PMS_MODE_INVALID)
8151+ return false;
8152+ packetCfg.cls = UBX_CLASS_CFG;
8153+ packetCfg.id = UBX_CFG_PMS;
8154+ packetCfg.len = 8;
8155+ packetCfg.startingSpot = 0;
8156+
8157+ packetCfg.payload[0] = 0x0; //message version
8158+ packetCfg.payload[1] = mode;
8159+ // only valid if mode==SFE_UBLOX_PMS_MODE_INTERVAL
8160+ if (mode == SFE_UBLOX_PMS_MODE_INTERVAL)
8161+ {
8162+ packetCfg.payload[2] = period >> 8;
8163+ packetCfg.payload[3] = period & 0xff;
8164+ packetCfg.payload[4] = onTime >> 8;
8165+ packetCfg.payload[5] = onTime & 0xff;
8166+ }
8167+ else
8168+ {
8169+ packetCfg.payload[2] = 0;
8170+ packetCfg.payload[3] = 0;
8171+ packetCfg.payload[4] = 0;
8172+ packetCfg.payload[5] = 0;
8173+ }
8174+ packetCfg.payload[6] = 0x0; //reserved
8175+ packetCfg.payload[7] = 0x0; //reserved
8176+ return sendCommand(&packetCfg, maxWait);
8177+ }
8178+
8179+ bool SFE_UBLOX_GNSS::setupPowerMode(sfe_ublox_rxm_mode_e mode, uint16_t maxWait)
8180+ {
8181+ packetCfg.cls = UBX_CLASS_CFG;
8182+ packetCfg.id = UBX_CFG_RXM;
8183+ packetCfg.len = 2;
8184+ packetCfg.startingSpot = 0;
8185+
8186+ packetCfg.payload[0] = 0x0; //reserved
8187+ packetCfg.payload[1] = mode; //low power mode
8188+
8189+ return sendCommand(&packetCfg, maxWait);
8190+ }
8191+
81688192// Dynamic Platform Model
81698193
81708194// Change the dynamic platform model using UBX-CFG-NAV5
@@ -18552,48 +18576,3 @@ int8_t SFE_UBLOX_GNSS::extractSignedChar(ubxPacket *msg, uint16_t spotToStart)
1855218576 stSignedByte.unsignedByte = extractByte(msg, spotToStart);
1855318577 return (stSignedByte.signedByte);
1855418578}
18555-
18556- boolean SFE_UBLOX_GNSS::setPMS(sfe_ublox_pms_mode_e mode, uint16_t period, uint16_t onTime, uint16_t maxWait)
18557- {
18558- // INVALID only valid in response
18559- if (mode == SFE_UBLOX_PMS_MODE_INVALID)
18560- return false;
18561- packetCfg.cls = UBX_CLASS_CFG;
18562- packetCfg.id = UBX_CFG_PMS;
18563- packetCfg.len = 8;
18564- packetCfg.startingSpot = 0;
18565-
18566- packetCfg.payload[0] = 0x0; //message version
18567- packetCfg.payload[1] = mode;
18568- // only valid if mode==SFE_UBLOX_PMS_MODE_INTERVAL
18569- if (mode == SFE_UBLOX_PMS_MODE_INTERVAL)
18570- {
18571- packetCfg.payload[2] = period >> 8;
18572- packetCfg.payload[3] = period & 0xff;
18573- packetCfg.payload[4] = onTime >> 8;
18574- packetCfg.payload[5] = onTime & 0xff;
18575- }
18576- else
18577- {
18578- packetCfg.payload[2] = 0;
18579- packetCfg.payload[3] = 0;
18580- packetCfg.payload[4] = 0;
18581- packetCfg.payload[5] = 0;
18582- }
18583- packetCfg.payload[6] = 0x0; //reserved
18584- packetCfg.payload[7] = 0x0; //reserved
18585- return sendCommand(&packetCfg, maxWait);
18586- }
18587-
18588- boolean SFE_UBLOX_GNSS::setRXM(sfe_ublox_rxm_mode_e mode, uint16_t maxWait)
18589- {
18590- packetCfg.cls = UBX_CLASS_CFG;
18591- packetCfg.id = UBX_CFG_RXM;
18592- packetCfg.len = 2;
18593- packetCfg.startingSpot = 0;
18594-
18595- packetCfg.payload[0] = 0x0; //reserved
18596- packetCfg.payload[1] = mode; //low power mode
18597-
18598- return sendCommand(&packetCfg, maxWait);
18599- }
0 commit comments