diff --git a/NodeManager.cpp b/NodeManager.cpp index 7336b5702b24819a86d7ed4dcb5b9324ef5c6399..06ead41a0059aefcc4f67ef98c6e1e860e70948c 100644 --- a/NodeManager.cpp +++ b/NodeManager.cpp @@ -2174,12 +2174,23 @@ void SensorMCP9808::onProcess(Request & request) { * SensorMQ */ #if MODULE_MQ == 1 + +static float SensorMQ::_default_LPGCurve[3] = {2.3,0.21,-0.47}; +static float SensorMQ::_default_COCurve[3] = {2.3,0.72,-0.34}; +static float SensorMQ::_default_SmokeCurve[3] = {2.3,0.53,-0.44}; + SensorMQ::SensorMQ(NodeManager* node_manager, int child_id, int pin): Sensor(node_manager,child_id,pin) { setPresentation(S_AIR_QUALITY); setType(V_LEVEL); + _LPGCurve = SensorMQ::_default_LPGCurve; + _COCurve = SensorMQ::_default_COCurve; + _SmokeCurve = SensorMQ::_default_SmokeCurve; } //setter/getter +void SensorMQ::setTargetGas(int value) { + _target_gas = value; +} void SensorMQ::setRlValue(float value) { _rl_value = value; } @@ -2202,19 +2213,13 @@ void SensorMQ::setReadSampleInterval(int value) { _read_sample_interval = value; } void SensorMQ::setLPGCurve(float *value) { - _LPGCurve[0] = value[0]; - _LPGCurve[2] = value[1]; - _LPGCurve[2] = value[2]; + _LPGCurve = value; } void SensorMQ::setCOCurve(float *value) { - _COCurve[0] = value[0]; - _COCurve[2] = value[1]; - _COCurve[2] = value[2]; + _COCurve = value; } void SensorMQ::setSmokeCurve(float *value) { - _SmokeCurve[0] = value[0]; - _SmokeCurve[2] = value[1]; - _SmokeCurve[2] = value[2]; + _SmokeCurve = value; } // what to do during before @@ -2570,7 +2575,7 @@ int NodeManager::registerSensor(int sensor_type, int pin, int child_id) { // 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 -1; + if (sensor_type < 0) return -1; #if MODULE_ANALOG_INPUT == 1 else if (sensor_type == SENSOR_ANALOG_INPUT) return registerSensor(new SensorAnalogInput(this,child_id, pin)); else if (sensor_type == SENSOR_LDR) return registerSensor(new SensorLDR(this,child_id, pin)); diff --git a/NodeManager.h b/NodeManager.h index 5123a117cf335052c91492dc6f509926d5f4d5a7..7e752f69a0a138f13718bc1667742346025d8b3f 100644 --- a/NodeManager.h +++ b/NodeManager.h @@ -1116,17 +1116,20 @@ class SensorMQ: public Sensor { int _read_sample_interval = 50; int _read_sample_times = 5; float _ro = 10000.0; - float _LPGCurve[3] = {2.3,0.21,-0.47}; - float _COCurve[3] = {2.3,0.72,-0.34}; - float _SmokeCurve[3] = {2.3,0.53,-0.44}; + static float _default_LPGCurve[3]; + static float _default_COCurve[3]; + static float _default_SmokeCurve[3]; + float *_LPGCurve; + float *_COCurve; + float *_SmokeCurve; float _MQResistanceCalculation(int raw_adc); float _MQCalibration(); float _MQRead(); int _MQGetGasPercentage(float rs_ro_ratio, int gas_id); int _MQGetPercentage(float rs_ro_ratio, float *pcurve); - int _gas_lpg = 0; - int _gas_co = 1; - int _gas_smoke = 2; + const static int _gas_lpg = 0; + const static int _gas_co = 1; + const static int _gas_smoke = 2; int _target_gas = _gas_co; }; #endif