From 28b35058859c1dfadcade2a65d376ac43d106e27 Mon Sep 17 00:00:00 2001
From: Alberto Nidasio <alberto.nidasio@skywarder.eu>
Date: Thu, 8 Sep 2022 12:16:39 +0000
Subject: [PATCH] [CanHandler] Added liftoff and apogee events over CAN

---
 .vscode/settings.json                         |  3 ++-
 src/boards/Main/CanHandler/CanHandler.cpp     | 18 ++++++++++++++++++
 src/boards/Main/CanHandler/CanHandler.h       |  6 ++----
 src/boards/Main/Configs/CanHandlerConfig.h    |  5 ++++-
 src/boards/Payload/Configs/CanHandlerConfig.h |  6 ++++--
 5 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/.vscode/settings.json b/.vscode/settings.json
index befe29ab7..d64d9495c 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -132,10 +132,11 @@
         "Setpoint",
         "stateinitializer",
         "telecommands",
+        "TMTC",
         "UBXGPS",
         "usart",
         "VREF",
         "Xbee"
     ],
     "C_Cpp.errorSquiggles": "Enabled"
-}
\ No newline at end of file
+}
diff --git a/src/boards/Main/CanHandler/CanHandler.cpp b/src/boards/Main/CanHandler/CanHandler.cpp
index 46efa01b6..4fae63374 100644
--- a/src/boards/Main/CanHandler/CanHandler.cpp
+++ b/src/boards/Main/CanHandler/CanHandler.cpp
@@ -78,6 +78,24 @@ void CanHandler::sendCamOffEvent()
                            static_cast<uint8_t>(EventId::CAM_OFF));
 }
 
+void CanHandler::sendLiftoffEvent()
+{
+    protocol->enqueueEvent(static_cast<uint8_t>(Priority::CRITICAL),
+                           static_cast<uint8_t>(PrimaryType::EVENTS),
+                           static_cast<uint8_t>(Board::MAIN),
+                           static_cast<uint8_t>(Board::BROADCAST),
+                           static_cast<uint8_t>(EventId::LIFTOFF));
+}
+
+void CanHandler::sendApogeeEvent()
+{
+    protocol->enqueueEvent(static_cast<uint8_t>(Priority::CRITICAL),
+                           static_cast<uint8_t>(PrimaryType::EVENTS),
+                           static_cast<uint8_t>(Board::MAIN),
+                           static_cast<uint8_t>(Board::BROADCAST),
+                           static_cast<uint8_t>(EventId::APOGEE));
+}
+
 CanHandler::CanHandler()
 {
     CanbusDriver::AutoBitTiming bitTiming;
diff --git a/src/boards/Main/CanHandler/CanHandler.h b/src/boards/Main/CanHandler/CanHandler.h
index 13c4892b5..9cddaf6d8 100644
--- a/src/boards/Main/CanHandler/CanHandler.h
+++ b/src/boards/Main/CanHandler/CanHandler.h
@@ -39,16 +39,14 @@ public:
     bool isStarted();
 
     // Boardcore::Canbus::CanRXStatus getCanStatus();
-
     // void logStatus();
 
     void sendArmEvent();
-
     void sendDisarmEvent();
-
     void sendCamOnEvent();
-
     void sendCamOffEvent();
+    void sendLiftoffEvent();
+    void sendApogeeEvent();
 
 private:
     CanHandler();
diff --git a/src/boards/Main/Configs/CanHandlerConfig.h b/src/boards/Main/Configs/CanHandlerConfig.h
index eabb10165..520136a11 100644
--- a/src/boards/Main/Configs/CanHandlerConfig.h
+++ b/src/boards/Main/Configs/CanHandlerConfig.h
@@ -34,6 +34,7 @@ namespace Main
 
 namespace CanHandlerConfig
 {
+
 static const std::map<Common::CanConfig::EventId, Common::Events> eventToEvent{
     {Common::CanConfig::EventId::ARM, Common::TMTC_ARM},
     {Common::CanConfig::EventId::DISARM, Common::TMTC_DISARM},
@@ -47,8 +48,10 @@ static const std::map<Common::Events, std::function<void(CanHandler *)>>
         {Common::TMTC_DISARM, &CanHandler::sendDisarmEvent},
         {Common::TMTC_START_RECORDING, &CanHandler::sendCamOnEvent},
         {Common::TMTC_STOP_RECORDING, &CanHandler::sendCamOffEvent},
+        {Common::FLIGHT_LIFTOFF, &CanHandler::sendLiftoffEvent},
+        {Common::FLIGHT_APOGEE_DETECTED, &CanHandler::sendApogeeEvent},
     };
 
 }  // namespace CanHandlerConfig
 
-}  // namespace Main
\ No newline at end of file
+}  // namespace Main
diff --git a/src/boards/Payload/Configs/CanHandlerConfig.h b/src/boards/Payload/Configs/CanHandlerConfig.h
index 37b09d2d8..00105bffa 100644
--- a/src/boards/Payload/Configs/CanHandlerConfig.h
+++ b/src/boards/Payload/Configs/CanHandlerConfig.h
@@ -34,12 +34,14 @@ namespace Payload
 
 namespace CanHandlerConfig
 {
+
 static const std::map<Common::CanConfig::EventId, Common::Events> eventToEvent{
     {Common::CanConfig::EventId::ARM, Common::TMTC_ARM},
     {Common::CanConfig::EventId::DISARM, Common::TMTC_DISARM},
-    {Common::CanConfig::EventId::LIFTOFF, Common::TMTC_FORCE_LAUNCH},
     {Common::CanConfig::EventId::CAM_ON, Common::TMTC_START_RECORDING},
     {Common::CanConfig::EventId::CAM_OFF, Common::TMTC_STOP_RECORDING},
+    {Common::CanConfig::EventId::LIFTOFF, Common::TMTC_FORCE_LAUNCH},
+    {Common::CanConfig::EventId::APOGEE, Common::TMTC_FORCE_APOGEE},
 };
 
 static const std::map<Common::Events, std::function<void(CanHandler *)>>
@@ -52,4 +54,4 @@ static const std::map<Common::Events, std::function<void(CanHandler *)>>
 
 }  // namespace CanHandlerConfig
 
-}  // namespace Payload
\ No newline at end of file
+}  // namespace Payload
-- 
GitLab