diff --git a/.vscode/settings.json b/.vscode/settings.json
index 0dc8485d70a8b9adafe9b3c138a299d38e639e26..74d9bae1b0355fa2feef595e842cfb7ee44eaaf3 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,7 +1,19 @@
{
"files.associations": {
"ratio": "cpp",
- "sstream": "cpp"
+ "sstream": "cpp",
+ "filesystem": "cpp",
+ "string": "cpp",
+ "chrono": "cpp",
+ "variant": "cpp",
+ "map": "cpp",
+ "set": "cpp",
+ "string_view": "cpp",
+ "unordered_map": "cpp",
+ "locale": "cpp"
},
- "editor.defaultFormatter": "chiehyu.vscode-astyle"
+ "editor.defaultFormatter": "chiehyu.vscode-astyle",
+ "[xml]": {
+ "editor.defaultFormatter": "redhat.vscode-xml"
+ }
}
\ No newline at end of file
diff --git a/Modules/StateViewer/stateviewermodule.cpp b/Modules/StateViewer/stateviewermodule.cpp
index d0fe2dc96d698d04c845d53d98da0ede45a44bd9..0164c7817aa4b28f4b8e4320c4d0563f0a75a7af 100644
--- a/Modules/StateViewer/stateviewermodule.cpp
+++ b/Modules/StateViewer/stateviewermodule.cpp
@@ -1,26 +1,29 @@
#include "stateviewermodule.h"
-#include "ui_stateviewermodule.h"
#include <QInputDialog>
#include <QLineEdit>
-#include "Core/modulemessagesbroker.h"
+
#include "Components/TopicAndFieldSelector/topicandfieldselector.h"
+#include "Core/modulemessagesbroker.h"
+#include "ui_stateviewermodule.h"
-enum states {INIT = 1,
- INIT_DONE = 2,
- INIT_ERROR = 3,
- TEST_MODE = 8,
- SENSORS_CALIBRATION = 4,
- ALGOS_CALIBRATION = 5,
- DISARMED = 6,
- ARMED = 7,
- ASCENDING = 10,
- DROGUE_DESCENT = 11,
- TERMINAL_DESCENT = 12,
- LANDED = 13
- };
-
-StateViewerModule::StateViewerModule(QWidget* parent) : DefaultModule(parent), ui(new Ui::StateViewerModule) {
+enum states {
+ INVALID = 0,
+ INIT,
+ INIT_ERROR,
+ SENSORS_CALIBRATION,
+ ALGOS_CALIBRATION,
+ DISARMED,
+ TEST_MODE,
+ ARMED,
+ ASCENDING,
+ DROGUE_DESCENT,
+ TERMINAL_DESCENT,
+ LANDED
+};
+
+StateViewerModule::StateViewerModule(QWidget* parent)
+ : DefaultModule(parent), ui(new Ui::StateViewerModule) {
ui->setupUi(this);
defaultContextMenuSetup();
@@ -34,22 +37,19 @@ StateViewerModule::StateViewerModule(QWidget* parent) : DefaultModule(parent), u
labels.append(ui->label_8_TERMINAL);
labels.append(ui->label_9_END);
-
- QMap<int, int>indexes{
+ labelsIndexes = {
{INIT, 0},
{INIT_ERROR, 0},
- {INIT_DONE, 0},
{TEST_MODE, 1},
{SENSORS_CALIBRATION, 2},
{ALGOS_CALIBRATION, 2},
- {DISARMED, 3 },
+ {DISARMED, 3},
{ARMED, 4},
{ASCENDING, 5},
{DROGUE_DESCENT, 6},
{TERMINAL_DESCENT, 7},
{LANDED, 8},
};
- labelsIndexes = indexes;
}
StateViewerModule::~StateViewerModule() {
@@ -57,9 +57,7 @@ StateViewerModule::~StateViewerModule() {
delete ui;
}
-QWidget* StateViewerModule::toWidget() {
- return this;
-}
+QWidget* StateViewerModule::toWidget() { return this; }
XmlObject StateViewerModule::toXmlObject() {
XmlObject obj(getName(ModuleId::STATEVIEWER));
@@ -70,47 +68,45 @@ XmlObject StateViewerModule::toXmlObject() {
}
void StateViewerModule::fromXmlObject(const XmlObject& xmlObject) {
- if(xmlObject.getObjectName() == getName(ModuleId::STATEVIEWER)) {
- auto f = TopicAndFieldFilter::fromStringUnsafe(xmlObject.getAttribute("filter"));
- setFilter(f);
+ if (xmlObject.getObjectName() == getName(ModuleId::STATEVIEWER)) {
+ auto filter = TopicAndFieldFilter::fromStringUnsafe(
+ xmlObject.getAttribute("filter"));
+ setFilter(filter);
}
}
void StateViewerModule::addCustomActionsToMenu() {
QAction* config = new QAction("Choose input topic and field");
- connect(config, &QAction::triggered, this, &StateViewerModule::onConfigureClicked);
+ connect(config, &QAction::triggered, this,
+ &StateViewerModule::onConfigureClicked);
addActionToMenu(config);
}
void StateViewerModule::onConfigureClicked() {
- TopicAndFieldSelector::selectTopicAndField([this](const TopicAndFieldFilter & filter) {
- setFilter(filter);
- });
+ TopicAndFieldSelector::selectTopicAndField(
+ [this](const TopicAndFieldFilter& filter) { setFilter(filter); });
}
void StateViewerModule::setFilter(const TopicAndFieldFilter& newFilter) {
getCore()->getModuleMessagesBroker()->unsubscribe(filter.getTopic(), this);
- getCore()->getModuleMessagesBroker()->subscribe(newFilter.getTopic(), this, [this](const ModuleMessage & msg) {
- onMsgReceived(msg);
- });
+ getCore()->getModuleMessagesBroker()->subscribe(
+ newFilter.getTopic(), this,
+ [this](const ModuleMessage& msg) { onMsgReceived(msg); });
filter = newFilter;
}
void StateViewerModule::onMsgReceived(const ModuleMessage& msg) {
MessageField field;
- if(!filter.matchMessage(msg, field)) {
- return;
- }
- int value = (int) field.getInteger(-1);
- if(value != -1) {
- setState(value);
- }
+ if (!filter.matchMessage(msg, field)) return;
+
+ int value = (int)field.getUInteger(-1);
+ if (value != -1) setState(value);
}
void StateViewerModule::setState(int state) {
- if(state != currentState) {
+ if (state != currentState) {
currentState = state;
updateView(state);
}
@@ -121,37 +117,26 @@ void StateViewerModule::updateView(int state) {
QString completedStyle = "background-color:green;";
QString errorStyle = "background-color:red;";
- if(state == INIT) {
+ if (state == INIT) {
ui->label_1_INIT->setStyleSheet(currentStateStyle);
- } else if(state == INIT_DONE) {
- ui->label_1_INIT->setStyleSheet(completedStyle);
- } else if(state == INIT_ERROR) {
+ } else if (state == INIT_ERROR) {
ui->label_1_INIT->setStyleSheet(errorStyle);
- } else if(state > INIT_ERROR && labelsIndexes.contains(state)) {
+ } else if (state > INIT_ERROR && labelsIndexes.contains(state)) {
int index = labelsIndexes[state];
- if(index < labels.count()) {
+
+ if (index < labels.count())
labels[index]->setStyleSheet(currentStateStyle);
- }
}
- if(labelsIndexes.contains(state)) {
- setStyleAfter(labelsIndexes[state] + 1, "");
- setStyleBefore(labelsIndexes[state] - 1, completedStyle);
- }
-}
+ if (labelsIndexes.contains(state)) {
+ int index = labelsIndexes[state];
-void StateViewerModule::setStyleAfter(int threshold, const QString& style) {
- for (int i = threshold; i < labels.count(); i++ ) {
- labels[i]->setStyleSheet(style);
- }
-}
+ // Set as completed every state before the current
+ for (int i = index - 1; i >= 0; i--)
+ labels[i]->setStyleSheet(completedStyle);
-void StateViewerModule::setStyleBefore(int threshold, const QString& style) {
- for (int i = threshold; i >= 0 && i < labels.count(); i-- ) {
- labels[i]->setStyleSheet(style);
+ // Reset every state after the current
+ for (int i = index + 1; i < labels.count(); i++)
+ labels[i]->setStyleSheet("");
}
}
-
-
-
-
diff --git a/Modules/StateViewer/stateviewermodule.h b/Modules/StateViewer/stateviewermodule.h
index 1297e46d105b9e49375d29b66c336204d7722613..2b62b6349c9aaef70f39be903f2c23a9550067f8 100644
--- a/Modules/StateViewer/stateviewermodule.h
+++ b/Modules/StateViewer/stateviewermodule.h
@@ -1,12 +1,12 @@
#ifndef STATEVIEWERMODULE_H
#define STATEVIEWERMODULE_H
-#include <QWidget>
#include <QLabel>
+#include <QWidget>
-#include "Modules/DefaultModule/defaultmodule.h"
#include "Core/Message/modulemessage.h"
#include "Core/Message/topicandfieldfilter.h"
+#include "Modules/DefaultModule/defaultmodule.h"
namespace Ui {
class StateViewerModule;
@@ -15,7 +15,7 @@ class StateViewerModule;
class StateViewerModule : public DefaultModule {
Q_OBJECT
- public:
+ public:
explicit StateViewerModule(QWidget* parent = nullptr);
~StateViewerModule();
@@ -24,18 +24,15 @@ class StateViewerModule : public DefaultModule {
XmlObject toXmlObject() override;
void fromXmlObject(const XmlObject& xmlObject) override;
-
- protected:
+ protected:
void addCustomActionsToMenu() override;
void onConfigureClicked();
void setFilter(const TopicAndFieldFilter& filter);
void onMsgReceived(const ModuleMessage& msg);
void setState(int state);
void updateView(int state);
- void setStyleAfter(int threshold, const QString& style);
- void setStyleBefore(int threshold, const QString& style);
- private:
+ private:
Ui::StateViewerModule* ui;
TopicAndFieldFilter filter;
@@ -45,4 +42,4 @@ class StateViewerModule : public DefaultModule {
QMap<int, int> labelsIndexes;
};
-#endif // STATEVIEWERMODULE_H
+#endif // STATEVIEWERMODULE_H
diff --git a/Modules/StateViewer/stateviewermodule.ui b/Modules/StateViewer/stateviewermodule.ui
index 58c7abd166bdea2fb2d00cb78df33ad46c35ea5e..d489155124219990a9c97f3deae393b750035cdd 100644
--- a/Modules/StateViewer/stateviewermodule.ui
+++ b/Modules/StateViewer/stateviewermodule.ui
@@ -1,142 +1,140 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
- <class>StateViewerModule</class>
- <widget class="QWidget" name="StateViewerModule">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>975</width>
- <height>225</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Form</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <widget class="QScrollArea" name="scrollArea">
- <property name="widgetResizable">
- <bool>true</bool>
- </property>
- <widget class="QWidget" name="scrollAreaWidgetContents">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>953</width>
- <height>203</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string notr="true">border: 1px solid grey;
-color: white;</string>
- </property>
- <layout class="QGridLayout" name="gridLayout">
- <item row="0" column="4">
- <widget class="QLabel" name="label_5_ARMED">
- <property name="text">
- <string>ARMED</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="QLabel" name="label_2_TEST">
- <property name="text">
- <string>TEST
+ <class>StateViewerModule</class>
+ <widget class="QWidget" name="StateViewerModule">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>975</width>
+ <height>225</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QScrollArea" name="scrollArea">
+ <property name="widgetResizable">
+ <bool>true</bool>
+ </property>
+ <widget class="QWidget" name="scrollAreaWidgetContents">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>953</width>
+ <height>203</height>
+ </rect>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border: 1px solid grey; color: white;</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="4">
+ <widget class="QLabel" name="label_5_ARMED">
+ <property name="text">
+ <string>ARMED</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="label_2_TEST">
+ <property name="text">
+ <string>TEST
MODE</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item row="0" column="2">
- <widget class="QLabel" name="label_3_CALIBRATION">
- <property name="text">
- <string>CALIBRATION</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item row="0" column="7">
- <widget class="QLabel" name="label_8_TERMINAL">
- <property name="text">
- <string>TERMINAL
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QLabel" name="label_3_CALIBRATION">
+ <property name="text">
+ <string>CALIBRATION</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="7">
+ <widget class="QLabel" name="label_8_TERMINAL">
+ <property name="text">
+ <string>TERMINAL
DESCENT</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item row="0" column="5">
- <widget class="QLabel" name="label_6_ASCENDING">
- <property name="text">
- <string>ASCENDING</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item row="0" column="3">
- <widget class="QLabel" name="label_4_DISARMED">
- <property name="styleSheet">
- <string notr="true">border: 1px solid grey;
-color: white;</string>
- </property>
- <property name="text">
- <string>DISARMED</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item row="0" column="6">
- <widget class="QLabel" name="label_7_DROGUE">
- <property name="text">
- <string>DROGUE
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="5">
+ <widget class="QLabel" name="label_6_ASCENDING">
+ <property name="text">
+ <string>ASCENDING</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3">
+ <widget class="QLabel" name="label_4_DISARMED">
+ <property name="styleSheet">
+ <string notr="true">border: 1px solid grey; color: white;</string>
+ </property>
+ <property name="text">
+ <string>DISARMED</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="6">
+ <widget class="QLabel" name="label_7_DROGUE">
+ <property name="text">
+ <string>DROGUE
DESCENT</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item row="0" column="0">
- <widget class="QLabel" name="label_1_INIT">
- <property name="text">
- <string>INIT</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item row="0" column="8">
- <widget class="QLabel" name="label_9_END">
- <property name="text">
- <string>END
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_1_INIT">
+ <property name="text">
+ <string>INIT</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="8">
+ <widget class="QLabel" name="label_9_END">
+ <property name="text">
+ <string>END
MISSION</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
</widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
+ <resources />
+ <connections />
+</ui>
\ No newline at end of file