From e9f527ec18f7c07cf32d0b79f4af4fb580c14ef9 Mon Sep 17 00:00:00 2001 From: Felix Rusu Date: Mon, 28 Sep 2020 20:09:43 -0400 Subject: [PATCH] remove LowPower dependency, example update --- Examples/ListenModeSleep/ListenModeSleep.ino | 17 ++++++++++++----- RFM69.cpp | 13 ++----------- RFM69.h | 2 +- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/Examples/ListenModeSleep/ListenModeSleep.ino b/Examples/ListenModeSleep/ListenModeSleep.ino index 4616668..9433604 100644 --- a/Examples/ListenModeSleep/ListenModeSleep.ino +++ b/Examples/ListenModeSleep/ListenModeSleep.ino @@ -26,8 +26,8 @@ // ********************************************************************************** #include #include -#include -#include //easy string manipulator: http://arduiniana.org/libraries/pstring/ +#include //https://github.com/LowPowerLab/LowPower +#include //easy string manipulator: http://arduiniana.org/libraries/pstring/ //********************************************************************************************* //************ IMPORTANT SETTINGS - YOU MUST CHANGE/CONFIGURE TO FIT YOUR HARDWARE ************ //********************************************************************************************* @@ -118,13 +118,13 @@ void loop() { if (TRANSMITPERIOD%262 && TRANSMITPERIOD > 262*2) { DEBUG("Sleeping "); DEBUGln(TRANSMITPERIOD-TRANSMITPERIOD%262-262); DEBUGFlush(); - radio.listenModeSleep(TRANSMITPERIOD-TRANSMITPERIOD%262-262); + listenModeSleep(TRANSMITPERIOD-TRANSMITPERIOD%262-262); DEBUG("Sleeping "); DEBUGln(TRANSMITPERIOD%262 + 262); DEBUGFlush(); - radio.listenModeSleep(TRANSMITPERIOD%262 + 262); + listenModeSleep(TRANSMITPERIOD%262 + 262); } else { DEBUG("Sleeping "); DEBUGln(TRANSMITPERIOD); DEBUGFlush(); - radio.listenModeSleep(TRANSMITPERIOD); + listenModeSleep(TRANSMITPERIOD); } //wakeup (must reinit) @@ -137,3 +137,10 @@ void loop() { #endif #endif } + +void listenModeSleep(uint16_t millisInterval) { + LowPower.powerDown( SLEEP_FOREVER, ADC_OFF, BOD_OFF ); + LowPower.powerDown( SLEEP_FOREVER, ADC_OFF, BOD_OFF ); + LowPower.powerDown( SLEEP_FOREVER, ADC_OFF, BOD_OFF ); + radio.endListenModeSleep(); +} \ No newline at end of file diff --git a/RFM69.cpp b/RFM69.cpp index d30648b..4fd01e4 100644 --- a/RFM69.cpp +++ b/RFM69.cpp @@ -26,9 +26,6 @@ #include "RFM69.h" #include "RFM69registers.h" #include -#if defined(__AVR__) - #include //http://github.com/LowPowerLab/LowPower -#endif uint8_t RFM69::DATA[RF69_MAX_DATA_LEN+1]; uint8_t RFM69::_mode; // current transceiver state @@ -874,10 +871,9 @@ void RFM69::rcCalibration() while ((readReg(REG_OSC1) & RF_OSC1_RCCAL_DONE) == 0x00); } -// ListenMode sleep/timer +// ListenMode sleep/timer - see ListenModeSleep example for proper usage! void RFM69::listenModeSleep(uint16_t millisInterval) { -#if defined (__AVR__) setMode( RF69_MODE_STANDBY ); while ((readReg(REG_IRQFLAGS1) & RF_IRQFLAGS1_MODEREADY) == 0x00); // wait for ModeReady @@ -917,12 +913,7 @@ void RFM69::listenModeSleep(uint16_t millisInterval) attachInterrupt( _interruptNum, delayIrq, RISING); - LowPower.powerDown( SLEEP_FOREVER, ADC_OFF, BOD_OFF ); - LowPower.powerDown( SLEEP_FOREVER, ADC_OFF, BOD_OFF ); - LowPower.powerDown( SLEEP_FOREVER, ADC_OFF, BOD_OFF ); - - endListenModeSleep(); -#endif + //must call sleep + interrupt handler 3 times here, then endListenModeSleep() - see ListenModeSleep example! } //============================================================================= diff --git a/RFM69.h b/RFM69.h index 3a9ee34..e1af7da 100644 --- a/RFM69.h +++ b/RFM69.h @@ -233,6 +233,7 @@ class RFM69 { // ListenMode sleep/timer void listenModeSleep(uint16_t millisInterval); + void endListenModeSleep(); protected: static void isr0(); @@ -243,7 +244,6 @@ class RFM69 { // for ListenMode sleep/timer static void delayIrq(); - void endListenModeSleep(); uint8_t _slaveSelectPin; uint8_t _interruptPin;