From 64a4b9b122e3aa8823516073003fd9407efd3760 Mon Sep 17 00:00:00 2001 From: Emanuele Date: Tue, 5 Nov 2019 16:15:53 +0100 Subject: [PATCH] Corretto calcolo del tempo heartbeat --- com/mqtt_callback.cpp | 6 +++--- shared/roboglue_shared.cpp | 12 ++++++++++++ shared/roboglue_shared.h | 6 ++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/com/mqtt_callback.cpp b/com/mqtt_callback.cpp index e389dc3..7a20cab 100644 --- a/com/mqtt_callback.cpp +++ b/com/mqtt_callback.cpp @@ -31,13 +31,13 @@ void mqtt_callback::message_arrived(mqtt::const_message_ptr msg) { intMsg[mem_->comSettings.TS]); if (!intMsg[mem_->comSettings.NODE].compare(mem_->comSettings.nodeNames["relay"])){ mem_->commonStatus.relayRunning = true; - mem_->commonStatus.relayLast = std::stod(intMsg[mem_->comSettings.TS]); + mem_->commonStatus.relayLast = fabs(mem_->commonStatus.relayLast - std::stod(intMsg[mem_->comSettings.TS])); } else if (!intMsg[mem_->comSettings.NODE].compare(mem_->comSettings.nodeNames["follower"])) { mem_->commonStatus.followerRunning = true; - mem_->commonStatus.followerLast = std::stod(intMsg[mem_->comSettings.TS]); + mem_->commonStatus.followerLast = fabs(mem_->commonStatus.followerLast - std::stod(intMsg[mem_->comSettings.TS])); } else if (!intMsg[mem_->comSettings.NODE].compare(mem_->comSettings.nodeNames["recorder"])) { mem_->commonStatus.recorderRunning = true; - mem_->commonStatus.recorderLast = std::stod(intMsg[mem_->comSettings.TS]); + mem_->commonStatus.recorderLast = fabs(mem_->commonStatus.recorderLast - std::stod(intMsg[mem_->comSettings.TS])); } else { log_->error("Node {} unknown", intMsg[mem_->comSettings.NODE].c_str()); } diff --git a/shared/roboglue_shared.cpp b/shared/roboglue_shared.cpp index 11240fb..b0e6a10 100644 --- a/shared/roboglue_shared.cpp +++ b/shared/roboglue_shared.cpp @@ -4,6 +4,18 @@ RoboGlue_SHARED::RoboGlue_SHARED(QSettings *set){ settings=set; //FIXME: inserire la lettura di quesste informazioni da un file robotVariables.insert(std::pair("RDY",1)); + statusTimer = new QTimer(this); + connect(statusTimer, SIGNAL(timeout()), this, SLOT(on_statusTimer())); + statusTimer->start(static_cast(comSettings.deadTime*1000)); +} + +RoboGlue_SHARED::~RoboGlue_SHARED(){ + statusTimer->stop(); + delete statusTimer; +} + +void RoboGlue_SHARED::on_statusTimer(void){ + emit this->commonStatusChange(); } //////////////////////////////////////////////////////////////// /////////////////////// RESTORE FUNCTIONS ///////////////////// diff --git a/shared/roboglue_shared.h b/shared/roboglue_shared.h index 74b7098..9ca7649 100644 --- a/shared/roboglue_shared.h +++ b/shared/roboglue_shared.h @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -40,7 +41,9 @@ class RoboGlue_SHARED : public QObject{ public: RoboGlue_SHARED(QSettings *set); + virtual ~RoboGlue_SHARED(); QMutex mutex; + QTimer* statusTimer; //////////// COMMON MODULES STATUS /////////////// struct { @@ -130,6 +133,9 @@ public: signals: void commonStatusChange(void); + +private slots: + void on_statusTimer(void); }; #endif // ROBOGLUE_SHARED_H