diff --git a/src/src/PluginStructs/P163_data_struct.cpp b/src/src/PluginStructs/P163_data_struct.cpp index 47fab5444..6d52aa974 100644 --- a/src/src/PluginStructs/P163_data_struct.cpp +++ b/src/src/PluginStructs/P163_data_struct.cpp @@ -25,6 +25,8 @@ P163_data_struct::~P163_data_struct() { * init *****************************************************/ bool P163_data_struct::init(struct EventStruct *event) { + initialized = false; + delete sensor; // In case init() is called again sensor = new (std::nothrow) CG_RadSens(RS_DEFAULT_I2C_ADDRESS); if ((nullptr != sensor) && sensor->init()) { @@ -60,6 +62,8 @@ bool P163_data_struct::plugin_read(struct EventStruct *event) { bool P163_data_struct::setOutputValues(struct EventStruct *event) { bool result = false; + if (nullptr == sensor) { return result; } + const uint32_t count = _readIncrement ? sensor->getNumberOfPulses() : sensor->getNumberOfNewPulses(); const uint32_t incCount = sensor->getNumberOfPulses(); const float iDynamic = sensor->getRadIntensyDynamic(); diff --git a/src/src/PluginStructs/P163_data_struct.h b/src/src/PluginStructs/P163_data_struct.h index a8d0db22e..6ace8694d 100644 --- a/src/src/PluginStructs/P163_data_struct.h +++ b/src/src/PluginStructs/P163_data_struct.h @@ -39,7 +39,7 @@ public: bool plugin_write(struct EventStruct *event, String & string); bool isInitialized() const { - return initialized; + return initialized && (nullptr != sensor); } private: