Corretta gestione Heartbeat
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE QtCreatorProject>
|
<!DOCTYPE QtCreatorProject>
|
||||||
<!-- Written by QtCreator 4.8.2, 2019-11-04T15:40:48. -->
|
<!-- Written by QtCreator 4.8.2, 2019-11-05T16:47:40. -->
|
||||||
<qtcreator>
|
<qtcreator>
|
||||||
<data>
|
<data>
|
||||||
<variable>EnvironmentId</variable>
|
<variable>EnvironmentId</variable>
|
||||||
|
|||||||
@@ -31,17 +31,20 @@ void mqtt_callback::message_arrived(mqtt::const_message_ptr msg) {
|
|||||||
intMsg[mem_->comSettings.TS]);
|
intMsg[mem_->comSettings.TS]);
|
||||||
if (!intMsg[mem_->comSettings.NODE].compare(mem_->comSettings.nodeNames["relay"])){
|
if (!intMsg[mem_->comSettings.NODE].compare(mem_->comSettings.nodeNames["relay"])){
|
||||||
mem_->commonStatus.relayRunning = true;
|
mem_->commonStatus.relayRunning = true;
|
||||||
mem_->commonStatus.relayLast = fabs(mem_->commonStatus.relayLast - std::stod(intMsg[mem_->comSettings.TS]));
|
mem_->commonStatus.relayLast = std::stod(intMsg[mem_->comSettings.TS]);
|
||||||
|
log_->trace("HB RELAY time: [{}]", mem_->commonStatus.relayLast);
|
||||||
} else if (!intMsg[mem_->comSettings.NODE].compare(mem_->comSettings.nodeNames["follower"])) {
|
} else if (!intMsg[mem_->comSettings.NODE].compare(mem_->comSettings.nodeNames["follower"])) {
|
||||||
mem_->commonStatus.followerRunning = true;
|
mem_->commonStatus.followerRunning = true;
|
||||||
mem_->commonStatus.followerLast = fabs(mem_->commonStatus.followerLast - std::stod(intMsg[mem_->comSettings.TS]));
|
mem_->commonStatus.followerLast = std::stod(intMsg[mem_->comSettings.TS]);
|
||||||
|
log_->trace("HB FOLLOWER time: [{}]", mem_->commonStatus.followerLast);
|
||||||
} else if (!intMsg[mem_->comSettings.NODE].compare(mem_->comSettings.nodeNames["recorder"])) {
|
} else if (!intMsg[mem_->comSettings.NODE].compare(mem_->comSettings.nodeNames["recorder"])) {
|
||||||
mem_->commonStatus.recorderRunning = true;
|
mem_->commonStatus.recorderRunning = true;
|
||||||
mem_->commonStatus.recorderLast = fabs(mem_->commonStatus.recorderLast - std::stod(intMsg[mem_->comSettings.TS]));
|
mem_->commonStatus.recorderLast = std::stod(intMsg[mem_->comSettings.TS]);
|
||||||
|
log_->trace("HB RECORDER time: [{}]", mem_->commonStatus.recorderLast);
|
||||||
} else {
|
} else {
|
||||||
log_->error("Node {} unknown", intMsg[mem_->comSettings.NODE].c_str());
|
log_->error("Node {} unknown", intMsg[mem_->comSettings.NODE].c_str());
|
||||||
}
|
}
|
||||||
emit mem_->commonStatusChange();
|
//emit mem_->commonStatusChange();
|
||||||
}
|
}
|
||||||
} else if (msg->get_topic() == mem_->comSettings.subMap.find("state")->second){
|
} else if (msg->get_topic() == mem_->comSettings.subMap.find("state")->second){
|
||||||
log_->debug("MQTT: State Message: {}", msg->get_payload().c_str());
|
log_->debug("MQTT: State Message: {}", msg->get_payload().c_str());
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ RoboGlue_COM::RoboGlue_COM (RoboGlue_SHARED *mem): m(mem) {
|
|||||||
liblog = spdlog::stdout_logger_mt("URcom_liblog");
|
liblog = spdlog::stdout_logger_mt("URcom_liblog");
|
||||||
modlog = spdlog::stdout_logger_mt("RoboGlue_comlog");
|
modlog = spdlog::stdout_logger_mt("RoboGlue_comlog");
|
||||||
liblog->set_level(spdlog::level::warn);
|
liblog->set_level(spdlog::level::warn);
|
||||||
modlog->set_level(spdlog::level::info);
|
modlog->set_level(spdlog::level::trace);
|
||||||
|
|
||||||
///////// INITIALIZE TCP SERVER ///////////
|
///////// INITIALIZE TCP SERVER ///////////
|
||||||
server = new QTcpServer(this);
|
server = new QTcpServer(this);
|
||||||
|
|||||||
@@ -92,13 +92,13 @@ void RoboGlue_GUI::disableLockAxes(){
|
|||||||
void RoboGlue_GUI::on_commonStatusChange() {
|
void RoboGlue_GUI::on_commonStatusChange() {
|
||||||
modlog->trace("on_commonStatusChange Received");
|
modlog->trace("on_commonStatusChange Received");
|
||||||
// TODO: aggiungere e interpretare le flag per capire se i nodi ros sono tutti vivi dall'heartbeat
|
// TODO: aggiungere e interpretare le flag per capire se i nodi ros sono tutti vivi dall'heartbeat
|
||||||
this->ui->lbl_relay->setText(QString().fromStdString(std::to_string(m->commonStatus.relayLast)));
|
this->ui->lbl_relay->setText(QString().fromStdString(std::to_string(m->commonStatus.relayTime)));
|
||||||
this->ui->lbl_follower->setText(QString().fromStdString(std::to_string(m->commonStatus.followerLast)));
|
this->ui->lbl_follower->setText(QString().fromStdString(std::to_string(m->commonStatus.followerTime)));
|
||||||
this->ui->lbl_recorder->setText(QString().fromStdString(std::to_string(m->commonStatus.recorderLast)));
|
this->ui->lbl_recorder->setText(QString().fromStdString(std::to_string(m->commonStatus.recorderTime)));
|
||||||
|
|
||||||
if(m->commonStatus.relayLast > m->comSettings.deadTime ||
|
if(m->commonStatus.relayTime > m->comSettings.deadTime ||
|
||||||
m->commonStatus.followerLast > m->comSettings.deadTime ||
|
m->commonStatus.followerTime > m->comSettings.deadTime ||
|
||||||
m->commonStatus.recorderLast > m->comSettings.deadTime) {
|
m->commonStatus.recorderTime > m->comSettings.deadTime) {
|
||||||
this->ui->lbl_relay->setStyleSheet("QLabel { background-color : red; color : white; }");
|
this->ui->lbl_relay->setStyleSheet("QLabel { background-color : red; color : white; }");
|
||||||
this->ui->lbl_follower->setStyleSheet("QLabel { background-color : red; color : white; }");
|
this->ui->lbl_follower->setStyleSheet("QLabel { background-color : red; color : white; }");
|
||||||
this->ui->lbl_recorder->setStyleSheet("QLabel { background-color : red; color : white; }");
|
this->ui->lbl_recorder->setStyleSheet("QLabel { background-color : red; color : white; }");
|
||||||
|
|||||||
@@ -15,6 +15,10 @@ RoboGlue_SHARED::~RoboGlue_SHARED(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void RoboGlue_SHARED::on_statusTimer(void){
|
void RoboGlue_SHARED::on_statusTimer(void){
|
||||||
|
double curTime = static_cast<double>(std::time(NULL));
|
||||||
|
commonStatus.relayTime = fabs(commonStatus.relayLast - curTime);
|
||||||
|
commonStatus.followerTime = fabs(commonStatus.followerLast - curTime);
|
||||||
|
commonStatus.recorderTime = fabs(commonStatus.recorderLast - curTime);
|
||||||
emit this->commonStatusChange();
|
emit this->commonStatusChange();
|
||||||
}
|
}
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -59,6 +59,9 @@ public:
|
|||||||
double relayLast = 0.0;
|
double relayLast = 0.0;
|
||||||
double followerLast = 0.0;
|
double followerLast = 0.0;
|
||||||
double recorderLast = 0.0;
|
double recorderLast = 0.0;
|
||||||
|
double relayTime = 0.0;
|
||||||
|
double followerTime = 0.0;
|
||||||
|
double recorderTime = 0.0;
|
||||||
} commonStatus;
|
} commonStatus;
|
||||||
|
|
||||||
/////////// PERMANENT SETTINGS VARIABLES /////////
|
/////////// PERMANENT SETTINGS VARIABLES /////////
|
||||||
|
|||||||
Reference in New Issue
Block a user