diff --git a/NodeManagerTemplate/NodeManager.cpp b/NodeManagerTemplate/NodeManager.cpp index 05a1df296a779088a60a8e03de68fd5eea9161d5..56d4e6a50f5b0a1e5515352832eb47e5d1cc3bca 100644 --- a/NodeManagerTemplate/NodeManager.cpp +++ b/NodeManagerTemplate/NodeManager.cpp @@ -19,7 +19,7 @@ const char* WAKEUP = "WAKEUP"; */ // set the vcc and ground pin the sensor is connected to -void PowerManager::setPowerPins(int ground_pin, int vcc_pin, long wait = 10) { +void PowerManager::setPowerPins(int ground_pin, int vcc_pin, long wait) { #if DEBUG == 1 Serial.print("POWER G="); Serial.print(ground_pin); @@ -129,7 +129,7 @@ void Sensor::setFloatPrecision(int value) { _float_precision = value; } #if POWER_MANAGER == 1 - void Sensor::setPowerPins(int ground_pin, int vcc_pin, long wait = 0) { + void Sensor::setPowerPins(int ground_pin, int vcc_pin, long wait) { _powerManager.setPowerPins(ground_pin, vcc_pin, wait); } void Sensor::setAutoPowerPins(bool value) { @@ -928,7 +928,7 @@ void NodeManager::setRetries(int value) { _sleep_interrupt_pin = value; } #endif -void NodeManager::setInterrupt(int pin, int mode, int pull = -1) { +void NodeManager::setInterrupt(int pin, int mode, int pull) { if (pin == INTERRUPT_PIN_1) { _interrupt_1_mode = mode; _interrupt_1_pull = pull; @@ -939,7 +939,7 @@ void NodeManager::setInterrupt(int pin, int mode, int pull = -1) { } } #if POWER_MANAGER == 1 - void NodeManager::setPowerPins(int ground_pin, int vcc_pin, long wait = 10) { + void NodeManager::setPowerPins(int ground_pin, int vcc_pin, long wait) { _powerManager.setPowerPins(ground_pin, vcc_pin, wait); } void NodeManager::setAutoPowerPins(bool value) { @@ -957,7 +957,7 @@ void NodeManager::setSleepBetweenSend(int value) { } // register a sensor to this manager -int NodeManager::registerSensor(int sensor_type, int pin = -1, int child_id = -1) { +int NodeManager::registerSensor(int sensor_type, int pin, int child_id) { #if DEBUG == 1 if (_startup) { Serial.print("NodeManager v"); @@ -968,7 +968,7 @@ int NodeManager::registerSensor(int sensor_type, int pin = -1, int child_id = -1 // get a child_id if not provided by the user if (child_id < 0) child_id = _getAvailableChildId(); // based on the given sensor type instantiate the appropriate class - if (sensor_type == 0) return; + if (sensor_type == 0) return -1; #if MODULE_ANALOG_INPUT == 1 else if (sensor_type == SENSOR_ANALOG_INPUT) return registerSensor(new SensorAnalogInput(child_id, pin)); else if (sensor_type == SENSOR_LDR) return registerSensor(new SensorLDR(child_id, pin)); @@ -988,19 +988,19 @@ int NodeManager::registerSensor(int sensor_type, int pin = -1, int child_id = -1 int dht_type = sensor_type == SENSOR_DHT11 ? DHT11 : DHT22; registerSensor(new SensorDHT(child_id,pin,dht,0,dht_type)); child_id = _getAvailableChildId(); - registerSensor(new SensorDHT(child_id,pin,dht,1,dht_type)); + return registerSensor(new SensorDHT(child_id,pin,dht,1,dht_type)); } #endif #if MODULE_SHT21 == 1 else if (sensor_type == SENSOR_SHT21) { registerSensor(new SensorSHT21(child_id,0)); child_id = _getAvailableChildId(); - registerSensor(new SensorSHT21(child_id,1)); + return registerSensor(new SensorSHT21(child_id,1)); } else if (sensor_type == SENSOR_HTU21D) { registerSensor(new SensorHTU21D(child_id,0)); child_id = _getAvailableChildId(); - registerSensor(new SensorHTU21D(child_id,1)); + return registerSensor(new SensorHTU21D(child_id,1)); } #endif #if MODULE_SWITCH == 1 @@ -1024,11 +1024,13 @@ int NodeManager::registerSensor(int sensor_type, int pin = -1, int child_id = -1 DallasTemperature* sensors = new DallasTemperature(oneWire); // initialize the sensors sensors->begin(); + int index = 0; // register a new child for each sensor on the bus for(int i = 0; i < sensors->getDeviceCount(); i++) { if (i > 0) child_id = _getAvailableChildId(); - registerSensor(new SensorDs18b20(child_id,pin,sensors,i)); + index = registerSensor(new SensorDs18b20(child_id,pin,sensors,i)); } + return index; } #endif #if MODULE_BH1750 == 1 @@ -1044,7 +1046,7 @@ int NodeManager::registerSensor(int sensor_type, int pin = -1, int child_id = -1 registerSensor(new SensorMLX90614(child_id,mlx,0)); Serial.println("3"); child_id = _getAvailableChildId(); - registerSensor(new SensorMLX90614(child_id,mlx,1)); + return registerSensor(new SensorMLX90614(child_id,mlx,1)); } #endif else { diff --git a/NodeManagerTemplate/NodeManager.h b/NodeManagerTemplate/NodeManager.h index bcdb2847807eeae96d5c79ccaa0b5093f1e4da5a..b259b08e0f063ce0ea1ce251a6a78168625e8dfc 100644 --- a/NodeManagerTemplate/NodeManager.h +++ b/NodeManagerTemplate/NodeManager.h @@ -230,7 +230,7 @@ class PowerManager { public: PowerManager() {}; // to save battery the sensor can be optionally connected to two pins which will act as vcc and ground and activated on demand - void setPowerPins(int ground_pin, int vcc_pin, long wait = 10); + void setPowerPins(int ground_pin, int vcc_pin, long wait = 50); void powerOn(); void powerOff(); private: @@ -277,7 +277,7 @@ class Sensor { void setSleepBetweenSend(int value); #if POWER_MANAGER == 1 // to save battery the sensor can be optionally connected to two pins which will act as vcc and ground and activated on demand - void setPowerPins(int ground_pin, int vcc_pin, long wait = 0); + void setPowerPins(int ground_pin, int vcc_pin, long wait = 50); // if enabled the pins will be automatically powered on while awake and off during sleeping (default: true) void setAutoPowerPins(bool value); // manually turn the power on @@ -614,7 +614,7 @@ class NodeManager { Sensor* get(int sensor_index); #if POWER_MANAGER == 1 // to save battery the sensor can be optionally connected to two pins which will act as vcc and ground and activated on demand - void setPowerPins(int ground_pin, int vcc_pin, long wait = 10); + void setPowerPins(int ground_pin, int vcc_pin, long wait = 50); // if enabled the pins will be automatically powered on while awake and off during sleeping (default: true) void setAutoPowerPins(bool value); // manually turn the power on