From c6f00571798dc530afe454577ab3736e13bdd2a1 Mon Sep 17 00:00:00 2001
From: Raul Radu <raul.radu@mail.polimi.it>
Date: Tue, 26 Nov 2024 18:40:12 +0100
Subject: [PATCH] [Mavlink] Updated mavlink for Orion Packets

- Minor change: Valves Basic stylesheet is applied when valves are first created to show text area boundaries (borders)
---
 .vscode/settings.json                         |  3 +-
 libs/mavlink-skyward-lib                      |  2 +-
 src/shared/Modules/CommandPad/MessagesList.h  | 30 +++++++++++------
 src/shared/Modules/Mavlink/MavlinkCodec.cpp   | 16 +++++++---
 src/shared/Modules/Mavlink/MavlinkCodec.h     | 12 ++++---
 .../Modules/Mavlink/MavlinkVersionHeader.h    |  2 +-
 src/shared/Modules/ValvesViewer/ValvesList.h  | 20 +++++++++---
 .../Modules/ValvesViewer/ValvesViewer.cpp     | 32 +++++++++++++------
 .../Modules/ValvesViewer/ValvesViewer.h       |  3 ++
 9 files changed, 84 insertions(+), 36 deletions(-)

diff --git a/.vscode/settings.json b/.vscode/settings.json
index 9dcff53c..21ef00b6 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -167,7 +167,8 @@
         "qtvirtualkeyboard": "cpp",
         "qabstractbutton": "cpp",
         "qmetatype": "cpp",
-        "qmainwindow": "cpp"
+        "qmainwindow": "cpp",
+        "qapplication": "cpp"
     },
     "editor.defaultFormatter": "ms-vscode.cpptools",
     "[xml]": {
diff --git a/libs/mavlink-skyward-lib b/libs/mavlink-skyward-lib
index 7abedf97..78a568f5 160000
--- a/libs/mavlink-skyward-lib
+++ b/libs/mavlink-skyward-lib
@@ -1 +1 @@
-Subproject commit 7abedf9773b3ebce9d14687d13544f40fad5577f
+Subproject commit 78a568f5e31fb9b50dbf8ec7d9af16261b364a8f
diff --git a/src/shared/Modules/CommandPad/MessagesList.h b/src/shared/Modules/CommandPad/MessagesList.h
index f7b71509..90e81636 100644
--- a/src/shared/Modules/CommandPad/MessagesList.h
+++ b/src/shared/Modules/CommandPad/MessagesList.h
@@ -171,11 +171,17 @@ const QMap<QString, int> servosList{
     {"EXPULSION_SERVO", EXPULSION_SERVO},
     {"PARAFOIL_LEFT_SERVO", PARAFOIL_LEFT_SERVO},
     {"PARAFOIL_RIGHT_SERVO", PARAFOIL_RIGHT_SERVO},
+    {"N2O_FILLING_VALVE", N2O_FILLING_VALVE},
+    {"N2O_RELEASE_VALVE", N2O_RELEASE_VALVE},
+    {"N2O_DETATCH_SERVO", N2O_DETACH_SERVO},
+    {"N2O_VENTING_VALVE", N2O_VENTING_VALVE},
+    {"N2_FILLING_VALVE", N2_FILLING_VALVE},
+    {"N2_RELEASE_VALVE", N2_RELEASE_VALVE},
+    {"N2_DETACH_SERVO", N2_DETACH_SERVO},
+    {"N2_QUENCHING_VALVE", N2_QUENCHING_VALVE},
+    {"N2_3WAY_VALVE", N2_3WAY_VAVLE},
     {"MAIN_VALVE", MAIN_VALVE},
-    {"VENTING_VALVE", VENTING_VALVE},
-    {"RELEASE_VALVE", RELEASE_VALVE},
-    {"FILLING_VALVE", FILLING_VALVE},
-    {"DISCONNECT_SERVO", DISCONNECT_SERVO}};
+    {"NITROGEN_VALVE", NITROGEN_VALVE}};
 
 const QMap<QString, int> stepperList{{"STEPPER_X", STEPPER_X},
                                      {"STEPPER_Y", STEPPER_Y}};
@@ -287,12 +293,18 @@ inline void fillMessagesMap(QMap<QString, MessageFormElement *> &formElements)
     formElements["SET_COOLING_TIME_TC"] = element;
 
     element = new MessageFormElement();
+    element->addInteger("n2o_filling_btn", "N2O Filling:", 0, 1);
+    element->addInteger("n2o_release_btn", "N2O Release:", 0, 1);
+    element->addInteger("n2o_detach_btn", "N2O Detatch:", 0, 1);
+    element->addInteger("n2o_venting_btn", "N2O Venting:", 0, 1);
+    element->addInteger("n2_filling_btn", "N2 Filling:", 0, 1);
+    element->addInteger("n2_release_btn", "N2 Release:", 0, 1);
+    element->addInteger("n2_detach_btn", "N2 Detach:", 0, 1);
+    element->addInteger("n2_quenching_btn", "N2 Quenching:", 0, 1);
+    element->addInteger("n2_3way_btn", "N2 3-Way Valve:", 0, 1);
+    element->addInteger("tars_btn", "TARS:", 0, 1);
+    element->addInteger("nitrogen_btn", "Nitrogen:", 0, 1);
     element->addInteger("ignition_btn", "Ignition:", 0, 1);
-    element->addInteger("filling_valve_btn", "Filling:", 0, 1);
-    element->addInteger("venting_valve_btn", "Venting:", 0, 1);
-    element->addInteger("release_pressure_btn", "Release:", 0, 1);
-    element->addInteger("quick_connector_btn", "Quick connector:", 0, 1);
-    element->addInteger("start_tars_btn", "Tars:", 0, 1);
     element->addInteger("arm_switch", "Arm:", 0, 1);
     formElements["CONRIG_STATE_TC"] = element;
 
diff --git a/src/shared/Modules/Mavlink/MavlinkCodec.cpp b/src/shared/Modules/Mavlink/MavlinkCodec.cpp
index 122c642f..529cc5c7 100644
--- a/src/shared/Modules/Mavlink/MavlinkCodec.cpp
+++ b/src/shared/Modules/Mavlink/MavlinkCodec.cpp
@@ -418,12 +418,18 @@ bool MavlinkCodec::encodeMessage(const Message& msg, SysId sysId, CompId compId,
     {
         mavlink_msg_conrig_state_tc_pack(
             sysId, compId, &output,
+            msg.getField("n2o_filing_btn").getUnsignedInteger(),
+            msg.getField("n2o_release_btn").getUnsignedInteger(),
+            msg.getField("n2o_detach_btn").getUnsignedInteger(),
+            msg.getField("n2o_venting_btn").getUnsignedInteger(),
+            msg.getField("n2_filling_btn").getUnsignedInteger(),
+            msg.getField("n2_release_btn").getUnsignedInteger(),
+            msg.getField("n2_detach_btn").getUnsignedInteger(),
+            msg.getField("n2_quenching_btn").getUnsignedInteger(),
+            msg.getField("n2_3way_btn").getUnsignedInteger(),
+            msg.getField("tars_btn").getUnsignedInteger(),
+            msg.getField("nitrogen_btn").getUnsignedInteger(),
             msg.getField("ignition_btn").getUnsignedInteger(),
-            msg.getField("filling_valve_btn").getUnsignedInteger(),
-            msg.getField("venting_valve_btn").getUnsignedInteger(),
-            msg.getField("release_pressure_btn").getUnsignedInteger(),
-            msg.getField("quick_connector_btn").getUnsignedInteger(),
-            msg.getField("start_tars_btn").getUnsignedInteger(),
             msg.getField("arm_switch").getUnsignedInteger());
         return true;
     }
diff --git a/src/shared/Modules/Mavlink/MavlinkCodec.h b/src/shared/Modules/Mavlink/MavlinkCodec.h
index c79a6262..456c9ac7 100644
--- a/src/shared/Modules/Mavlink/MavlinkCodec.h
+++ b/src/shared/Modules/Mavlink/MavlinkCodec.h
@@ -34,11 +34,13 @@ class MavlinkCodec : public QObject
 public:
     enum SysId
     {
-        SysIdMain    = MAV_SYSID_MAIN,
-        SysIdPayload = MAV_SYSID_PAYLOAD,
-        SysIdRig     = MAV_SYSID_RIG,
-        SysIdGS      = MAV_SYSID_GS,
-        SysIdARP     = MAV_SYSID_ARP,
+        SysIdMain       = MAV_SYSID_MAIN,
+        SysIdPayload    = MAV_SYSID_PAYLOAD,
+        SysIdRig        = MAV_SYSID_RIG,
+        SysIdGS         = MAV_SYSID_GS,
+        SysIdARP        = MAV_SYSID_ARP,
+        SysIdGSBackup   = MAV_SYSID_GS_BACKUP,
+        SysIdARRPBackup = MAV_SYSID_ARP_BACKUP
     };
 
     enum CompId
diff --git a/src/shared/Modules/Mavlink/MavlinkVersionHeader.h b/src/shared/Modules/Mavlink/MavlinkVersionHeader.h
index 69e6e2a6..b2138abc 100644
--- a/src/shared/Modules/Mavlink/MavlinkVersionHeader.h
+++ b/src/shared/Modules/Mavlink/MavlinkVersionHeader.h
@@ -23,7 +23,7 @@
 #if __GNUC__ >= 9
 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
 #endif
-#include <mavlink_lib/lyra/mavlink.h>
+#include <mavlink_lib/orion/mavlink.h>
 #pragma GCC diagnostic pop
 
 // static __attribute__((unused)) uint8_t validSysid = 171;
diff --git a/src/shared/Modules/ValvesViewer/ValvesList.h b/src/shared/Modules/ValvesViewer/ValvesList.h
index be0077cb..0271a7a6 100644
--- a/src/shared/Modules/ValvesViewer/ValvesList.h
+++ b/src/shared/Modules/ValvesViewer/ValvesList.h
@@ -28,16 +28,26 @@ namespace ValvesList
 // Valves
 enum class Valve : int
 {
-    FILLING = 0,
-    RELEASE,
-    VENTING,
+    N2O_FILLING = 0,
+    N2O_RELEASE,
+    N2O_DETACH,
+    N2O_VENTING,
+    N2_FILLING,
+    N2_RELEASE,
+    N2_VENTING,
+    N2_DETACH,
+    N2_QUENCHING,
+    N2_3WAY,
     MAIN,
     NITROGEN,
     TARS,
+    IGNITION
 };
 
 // Groundstation labels
-static const QList<QString> valvesLabels{"FILLING", "RELEASE",  "VENTING",
-                                         "MAIN",    "NITROGEN", "TARS"};
+static const QList<QString> valvesLabels{
+    "N2O FILLING", "N2O RELEASE", "N2O DETACH", "N2O VENTING",  "N2 FILLING",
+    "N2 RELEASE",  "N2 VENTING",  "N2 DETACH",  "N2 QUENCHING", "N2 3WAY",
+    "MAIN",        "NITROGEN",    "TARS",       "IGNITION"};
 
 }  // namespace ValvesList
