#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) \
#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;
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
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
\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
\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
} 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
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
(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