From 1edead13b57a263e7ea1c9594b917b87f5cacefe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niccol=C3=B2=20Betto?= <niccolo.betto@skywarder.eu>
Date: Sun, 19 Jan 2025 22:05:41 +0100
Subject: [PATCH] fixup: move FSM async implementation to boardcore

If async FSM support is merged in boardcore, repoint the submodule to the correct commit
---
 skyward-boardcore                       |  2 +-
 src/RIGv2/StateMachines/TARS1/TARS1.cpp | 34 +++----------------------
 src/RIGv2/StateMachines/TARS1/TARS1.h   |  3 +--
 src/common/Events.h                     |  1 -
 src/common/Topics.h                     |  1 -
 5 files changed, 5 insertions(+), 36 deletions(-)

diff --git a/skyward-boardcore b/skyward-boardcore
index 93254875b..da169eb81 160000
--- a/skyward-boardcore
+++ b/skyward-boardcore
@@ -1 +1 @@
-Subproject commit 93254875ba79c70c4e1b4fb1b144a8b117337abf
+Subproject commit da169eb8192e8cb760fb4b6e3ec23ef60f7b85fa
diff --git a/src/RIGv2/StateMachines/TARS1/TARS1.cpp b/src/RIGv2/StateMachines/TARS1/TARS1.cpp
index f7675725b..83b2111ed 100644
--- a/src/RIGv2/StateMachines/TARS1/TARS1.cpp
+++ b/src/RIGv2/StateMachines/TARS1/TARS1.cpp
@@ -37,7 +37,6 @@ TARS1::TARS1()
           Config::Scheduler::TARS1_PRIORITY)
 {
     EventBroker::getInstance().subscribe(this, TOPIC_TARS);
-    EventBroker::getInstance().subscribe(this, TOPIC_TARS_ASYNC);
     EventBroker::getInstance().subscribe(this, TOPIC_MOTOR);
 }
 
@@ -83,35 +82,11 @@ void TARS1::state_ready(const Event& event)
     }
 }
 
-#define ASYNC_BEGIN(topic, event)                          \
-    constexpr auto _ASYNC_TOPIC      = topic;              \
-    constexpr auto _ASYNC_CONT_EVENT = event;              \
-    static int _lc                   = 0;                  \
-    if (event == TARS_ASYNC_CONTINUE || event == EV_ENTRY) \
-    {                                                      \
-        switch (_lc)                                       \
-        {                                                  \
-            case 0:
-#define ASYNC_END() \
-    }               \
-    return;         \
-    }
-
-#define ASYNC_WAIT_FOR(t)                                                \
-    _lc = __LINE__;                                                      \
-    case __LINE__:                                                       \
-        if (event != __LINE__)                                           \
-        {                                                                \
-            nextDelayedEventId = EventBroker::getInstance().postDelayed( \
-                _ASYNC_CONT_EVENT, _ASYNC_TOPIC, t);                     \
-            return;                                                      \
-        }
-
 void TARS1::state_refueling(const Event& event)
 {
     Actuators* actuators = getModule<Actuators>();
 
-    ASYNC_BEGIN(TOPIC_TARS_ASYNC, TARS_ASYNC_CONTINUE)
+    ASYNC_BEGIN(TOPIC_TARS)
 
     // Reset TARS state
     massStableCounter = 0;
@@ -185,7 +160,7 @@ void TARS1::state_refueling(const Event& event)
         // Wait for system stabilization based on valve opening time
         ASYNC_WAIT_FOR(
             actuators->getServoOpeningTime(ServosList::VENTING_VALVE) +
-            Config::TARS1::PRESSURE_STABILIZE_WAIT_TIME * 5)  // wait (5000ms)
+            Config::TARS1::PRESSURE_STABILIZE_WAIT_TIME * 5)
 
         // If the pressure is not stable, keep waiting until it is
         while (true)
@@ -228,8 +203,6 @@ void TARS1::state_refueling(const Event& event)
             LOG_INFO(logger, "TARS manual stop");
             logAction(TarsActionType::MANUAL_STOP);
 
-            // Disable next event
-            EventBroker::getInstance().removeDelayed(nextDelayedEventId);
             transition(&TARS1::state_ready);
             break;
         }
@@ -241,8 +214,7 @@ void TARS1::state_refueling(const Event& event)
 
             // The user requested that we stop
             getModule<Actuators>()->closeAllServos();
-            // Disable next event
-            EventBroker::getInstance().removeDelayed(nextDelayedEventId);
+
             transition(&TARS1::state_ready);
             break;
         }
diff --git a/src/RIGv2/StateMachines/TARS1/TARS1.h b/src/RIGv2/StateMachines/TARS1/TARS1.h
index eba7653f2..f1ed53cd6 100644
--- a/src/RIGv2/StateMachines/TARS1/TARS1.h
+++ b/src/RIGv2/StateMachines/TARS1/TARS1.h
@@ -73,8 +73,7 @@ private:
     float massSample     = 0;
     float pressureSample = 0;
 
-    int massStableCounter       = 0;
-    uint16_t nextDelayedEventId = 0;
+    int massStableCounter = 0;
 };
 
 }  // namespace RIGv2
diff --git a/src/common/Events.h b/src/common/Events.h
index 1d24ae46f..fc524997e 100644
--- a/src/common/Events.h
+++ b/src/common/Events.h
@@ -163,7 +163,6 @@ enum Events : uint8_t
     TARS_PRESSURE_STABILIZED,
     TARS_FILLING_DONE,
     TARS_REFINING_DONE,
-    TARS_ASYNC_CONTINUE,
     ALTITUDE_TRIGGER_ALTITUDE_REACHED,
     WING_ALGORITHM_ENDED,
     LAST_EVENT
diff --git a/src/common/Topics.h b/src/common/Topics.h
index b9e7171c6..37c83378b 100644
--- a/src/common/Topics.h
+++ b/src/common/Topics.h
@@ -44,7 +44,6 @@ enum Topics : uint8_t
     TOPIC_TMTC,
     TOPIC_MOTOR,
     TOPIC_TARS,
-    TOPIC_TARS_ASYNC,
     TOPIC_ALT,
     TOPIC_WING,
 };
-- 
GitLab