# Self-contained T2G seat-controller firmware `Seat_Controller_demo/` is the repository-owned IAR project used by the real seat-bench executor. It contains the 2026-07-30 heater, ventilation, four-axis time/position motion, SMV8 position memory, Hall feedback and ADC current-diagnostic code. `Passenger_Seat_Timed_Controller_demo/` is the separately buildable passenger-seat variant. Its CAN application exposes four-axis timed movement only; position, homing, calibration, dynamic-mode and thermal commands are not linked into the application. See its `Docs/README_Passenger_Seat_Timed_Controller.md` for the command contract and generated HEX identity (`PST1`). The matching Cypress 7.9.0 build dependencies are vendored beside it: ```text firmware/t2g/ ├── common/ ├── tviibh8m/ ├── Seat_Controller_demo/ └── Passenger_Seat_Timed_Controller_demo/ ``` This preserves the IAR project's `../../common` and `../../tviibh8m` paths and removes any dependency on the original Desktop SDK directory. The applicable vendor terms are retained in `CYPRESS_SDK_LICENSE.txt`. An IAR installation is still a toolchain prerequisite, just as the ZLG driver remains a CAN-adapter prerequisite; neither is project source data. Build without flashing: ```powershell powershell -ExecutionPolicy Bypass -File .\tools\build_seat_firmware.ps1 ``` Set `COGNITIVE_AGENT_IAR_BUILD` or pass `-IarBuild` when `iarbuild.exe` is not at a standard location. The script stages the project beside repository-local vendor junctions, copies the resulting HEX/OUT back, removes build products, and never opens a debug probe. The latest firmware uses periodic CAN `0x304`/`0x305` for motor and thermal current diagnostics. The backend therefore verifies it passively by observing `0x301` through `0x305`, `0x4FA`, all four motor IDs and MaxHall `480/374/917/647`; it sends no identity request and no actuator frame during verification. When real hardware execution is enabled, automatic programming defaults to enabled and uses `IAR/Seat_Controller_program.mac` to force outputs safe before download. A missing protocol signature triggers programming, a boot wait and passive re-verification before the original request continues. Set `COGNITIVE_AGENT_SEAT_AUTO_FLASH_ENABLED=false` to opt out explicitly; dry-run execution never programs hardware.