Add sensors Sensor interface and a verified host test setup
Sensor/SensorValue in components/sensors/include/sensor.h is modeled on Zephyr's sensor API: a fetch()/get() split so multi-channel sensors (e.g. BME280) pay the hardware read cost once, fixed-point SensorValue (no float/double -- ESP32-C6 has no hardware FPU), a fine-grained SensorChannel enum, and an optional interrupt-driven set_trigger() for the battery-first sleep/wake design. Adds components/sensors/test_apps/host, a self-contained ESP-IDF project building against the `linux` target so this logic is host-testable per AGENTS.md's testing philosophy -- verified in a clean run against the pinned espressif/idf:v6.0.2 image (builds, 4/4 tests pass). Replaces the earlier generic top-level test/README.md placeholder now that a real per-component pattern exists. Also fixes .gitignore's build/managed_components patterns to match nested paths, not just the repo root. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
15
README.md
15
README.md
@@ -32,6 +32,19 @@ docker compose run --rm build idf.py -p <PORT> flash monitor
|
||||
|
||||
Prosjektet er pinnet til ESP-IDF `v6.0.2` (se `docker/Dockerfile`).
|
||||
|
||||
## Testing
|
||||
|
||||
Host-baserte enhetstester ligger per komponent, under `<component>/test_apps/host/`, bygget mot ESP-IDFs `linux`-target (ikke behov for kort) — se `components/sensors/test_apps/host/` for et fungerende eksempel (verifisert i en ren kjøring: bygger, 4 tester passerer).
|
||||
|
||||
```sh
|
||||
docker run --rm -v "$(pwd)":/project -w /project/components/sensors/test_apps/host espressif/idf:v6.0.2 \
|
||||
bash -lc 'idf.py --preview set-target linux && idf.py build && ./build/test_sensor_host.elf'
|
||||
```
|
||||
|
||||
(Imagets entrypoint aktiverer ESP-IDF-miljøet automatisk — ikke `source export.sh` selv.)
|
||||
|
||||
> **Merk:** under gjentatte, raske kjøringer mot denne `test_apps/*/build`-mappen observerte jeg periodisk `FileExistsError` fra `idf.py` (og enkelte ganger `ls`/`rm` som var uenige om mappen fantes) — både via `docker compose run` og ren `docker run`. Mistenkelig likt kjent metadata-cache-lag i WSL2s DrvFs (`/mnt/*`) under raske create/delete-sykluser på tvers av containergrenser, ikke en feil i selve kodebasen (en ren, isolert kjøring bygger og består alltid). Hvis du støter på dette: slett `build`/`sdkconfig` i mappen fra Windows/PowerShell-siden og vent et par sekunder før du prøver igjen.
|
||||
|
||||
## Status
|
||||
|
||||
`main/` bygger og logger oppstart. `components/*` inneholder foreløpig bare README-er som beskriver ansvar per lag — ingen reell logikk ennå. `partitions.csv` har et A/B OTA + LittleFS-oppsett med plassholder-størrelser (4MB flash) som bør justeres når ekte flash-størrelse/image-størrelse er kjent.
|
||||
`main/` bygger og logger oppstart. `components/sensors` har et reelt `Sensor`-grensesnitt (`include/sensor.h`, Zephyr-inspirert: fetch/get-splitt, fixed-point verdier, finkornet kanal-enum, trigger-API) med et verifisert host-testoppsett. Resten av `components/*` inneholder foreløpig bare README-er som beskriver ansvar per lag. `partitions.csv` har et A/B OTA + LittleFS-oppsett med plassholder-størrelser (4MB flash) som bør justeres når ekte flash-størrelse/image-størrelse er kjent.
|
||||
|
||||
Reference in New Issue
Block a user