FMW_InitInfo fmw_info = {\r
.motors = motors.values,\r
.motors_count = ARRLENGTH(motors.values),\r
+ .encoders = encoders.values,\r
+ .encoders_count = ARRLENGTH(encoders.values),\r
.emergency = {\r
.timer = &htim7,\r
.on_begin = emergency_mode_begin,\r
case FMW_Mode_Config: {\r
switch (msg->header.type) {\r
case FMW_MessageType_ModeChange_Run: {\r
- fmw_encoders_init();\r
- fmw_motors_init();\r
- fmw_led_init(&pled);\r
+ result = fmw_encoders_init(); if (result != FMW_Result_Ok) { goto msg_contains_error; }\r
+ result = fmw_motors_init(); if (result != FMW_Result_Ok) { goto msg_contains_error; }\r
+ result = fmw_led_init(&pled); if (result != FMW_Result_Ok) { goto msg_contains_error; }\r
\r
// Right and left motors have the same parameters\r
pid_max = (int32_t)htim4.Instance->ARR;\r
HAL_StatusTypeDef timer_status = HAL_TIM_Base_Start_IT(&htim6);\r
FMW_ASSERT(timer_status == HAL_OK);\r
\r
- fmw_mode_transition(FMW_Mode_Run);\r
+ FMW_ASSERT(fmw_mode_transition(FMW_Mode_Run) == FMW_Result_Ok);\r
} break;\r
case FMW_MessageType_Config_Robot: {\r
if (!(msg->config_robot.baseline > 0.f)) {\r
\r
int32_t ticks_measured_left = 0;\r
int32_t ticks_measured_right = 0;\r
- fmw_encoder_count_get(&encoders.left, &ticks_measured_left);\r
- fmw_encoder_count_get(&encoders.right, &ticks_measured_right);\r
+ result = fmw_encoder_count_get(&encoders.left, &ticks_measured_left); if (result != FMW_Result_Ok) { goto msg_contains_error; }\r
+ result = fmw_encoder_count_get(&encoders.right, &ticks_measured_right); if (result != FMW_Result_Ok) { goto msg_contains_error; }\r
\r
int32_t current_ticks_left = ticks_left + ticks_measured_left;\r
int32_t current_ticks_right = ticks_right + ticks_measured_right;\r
} break;\r
case FMW_MessageType_ModeChange_Config: {\r
fmw_motors_stop();\r
- fmw_encoder_count_reset(&encoders.left);\r
- fmw_encoder_count_reset(&encoders.right);\r
+ result = fmw_encoder_count_reset(&encoders.left); if (result != FMW_Result_Ok) { goto msg_contains_error; }\r
+ result = fmw_encoder_count_reset(&encoders.right); if (result != FMW_Result_Ok) { goto msg_contains_error; }\r
\r
- fmw_encoders_deinit();\r
- fmw_motors_deinit();\r
- fmw_led_deinit(&pled);\r
+ result = fmw_encoders_deinit(); if (result != FMW_Result_Ok) { goto msg_contains_error; }\r
+ result = fmw_motors_deinit(); if (result != FMW_Result_Ok) { goto msg_contains_error; }\r
+ result = fmw_led_deinit(&pled); if (result != FMW_Result_Ok) { goto msg_contains_error; }\r
\r
HAL_StatusTypeDef timer_status = HAL_TIM_Base_Stop_IT(&htim6);\r
FMW_ASSERT(timer_status == HAL_OK);\r
\r
- fmw_mode_transition(FMW_Mode_Config);\r
+ FMW_ASSERT(fmw_mode_transition(FMW_Mode_Config) == FMW_Result_Ok);\r
} break;\r
case FMW_MessageType_Emergency_Begin: {\r
fmw_emergency_begin();\r