You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CLAUDE.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,6 +39,10 @@ The radar SKUs are all S3: `blipscope-s3-146` (Waveshare ESP32-S3-Touch-LCD-1.46
39
39
-**OTA channel:**`-DFW_OTA_PREFIX="eam-"` makes [OtaUpdater](src/OtaUpdater.cpp) fetch `firmware-eam-<slug>.bin`, so an EAM device never pulls a radar image for the same board. The shared `version.txt` gate is unchanged.
40
40
- The config web page is feature-gated in [ConfigurationWebServer.cpp](src/ConfigurationWebServer.cpp) (`#ifdef FEATURE_EAM`): the EAM form + its NVS keys instead of the radar form; the shell (mDNS, `/reset-wifi`, save flag, secret masking) is shared. Adding an EAM SKU = a variant header + an `[env:*]` (with `-DFEATURE_EAM`, the `build_src_filter`, and `FW_OTA_PREFIX`) + a CI row whose slug is `eam-<board>`.
41
41
42
+
## FEATURE_SPACE — a third product (Spacescope)
43
+
44
+
`-DFEATURE_SPACE` (set on the `blipscope-space-*` envs) swaps the radar app for **Spacescope** — a desk window onto live space data (ISS, rocket launches, space weather, deep-space probes) — built from the same boards and the same shared infra as the radar and EAM. It compiles **no** radar/aircraft or EAM code: the SPACE env's `build_src_filter` drops the radar-only TUs **and** `src/eam/`, `[common]` drops `src/space/` from the radar builds (and the EAM env drops it too), and [main.cpp](src/main.cpp) picks `SpaceManager` vs `EamManager` vs `AircraftManager` at compile time (same `Initialise/Update/Draw` surface). Everything Spacescope lives in [src/space/](src/space/). The config page gains a `#elif defined(FEATURE_SPACE)` branch alongside the EAM one in [ConfigurationWebServer.cpp](src/ConfigurationWebServer.cpp). OTA channel: `-DFW_OTA_PREFIX="space-"` (its own `firmware-space-<slug>.bin`). It pulls directly from free public space APIs and **bakes in no backend**; the optional `valar-space-feed` backend is the runtime `space-base-url` config (default empty, from the `SPACE_FEED_BASE` flag). **Status: Stage-1 skeleton** — the product gate, config form, OTA channel, and the rotation/touch/brightness shell with a splash + UTC clock are in; the feed client + data screens land in later stages (each = a feed + a `DrawX()` + a `HasData()` case).
45
+
42
46
## The C3's three hard constraints — read before changing memory, networking, or touch
43
47
44
48
These applied to the now-**retired C3 Kit** SKU: a **single-core RISC-V** chip with a tight, fragmenting heap — most non-obvious shared code exists to live within that. The board is gone, but its guards stay in the tree (inert on S3, gated by capability flags), so this section stays as reference and a C3 could be revived: **don't "simplify" the guards away.** The S3 SKUs (dual-core + PSRAM) relax all three (full framebuffer, enrichment always-on, touch and network on separate cores) via the variant's capability flags rather than by deleting the guards:
0 commit comments