feat: validate real-bench seat orchestration and self-repair
This commit is contained in:
@@ -30,7 +30,13 @@
|
||||
#define SEAT_BACKREST_HEATER_DEFAULT_LEVEL (0u)
|
||||
|
||||
#define SEAT_BACKREST_HEATER_TASK_PERIOD_US (1000u)
|
||||
#define SEAT_BACKREST_HEATER_SENSE_SAMPLE_MS (10u)
|
||||
/*
|
||||
* Do not sample at the 10 ms PWM period. Equal periods phase-lock the ADC
|
||||
* to one PWM point and can report zero current continuously for a healthy
|
||||
* low-duty heater. Seven milliseconds walks through every PWM phase while
|
||||
* remaining slow enough for the existing SAR ADC service.
|
||||
*/
|
||||
#define SEAT_BACKREST_HEATER_SENSE_SAMPLE_MS (7u)
|
||||
#define SEAT_BACKREST_HEATER_SENSE_MAX_ERRORS (3u)
|
||||
#define SEAT_BACKREST_HEATER_MAX_ACTIVE_TIME_MS (600000u)
|
||||
|
||||
|
||||
@@ -29,18 +29,22 @@
|
||||
#define SEAT_MOVE_M0_DEFAULT_TIMEOUT_MS (12000u)
|
||||
#define SEAT_MOVE_M1_DEFAULT_TIMEOUT_MS (8000u)
|
||||
#define SEAT_MOVE_M2_DEFAULT_TIMEOUT_MS (12000u)
|
||||
#define SEAT_MOVE_M3_DEFAULT_TIMEOUT_MS (10000u)
|
||||
#define SEAT_MOVE_M3_DEFAULT_TIMEOUT_MS (30000u)
|
||||
#define SEAT_MOVE_M0_DEFAULT_DUTY_PERCENT (90u)
|
||||
#define SEAT_MOVE_M1_DEFAULT_DUTY_PERCENT (90u)
|
||||
#define SEAT_MOVE_M2_DEFAULT_DUTY_PERCENT (90u)
|
||||
#define SEAT_MOVE_M3_DEFAULT_DUTY_PERCENT (90u)
|
||||
/* The connected loaded legrest leaves its hard stop more reliably at the
|
||||
* empirically verified diagnostic PWM than at maximum PWM. It is selected
|
||||
* only after a supervised endpoint-departure attempt produced no Hall edge. */
|
||||
#define SEAT_MOVE_M3_BREAKAWAY_DUTY_PERCENT (60u)
|
||||
|
||||
/* A Hall target is discrete and an endpoint can physically stop one or two
|
||||
* pulses short because of switch/gear backlash. If a position move is
|
||||
* already this close when an endpoint/stall event stops the bridge, classify
|
||||
* the requested position as reached instead of retrying and latching STALL.
|
||||
/* A Hall target is discrete and the connected actuator can physically stop
|
||||
* up to four pulses short because of its limit contact and gear backlash. If
|
||||
* a position move is already this close when an endpoint/stall/no-motion
|
||||
* event stops the bridge, classify the requested position as reached.
|
||||
* The raw lastMotorEvent remains available in 0x303 for diagnosis. */
|
||||
#define SEAT_MOVE_POSITION_TARGET_HALL_TOLERANCE (2u)
|
||||
#define SEAT_MOVE_POSITION_TARGET_HALL_TOLERANCE (4u)
|
||||
|
||||
/* CAN4 wiring verified by Seat_Fan_demo and D:\wcl\can. P3.1 is shared with
|
||||
* the DRV8718 DVDD enable on this board; both users require it to remain high. */
|
||||
@@ -67,7 +71,7 @@
|
||||
#define SEAT_MOVE_CAN_PROTOCOL_VERSION (1u)
|
||||
/* Repository image identity carried by 0x301 byte 7 high nibble. Increment
|
||||
* whenever a host-visible safety or motion fix requires automatic reflash. */
|
||||
#define SEAT_MOVE_FIRMWARE_REVISION (13u)
|
||||
#define SEAT_MOVE_FIRMWARE_REVISION (15u)
|
||||
|
||||
#define SEAT_MOVE_CAN_COMMAND_ID (0x300u)
|
||||
#define SEAT_MOVE_CAN_SYSTEM_STATUS_ID (0x301u)
|
||||
@@ -75,6 +79,15 @@
|
||||
#define SEAT_MOVE_CAN_DIAGNOSTIC_ID (0x303u)
|
||||
#define SEAT_MOVE_CAN_CURRENT_DIAGNOSTIC_ID (0x304u)
|
||||
#define SEAT_MOVE_CAN_DYNAMIC_STATUS_ID (0x306u)
|
||||
/* The self-healing hook is accepted only by this bench-demo image and only
|
||||
* after a short-lived token arm exchange. */
|
||||
#define SEAT_MOVE_CAN_HIL_SELF_HEAL_REQUEST_ID (0x2F0u)
|
||||
#define SEAT_MOVE_CAN_HIL_SELF_HEAL_RESPONSE_ID (0x2F1u)
|
||||
#define SEAT_MOVE_HIL_ARM_WINDOW_MS (30000u)
|
||||
#define SEAT_MOVE_HIL_WDT_MAGIC_BREG_INDEX (0u)
|
||||
#define SEAT_MOVE_HIL_WDT_TOKEN_BREG_INDEX (1u)
|
||||
#define SEAT_MOVE_HIL_WDT_CHECK_BREG_INDEX (2u)
|
||||
#define SEAT_MOVE_HIL_WDT_MARKER (0x48494C36u) /* "HIL6" */
|
||||
#define SEAT_MOVE_SYSTEM_STATUS_PERIOD_MS (100u)
|
||||
#define SEAT_MOVE_DYNAMIC_STATUS_PERIOD_MS (100u)
|
||||
/* Native dynamic modes are bounded independently of the host process. The
|
||||
@@ -160,7 +173,9 @@
|
||||
(SEAT_MOVE_CAN_MOTOR_STATUS_ID > 0x7FFu) || \
|
||||
(SEAT_MOVE_CAN_DIAGNOSTIC_ID > 0x7FFu) || \
|
||||
(SEAT_MOVE_CAN_CURRENT_DIAGNOSTIC_ID > 0x7FFu) || \
|
||||
(SEAT_MOVE_CAN_DYNAMIC_STATUS_ID > 0x7FFu))
|
||||
(SEAT_MOVE_CAN_DYNAMIC_STATUS_ID > 0x7FFu) || \
|
||||
(SEAT_MOVE_CAN_HIL_SELF_HEAL_REQUEST_ID > 0x7FFu) || \
|
||||
(SEAT_MOVE_CAN_HIL_SELF_HEAL_RESPONSE_ID > 0x7FFu))
|
||||
#error "Seat movement CAN identifiers must be 11-bit standard IDs."
|
||||
#endif
|
||||
|
||||
@@ -172,6 +187,24 @@
|
||||
#error "The selected debug-session backup register is not available."
|
||||
#endif
|
||||
|
||||
#if ((SEAT_MOVE_HIL_WDT_MAGIC_BREG_INDEX >= SRSS_BACKUP_NUM_BREG) || \
|
||||
(SEAT_MOVE_HIL_WDT_TOKEN_BREG_INDEX >= SRSS_BACKUP_NUM_BREG) || \
|
||||
(SEAT_MOVE_HIL_WDT_CHECK_BREG_INDEX >= SRSS_BACKUP_NUM_BREG) || \
|
||||
(SEAT_MOVE_HIL_WDT_MAGIC_BREG_INDEX == \
|
||||
SEAT_MOVE_DEBUG_SESSION_BREG_INDEX) || \
|
||||
(SEAT_MOVE_HIL_WDT_TOKEN_BREG_INDEX == \
|
||||
SEAT_MOVE_DEBUG_SESSION_BREG_INDEX) || \
|
||||
(SEAT_MOVE_HIL_WDT_CHECK_BREG_INDEX == \
|
||||
SEAT_MOVE_DEBUG_SESSION_BREG_INDEX) || \
|
||||
(SEAT_MOVE_HIL_WDT_MAGIC_BREG_INDEX == \
|
||||
SEAT_MOVE_HIL_WDT_TOKEN_BREG_INDEX) || \
|
||||
(SEAT_MOVE_HIL_WDT_MAGIC_BREG_INDEX == \
|
||||
SEAT_MOVE_HIL_WDT_CHECK_BREG_INDEX) || \
|
||||
(SEAT_MOVE_HIL_WDT_TOKEN_BREG_INDEX == \
|
||||
SEAT_MOVE_HIL_WDT_CHECK_BREG_INDEX))
|
||||
#error "The HIL WDT credential requires three dedicated backup registers."
|
||||
#endif
|
||||
|
||||
#if ((SEAT_MOVE_MOTOR_CURRENT_SAMPLE_MS == 0u) || \
|
||||
(SEAT_MOVE_MOTOR_CURRENT_MAX_AGE_MS < \
|
||||
SEAT_MOVE_MOTOR_CURRENT_SAMPLE_MS) || \
|
||||
|
||||
Reference in New Issue
Block a user