Skip to content

Commit 39563a1

Browse files
committed
setPMS->setupPowerMode; setRXM->setPowerManagement
1 parent 6458b97 commit 39563a1

3 files changed

Lines changed: 51 additions & 73 deletions

File tree

keywords.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -681,8 +681,8 @@ getLatestNMEAGNZDA KEYWORD2
681681
setNMEAGNZDAcallback KEYWORD2
682682
setNMEAGNZDAcallbackPtr KEYWORD2
683683

684-
setPMS KEYWORD2
685-
setRXM KEYWORD2
684+
setupPowerMode KEYWORD2
685+
setPowerManagement KEYWORD2
686686

687687
extractLong KEYWORD2
688688
extractSignedLong KEYWORD2

src/SparkFun_u-blox_GNSS_Arduino_Library.cpp

Lines changed: 46 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
}

src/SparkFun_u-blox_GNSS_Arduino_Library.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -942,6 +942,9 @@ class SFE_UBLOX_GNSS
942942
uint8_t getPowerSaveMode(uint16_t maxWait = defaultMaxWait); // Returns 255 if the sendCommand fails
943943
bool powerOff(uint32_t durationInMs, uint16_t maxWait = defaultMaxWait);
944944
bool powerOffWithInterrupt(uint32_t durationInMs, uint32_t wakeupSources = VAL_RXM_PMREQ_WAKEUPSOURCE_EXTINT0, bool forceWhileUsb = true, uint16_t maxWait = defaultMaxWait);
945+
// Power Mode Setup. Values period and onTime are only valid if mode is SFE_UBLOX_PMS_MODE_INTERVAL
946+
bool setupPowerMode(sfe_ublox_pms_mode_e mode, uint16_t period=0, uint16_t onTime=0, uint16_t maxWait = defaultMaxWait);
947+
bool setPowerManagement(sfe_ublox_rxm_mode_e mode, uint16_t maxWait = defaultMaxWait);
945948

946949
// Change the dynamic platform model using UBX-CFG-NAV5
947950
bool setDynamicModel(dynModel newDynamicModel = DYN_MODEL_PORTABLE, uint16_t maxWait = defaultMaxWait);
@@ -1565,10 +1568,6 @@ class SFE_UBLOX_GNSS
15651568
bool setNMEAGNZDAcallbackPtr(void (*callbackPointerPtr)(NMEA_ZDA_data_t *)); // Enable a callback on the arrival of a GNZDA message
15661569
#endif
15671570

1568-
// Power Mode Setup. Values period and onTime are only valid if mode is SFE_UBLOX_PMS_MODE_INTERVAL
1569-
boolean setPMS(sfe_ublox_pms_mode_e mode, uint16_t period=0, uint16_t onTime=0, uint16_t maxWait = defaultMaxWait);
1570-
boolean setRXM(sfe_ublox_rxm_mode_e mode, uint16_t maxWait = defaultMaxWait);
1571-
15721571
// Functions to extract signed and unsigned 8/16/32-bit data from a ubxPacket
15731572
// From v2.0: These are public. The user can call these to extract data from custom packets
15741573
uint64_t extractLongLong(ubxPacket *msg, uint16_t spotToStart); // Combine eight bytes from payload into uint64_t

0 commit comments

Comments
 (0)