]> git.leonardobizzoni.com Git - pioneer-stm32/commitdiff
Init mode -> Config mode
authorLeonardoBizzoni <leo2002714@gmail.com>
Mon, 23 Feb 2026 09:31:20 +0000 (10:31 +0100)
committerLeonardoBizzoni <leo2002714@gmail.com>
Mon, 23 Feb 2026 09:31:20 +0000 (10:31 +0100)
pioneer_controller/Core/Inc/firmware/fmw_core.h
pioneer_controller/Core/Inc/firmware/fmw_messages.h
pioneer_controller/Core/Src/main.c
pioneer_workstation/src/main.c

index 2d84ee772a9be36b3b85c2d79a61ef2be07b84a1..93246fb0ddaeb70c6fe8908a80d4b744469bce02 100644 (file)
@@ -4,7 +4,7 @@
 typedef uint8_t FMW_Mode;
 enum {
   FMW_Mode_None,
-  FMW_Mode_Init,
+  FMW_Mode_Config,
   FMW_Mode_Run,
   FMW_Mode_COUNT,
 };
index 1f97cfadef21b101132c764e527fac0b5b04a030..0d40b144e22b83c91274e126c01458715df81859 100644 (file)
@@ -13,7 +13,7 @@ typedef union {
 #define FMW_MESSAGE_TYPE_VARIANTS(X)            \
   X(FMW_MessageType_None)                       \
   X(FMW_MessageType_Response)                   \
-  X(FMW_MessageType_StateChange_Init)           \
+  X(FMW_MessageType_StateChange_Config)           \
   X(FMW_MessageType_StateChange_Run)            \
   X(FMW_MessageType_Config_Robot)               \
   X(FMW_MessageType_Config_PID)                 \
@@ -29,28 +29,28 @@ enum {
 #undef X
 };
 
-#define FMW_RESULT_VARIANTS(X)                                          \
-  X(FMW_Result_Ok)                                                      \
-  X(FMW_Result_Error_InvalidArguments)                                  \
-  X(FMW_Result_Error_UART_Crc)                                          \
-  X(FMW_Result_Error_UART_NegativeTimeout)                              \
-  X(FMW_Result_Error_UART_ReceiveTimeoutElapsed)                        \
-  X(FMW_Result_Error_UART_Parity)                                       \
-  X(FMW_Result_Error_UART_Frame)                                        \
-  X(FMW_Result_Error_UART_Noise)                                        \
-  X(FMW_Result_Error_UART_Overrun)                                      \
-  X(FMW_Result_Error_Encoder_InvalidTimer)                              \
-  X(FMW_Result_Error_Encoder_NonPositiveTicksPerRevolution)             \
-  X(FMW_Result_Error_Encoder_NonPositiveWheelCircumference)             \
-  X(FMW_Result_Error_Encoder_GetTick)                                   \
-  X(FMW_Result_Error_Buzzer_Timer)                                      \
-  X(FMW_Result_Error_MessageHandler_InvalidState)                       \
-  X(FMW_Result_Error_MessageHandler_Init_NonPositiveBaseline)           \
-  X(FMW_Result_Error_MessageHandler_Init_NonPositiveWheelCircumference) \
-  X(FMW_Result_Error_MessageHandler_Init_NonPositiveTicksPerRevolution) \
-  X(FMW_Result_Error_MessageHandler_Init_NonPositiveLEDUpdatePeriod)    \
-  X(FMW_Result_Error_Command_NotRecognized)                             \
-  X(FMW_Result_Error_Command_NotAvailable)                              \
+#define FMW_RESULT_VARIANTS(X)                                                  \
+  X(FMW_Result_Ok)                                                              \
+  X(FMW_Result_Error_InvalidArguments)                                          \
+  X(FMW_Result_Error_UART_Crc)                                                  \
+  X(FMW_Result_Error_UART_NegativeTimeout)                                      \
+  X(FMW_Result_Error_UART_ReceiveTimeoutElapsed)                                \
+  X(FMW_Result_Error_UART_Parity)                                               \
+  X(FMW_Result_Error_UART_Frame)                                                \
+  X(FMW_Result_Error_UART_Noise)                                                \
+  X(FMW_Result_Error_UART_Overrun)                                              \
+  X(FMW_Result_Error_Encoder_InvalidTimer)                                      \
+  X(FMW_Result_Error_Encoder_NonPositiveTicksPerRevolution)                     \
+  X(FMW_Result_Error_Encoder_NonPositiveWheelCircumference)                     \
+  X(FMW_Result_Error_Encoder_GetTick)                                           \
+  X(FMW_Result_Error_Buzzer_Timer)                                              \
+  X(FMW_Result_Error_MessageHandler_InvalidState)                               \
+  X(FMW_Result_Error_MessageHandler_Config_NonPositiveBaseline)                 \
+  X(FMW_Result_Error_MessageHandler_Config_NonPositiveWheelCircumference)       \
+  X(FMW_Result_Error_MessageHandler_Config_NonPositiveTicksPerRevolution)       \
+  X(FMW_Result_Error_MessageHandler_Config_NonPositiveLEDUpdatePeriod)          \
+  X(FMW_Result_Error_Command_NotRecognized)                                     \
+  X(FMW_Result_Error_Command_NotAvailable)                                      \
   X(FMW_Result_COUNT)
 
 typedef uint8_t FMW_Result;
index 0498071b164f23cf0f1ef9bd3e84789eaa74da02..e23c6280028f04028807321b771c3e84d38f2ff6 100644 (file)
@@ -164,7 +164,7 @@ static volatile int32_t ticks_left  = 0;
 static volatile int32_t ticks_right = 0;\r
 static volatile FMW_Message uart_message_buffer = {0};\r
 static volatile uint32_t time_last_motors = 0;\r
-static volatile FMW_Mode current_mode = FMW_Mode_Init;\r
+static volatile FMW_Mode current_mode = FMW_Mode_Config;\r
 \r
 /* USER CODE END PV */\r
 \r
@@ -800,7 +800,7 @@ static void MX_GPIO_Init(void)
 void start(void) {\r
   // Enables UART RX interrupt\r
   HAL_UART_Receive_DMA(UART_MESSANGER_HANDLE, (uint8_t*)&uart_message_buffer, sizeof uart_message_buffer);\r
-  for (; current_mode == FMW_Mode_Init; );\r
+  for (; current_mode == FMW_Mode_Config; );\r
 \r
   fmw_encoder_init(encoders.values, ENCODER_COUNT);\r
   fmw_motor_init(motors.values, MOTOR_COUNT);\r
@@ -817,7 +817,7 @@ void start(void) {
 \r
   for (;;) {\r
     switch (current_mode) {\r
-    case FMW_Mode_Init: {\r
+    case FMW_Mode_Config: {\r
     } break;\r
     case FMW_Mode_Run: {\r
       static uint32_t time_last_led_update = 0;\r
@@ -844,24 +844,24 @@ FMW_Result message_handler(FMW_Message *msg, CRC_HandleTypeDef *hcrc) {
 \r
   FMW_Result result = FMW_Result_Ok;\r
   switch (current_mode) {\r
-  case FMW_Mode_Init: {\r
+  case FMW_Mode_Config: {\r
     switch (msg->header.type) {\r
     case FMW_MessageType_StateChange_Run: {\r
       current_mode = FMW_Mode_Run;\r
     } break;\r
     case FMW_MessageType_Config_Robot: {\r
       if (!(msg->config_robot.baseline > 0.f)) {\r
-        result = FMW_Result_Error_MessageHandler_Init_NonPositiveBaseline;\r
+        result = FMW_Result_Error_MessageHandler_Config_NonPositiveBaseline;\r
         goto msg_contains_error;\r
       }\r
       if (!(msg->config_robot.wheel_circumference_left > 0.f &&\r
             msg->config_robot.wheel_circumference_right > 0.f)) {\r
-        result = FMW_Result_Error_MessageHandler_Init_NonPositiveWheelCircumference;\r
+        result = FMW_Result_Error_MessageHandler_Config_NonPositiveWheelCircumference;\r
         goto msg_contains_error;\r
       }\r
       if (!(msg->config_robot.ticks_per_revolution_left > 0 &&\r
             msg->config_robot.ticks_per_revolution_right > 0)) {\r
-        result = FMW_Result_Error_MessageHandler_Init_NonPositiveTicksPerRevolution;\r
+        result = FMW_Result_Error_MessageHandler_Config_NonPositiveTicksPerRevolution;\r
         goto msg_contains_error;\r
       }\r
 \r
@@ -878,7 +878,7 @@ FMW_Result message_handler(FMW_Message *msg, CRC_HandleTypeDef *hcrc) {
     } break;\r
     case FMW_MessageType_Config_LED: {\r
       if (!(msg->config_led.update_period > 0)) {\r
-        result = FMW_Result_Error_MessageHandler_Init_NonPositiveLEDUpdatePeriod;\r
+        result = FMW_Result_Error_MessageHandler_Config_NonPositiveLEDUpdatePeriod;\r
         goto msg_contains_error;\r
       }\r
 \r
@@ -887,7 +887,7 @@ FMW_Result message_handler(FMW_Message *msg, CRC_HandleTypeDef *hcrc) {
       pled.voltage_hysteresis = msg->config_led.voltage_hysteresis;\r
       led_update_period = msg->config_led.update_period;\r
     } break;\r
-    case FMW_MessageType_Run_GetStatus: // NOTE(lb): allow status messages in init mode?\r
+    case FMW_MessageType_Run_GetStatus: // NOTE(lb): allow status messages in config mode?\r
     case FMW_MessageType_Run_SetVelocity: {\r
       result = FMW_Result_Error_Command_NotAvailable;\r
       goto msg_contains_error;\r
@@ -926,11 +926,11 @@ FMW_Result message_handler(FMW_Message *msg, CRC_HandleTypeDef *hcrc) {
       (void)HAL_UART_Transmit(UART_MESSANGER_HANDLE, (uint8_t*)&msg, sizeof msg, HAL_MAX_DELAY);\r
       return FMW_Result_Ok;\r
     } break;\r
-    case FMW_MessageType_StateChange_Init: {\r
+    case FMW_MessageType_StateChange_Config: {\r
       fmw_encoder_count_reset(&encoders.left);\r
       fmw_encoder_count_reset(&encoders.right);\r
       fmw_motor_brake(motors.values, ARRLENGTH(motors.values));\r
-      current_mode = FMW_Mode_Init;\r
+      current_mode = FMW_Mode_Config;\r
     } break;\r
     case FMW_MessageType_StateChange_Run:\r
     case FMW_MessageType_Config_Robot:\r
index bc7e08e367d3d44269a4da5e22f8705084f3e46a..31842accd82c8be9a9b9e82ade4ac742b6445784 100644 (file)
@@ -187,7 +187,7 @@ int main(void) {
 
   FMW_Message msg_init = {
     .header = {
-      .type = FMW_MessageType_StateChange_Init,
+      .type = FMW_MessageType_StateChange_Config,
       .crc = (uint32_t)-1,
     },
   };