\ No newline at end of file
diff --git a/src/shared/Modules/ValvesViewer/ValvesViewer.cpp b/src/shared/Modules/ValvesViewer/ValvesViewer.cpp
index 4889eb8c..4571e94c 100644
--- a/src/shared/Modules/ValvesViewer/ValvesViewer.cpp
+++ b/src/shared/Modules/ValvesViewer/ValvesViewer.cpp
@@ -59,6 +59,8 @@ void ValvesViewer::setupUi()
         label->setText(labelText);
         label->setAlignment(Qt::AlignCenter);
         label->setContentsMargins(4, 4, 4, 4);
+        QString baseStyle{baseStylesheet};
+        label->setStyleSheet(baseStyle);
         outerLayout->addWidget(label);
     }
 
@@ -94,23 +96,35 @@ void ValvesViewer::onMsgReceived(const Message& msg)
 {
     // Couple the valves with their own state
     QMap<ValvesList::Valve, uint64_t> map{
-        {ValvesList::Valve::FILLING,
-         msg.getField("filling_valve_state").getUnsignedInteger()},
+        {ValvesList::Valve::N2O_FILLING,
+         msg.getField("n2o_filling_valve_state").getUnsignedInteger()},
+        {ValvesList::Valve::N2O_RELEASE,
+         msg.getField("n2o_release_valve_state").getUnsignedInteger()},
+        {ValvesList::Valve::N2O_DETACH,
+         msg.getField("n2o_detach_state").getUnsignedInteger()},
+        {ValvesList::Valve::N2O_VENTING,
+         msg.getField("n2o_venting_valve_state").getUnsignedInteger()},
+        {ValvesList::Valve::N2_FILLING,
+         msg.getField("n2_filling_valve_state").getUnsignedInteger()},
+        {ValvesList::Valve::N2_RELEASE,
+         msg.getField("n2_release_valve_state").getUnsignedInteger()},
+        {ValvesList::Valve::N2_DETACH,
+         msg.getField("n2_detach_state").getUnsignedInteger()},
+        {ValvesList::Valve::N2_QUENCHING,
+         msg.getField("n2_quenching_valve_state").getUnsignedInteger()},
+        {ValvesList::Valve::N2_3WAY,
+         msg.getField("n2_3way_valve_state").getUnsignedInteger()},
         {ValvesList::Valve::MAIN,
          msg.getField("main_valve_state").getUnsignedInteger()},
-        {ValvesList::Valve::RELEASE,
-         msg.getField("release_valve_state").getUnsignedInteger()},
-        {ValvesList::Valve::VENTING,
-         msg.getField("venting_valve_state").getUnsignedInteger()},
         {ValvesList::Valve::NITROGEN,
          msg.getField("nitrogen_valve_state").getUnsignedInteger()},
+        {ValvesList::Valve::IGNITION,
+         msg.getField("ignition_state").getUnsignedInteger()},
         {ValvesList::Valve::TARS,
          msg.getField("tars_state").getUnsignedInteger()}};
 
     // Define the "active" and the "not active" look
-    QString baseStyle =
-        "border-bottom-width:1px;border-left-width:1px;border-top-width:"
-        "1px;border-radius:0;";
+    QString baseStyle{baseStylesheet};
     QString completedStyle = "background-color:green;" + baseStyle;
     QString errorStyle     = "background-color:red;" + baseStyle;
 
diff --git a/src/shared/Modules/ValvesViewer/ValvesViewer.h b/src/shared/Modules/ValvesViewer/ValvesViewer.h
index 5c0b4efd..2a68dc10 100644
--- a/src/shared/Modules/ValvesViewer/ValvesViewer.h
+++ b/src/shared/Modules/ValvesViewer/ValvesViewer.h
@@ -49,4 +49,7 @@ private:
 
     Filter filter;
     ValvesList::Valve currentState;
+    static constexpr char* baseStylesheet =
+        "border-bottom-width:1px;border-left-width:1px;border-top-width:"
+        "1px;border-radius:0;";
 };
-- 
GitLab