diff --git a/src/shared/Modules/RefuelingButton/MessageFormElementRefButton.cpp b/src/shared/Modules/RefuelingButton/MessageFormElementRefButton.cpp index 6817bd0b2678cf0a6eeac6bb6b880f26929b65bf..cc3d7d5851ebdba2ddc1834b9d2b9efd6426568f 100644 --- a/src/shared/Modules/RefuelingButton/MessageFormElementRefButton.cpp +++ b/src/shared/Modules/RefuelingButton/MessageFormElementRefButton.cpp @@ -262,13 +262,18 @@ void MessageFormElementRefButton::removeFromGridLayout(QGridLayout* layout) Message MessageFormElementRefButton::prepareMessage(const QString& messageId) { - Message message(Topic{SkywardHubStrings::commandsTopic + "/" + messageId}); + Message message; for (auto key : comboBoxMap.keys()) { auto comboBox = comboBoxMap[key].second; auto msg = Field{(uint64_t)comboBox->currentData().toInt()}; - message.setField(key, msg); + if (comboBox->currentIndex() == 0) + message.setField("floating_level", msg); + if (comboBox->currentIndex() == 1) + message.setField("tank_temperature", msg); + if (comboBox->currentIndex() == 2) + message.setField("timestamp", msg); } for (auto key : floatMap.keys()) diff --git a/src/shared/Modules/RefuelingButton/MessagesListRefButton.h b/src/shared/Modules/RefuelingButton/MessagesListRefButton.h index 1af250e44a88320f543c77b69e25d7e73f7fe3d5..7d4745ad092f0f16a1ce340ee621e52376cfec7a 100644 --- a/src/shared/Modules/RefuelingButton/MessagesListRefButton.h +++ b/src/shared/Modules/RefuelingButton/MessagesListRefButton.h @@ -21,48 +21,73 @@ #include <Modules/Mavlink/MavlinkVersionHeader.h> #include <Modules/RefuelingButton/MessageFormElementRefButton.h> -#include <QList> #include <QMap> #include <QString> namespace MessagesListRefButton { -enum class State : int -{ - INVALID = 0, - INIT, - INIT_ERROR, - SENSORS_CALIBRATION, - ALGOS_CALIBRATION, - DISARMED, - TEST_MODE, - ARMED, - ASCENDING, - DROGUE_DESCENT, - TERMINAL_DESCENT, - LANDED, +// Groundstation labels +static const QStringList messagesList{ + "MOTOR_TM_FLOAT", + "MOTOR_TM_INTEGER", + "GSE_TM_FLOAT", + "GSE_TM_INTEGER", }; -// Groundstation labels -static const QList<QString> messagesList{ - "INIT", "TEST_MODE", "SENSORS_CALIBRATION", "DISARMED", "ARMED", - "ASCENDING", "DROGUE_DESCENT", "TERMINAL_DESCENT", "LANDED", +static const QMap<QString, int> MOTORcommandFloat{ + {"top_tank_pressure", MAV_CMD_ARM}, + {"bottom_tank_pressure", MAV_CMD_DISARM}, + {"estimated_mass", MAV_CMD_FORCE_LAUNCH}, +}; + +static const QMap<QString, int> MOTORcommandInteger{ + {"timestamp", MAV_CMD_ARM}, + {"floating_level", MAV_CMD_CALIBRATE}, + {"tank_temperature", MAV_CMD_FORCE_INIT}, +}; + +static const QMap<QString, int> GSEcommandFloat{ + {"loadcell_tank", MAV_CMD_DISARM}, + {"loadcell_vessel", MAV_CMD_CALIBRATE}, + {"filling_pressure", MAV_CMD_FORCE_INIT}, + {"vessel_pressure ", MAV_CMD_STOP_LOGGING}, }; -// Map from rocket states to groundstation labels -static const QMap<State, int> statesIndexes{ - {State::INIT, 0}, - {State::INIT_ERROR, 0}, - {State::TEST_MODE, 1}, - {State::SENSORS_CALIBRATION, 2}, - {State::ALGOS_CALIBRATION, 2}, - {State::DISARMED, 3}, - {State::ARMED, 4}, - {State::ASCENDING, 5}, - {State::DROGUE_DESCENT, 6}, - {State::TERMINAL_DESCENT, 7}, - {State::LANDED, 8}, +static const QMap<QString, int> GSEcommandInteger{ + {"timestamp", MAV_CMD_ARM}, + {"arming_state", MAV_CMD_FORCE_LAUNCH}, + {"filling_valve_state", MAV_CMD_FORCE_LANDING}, + {"venting_valve_state", MAV_CMD_FORCE_APOGEE}, + {"release_vlave_state", MAV_CMD_FORCE_EXPULSION}, + {"ignition_state", MAV_CMD_FORCE_MAIN}, + {"tars_state", MAV_CMD_START_LOGGING}, }; +inline void fillMessagesMap( + QMap<QString, MessageFormElementRefButton *> &formElements) +{ + MessageFormElementRefButton *element; + + element = new MessageFormElementRefButton(); + element->addComboBox("motor_id", "Command:", MOTORcommandFloat); + element->addFloat("value", "Value:", 0, 180, 2); + formElements["MOTOR_TM_FLOAT"] = element; + + element = new MessageFormElementRefButton(); + element->addComboBox("timestamp", "Command:", MOTORcommandInteger); + element->addInteger("value", "Value:", 0, 180); + formElements["MOTOR_TM_INTEGER"] = element; + + element = new MessageFormElementRefButton(); + element->addComboBox("gse_id", "Command:", GSEcommandFloat); + element->addFloat("value", "Value:", 0, 180, 2); + formElements["GSE_TM_FLOAT"] = element; + + element = new MessageFormElementRefButton(); + element->addComboBox("gse_id", "Command:", GSEcommandInteger); + element->addInteger("value", "Value:", 0, 180); + formElements["GSE_TM_INTEGER"] = element; +} + } // namespace MessagesListRefButton diff --git a/src/shared/Modules/RefuelingButton/RefuelingButton.cpp b/src/shared/Modules/RefuelingButton/RefuelingButton.cpp index 5b82d6abb0fccded82d4e17cf054bef5b5626e39..4fe7993ae1b409aa2c756369cbe8b38258e2d535 100644 --- a/src/shared/Modules/RefuelingButton/RefuelingButton.cpp +++ b/src/shared/Modules/RefuelingButton/RefuelingButton.cpp @@ -18,6 +18,7 @@ #include "RefuelingButton.h" +#include <Core/Message/Message.h> #include <Modules/RefuelingButton/MessagesListRefButton.h> #include <QVBoxLayout> @@ -84,10 +85,14 @@ void RefuelingButton::setupUi() setLayout(outerLayout); - // Set default value - currentMessage = "PING_TC"; + MessagesListRefButton::fillMessagesMap(formElements); + + // NUOVO ---------------------------------------------------------- + currentMessage = "MOTOR_TM_FLOAT"; messagesListComboBox->setCurrentText(currentMessage); + // PRECEDENTE ----------------------------------------------------- + connect(messagesListComboBox, &QComboBox::currentTextChanged, this, [=](QString key) { @@ -104,9 +109,20 @@ void RefuelingButton::setupUi() [=]() { auto key = messagesListComboBox->currentText(); + if (formElements.contains(key)) { - auto message = formElements[key]->prepareMessage(key); + uint64_t keyN = messagesListComboBox->currentIndex(); + auto message = formElements[key]->prepareMessage(key); + + if (messagesListComboBox->currentIndex() == 0 || + messagesListComboBox->currentIndex() == 1) + message.setTopic(Topic{"Mav/MOTOR_TM"}); + + if (messagesListComboBox->currentIndex() == 2 || + messagesListComboBox->currentIndex() == 3) + message.setTopic(Topic{"Mav/GSE_TM"}); + getCore()->getMessageBroker()->publish(message); } }); diff --git a/src/shared/Modules/RefuelingButton/RefuelingButton.h b/src/shared/Modules/RefuelingButton/RefuelingButton.h index abbaa00bcda79a053fdf98fb6bcdd6267ca21785..1b43cc962d83f261ceb5ed779aed50c1f234584e 100644 --- a/src/shared/Modules/RefuelingButton/RefuelingButton.h +++ b/src/shared/Modules/RefuelingButton/RefuelingButton.h @@ -18,6 +18,7 @@ #pragma once +#include <Core/Message/Message.h> #include <Modules/DefaultModule/DefaultModule.h> #include <Modules/RefuelingButton/MessageFormElementRefButton.h>