diff --git a/src/shared/Modules/ModulesList.cpp b/src/shared/Modules/ModulesList.cpp index 1ba5ca4a1d5d440a75f1e6275f7dca4fb884feed..f5332061f37fe6b5a20d27baaca746f50b3231e7 100644 --- a/src/shared/Modules/ModulesList.cpp +++ b/src/shared/Modules/ModulesList.cpp @@ -33,7 +33,6 @@ #include <Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.h> #include <Modules/PayloadStateViewer/PayloadStateViewer.h> #include <Modules/RefuelingButton/RefuelingButton.h> -#include <Modules/RefuelingButton/RefuelingButton.h> #include <Modules/RefuelingVisualizer/RefuelingVisualizer.h> #include <Modules/Splitter/Splitter.h> #include <Modules/Tabs/TabsModule.h> @@ -163,9 +162,8 @@ void ModulesList::createModuleList() tabs.addModuleSourceFiles("Modules/RefuelingVisualizer/"); modulesInfo.append(refuelingVisualizer); - ModuleInfo refuelingButton(ModuleId::REFUELING_BUTTON, "RefuelingButton", - ModuleCategory::UTILITY); + ModuleCategory::UTILITY); refuelingButton.setFactory([]() { return new RefuelingButton(); }); tabs.addModuleSourceFiles("Modules/RefuelingButton/"); addModuleInfo(refuelingButton); diff --git a/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.cpp b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.cpp index b7f2c519c5dd85e92c1c8f77d951bb6e97b5a8ba..30dad01d2f6ede79ff5fb08ed4811d918d8de487 100644 --- a/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.cpp +++ b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.cpp @@ -25,7 +25,17 @@ RefuelingVisualizer::RefuelingVisualizer(QWidget* parent) : DefaultModule(parent) { setupUi(); - defaultContextMenuSetup(); + // customContextMenuActionSetup(); + + getCore()->getMessageBroker()->subscribe( + Filter::fromString("Mav/GSE_TM"), this, + [this](const Message& message, const Filter& filter) + { onMsgReceived(message, filter); }); + + getCore()->getMessageBroker()->subscribe( + Filter::fromString("Mav/MOTOR_TM"), this, + [this](const Message& message, const Filter& filter) + { onMsgReceived(message, filter); }); } RefuelingVisualizer::~RefuelingVisualizer() @@ -39,8 +49,6 @@ XmlObject RefuelingVisualizer::toXmlObject() { XmlObject obj(getName(ModuleId::REFUELING_VISUALIZER)); - obj.addAttribute("filter", filter.toString()); - return obj; } @@ -48,8 +56,7 @@ void RefuelingVisualizer::fromXmlObject(const XmlObject& xmlObject) { if (xmlObject.getObjectName() == getName(ModuleId::REFUELING_VISUALIZER)) { - auto filter = Filter::fromString(xmlObject.getAttribute("filter")); - setFilter(filter); + // nothing to do } } @@ -164,28 +171,28 @@ void RefuelingVisualizer::setupUi() // Data loadcellTankDataLabel = new QLabel; - loadcellTankDataLabel->setText((QString) "0 KG"); + loadcellTankDataLabel->setText((QString) "0.000 KG"); loadcellTankDataLabel->setAlignment(Qt::AlignRight); loadcellTankDataLabel->setContentsMargins(4, 4, 4, 4); loadcellTankDataLabel->setStyleSheet(dataStyle); outerLayout->addWidget(loadcellTankDataLabel, 1233, 2350, 34, 1047); tankTemperatureDataLabel = new QLabel; - tankTemperatureDataLabel->setText((QString) "0 °C"); + tankTemperatureDataLabel->setText((QString) "0.000 °C"); tankTemperatureDataLabel->setAlignment(Qt::AlignRight); tankTemperatureDataLabel->setContentsMargins(4, 4, 4, 4); tankTemperatureDataLabel->setStyleSheet(dataStyle); outerLayout->addWidget(tankTemperatureDataLabel, 1273, 2350, 34, 1047); topTankPressureDataLabel = new QLabel; - topTankPressureDataLabel->setText((QString) "0 bar"); + topTankPressureDataLabel->setText((QString) "0.000 bar"); topTankPressureDataLabel->setAlignment(Qt::AlignRight); topTankPressureDataLabel->setContentsMargins(4, 4, 4, 4); topTankPressureDataLabel->setStyleSheet(dataStyle); outerLayout->addWidget(topTankPressureDataLabel, 1313, 2350, 34, 1047); bottomTankPressureDataLabel = new QLabel; - bottomTankPressureDataLabel->setText((QString) "0 bar"); + bottomTankPressureDataLabel->setText((QString) "0.000 bar"); bottomTankPressureDataLabel->setAlignment(Qt::AlignRight); bottomTankPressureDataLabel->setContentsMargins(4, 4, 4, 4); bottomTankPressureDataLabel->setStyleSheet(dataStyle); @@ -224,14 +231,14 @@ void RefuelingVisualizer::setupUi() // Data loadcellVesselDataLabel = new QLabel; - loadcellVesselDataLabel->setText((QString) "0 KG"); + loadcellVesselDataLabel->setText((QString) "0.000 KG"); loadcellVesselDataLabel->setAlignment(Qt::AlignRight); loadcellVesselDataLabel->setContentsMargins(4, 4, 4, 4); loadcellVesselDataLabel->setStyleSheet(dataStyle); outerLayout->addWidget(loadcellVesselDataLabel, 553, 3240, 34, 1047); vesselPressureDataLabel = new QLabel; - vesselPressureDataLabel->setText((QString) "0 bar"); + vesselPressureDataLabel->setText((QString) "0.000 bar"); vesselPressureDataLabel->setAlignment(Qt::AlignRight); vesselPressureDataLabel->setContentsMargins(4, 4, 4, 4); vesselPressureDataLabel->setStyleSheet(dataStyle); @@ -277,28 +284,28 @@ void RefuelingVisualizer::setupUi() // Data cartTimestampDataLabel = new QLabel; - cartTimestampDataLabel->setText((QString) "0 s"); + cartTimestampDataLabel->setText((QString) "0.000 s"); cartTimestampDataLabel->setAlignment(Qt::AlignRight); cartTimestampDataLabel->setContentsMargins(4, 4, 4, 4); cartTimestampDataLabel->setStyleSheet(dataStyle); outerLayout->addWidget(cartTimestampDataLabel, 2550, 2940, 34, 1047); cartFillingPressureDataLabel = new QLabel; - cartFillingPressureDataLabel->setText((QString) "0 bar"); + cartFillingPressureDataLabel->setText((QString) "0.000 bar"); cartFillingPressureDataLabel->setAlignment(Qt::AlignRight); cartFillingPressureDataLabel->setContentsMargins(4, 4, 4, 4); cartFillingPressureDataLabel->setStyleSheet(dataStyle); outerLayout->addWidget(cartFillingPressureDataLabel, 2590, 2940, 34, 1047); cartBatteryDataLabel = new QLabel; - cartBatteryDataLabel->setText((QString) "0 %"); + cartBatteryDataLabel->setText((QString) "0.000 %"); cartBatteryDataLabel->setAlignment(Qt::AlignRight); cartBatteryDataLabel->setContentsMargins(4, 4, 4, 4); cartBatteryDataLabel->setStyleSheet(dataStyle); outerLayout->addWidget(cartBatteryDataLabel, 2630, 2940, 34, 1047); cartCurrentDataLabel = new QLabel; - cartCurrentDataLabel->setText((QString) "0 V"); + cartCurrentDataLabel->setText((QString) "0.000 V"); cartCurrentDataLabel->setAlignment(Qt::AlignRight); cartCurrentDataLabel->setContentsMargins(4, 4, 4, 4); cartCurrentDataLabel->setStyleSheet(dataStyle); @@ -307,22 +314,21 @@ void RefuelingVisualizer::setupUi() setLayout(outerLayout); } -void RefuelingVisualizer::addCustomActionsToMenu() +/* void RefuelingVisualizer::customContextMenuActionSetup() { QAction* action = new QAction("Choose topic and field"); connect(action, &QAction::triggered, this, &RefuelingVisualizer::onConfigureClicked); + customContextMenuActions.append(action); +} */ - addActionToMenu(action); -} - -void RefuelingVisualizer::onConfigureClicked() +/* void RefuelingVisualizer::onConfigureClicked() { FilterSelector::selectFilter( filter, [this](const Filter& newFilter) { setFilter(newFilter); }); -} +} */ -void RefuelingVisualizer::setFilter(const Filter& newFilter) +/* void RefuelingVisualizer::setFilter(const Filter& newFilter) { getCore()->getMessageBroker()->unsubscribe(filter, this); getCore()->getMessageBroker()->subscribe( @@ -330,7 +336,7 @@ void RefuelingVisualizer::setFilter(const Filter& newFilter) [this](const Message& message, const Filter& filter) { onMsgReceived(message); }); filter = newFilter; -} +} */ void RefuelingVisualizer::backgroundTabs(Message msg) { @@ -492,26 +498,37 @@ void RefuelingVisualizer::backgroundTabs(Message msg) } } -void RefuelingVisualizer::onMsgReceived(const Message& msg) +void RefuelingVisualizer::onMsgReceived(const Message& msg, + const Filter& filter) { - // Change background and tabs - backgroundTabs(msg); - - // GET DATA - // Vessel - float vesselLoadcell = msg.getField("loadcell_vessel").getDouble(); - float vesselPressure = msg.getField("vessel_pressure").getDouble(); - // Tank - // float tankLoadcell = msg.getField("loadcell_tank").getDouble(); - // float tankTemperature = msg.getField("tank_temperature").getDouble(); - // float tankTOPpres = msg.getField("top_tank_pressure").getDouble(); - // float tankBOTpres = msg.getField("bottom_tank_pressure").getDouble(); - // uint8_t tankFloatingLev = - // msg.getField("floating_level").getUnsignedInteger(); - - // Change data inside labels - loadcellVesselDataLabel->setText(QString::number(vesselLoadcell, 'f', 3) + - " KG"); - vesselPressureDataLabel->setText(QString::number(vesselPressure, 'f', 3) + - " bar"); + + QString filterName = filter.toString(); + int idxCol = filterName.indexOf('/'); + filterName = filterName.right(filterName.size() - 1 - idxCol); + filterName = filterName.left(filterName.size() - 2); + + if (!QString::compare(filterName, (QString) "GSE_TM", Qt::CaseInsensitive)) + { + // Change background and tabs + backgroundTabs(msg); + + float vesselLoadcell = msg.getField("loadcell_vessel").getDouble(); + float vesselPressure = msg.getField("vessel_pressure").getDouble(); + + // Change data inside labels + loadcellVesselDataLabel->setText( + QString::number(vesselLoadcell, 'f', 3) + " KG"); + vesselPressureDataLabel->setText( + QString::number(vesselPressure, 'f', 3) + " bar"); + } + else + { + float tankTemperature = msg.getField("tank_temperature").getDouble(); + + // Change data inside labels + tankTemperatureDataLabel->setText( + QString::number(tankTemperature, 'f', 3) + " °C"); + } + + printf("%s\n", filterName.toStdString().c_str()); } diff --git a/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.h b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.h index bfe5ce514d364a295a482a3edeb2d08e0be8fd57..de040c36a18c0988afe55719416867f077c270f1 100644 --- a/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.h +++ b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.h @@ -42,10 +42,10 @@ public: private: void setupUi(); - void addCustomActionsToMenu() override; - void onConfigureClicked(); - void setFilter(const Filter& filter); - void onMsgReceived(const Message& msg); + // void addCustomActionsToMenu() override; + // void onConfigureClicked(); + // void setFilter(const Filter& filter); + void onMsgReceived(const Message& msg, const Filter& filter); void backgroundTabs(Message msg); QGridLayout* outerLayout;