Roadmap¶
Where the Vortex V1 HAL is going, and the known gaps in what is here today. Nothing on this page is a promise of a date; it is the order of work as currently planned.
CANopen device¶
The next large piece of work is making Vortex V1 a CiA 402 servo drive node on its CAN port: one object dictionary as the single source for firmware, EDS file and tools; CANopenNode v4 behind a narrow stack interface; the TMC9660's own loops doing the motion while the ESP32-C6 runs the CiA 402 state machine, limits and faults; and host tests that run the same node against a simulated motor.
| What | Where | State |
|---|---|---|
| CANopen node design: CiA 301 / 402 drive, object dictionary as the single source, threads, wireless access, CAN FD route | canopen-node.md | Draft, under review |
| Drive observability: every TMC9660 parameter, telemetry and fault in the object dictionary, the CLI and a dashboard | drive-observability.md | Draft, under review |
| Header-only contracts (CAN frame, CiA 402 rule table, fault policy, router policy, OD store) with host tests | contracts/ in hardfoc-vortex-v1 |
Merged |
Notes on the current CAN path, hf-utils-canopen and the TMC9660 |
canopen.md | Published |
| CANopenNode sources | third_party/CANopenNode (submodule), built with the HAL's Build CANopenNode slave stack option |
Present |
The HAL's part is small by design: the CAN port stays a BaseCan* from
CommChannelsManager, and the drive talks to the TMC9660 through
MotorController, whose
drive-observability hooks (batched TMCL access, telemetry snapshots with
ages, decoded fault words, parameter-image apply with verification) are what the object dictionary's telemetry,
health and configuration objects are built on.
Another MCU and CAN FD¶
A future Vortex is expected on an STM32 with CAN FD. ADR 0001 records the boundary that makes this a port of four managers rather than a rewrite, and lists what crosses it today.
Known gaps¶
| Gap | Where | Page |
|---|---|---|
hf-core handlers (Tmc9660Handler, Bno08xHandler, As5047uHandler, Pcal95555Handler, ...) still create their drivers on the heap at init |
hf-core handlers/ |
ADR 0002 |
| 13 example apps still include HAL internals (handlers, TMC9660 driver headers, the pin map) | tools/lint/hal_boundary_allowlist.txt |
ADR 0001 |