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);
|
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 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);
|
int8_t hwSleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode2, unsigned long ms);
|
||||||
#ifdef MY_DEBUG
|
#ifdef MY_DEBUG
|
||||||
|
|||||||
@@ -94,8 +94,9 @@ void hwInternalSleep(unsigned long ms) {
|
|||||||
if (!pinIntTrigger && ms >= 16) { hwPowerDown(SLEEP_15Ms); ms -= 15; }
|
if (!pinIntTrigger && ms >= 16) { hwPowerDown(SLEEP_15Ms); ms -= 15; }
|
||||||
}
|
}
|
||||||
|
|
||||||
void hwSleep(unsigned long ms) {
|
int8_t hwSleep(unsigned long ms) {
|
||||||
hwInternalSleep(ms);
|
hwInternalSleep(ms);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t hwSleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
|
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);
|
detachInterrupt(interrupt1);
|
||||||
if (interrupt2!=0xFF) detachInterrupt(interrupt2);
|
if (interrupt2!=0xFF) detachInterrupt(interrupt2);
|
||||||
|
|
||||||
// default: no interrupt triggered
|
// default: no interrupt triggered, timer wake up
|
||||||
int8_t retVal = -1;
|
int8_t retVal = -1;
|
||||||
|
|
||||||
if (pinIntTrigger == 1) {
|
if (pinIntTrigger == 1) {
|
||||||
|
|||||||
@@ -92,18 +92,19 @@ void hwWriteConfig(int adr, uint8_t value)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void hwSleep(unsigned long ms) {
|
int8_t hwSleep(unsigned long ms) {
|
||||||
// TODO: Not supported!
|
// TODO: Not supported!
|
||||||
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t hwSleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
|
int8_t hwSleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
|
||||||
// TODO: Not supported!
|
// TODO: Not supported!
|
||||||
return false;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t hwSleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode2, unsigned long ms) {
|
int8_t hwSleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode2, unsigned long ms) {
|
||||||
// TODO: Not supported!
|
// TODO: Not supported!
|
||||||
return 0;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MY_DEBUG
|
#ifdef MY_DEBUG
|
||||||
|
|||||||
@@ -111,9 +111,10 @@ void hwReboot() {
|
|||||||
// TODO: Not supported!
|
// TODO: Not supported!
|
||||||
}
|
}
|
||||||
|
|
||||||
void hwSleep(unsigned long ms) {
|
int8_t hwSleep(unsigned long ms) {
|
||||||
// TODO: Not supported!
|
// TODO: Not supported!
|
||||||
ms = ms + 1;
|
ms = ms + 1;
|
||||||
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t hwSleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
|
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;
|
interrupt = interrupt;
|
||||||
mode = mode;
|
mode = mode;
|
||||||
ms = ms;
|
ms = ms;
|
||||||
return false;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t hwSleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode2, unsigned long ms) {
|
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;
|
interrupt2 = interrupt2;
|
||||||
mode2 = mode2;
|
mode2 = mode2;
|
||||||
ms = ms;
|
ms = ms;
|
||||||
return 0;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MY_DEBUG
|
#ifdef MY_DEBUG
|
||||||
|
|||||||
@@ -315,49 +315,47 @@ void wait(unsigned long ms) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sleep(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
|
|
||||||
_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) {
|
|
||||||
#if defined(MY_OTA_FIRMWARE_FEATURE)
|
#if defined(MY_OTA_FIRMWARE_FEATURE)
|
||||||
if (_fwUpdateOngoing) {
|
if (_fwUpdateOngoing) {
|
||||||
// Do not sleep node while fw update is ongoing
|
// Do not sleep node while fw update is ongoing
|
||||||
return false;
|
return -2;
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
#if defined(MY_RADIO_FEATURE)
|
|
||||||
transportPowerDown();
|
|
||||||
#endif
|
|
||||||
return hwSleep(interrupt, mode, ms) ;
|
|
||||||
#if defined(MY_OTA_FIRMWARE_FEATURE)
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(MY_RADIO_FEATURE)
|
||||||
|
transportPowerDown();
|
||||||
|
#endif
|
||||||
|
return hwSleep(ms);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool smartSleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
|
int8_t smartSleep(unsigned long ms) {
|
||||||
wait(MY_SMART_SLEEP_WAIT_DURATION);
|
int8_t ret = sleep(ms);
|
||||||
bool ret = sleep(interrupt, mode, ms);
|
// notifiy controller about wake up
|
||||||
sendHeartbeat();
|
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;
|
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 defined(MY_OTA_FIRMWARE_FEATURE)
|
||||||
if (_fwUpdateOngoing) {
|
if (_fwUpdateOngoing) {
|
||||||
// Do not sleep node while fw update is ongoing
|
// Do not sleep node while fw update is ongoing
|
||||||
return -1;
|
return -2;
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
#if defined(MY_RADIO_FEATURE)
|
|
||||||
transportPowerDown();
|
|
||||||
#endif
|
|
||||||
return hwSleep(interrupt1, mode1, interrupt2, mode2, ms) ;
|
|
||||||
#if defined(MY_OTA_FIRMWARE_FEATURE)
|
|
||||||
}
|
}
|
||||||
#endif
|
#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) {
|
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);
|
int8_t ret = sleep(interrupt1, mode1, interrupt2, mode2, ms);
|
||||||
|
// notifiy controller about wake up
|
||||||
sendHeartbeat();
|
sendHeartbeat();
|
||||||
|
// listen for incoming messages
|
||||||
|
wait(MY_SMART_SLEEP_WAIT_DURATION);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -178,9 +178,10 @@ void wait(unsigned long ms);
|
|||||||
/**
|
/**
|
||||||
* Sleep (PowerDownMode) the MCU and radio. Wake up on timer.
|
* Sleep (PowerDownMode) the MCU and radio. Wake up on timer.
|
||||||
* @param ms Number of milliseconds to sleep.
|
* @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);
|
int8_t sleep(unsigned long ms);
|
||||||
void smartSleep(unsigned long ms);
|
int8_t smartSleep(unsigned long ms);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sleep (PowerDownMode) the MCU and radio. Wake up on timer or pin change.
|
* 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 interrupt Interrupt that should trigger the wakeup
|
||||||
* @param mode RISING, FALLING, CHANGE
|
* @param mode RISING, FALLING, CHANGE
|
||||||
* @param ms Number of milliseconds to sleep or 0 to sleep forever
|
* @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);
|
int8_t 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 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.
|
* 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 interrupt2 Second interrupt that should trigger the wakeup
|
||||||
* @param mode2 Mode for second interrupt (RISING, FALLING, CHANGE)
|
* @param mode2 Mode for second interrupt (RISING, FALLING, CHANGE)
|
||||||
* @param ms Number of milliseconds to sleep or 0 to sleep forever
|
* @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 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);
|
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