From a9baff8c578a5dc568a9770a64b441eb241efdfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BCbbe=20Onken?= Date: Thu, 16 Mar 2023 21:04:57 +0100 Subject: [PATCH] Add a notification callback to sensor nodes to be called when data has been sent. --- src/SensorNode.cpp | 4 ++++ src/SensorNode.hpp | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/SensorNode.cpp b/src/SensorNode.cpp index b733c24..c5c43da 100644 --- a/src/SensorNode.cpp +++ b/src/SensorNode.cpp @@ -80,6 +80,10 @@ void SensorNode::loop() { send(); _lastSendTime = now; + if (_onDataSent != NULL) + { + _onDataSent(); + } } } } diff --git a/src/SensorNode.hpp b/src/SensorNode.hpp index 320c506..80262f7 100644 --- a/src/SensorNode.hpp +++ b/src/SensorNode.hpp @@ -13,6 +13,9 @@ class SensorNode : public BaseNode { +public: + typedef std::function TOnDataSent; + protected: static const int READ_INTERVAL = 300 * 1000UL; // 300 seconds static const int SEND_INTERVAL = 300 * 1000UL; @@ -26,6 +29,8 @@ class SensorNode : public BaseNode const float cMinHumid = 0.0; const float cMaxHumid = 100.0; + TOnDataSent _onDataSent; + float computeAbsoluteHumidity(float tempCelsius, float percentHumidity); float computeDewpoint(float tempCelsius, float percentHumidity); @@ -42,4 +47,9 @@ class SensorNode : public BaseNode explicit SensorNode(const char *id, const char *name, const char *type, const int readInterval = READ_INTERVAL, const int sendInterval = SEND_INTERVAL); + + void SetOnDataSent(TOnDataSent OnDataSent) + { + _onDataSent = OnDataSent; + } };