From: LeonardoBizzoni Date: Mon, 23 Feb 2026 09:31:20 +0000 (+0100) Subject: Init mode -> Config mode X-Git-Url: http://git.leonardobizzoni.com/?a=commitdiff_plain;h=73da266ac5e159edae9de697b8f8478765405f24;p=pioneer-stm32 Init mode -> Config mode --- diff --git a/pioneer_controller/Core/Inc/firmware/fmw_core.h b/pioneer_controller/Core/Inc/firmware/fmw_core.h index 2d84ee7..93246fb 100644 --- a/pioneer_controller/Core/Inc/firmware/fmw_core.h +++ b/pioneer_controller/Core/Inc/firmware/fmw_core.h @@ -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, }; diff --git a/pioneer_controller/Core/Inc/firmware/fmw_messages.h b/pioneer_controller/Core/Inc/firmware/fmw_messages.h index 1f97cfa..0d40b14 100644 --- a/pioneer_controller/Core/Inc/firmware/fmw_messages.h +++ b/pioneer_controller/Core/Inc/firmware/fmw_messages.h @@ -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; diff --git a/pioneer_controller/Core/Src/main.c b/pioneer_controller/Core/Src/main.c index 0498071..e23c628 100644 --- a/pioneer_controller/Core/Src/main.c +++ b/pioneer_controller/Core/Src/main.c @@ -164,7 +164,7 @@ static volatile int32_t ticks_left = 0; static volatile int32_t ticks_right = 0; static volatile FMW_Message uart_message_buffer = {0}; static volatile uint32_t time_last_motors = 0; -static volatile FMW_Mode current_mode = FMW_Mode_Init; +static volatile FMW_Mode current_mode = FMW_Mode_Config; /* USER CODE END PV */ @@ -800,7 +800,7 @@ static void MX_GPIO_Init(void) void start(void) { // Enables UART RX interrupt HAL_UART_Receive_DMA(UART_MESSANGER_HANDLE, (uint8_t*)&uart_message_buffer, sizeof uart_message_buffer); - for (; current_mode == FMW_Mode_Init; ); + for (; current_mode == FMW_Mode_Config; ); fmw_encoder_init(encoders.values, ENCODER_COUNT); fmw_motor_init(motors.values, MOTOR_COUNT); @@ -817,7 +817,7 @@ void start(void) { for (;;) { switch (current_mode) { - case FMW_Mode_Init: { + case FMW_Mode_Config: { } break; case FMW_Mode_Run: { static uint32_t time_last_led_update = 0; @@ -844,24 +844,24 @@ FMW_Result message_handler(FMW_Message *msg, CRC_HandleTypeDef *hcrc) { FMW_Result result = FMW_Result_Ok; switch (current_mode) { - case FMW_Mode_Init: { + case FMW_Mode_Config: { switch (msg->header.type) { case FMW_MessageType_StateChange_Run: { current_mode = FMW_Mode_Run; } break; case FMW_MessageType_Config_Robot: { if (!(msg->config_robot.baseline > 0.f)) { - result = FMW_Result_Error_MessageHandler_Init_NonPositiveBaseline; + result = FMW_Result_Error_MessageHandler_Config_NonPositiveBaseline; goto msg_contains_error; } if (!(msg->config_robot.wheel_circumference_left > 0.f && msg->config_robot.wheel_circumference_right > 0.f)) { - result = FMW_Result_Error_MessageHandler_Init_NonPositiveWheelCircumference; + result = FMW_Result_Error_MessageHandler_Config_NonPositiveWheelCircumference; goto msg_contains_error; } if (!(msg->config_robot.ticks_per_revolution_left > 0 && msg->config_robot.ticks_per_revolution_right > 0)) { - result = FMW_Result_Error_MessageHandler_Init_NonPositiveTicksPerRevolution; + result = FMW_Result_Error_MessageHandler_Config_NonPositiveTicksPerRevolution; goto msg_contains_error; } @@ -878,7 +878,7 @@ FMW_Result message_handler(FMW_Message *msg, CRC_HandleTypeDef *hcrc) { } break; case FMW_MessageType_Config_LED: { if (!(msg->config_led.update_period > 0)) { - result = FMW_Result_Error_MessageHandler_Init_NonPositiveLEDUpdatePeriod; + result = FMW_Result_Error_MessageHandler_Config_NonPositiveLEDUpdatePeriod; goto msg_contains_error; } @@ -887,7 +887,7 @@ FMW_Result message_handler(FMW_Message *msg, CRC_HandleTypeDef *hcrc) { pled.voltage_hysteresis = msg->config_led.voltage_hysteresis; led_update_period = msg->config_led.update_period; } break; - case FMW_MessageType_Run_GetStatus: // NOTE(lb): allow status messages in init mode? + case FMW_MessageType_Run_GetStatus: // NOTE(lb): allow status messages in config mode? case FMW_MessageType_Run_SetVelocity: { result = FMW_Result_Error_Command_NotAvailable; goto msg_contains_error; @@ -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); return FMW_Result_Ok; } break; - case FMW_MessageType_StateChange_Init: { + case FMW_MessageType_StateChange_Config: { fmw_encoder_count_reset(&encoders.left); fmw_encoder_count_reset(&encoders.right); fmw_motor_brake(motors.values, ARRLENGTH(motors.values)); - current_mode = FMW_Mode_Init; + current_mode = FMW_Mode_Config; } break; case FMW_MessageType_StateChange_Run: case FMW_MessageType_Config_Robot: diff --git a/pioneer_workstation/src/main.c b/pioneer_workstation/src/main.c index bc7e08e..31842ac 100644 --- a/pioneer_workstation/src/main.c +++ b/pioneer_workstation/src/main.c @@ -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, }, };