From f3bd9e9b305986e229ec34b75d40c8c02165ae54 Mon Sep 17 00:00:00 2001 From: Henrik Ekblad Date: Thu, 26 Jun 2014 00:26:45 +0200 Subject: [PATCH] Change default transfer speed to 250kbps. Set default value for config. Return wakeup trigger after sleep. --- libraries/MySensors/MyConfig.h | 2 +- libraries/MySensors/MySensor.cpp | 11 +++++++++-- libraries/MySensors/MySensor.h | 3 ++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/libraries/MySensors/MyConfig.h b/libraries/MySensors/MyConfig.h index 474b705..cbbc5e3 100644 --- a/libraries/MySensors/MyConfig.h +++ b/libraries/MySensors/MyConfig.h @@ -5,7 +5,7 @@ * Configure Sensor Network */ #define RF24_CHANNEL 76 //RF channel for the sensor net, 0-127 -#define RF24_DATARATE RF24_1MBPS //RF24_250KBPS for 250kbs, RF24_1MBPS for 1Mbps, or RF24_2MBPS for 2Mbps +#define RF24_DATARATE RF24_250KBPS //RF24_250KBPS for 250kbs, RF24_1MBPS for 1Mbps, or RF24_2MBPS for 2Mbps #define RF24_PA_LEVEL RF24_PA_MAX //Sensor PA Level == RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBM, and RF24_PA_HIGH=0dBm #define RF24_PA_LEVEL_GW RF24_PA_LOW //Gateway PA Level, defaults to Sensor net PA Level. Tune here if using an amplified nRF2401+ in your gateway. diff --git a/libraries/MySensors/MySensor.cpp b/libraries/MySensors/MySensor.cpp index 2bc4091..ad4e055 100644 --- a/libraries/MySensors/MySensor.cpp +++ b/libraries/MySensors/MySensor.cpp @@ -46,7 +46,10 @@ void MySensor::begin(void (*_msgCallback)(const MyMessage &), uint8_t _nodeId, b eeprom_read_block((void*)&nc, (void*)EEPROM_NODE_ID_ADDRESS, sizeof(NodeConfig)); // Read latest received controller configuration from EEPROM eeprom_read_block((void*)&cc, (void*)EEPROM_LOCAL_CONFIG_ADDRESS, sizeof(ControllerConfig)); - + if (cc.isMetric == 0xff) { + // Eeprom empty, set default to metric + cc.isMetric = 0x01; + } if (_nodeId != AUTO) { // Set static id @@ -541,18 +544,22 @@ void MySensor::sleep(int ms) { internalSleep(ms); } -void MySensor::sleep(int interrupt, int mode, int ms) { +bool MySensor::sleep(int interrupt, int mode, int ms) { // Let serial prints finish (debug, log etc) + bool pinTriggeredWakeup = true; Serial.flush(); RF24::powerDown(); attachInterrupt(interrupt, wakeUp, mode); //Interrupt on pin 3 for any change in solar power if (ms>0) { continueTimer = true; sleep(ms); + pinTriggeredWakeup = !continueTimer; } else { + Serial.flush(); LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF); } detachInterrupt(interrupt); + return pinTriggeredWakeup; } diff --git a/libraries/MySensors/MySensor.h b/libraries/MySensors/MySensor.h index eaad9b0..b141837 100644 --- a/libraries/MySensors/MySensor.h +++ b/libraries/MySensors/MySensor.h @@ -211,8 +211,9 @@ class MySensor : public RF24 * @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. */ - void sleep(int interrupt, int mode, int ms=0); + bool sleep(int interrupt, int mode, int ms=0); /** * getInternalTemp