Fixing smartsleep, define return value for sleep()

This commit is contained in:
tekka007
2015-12-15 16:30:02 +01:00
parent a91be50ab4
commit cb3c55ae3b
6 changed files with 62 additions and 61 deletions
+1 -1
View File
@@ -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
+3 -2
View File
@@ -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) {
+6 -5
View File
@@ -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
+4 -3
View File
@@ -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
+41 -44
View File
@@ -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;
}
+7 -6
View File
@@ -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);