Fixing smartsleep, define return value for sleep()
This commit is contained in:
@@ -42,7 +42,7 @@ void hwWriteConfig(int adr, uint8_t value);
|
||||
uint8_t hwReadConfig(int adr);
|
||||
*/
|
||||
|
||||
void hwSleep(unsigned long ms);
|
||||
int8_t hwSleep(unsigned long ms);
|
||||
int8_t hwSleep(uint8_t interrupt, uint8_t mode, unsigned long ms);
|
||||
int8_t hwSleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode2, unsigned long ms);
|
||||
#ifdef MY_DEBUG
|
||||
|
||||
@@ -94,8 +94,9 @@ void hwInternalSleep(unsigned long ms) {
|
||||
if (!pinIntTrigger && ms >= 16) { hwPowerDown(SLEEP_15Ms); ms -= 15; }
|
||||
}
|
||||
|
||||
void hwSleep(unsigned long ms) {
|
||||
int8_t hwSleep(unsigned long ms) {
|
||||
hwInternalSleep(ms);
|
||||
return -1;
|
||||
}
|
||||
|
||||
int8_t hwSleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
|
||||
@@ -120,7 +121,7 @@ int8_t hwSleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mo
|
||||
detachInterrupt(interrupt1);
|
||||
if (interrupt2!=0xFF) detachInterrupt(interrupt2);
|
||||
|
||||
// default: no interrupt triggered
|
||||
// default: no interrupt triggered, timer wake up
|
||||
int8_t retVal = -1;
|
||||
|
||||
if (pinIntTrigger == 1) {
|
||||
|
||||
@@ -92,18 +92,19 @@ void hwWriteConfig(int adr, uint8_t value)
|
||||
|
||||
|
||||
|
||||
void hwSleep(unsigned long ms) {
|
||||
// TODO: Not supported!
|
||||
int8_t hwSleep(unsigned long ms) {
|
||||
// TODO: Not supported!
|
||||
return -2;
|
||||
}
|
||||
|
||||
int8_t hwSleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
|
||||
// TODO: Not supported!
|
||||
return false;
|
||||
// TODO: Not supported!
|
||||
return -2;
|
||||
}
|
||||
|
||||
int8_t hwSleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode2, unsigned long ms) {
|
||||
// TODO: Not supported!
|
||||
return 0;
|
||||
return -2;
|
||||
}
|
||||
|
||||
#ifdef MY_DEBUG
|
||||
|
||||
@@ -111,9 +111,10 @@ void hwReboot() {
|
||||
// TODO: Not supported!
|
||||
}
|
||||
|
||||
void hwSleep(unsigned long ms) {
|
||||
int8_t hwSleep(unsigned long ms) {
|
||||
// TODO: Not supported!
|
||||
ms = ms + 1;
|
||||
return -2;
|
||||
}
|
||||
|
||||
int8_t hwSleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
|
||||
@@ -121,7 +122,7 @@ int8_t hwSleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
|
||||
interrupt = interrupt;
|
||||
mode = mode;
|
||||
ms = ms;
|
||||
return false;
|
||||
return -2;
|
||||
}
|
||||
|
||||
int8_t hwSleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode2, unsigned long ms) {
|
||||
@@ -131,7 +132,7 @@ int8_t hwSleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mo
|
||||
interrupt2 = interrupt2;
|
||||
mode2 = mode2;
|
||||
ms = ms;
|
||||
return 0;
|
||||
return -2;
|
||||
}
|
||||
|
||||
#ifdef MY_DEBUG
|
||||
|
||||
@@ -315,49 +315,47 @@ void wait(unsigned long ms) {
|
||||
}
|
||||
}
|
||||
|
||||
void sleep(unsigned long ms) {
|
||||
#if defined(MY_OTA_FIRMWARE_FEATURE)
|
||||
if (_fwUpdateOngoing) {
|
||||
// Do not sleep node while fw update is ongoing
|
||||
_process();
|
||||
return;
|
||||
} else {
|
||||
#endif
|
||||
#if defined(MY_RADIO_FEATURE)
|
||||
transportPowerDown();
|
||||
#endif
|
||||
hwSleep(ms);
|
||||
#if defined(MY_OTA_FIRMWARE_FEATURE)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void smartSleep(unsigned long ms) {
|
||||
wait(MY_SMART_SLEEP_WAIT_DURATION);
|
||||
sleep(ms);
|
||||
sendHeartbeat();
|
||||
}
|
||||
|
||||
bool sleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
|
||||
int8_t sleep(unsigned long ms) {
|
||||
#if defined(MY_OTA_FIRMWARE_FEATURE)
|
||||
if (_fwUpdateOngoing) {
|
||||
// Do not sleep node while fw update is ongoing
|
||||
return false;
|
||||
} else {
|
||||
#endif
|
||||
#if defined(MY_RADIO_FEATURE)
|
||||
transportPowerDown();
|
||||
#endif
|
||||
return hwSleep(interrupt, mode, ms) ;
|
||||
#if defined(MY_OTA_FIRMWARE_FEATURE)
|
||||
return -2;
|
||||
}
|
||||
#endif
|
||||
#if defined(MY_RADIO_FEATURE)
|
||||
transportPowerDown();
|
||||
#endif
|
||||
return hwSleep(ms);
|
||||
}
|
||||
|
||||
bool smartSleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
|
||||
wait(MY_SMART_SLEEP_WAIT_DURATION);
|
||||
bool ret = sleep(interrupt, mode, ms);
|
||||
int8_t smartSleep(unsigned long ms) {
|
||||
int8_t ret = sleep(ms);
|
||||
// notifiy controller about wake up
|
||||
sendHeartbeat();
|
||||
// listen for incoming messages
|
||||
wait(MY_SMART_SLEEP_WAIT_DURATION);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int8_t sleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
|
||||
#if defined(MY_OTA_FIRMWARE_FEATURE)
|
||||
if (_fwUpdateOngoing) {
|
||||
// Do not sleep node while fw update is ongoing
|
||||
return -2;
|
||||
}
|
||||
#endif
|
||||
#if defined(MY_RADIO_FEATURE)
|
||||
transportPowerDown();
|
||||
#endif
|
||||
return hwSleep(interrupt, mode, ms);
|
||||
}
|
||||
|
||||
int8_t smartSleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
|
||||
int8_t ret = sleep(interrupt, mode, ms);
|
||||
// notifiy controller about wake up
|
||||
sendHeartbeat();
|
||||
// listen for incoming messages
|
||||
wait(MY_SMART_SLEEP_WAIT_DURATION);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -365,22 +363,21 @@ int8_t sleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode
|
||||
#if defined(MY_OTA_FIRMWARE_FEATURE)
|
||||
if (_fwUpdateOngoing) {
|
||||
// Do not sleep node while fw update is ongoing
|
||||
return -1;
|
||||
} else {
|
||||
#endif
|
||||
#if defined(MY_RADIO_FEATURE)
|
||||
transportPowerDown();
|
||||
#endif
|
||||
return hwSleep(interrupt1, mode1, interrupt2, mode2, ms) ;
|
||||
#if defined(MY_OTA_FIRMWARE_FEATURE)
|
||||
return -2;
|
||||
}
|
||||
#endif
|
||||
#if defined(MY_RADIO_FEATURE)
|
||||
transportPowerDown();
|
||||
#endif
|
||||
return hwSleep(interrupt1, mode1, interrupt2, mode2, ms);
|
||||
}
|
||||
|
||||
int8_t smartSleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode2, unsigned long ms) {
|
||||
wait(MY_SMART_SLEEP_WAIT_DURATION);
|
||||
int8_t ret = sleep(interrupt1, mode1, interrupt2, mode2, ms);
|
||||
// notifiy controller about wake up
|
||||
sendHeartbeat();
|
||||
// listen for incoming messages
|
||||
wait(MY_SMART_SLEEP_WAIT_DURATION);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -178,9 +178,10 @@ void wait(unsigned long ms);
|
||||
/**
|
||||
* Sleep (PowerDownMode) the MCU and radio. Wake up on timer.
|
||||
* @param ms Number of milliseconds to sleep.
|
||||
* @return -1 if timer woke it up, -2 if not possible (e.g. ongoing FW update)
|
||||
*/
|
||||
void sleep(unsigned long ms);
|
||||
void smartSleep(unsigned long ms);
|
||||
int8_t sleep(unsigned long ms);
|
||||
int8_t smartSleep(unsigned long ms);
|
||||
|
||||
/**
|
||||
* Sleep (PowerDownMode) the MCU and radio. Wake up on timer or pin change.
|
||||
@@ -189,10 +190,10 @@ void smartSleep(unsigned long ms);
|
||||
* @param interrupt Interrupt that should trigger the wakeup
|
||||
* @param mode RISING, FALLING, CHANGE
|
||||
* @param ms Number of milliseconds to sleep or 0 to sleep forever
|
||||
* @return true if wake up was triggered by pin change and false means timer woke it up.
|
||||
* @return Interrupt number wake up was triggered by pin change, -1 if timer woke it up, -2 if not possible (e.g. ongoing FW update)
|
||||
*/
|
||||
bool sleep(uint8_t interrupt, uint8_t mode, unsigned long ms=0);
|
||||
bool smartSleep(uint8_t interrupt, uint8_t mode, unsigned long ms=0);
|
||||
int8_t sleep(uint8_t interrupt, uint8_t mode, unsigned long ms=0);
|
||||
int8_t smartSleep(uint8_t interrupt, uint8_t mode, unsigned long ms=0);
|
||||
|
||||
/**
|
||||
* Sleep (PowerDownMode) the MCU and radio. Wake up on timer or pin change for two separate interrupts.
|
||||
@@ -203,7 +204,7 @@ bool smartSleep(uint8_t interrupt, uint8_t mode, unsigned long ms=0);
|
||||
* @param interrupt2 Second interrupt that should trigger the wakeup
|
||||
* @param mode2 Mode for second interrupt (RISING, FALLING, CHANGE)
|
||||
* @param ms Number of milliseconds to sleep or 0 to sleep forever
|
||||
* @return Interrupt number wake up was triggered by pin change and negative if timer woke it up.
|
||||
* @return Interrupt number wake up was triggered by pin change, -1 if timer woke it up, -2 if not possible (e.g. ongoing FW update)
|
||||
*/
|
||||
int8_t sleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode2, unsigned long ms=0);
|
||||
int8_t smartSleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode2, unsigned long ms=0);
|
||||
|
||||
Reference in New Issue
Block a user