53 lines
4.1 KiB
Markdown
53 lines
4.1 KiB
Markdown
# Known Issues — Status
|
|
|
|
This tracks the reproduction blockers and robustness issues identified in the original code and what the
|
|
refactor did about them.
|
|
|
|
## Resolved
|
|
|
|
| # | Original issue | Resolution |
|
|
|---|----------------|------------|
|
|
| 1 | Hardcoded config path (`/home/ggs/...`) | Config search order: `--config` → `$FGC_CONFIG` → `./config.ini` → exe dir → XDG ([src/core/Paths.cpp](../src/core/Paths.cpp)) |
|
|
| 2 | Hardcoded image output path | `[Paths] output_dir` with `~`/`$ENV` expansion + sensible default |
|
|
| 3 | Startup scripts with `~/projects/...` | Replaced by path-independent [scripts/run.sh](../scripts/run.sh) + [systemd unit](../scripts/fire-gimbal-control.service) |
|
|
| 4 | Vimba X required to build | `WITH_VIMBA` CMake option (default ON); `OFF` builds a mock-only binary |
|
|
| 5 | No hardware path; exits if MQTT down | Mock implementations + runtime toggles; MQTT failure now logs and continues |
|
|
| 8 | Plaintext MQTT credentials | `$FGC_MQTT_USER`/`$FGC_MQTT_PW` env override; `config.ini` gitignored |
|
|
| 9 | MQTT busy-wait (`while(running);`) | Gone — Paho async client + `set_automatic_reconnect`; no spin thread |
|
|
| 10 | `parser()` missing return | Old parser removed; `parseTelemetryLine` returns `std::optional` cleanly |
|
|
| 11 | Fragile Boost.Spirit command grammar | Replaced by `parseCommand` whitespace tokenizer ([src/core/CommandParser.cpp](../src/core/CommandParser.cpp)) |
|
|
| 12 | Two divergent `config.ini` files | Single committed `config/config.example.ini`; real configs gitignored |
|
|
| 6 | Telemetry field order: humidity before temperature | **Obsolete** — migrated to the current firmware's `ST` protocol (encoder counts, no environmental fields); humidity/temp/fan are gone |
|
|
| 7 | Trigger fires while `is_moving == 1` (not when stopped) | **Fixed** by the protocol migration — capture is now move → **settle** → trigger; the camera fires only once both axes report standstill at the target ([CaptureScheduler.cpp](../src/core/CaptureScheduler.cpp)) |
|
|
|
|
Also added along the way: a leveled logger, typed/validated config, an SDK-independent core library, and a
|
|
doctest unit-test suite (`ctest`).
|
|
|
|
## Open / needs hardware confirmation
|
|
|
|
| # | Issue | Status |
|
|
|---|-------|--------|
|
|
| 13 | `[Motor]` degrees↔counts calibration | The `config.example.ini` values are **placeholders**. Calibrate `*_counts_per_deg` / `*_zero_count` against real `xenc` readings after homing on the rig. |
|
|
| 14 | Capture sweep untested on hardware | Homing was verified live (see below), but the `MOVE → settle → trigger` sweep was **not** run with `--start`. `kSettleTolCounts` (600) and the per-interval timing in [CaptureScheduler.cpp](../src/core/CaptureScheduler.cpp) still need tuning against observed `ST` behaviour, alongside #13. |
|
|
|
|
## Verification caveats
|
|
|
|
- **Full build verified on the LattePanda**: a `WITH_VIMBA=ON WITH_MQTT=ON` build compiles and links on the
|
|
device (real Vimba X SDK + Paho fetched). The MQTT wrapper also builds on the dev box (GCC 16 / CMake 4 — see
|
|
`cmake/Paho.cmake` for the toolchain-compat shims).
|
|
- **Serial protocol verified live against real firmware** (LattePanda, this session): `ENABLE`/`HOME`/`SPEED`
|
|
reach the firmware, the `ST` telemetry parses with zero unparsed lines across a full session, and a live
|
|
`--init` drove a clean re-home of both axes to `READY`. **Still unverified on hardware:** the capture sweep
|
|
(#14) and real-camera (Vimba) frame capture — earlier tests used `--mock-camera`.
|
|
- **Makefile parity** is moot: the Makefile was removed in favour of CMake, and the full
|
|
`WITH_VIMBA=ON WITH_MQTT=ON` CMake build now runs on the device.
|
|
- **Demo mode** copies `bin/x64/Release/test_smoke.jxl`, resolved relative to the working directory. Run from a
|
|
directory where that path exists, or extend `ImagePipeline::Params::demo_image`.
|
|
|
|
## Possible follow-ups (not done)
|
|
|
|
- Graceful shutdown on SIGINT (currently exit via `exit`/Ctrl-D; a pending `getline` can delay shutdown).
|
|
- Make the camera index→label map and JPEG XL defaults fully config-driven.
|
|
- Reintroduce optional image upload to the ground station, config-driven (the old hardcoded NFS/SMB upload was
|
|
removed).
|