Merge pull request #271 from mysensors/smart-sleep

Smart sleep
This commit is contained in:
Henrik Ekblad
2015-11-28 23:30:11 +01:00
5 changed files with 38 additions and 11 deletions
+7
View File
@@ -74,6 +74,13 @@
// Enables repeater functionality (relays messages from other nodes)
// #define MY_REPEATER_FEATURE
// The wait period before going to sleep when using smartSleep-functions
// This period has to be long enough for controller to be able to send out
// potential buffered messages.
#ifndef MY_SMART_SLEEP_WAIT_DURATION
#define MY_SMART_SLEEP_WAIT_DURATION 500
#endif
/**********************************
* Over the air firmware updates
***********************************/
+4 -4
View File
@@ -41,7 +41,7 @@
#elif defined(MY_RS485)
#define MY_CAP_RADIO "S"
#else
#define MY_CAP_RADIO "?"
#define MY_CAP_RADIO "-"
#endif
#if defined(MY_GATEWAY_FEATURE)
@@ -59,7 +59,7 @@
#elif defined(ARDUINO_ARCH_AVR)
#define MY_CAP_ARCH "A"
#else
#define MY_CAP_ARCH "?"
#define MY_CAP_ARCH "-"
#endif
#if defined(MY_SIGNING_ATSHA204)
@@ -67,10 +67,10 @@
#elif defined(MY_SIGNING_SOFT)
#define MY_CAP_SIGN "S"
#else
#define MY_CAP_SIGN "?"
#define MY_CAP_SIGN "-"
#endif
#define MY_CAPABILIIES MY_CAP_RESET MY_CAP_OTA_FW MY_CAP_TYPE MY_CAP_ARCH MY_CAP_SIGN
#define MY_CAPABILIIES MY_CAP_RESET MY_CAP_RADIO MY_CAP_OTA_FW MY_CAP_TYPE MY_CAP_ARCH MY_CAP_SIGN
#endif /* MyGatewayTransportEthernet_h */
+19 -1
View File
@@ -334,6 +334,12 @@ void sleep(unsigned long ms) {
#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 (_fwUpdateOngoing) {
@@ -350,6 +356,13 @@ bool sleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
#endif
}
bool smartSleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
wait(MY_SMART_SLEEP_WAIT_DURATION);
bool ret = sleep(interrupt, mode, ms);
sendHeartbeat();
return ret;
}
int8_t sleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode2, unsigned long ms) {
#if defined(MY_OTA_FIRMWARE_FEATURE)
if (_fwUpdateOngoing) {
@@ -366,6 +379,11 @@ int8_t sleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode
#endif
}
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);
sendHeartbeat();
return ret;
}
+3 -4
View File
@@ -23,10 +23,6 @@
#include "Version.h" // Auto generated by bot
#include "MyConfig.h"
#ifdef MY_SIGNING_FEATURE
#include "MySigning.h"
#include "MySigningNone.h"
#endif
#include "MyMessage.h"
#ifdef MY_OTA_FIRMWARE_FEATURE
#include "drivers/SPIFlash/SPIFlash.h"
@@ -184,6 +180,7 @@ void wait(unsigned long ms);
* @param ms Number of milliseconds to sleep.
*/
void sleep(unsigned long ms);
void smartSleep(unsigned long ms);
/**
* Sleep (PowerDownMode) the MCU and radio. Wake up on timer or pin change.
@@ -195,6 +192,7 @@ void sleep(unsigned long ms);
* @return true if wake up was triggered by pin change and false means timer woke it up.
*/
bool sleep(uint8_t interrupt, uint8_t mode, unsigned long ms=0);
bool 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.
@@ -208,6 +206,7 @@ bool sleep(uint8_t interrupt, uint8_t mode, unsigned long ms=0);
* @return Interrupt number wake up was triggered by pin change and negative if timer woke it up.
*/
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);
/****** PRIVATE ********/
+5 -2
View File
@@ -7,7 +7,6 @@ MySensor KEYWORD1
#######################################
# Methods and Functions (KEYWORD2)
#######################################
setIncomingCallback KEYWORD2
present KEYWORD2
send KEYWORD2
sendSketchInfo KEYWORD2
@@ -24,6 +23,8 @@ receiveTime KEYWORD2
loop KEYWORD2
setup KEYWORD2
presentation KEYWORD2
sleep KEYWORD2
smartSleep KEYWORD2
######################################
# Constants (LITERAL1)
@@ -106,4 +107,6 @@ MY_MQTT_PUBLISH_TOPIC_PREFIX LITERAL1
MY_MQTT_CLIENT_ID LITERAL1
MY_GATEWAY_MQTT_CLIENT LITERAL1
MY_DISABLE_REMOTE_RESET LITERAL1
MY_RS485_DE_PIN LITERAL1
MY_RS485_DE_PIN LITERAL1
MY_SIGNING_REQUEST_SIGNATURES LITERAL1
MY_SMART_SLEEP_WAIT_DURATION LITERAL1