# Fire Gimbal Control — Roadmap

Forward-looking plan for the software/firmware. Present-state docs live alongside
this one ([architecture.md](architecture.md), [modules-reference.md](modules-reference.md),
[known-issues.md](known-issues.md), …); this file records **intent**, not status.
Keep entries dated; move shipped items into the reference docs.

## Near-term / in progress

- **Hardware self-test framework (`test` command).** Modular on-rig validation
  with profiles, on-disk text reports, and baseline/drift comparison — replaces
  `gimbal diag`. Covers gimbal (homing, encoder, friction, backlash, balance), IMU
  (config, health, drift), and host/LattePanda (thermal, disk, memory, load). See
  [test-command.md](test-command.md); tests blocked on not-yet-integrated
  components are tracked in [test-roadmap.md](test-roadmap.md).
  - **Firmware support (next):** a homing-report `HM` line (firmware-measured
    homing duration + endstop counts) and a load-capture `LP` primitive
    (peak/mean CS, SG, PWM during a move) so the friction/balance/homing-time
    metrics come off the firmware clock instead of host `ST` sampling; plus a
    `PING`/`PONG` link-health command for `test system link`.

## Planned components & integrations

- **MQTT → RabbitMQ migration.** Move the control/telemetry channel onto the
  project's RabbitMQ stack. Decision pending between (a) RabbitMQ's MQTT plugin
  (near-zero firmware change, keeps QoS/retain/reconnect) and (b) native AMQP via
  a new `IControlChannel` implementation (richer routing/durable queues, but must
  re-engineer retained "last value" semantics). The abstraction seam already
  exists (`IControlChannel`). _(TODO: confirm approach, target release.)_
- **DHT11 environmental sensor.** Temperature + humidity on the Arduino side; new
  firmware `READ DHT` command, host `env` telemetry, condensation monitoring.
  Enables the `env/dht11` self-test. _(TODO: wiring, sampling cadence.)_
- **RGB camera.** Integrate the production RGB sensor end-to-end (acquire → JXL →
  CamEvent); enables the `camera/rgb` self-test. _(TODO: model/SDK, mounting.)_
- **Thermal camera.** Add the thermal sensor with radiometric handling (NUC,
  temperature range); enables the `camera/thermal` self-test. _(TODO: model/SDK,
  calibration workflow.)_

## Cross-cutting / later

- **Supply-voltage telemetry** (bus-voltage sense → firmware) to enable
  `gimbal/supply` and brown-out detection. _(TODO: hardware path.)_
- **Generic, multi-tower deployment.** Continue removing site-specific
  assumptions (tower identity is already config-driven). _(TODO.)_
- _Stubs to expand: long-term storage/offload, remote update,
  observability/metrics, security hardening._

> Detailed, implementer-ready specs for tests blocked on the above hardware live
> in [test-roadmap.md](test-roadmap.md).
