feat(firmware): support rocking-horse workbench delivery

This commit is contained in:
Miayui
2026-09-22 11:15:13 +08:00
parent ba5dfcd6da
commit 4d99702acd
13 changed files with 250 additions and 29 deletions
@@ -5,6 +5,7 @@
#include "motor_control.h"
#include "seat_dynamic_mode_config.h"
#include "seat_feature_profile.h"
#include "seat_motor_manager.h"
#include "seat_move_config.h"
@@ -206,6 +207,12 @@ bool SeatDynamicMode_Start(uint8_t modeId, uint16_t commandSequence)
SeatDynamic_Definition(modeId);
uint8_t motor;
#if !SEAT_FEATURE_ROCKING_HORSE
if(modeId == SEAT_DYNAMIC_MODE_ROCKING_HORSE)
{
return false;
}
#endif
if((definition == NULL) || SeatDynamicMode_IsActive() ||
SeatMotorManager_IsAnyActive())
{
@@ -681,6 +681,13 @@ static bool SeatMove_ParametersValid(const seat_move_command_t *command,
*reject = SEAT_MOVE_REJECT_PARAM_RANGE;
return false;
}
#if !SEAT_FEATURE_ROCKING_HORSE
if(command->paramA == SEAT_DYNAMIC_MODE_ROCKING_HORSE)
{
*reject = SEAT_MOVE_REJECT_BAD_OPCODE;
return false;
}
#endif
break;
case SEAT_MOVE_OPCODE_STOP_DYNAMIC_MODE:
if((command->paramA != 0u) || (command->paramB != 0u))
@@ -9,6 +9,7 @@
#define SEAT_FEATURE_POSITION_CONTROL (1)
#define SEAT_FEATURE_VENTILATION (1)
#define SEAT_FEATURE_HEATING (1)
#define SEAT_FEATURE_ROCKING_HORSE (1)
#if ((SEAT_FEATURE_POSITION_CONTROL != 0) && \
(SEAT_FEATURE_POSITION_CONTROL != 1))
@@ -21,6 +22,13 @@
#error "SEAT_FEATURE_HEATING must be 0 or 1"
#endif
#if ((SEAT_FEATURE_ROCKING_HORSE != 0) && (SEAT_FEATURE_ROCKING_HORSE != 1))
#error "SEAT_FEATURE_ROCKING_HORSE must be 0 or 1"
#endif
#if SEAT_FEATURE_ROCKING_HORSE && !SEAT_FEATURE_POSITION_CONTROL
#error "Rocking-horse mode requires position control"
#endif
#define SEAT_FEATURE_THERMAL \
((SEAT_FEATURE_VENTILATION != 0) || (SEAT_FEATURE_HEATING != 0))