feat: complete dual-seat whole-vehicle orchestration

This commit is contained in:
vee
2026-08-12 15:12:40 +08:00
parent 32379a1573
commit 9ce64b3a01
62 changed files with 9741 additions and 3950 deletions
@@ -33,11 +33,14 @@
#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)
#define SEAT_MOVE_M3_DEFAULT_DUTY_PERCENT (50u)
/* M3 is the loaded legrest linkage. The standalone angle-test firmware
* proves sustained Hall travel at 50% duty, while the former 90% command
* makes the connected actuator stop driving after roughly 70 pulses even
* though the ECU continues to request PWM. Keep normal and endpoint-
* departure motion on the same verified bench duty so absolute requests do
* not trip that internal/mechanical protection window. */
#define SEAT_MOVE_M3_BREAKAWAY_DUTY_PERCENT (50u)
/* 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
@@ -79,6 +82,12 @@
#define SEAT_MOVE_CAN_DIAGNOSTIC_ID (0x303u)
#define SEAT_MOVE_CAN_CURRENT_DIAGNOSTIC_ID (0x304u)
#define SEAT_MOVE_CAN_DYNAMIC_STATUS_ID (0x306u)
/* Repository-image identity. The legacy four-bit revision in 0x301 is
* already at 15, so 0x307 carries an independently incremented build ID.
* This lets the headless runtime distinguish the current image from an older
* revision-15 image or from a temporary standalone motor-test image. */
#define SEAT_MOVE_CAN_FIRMWARE_ID_ID (0x307u)
#define SEAT_MOVE_FIRMWARE_BUILD_ID (16u)
/* 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)
@@ -174,6 +183,7 @@
(SEAT_MOVE_CAN_DIAGNOSTIC_ID > 0x7FFu) || \
(SEAT_MOVE_CAN_CURRENT_DIAGNOSTIC_ID > 0x7FFu) || \
(SEAT_MOVE_CAN_DYNAMIC_STATUS_ID > 0x7FFu) || \
(SEAT_MOVE_CAN_FIRMWARE_ID_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."
@@ -183,6 +193,10 @@
#error "The firmware revision must fit in the 0x301 high nibble."
#endif
#if (SEAT_MOVE_FIRMWARE_BUILD_ID > 0xFFu)
#error "The firmware build ID must fit in the 0x307 build byte."
#endif
#if (SEAT_MOVE_DEBUG_SESSION_BREG_INDEX >= SRSS_BACKUP_NUM_BREG)
#error "The selected debug-session backup register is not available."
#endif