From 208cfa500b281bf86664ba49c38682539db91ad1 Mon Sep 17 00:00:00 2001 From: ewowi Date: Mon, 6 Jul 2026 12:36:41 +0200 Subject: [PATCH 1/5] Docs: rename core UI page to services, add card screenshots, home-automation guide MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Restructures the core-services docs (renamed the summary page, fixed broken help-link anchors, split overflowing cards into detail sections), adds a Home automation use-case guide (Homebridge over MQTT + driving Hue lights), and populates the Preview column of the core/driver/container catalog cards with fresh UI screenshots. Also fixes real bugs in the screenshot tool so child and peripheral module cards capture correctly. KPI: 16384lights | PC:666KB | tick:168/92/118/15/2/281/59/17/21/161/116/18/1/37us(FPS:5952/10869/8474/66666/500000/3558/16949/58823/47619/6211/8620/55555/1000000/27027) | ESP32:1369KB | tick:2206us(FPS:453) | heap:158KB Core - main.cpp: repointed the core registerType docPaths — every user-facing module now links to core/services/services.md#anchor (was the stale, unpublished core/.md); FilesystemModule points at core/supporting/supporting.md#filesystem (it's a non-UI engine, moved out of the services table). MqttModule.h + app.js cross-refs follow the rename. These are string-literal/comment changes only — no logic. Docs - Renamed docs/moonmodules/core/ui/ui.md → core/services/services.md ("Core services", matching the folder-named-summary-page convention and pairing with core/supporting/). Added explicit anchors before each ### card so the ? help-link #anchors actually resolve on the rendered catalog page (they were silently broken — the table transform consumes the ### headings). - Split the overflowing MQTT / File Manager / IR cards: moved topics table, Homebridge config, tree/toolbar/editor behaviour, and action/status prose into ## — details sections (linked via ⌄ details), leaving each card a short description + its real controls. Moved Filesystem into supporting.md. Added the File Manager `file browser` surface as a control, and the Drivers `on` (master power) + `brightness` controls. - New use case: docs/usecases/home-automation.md (+ "Use cases" nav entry) — Homebridge over MQTT (install a broker + Homebridge per-OS: Pi / macOS / Windows, then the host-neutral config), driving Hue lights as effect pixels (recommend a 1×N grid), and an "Other platforms" section for Home Assistant etc. - Populated the Preview column of every core-services, driver, and container card with a UI screenshot (services ×10, drivers LED-output, containers Layer/Layers/Layouts/Drivers). Replaced the IR photo (.jpeg) with an actual card screenshot. Backlog: generic control + state MQTT topics (the automation escape hatch). Scripts / MoonDeck - screenshot_modules.py: fixed find_core_module_names to RECURSE the tree (Network's children Mqtt/Devices/Improv were invisible to a flat scan → "not in state"); added CORE_NAV_ROOT so a child module captures as its OWN card (nav to parent, screenshot the child) instead of nested in the parent; extended CORE_MODULES with the new modules. Peripheral cards (Audio/I2C/IR/Improv/RmtLed) captured against real ESP32 boards, the rest against a desktop server. Light domain - deviceModels.json: the Shelly model runs RainbowEffect (was SolidEffect). Co-Authored-By: Claude Opus 4.8 --- README.md | 4 +- docs/architecture.md | 4 +- docs/assets/core/AudioModule.png | Bin 0 -> 31481 bytes docs/assets/core/DevicesModule.png | Bin 0 -> 37983 bytes docs/assets/core/FileManagerModule.png | Bin 0 -> 74991 bytes docs/assets/core/FirmwareUpdateModule.png | Bin 18823 -> 23311 bytes docs/assets/core/I2cScanModule.png | Bin 0 -> 11552 bytes docs/assets/core/ImprovProvisioningModule.png | Bin 0 -> 9259 bytes docs/assets/core/IrModule.jpeg | Bin 40366 -> 0 bytes docs/assets/core/IrModule.png | Bin 0 -> 26088 bytes docs/assets/core/MqttModule.png | Bin 0 -> 11665 bytes docs/assets/core/NetworkModule.png | Bin 14112 -> 65906 bytes docs/assets/core/SystemModule.png | Bin 28802 -> 26707 bytes docs/assets/light/Drivers.png | Bin 0 -> 49033 bytes docs/assets/light/Layer.png | Bin 0 -> 18657 bytes docs/assets/light/Layers.png | Bin 0 -> 26341 bytes docs/assets/light/Layouts.png | Bin 0 -> 20418 bytes .../light/drivers/NetworkSendDriver.png | Bin 12379 -> 16549 bytes docs/assets/light/drivers/PreviewDriver.png | Bin 10413 -> 6235 bytes docs/assets/light/drivers/RmtLedDriver.png | Bin 0 -> 13675 bytes docs/assets/light/effects/FireEffect.png | Bin 13549 -> 11775 bytes docs/assets/light/effects/LavaLampEffect.png | Bin 13522 -> 13724 bytes docs/assets/light/effects/LinesEffect.png | Bin 9101 -> 9137 bytes docs/assets/light/effects/MetaballsEffect.png | Bin 13361 -> 15120 bytes docs/assets/light/effects/NoiseEffect.png | Bin 10000 -> 10390 bytes docs/assets/light/effects/ParticlesEffect.png | Bin 15803 -> 16066 bytes docs/assets/light/effects/PlasmaEffect.png | Bin 15247 -> 15359 bytes docs/assets/light/effects/RainbowEffect.png | Bin 9401 -> 9405 bytes docs/assets/light/effects/RingsEffect.png | Bin 14849 -> 14978 bytes docs/assets/light/effects/RipplesEffect.png | Bin 11003 -> 11166 bytes docs/assets/light/effects/SpiralEffect.png | Bin 12804 -> 12988 bytes docs/assets/light/layouts/GridLayout.png | Bin 9579 -> 11386 bytes .../light/modifiers/CheckerboardModifier.png | Bin 9603 -> 9566 bytes .../light/modifiers/MultiplyModifier.png | Bin 16018 -> 16148 bytes docs/assets/ui/moondeck_esp32.png | Bin 48570 -> 57075 bytes docs/assets/ui/moondeck_live.png | Bin 47118 -> 96512 bytes docs/assets/ui/moondeck_pc.png | Bin 53481 -> 58939 bytes docs/assets/ui/ui_overview.png | Bin 107100 -> 140002 bytes docs/backlog/README.md | 2 +- docs/backlog/backlog-core.md | 25 ++- docs/gettingstarted.md | 10 +- .../core/{ui/ui.md => services/services.md} | 170 +++++++++++------- .../moonmodules/core/supporting/supporting.md | 10 ++ docs/moonmodules/light/drivers/drivers.md | 2 + .../light/supporting/supporting.md | 10 ++ docs/usecases/home-automation.md | 149 +++++++++++++++ mkdocs.yml | 4 +- moondeck/docs/mkdocs_hooks.py | 8 +- moondeck/docs/screenshot_modules.py | 54 +++++- src/core/MqttModule.h | 2 +- src/main.cpp | 24 +-- src/ui/app.js | 2 +- web-installer/deviceModels.json | 4 +- 53 files changed, 380 insertions(+), 104 deletions(-) create mode 100644 docs/assets/core/AudioModule.png create mode 100644 docs/assets/core/DevicesModule.png create mode 100644 docs/assets/core/FileManagerModule.png create mode 100644 docs/assets/core/I2cScanModule.png create mode 100644 docs/assets/core/ImprovProvisioningModule.png delete mode 100644 docs/assets/core/IrModule.jpeg create mode 100644 docs/assets/core/IrModule.png create mode 100644 docs/assets/core/MqttModule.png create mode 100644 docs/assets/light/Drivers.png create mode 100644 docs/assets/light/Layer.png create mode 100644 docs/assets/light/Layers.png create mode 100644 docs/assets/light/Layouts.png create mode 100644 docs/assets/light/drivers/RmtLedDriver.png rename docs/moonmodules/core/{ui/ui.md => services/services.md} (70%) create mode 100644 docs/usecases/home-automation.md diff --git a/README.md b/README.md index 0f3e1900..830c7765 100644 --- a/README.md +++ b/README.md @@ -32,9 +32,9 @@ If you like projectMM, give it a ⭐️, fork it, or open an issue or pull reque 🎵 **Audio-reactive**: an I²S microphone drives a 16-band FFT spectrum + sound level, consumed by audio-reactive effects — all built fresh from the mic datasheet and textbook DSP. -🏠 **Home-automation control**: a device joins Homebridge (and any MQTT hub) over a dependency-free MQTT 3.1.1 client — on/off, brightness, and a HomeKit colour wheel that picks the nearest palette. See [the MQTT module docs](docs/moonmodules/core/ui/ui.md#mqtt). +🏠 **Home-automation control**: a device joins Homebridge (and any MQTT hub) over a dependency-free MQTT 3.1.1 client — on/off, brightness, and a HomeKit colour wheel that picks the nearest palette. See [the MQTT module docs](docs/moonmodules/core/services/services.md#mqtt). -📁 **On-device File Manager**: browse and edit the device filesystem from the browser — a lazy folder tree with an inline editor, drag-drop upload, and create/delete, plus [firmware upload OTA](docs/moonmodules/core/ui/ui.md#firmware-update) (flash a `.bin` over the LAN, no USB). See [the File Manager docs](docs/moonmodules/core/ui/ui.md#file-manager). +📁 **On-device File Manager**: browse and edit the device filesystem from the browser — a lazy folder tree with an inline editor, drag-drop upload, and create/delete, plus [firmware upload OTA](docs/moonmodules/core/services/services.md#firmware-update) (flash a `.bin` over the LAN, no USB). See [the File Manager docs](docs/moonmodules/core/services/services.md#file-manager). 🛡️ **Robust to any input**: add, delete, replace, or reconfigure any module in any order, at any grid size, and the device keeps running — degraded or idle, never crashed. Every crash that's ever found becomes a regression test, so it stays fixed. diff --git a/docs/architecture.md b/docs/architecture.md index b6f4649e..2f4e0b09 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -121,7 +121,7 @@ Controls are dynamic: when a value changes, the control set can be rebuilt. A se Prefer `uint8_t` (0–255) for slider controls. Minimises per-control memory, aligns with DMX channel values, keeps the UI range manageable. -Controls are the bridge between the [web UI](moonmodules/core/ui/ui.md) and the running module tree: the UI renders a control from what the MoonModule declares, and a value the user changes there writes straight back into the module's member variable. The exact control types (slider, toggle, colour picker, text input, dropdown) are defined in the [UI spec](moonmodules/core/ui/ui.md). The principle: modules declare what they need, the UI renders it. +Controls are the bridge between the [web UI](moonmodules/core/services/services.md) and the running module tree: the UI renders a control from what the MoonModule declares, and a value the user changes there writes straight back into the module's member variable. The exact control types (slider, toggle, colour picker, text input, dropdown) are defined in the [UI spec](moonmodules/core/services/services.md). The principle: modules declare what they need, the UI renders it. ## Persistence @@ -547,7 +547,7 @@ The UI is **MoonModule-driven**. It contains no hard-coded knowledge of specific Adding a new MoonModule with controls needs **zero changes** to the UI files. This extends to the tree-mutation affordances: which modules accept children (and of what role) comes from each type's `acceptsChildRoles()`, and whether a module can be deleted/replaced comes from its `userEditable()`: both declared on the C++ side and reported in `/api/types` + `/api/state`. The UI hardcodes no list of "which types are containers" or "which roles are editable"; a new container type or a fixed child is a one-line C++ override. -The light domain plugs into the UI at three points: a fixed top-level tree (Layouts / Layers / Drivers pinned in `main.cpp`, root reorder disabled while child reorder works via drag-and-drop), a binary WebSocket preview channel ([PreviewDriver](moonmodules/light/drivers/PreviewDriver.md): a `0x03` coordinate table sent once per LUT rebuild plus per-frame `0x02` RGB point lists, so sparse layouts preview at their real positions), and per-role emoji for the chip filter (the `ROLE_EMOJI` map in `app.js` is the single source of truth: `effect`, `driver`, …, `peripheral`). Full UI spec: [docs/moonmodules/core/ui/ui.md](moonmodules/core/ui/ui.md). +The light domain plugs into the UI at three points: a fixed top-level tree (Layouts / Layers / Drivers pinned in `main.cpp`, root reorder disabled while child reorder works via drag-and-drop), a binary WebSocket preview channel ([PreviewDriver](moonmodules/light/drivers/PreviewDriver.md): a `0x03` coordinate table sent once per LUT rebuild plus per-frame `0x02` RGB point lists, so sparse layouts preview at their real positions), and per-role emoji for the chip filter (the `ROLE_EMOJI` map in `app.js` is the single source of truth: `effect`, `driver`, …, `peripheral`). Full UI spec: [docs/moonmodules/core/services/services.md](moonmodules/core/services/services.md). ## Tag emoji legend diff --git a/docs/assets/core/AudioModule.png b/docs/assets/core/AudioModule.png new file mode 100644 index 0000000000000000000000000000000000000000..a6ce5a1bf559e61e9a6acccfec111bb7d5151292 GIT binary patch literal 31481 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 z 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 KvOwI>@BaV`ASHDG literal 0 HcmV?d00001 diff --git a/docs/assets/core/DevicesModule.png b/docs/assets/core/DevicesModule.png new file mode 100644 index 0000000000000000000000000000000000000000..f5eeece7777e2127565e7d2c14f2fe3b22a516c6 GIT binary patch literal 37983 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 Pl{=DRuSE-l-+KN(oBf%> literal 0 HcmV?d00001 diff --git a/docs/assets/core/FirmwareUpdateModule.png b/docs/assets/core/FirmwareUpdateModule.png index dd214f48b4f86636a0697a3dae621fa84c1a4a5c..70ab5e0d9129cb9d21991b6b0f29afdacc38214c 100644 GIT binary patch literal 23311 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 diff --git a/docs/assets/core/I2cScanModule.png b/docs/assets/core/I2cScanModule.png new file mode 100644 index 0000000000000000000000000000000000000000..04a608be74355a4b4a4f1ea36961c0379b154687 GIT binary patch literal 11552 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 literal 0 HcmV?d00001 diff --git a/docs/assets/core/IrModule.jpeg b/docs/assets/core/IrModule.jpeg deleted file mode 100644 index d40c192e92a891ac9842a6bfa4ae2f6a2b26c700..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40366 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 VD#^`nm>~2!dmfdQl)zsn|Jn6r7(4&~ diff --git a/docs/assets/core/IrModule.png b/docs/assets/core/IrModule.png new file mode 100644 index 0000000000000000000000000000000000000000..a62a09516248e70bcc23f5a51fc679b1b75c4db2 GIT binary patch literal 26088 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 VL9zKjJapuZoRqR;CD0`BKL96Rpcw!F literal 0 HcmV?d00001 diff --git a/docs/assets/core/NetworkModule.png b/docs/assets/core/NetworkModule.png index 4af3b8b60b11b135ba6f0440b769888fc317948f..c18ea36ed6d5be611b309230b8fdba0c35f59496 100644 GIT binary patch literal 65906 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 W{z%Ja8KwZQfc+4W7A_Oi_Wf^fE4s`8 literal 14112 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 literal 28802 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

IqBxi}`+e}Y{V54~Qs-%({J(b3nPrTu;|LVE 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 E2NpeK(EtDd literal 0 HcmV?d00001 diff --git a/docs/assets/light/Layer.png b/docs/assets/light/Layer.png new file mode 100644 index 0000000000000000000000000000000000000000..3a6480b4739ee0e1f3eaa87fd7d3711151f93ac3 GIT binary patch literal 18657 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

6IG(ObIMk+b^qMT^vp!niRjof-Y7XfY|8D!R#O zaS+?NOE^DzihD301F5g~`HLmz!*BVovXVB~ga@>LRxkqP2nl>dsVYt-1!~4>ElVkv z*%ZP*Qe6!$3T4Y~PF??U3Y)f?d2GAH?w@OEVcIrJh@Ro)0v)+h6?}~Y-@>&R%guU? z;$Ks$SOV%`{R&k%0DBNiD7moo! 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 literal 13522 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%0AQX#nVuk;hI7aDvD%v>x`ANEGo~td=~+9irix$d z>!%Kf)to#N-6iVD|Bnm-cp4f{*W7{;^se4MECRp3T#Ni0iq~&);st=HtQIOe$jFQ- zwJG(?nm6$^D^pYNW@cb%Re+XyZnfnX3d($-o@vv4c&B5+t`#IyJGzA#r^yk8@ZAvE z<3hY$(U;o+X8ik65^zpOr$WKcPIt356JJLbz>~7I_5DYrdzsFi;G`sNZS6Xb!}jrU zo?uGJpKE8|x1+3010Kc1tKTjn-h&f={`@;XkHPWvf`JPOk2EvI$;qh+Irx(wS0ZNE z$HgSjB6X zum?Nz$f{K`fWNa5NMIn;$)ggwn}QCmuQO=r7!4SOi-B^1eS?Qdvet#^8&AbI`&CYh zfjh|yfd)|o6U=B~10(QDqo~B^P2XL2(z-TYw&r2!L!3^pY~c4EQEGGMD}QjVhG>_PxZjt!y72^in)pGhR4269K~{5+!I^-{tel*q z`)6Y|%>Q&;aDEGT$N!D#Vq&WU%a}&$$&DpEm_J;GU^m;{3lRrVOg#ltBEx0(&S7mB zQUn{BcK7f!+$J^$V^aO!r*~r^T23i}qo~8kge`=uJTyp&W{8BjYS)jE748}#|lMEugTvI_pu64ktvMfbex}%KS=_tdAxy~0a94N z2N)RXn#4~qBh>!?e8Pe;!nIvdK2I<*C3C<5!ihk6i1GN_B3P`03U6W`{WkCKM&q!L g9|MH{{8_M2tDpV0ZCW!^J}gl3(kfDw5@x~w1-3KGUjP6A literal 9101 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 OV1TkJGPP1>;Qs;k8k5!l diff --git a/docs/assets/light/effects/MetaballsEffect.png b/docs/assets/light/effects/MetaballsEffect.png index a107d66c532b851c7ca0c44acb1a64af2d303048..a8b3cda08472d1d429a20b4df60b579e1f4ead11 100644 GIT binary patch literal 15120 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 U?9vY%{0@Yyq@qNXm{H*W0svwb@Bjb+ literal 13361 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 AZ2$lO diff --git a/docs/assets/light/effects/NoiseEffect.png b/docs/assets/light/effects/NoiseEffect.png index b866669540008e1e65519a0f0bff68c72d1cc7a7..b6e9cb37ca3c07eb97f4d7c82d92fd74d877a146 100644 GIT binary patch literal 10390 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 literal 10000 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 literal 15803 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 diff --git a/docs/assets/light/effects/PlasmaEffect.png b/docs/assets/light/effects/PlasmaEffect.png index 0b7cd2b67cd7ff6a62c73a7adb948597499254ac..b9569cac39885af2d7158900000d255552513bcc 100644 GIT binary patch literal 15359 zcmb`uWl&^alkSVVJ2WnhyEj@`qm4Th?(Xgmjk~+MySrQC?$Ee99RBmp8!B#6=W9KtL0|z7N2FeSLBQ1sgy>P(UO^ z07|YIXPMBB-`E z4kjQ|Z%4E)7ljTcRsb@&hCn?d@<9}cFeV&?LvJAz*C_a)0BeS`=%krhfeI1fI5tqs z7GK|g?sf%`i;ES2u+knki}L5mAE0rOU%>?Q>R!k~5E{aD2&+^C%d$yCP{)boXyG70 zIcy2T=!NT3NlMpO;6otlG2uwh5i^l;!*bv}U@_xJvyfa7YmraU>ocVkfCs|UVnYQ; zNY=ROeJvp({+oqqU@9JmaVQQ+gO}X)Qy^cD?o4nNP%nPQFr`>c<(LgVgmLV3l5Q9k zCcv#H=Wb;Ij7Tg+gjGu7qwo@>c+~V^E*D~SX;m_LROtO8rYKk2690QSOFuH>UD*O? zeB$*Jbzm>ro1=8-X5+w3fwHTYt51wu zL0{QB5y0_&9vk(7>4UL_kxqUa2a{NxoL>Qgfg^Nm*ArSg%t^nF)^m8Jd9BtooAnj(2CWj`;l3t14&uE&F1 z>#Mivt9YA9RB2Fy5;Sr1PEL9yS35($0RnOTa@1PZV6@~?W^x8>xfMeVbG>(0f9o+S zF4=o}q{`JB^zJ6Yz~sd^^BwYBEGj|M{|X8emYl&MB?WTWPEv@+-*>cT9-D6^wZ0L@ z;^M5pAe88aIzYM6za>NdkO5_�}m~@--x7QLWCC=aP~rn?Fc09))zARE5B#oznk& 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 diff --git a/docs/assets/light/effects/RainbowEffect.png b/docs/assets/light/effects/RainbowEffect.png index 29af3f2473714b6331863124995b4938c233e973..3b03d08d53f594454b6c1ec33e0e80f347d26356 100644 GIT binary patch literal 9405 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 literal 9401 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 literal 14849 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 literal 11003 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 diff --git a/docs/assets/light/effects/SpiralEffect.png b/docs/assets/light/effects/SpiralEffect.png index b564f66df89b4921aff26bdd9a6e54297f2d10c2..70153a18d51b8da3ebf4c96eb4a16e01eb7839dd 100644 GIT binary patch literal 12988 zcmb`ub8sfn*DV~|wmos4iEZ2Fgfp>i+qNe5#Cc-dwr%I;_tt&CdjGrMt-Ae3SD)%r zU8hcWuf6tKdxtB^OCZAG!GVB)AWBJ!DuaN4CVgL*z<_<99gHszKtNDHq(p^O-LlTJ zVck@g(x0aE8n5apbo6gx5ZT!cnSX7efstA!0zBu^Z4zBprRGW}mL5;WQ`28cvYXi^ z=r>9%f2{%#FHFgUg0eyU4Vlvh{GK*au(jTNiaoEMq`^!GdJ-t9hqJaEiS3=7E?YIk zpM19t)*X*KUY-hIFc?r_%qS>HV9<=1amK44rX1<<5m^4P@5e4q&-ezRAxh0c01Ux- zd%qv7gOor5Nd}pw6}5%s6FHb1X^uKYiU1YZ`g4aXj`kWU*!X8hp_I04JOJ$AzvdGK zAS)&L74$bM(m)G|;2=OHvR;G5XF=d2ct+wNP$h43p)jHyVX@%Ij)L|EC&LEx z0)V?qlOK1*eiu4520bC1LW%OdW-NOBIZ;WwttY~Hv-#insP4-naF{4ZDF-7*$6Q{25wPslMxUIxBiz9Thb(9t=_X8LQNugFJ}?E4(3gEBe4?@fcKb(2GmYcujJ`-!~=_iDM_eH%qQsz3>pzxuC$JsY7e1L7{{h2y>|7AlwmQ5 zzJPVPx*Ohl&li?b~DJq4GUO^}b|g+HC_c6A0AhBQII^-Yu_kakj* zeAL9L!^DbWqMV~{L1cb9>p9iaIO%{Op(M)rFyXs^LW_U}h}%8$9^8Gsu5ymj+|a?= zvApC0T2Wml?k}Ifcb*#jzlU)G9$u1EKn{EaDCFcYM6Tct0{4D~SvoVBG`ySCFB|kt!e9MuO7SQP zz>wArAZSurZSXKSl97QQ6AC0^5i%|Y>O{nN;GiQxpO#3YC_NgP|Jd0PDg7Wh%z_9? zZnTgo4cR)5i~k@yGVI{S!W0ado)`}=sV}pxdp_H9%~gfIhh5Ru;iguNC_zfC4oCo% zB;8qK4_|C7&?TmH?Ky_kk&oIgiPNJC467zh5gq86yr~DOj|K-P*o;A-d~4)M zFPRTYD>WKPL8EYpgJJ!Mpy)4&z=9%5)Ng=QQ^qnNp)34(I?d!ZCeiQ$u6%<^c*Qrttoc$c@I#f4108*H%Czq*xK`@W^7n|t(QuX^No7`JMZ!GHe27Va8rx3gF?8d%SoWZKetPyAgu zM<^)On-4gL?zdhYDl8 zh7@Zjsy(*zTaokBBz2h=ou%p8e&zg$9r}9fYx8x>YjV-Q*-YGdI92T3H^t9!x2l-Q z8=a?RV?+4GCW%?IboK@%OD7hqUGcsh`1OASciYfm?pO>*!v`~E2wsu*MKDQEQup-p`L0Cr;Q_|~1J4dBjMZb8&y7;~Uk z`{30#r(1$@1xeL`Q#IK5z)8llB zr3wr*nidzNuJ$7g45C(ZcbAgK(rzE(QP*m1MLyq2e-muHN#~f{g+Lu^M>gkQ71rFl zVkoXDlP{OAt5NH+zCBEnQ@dbMeg%>#sZePW?3I8LOP}jELc_3p2oM4Dwn=Q_6^@e) zdHbaFGhE6G8jdq}G|n~7pQHiJv)q93J20M%Ga*M|NfB~0?wSz^D9X_yB_v#S;5lgp zS!i)E4Jk}#h<@5;L`bv!;|7f#lG0-vqT|<1MJwh@LPa#p<-MU#xltnpHEd)ly_RlU zLCJicl4vq~a59H%qs{c$XkDFLv4RHo-5FWsS@g6k9kiaA9G~*>}?QLao}|a_GtM)7F?+nQsdMgrYZW z0(y5FtD^`_bo+Oa6vjUNgCcZGrvX8X=B}aRDL>7Mw^rJ;>3cY?FrdDUem8Q^AQrKTs&gfU6Nu}Xuh>FUY zLtPWa5xAYok4W~ctES~4V)Aw%9dmY!%cbfIJNg4_YN6~vF-}VCdUbhz!@QmuNa9L~ ztF3GZ(8)Fw^oM<{GH<4@rnfjFitsU&RQaRTGHvzL(b8hHOUw7Nt!;O2==nJ!_w~8e z{_k5AK~ z{Jzvp2^Pnz-5Tcnp6UkQHg~qp-hX9w$>JpfPA4CvI!yEP7**MYKU|(|Jf}Lt6QtwJ zB(&U$$BGb_)P0y?AoM$3aw3ReqGybf||Dl;>N1T?+H+M$oLrv@LwHhQIh@p z;!{&E6K>Zz(C>b$3(j_Q2wj>Q$@;Pp7m;WiAgyK~KzE;DtihukpT4#T5z5TXlt6jKKPajL8vf+4)CYLPsL583bEMun5@t)K%yy-QzCn-wXA@ zlt-Cw0jN9}ra#(b!VdcH7jRhxpSPVy0s{Kti3U&b2?A5}1?GGP#KG_A@aV_bts0`^ zFolS0d-7DO4ftysT<-$|JJDUQE>E$z361@GPMi+0vFk`v=FuGCBE8gkaFRQ-v(e%; zX;2)h(-T1I1X%^lN6M@FXv)iyW}(@apaOx9mpgkJmD{SI2#)_WEEia5Vxzb=mwf;| z6!(>q1iQrv7Tq1M!GK`W*A!S5+lB5~ey2~Wc2mo{VlsEjUuL?yYRLve4)kHE>VKXG z^}aYy=JtNS31vbQUAOXlGL>+#eIQA>El-0Bc68tw_A^^YCwjGJJku8Aon z3DTJ2h*Kr1Gn7HRMZzPeU9VKK&rKhPUEme6a>zhqqXiZFd_C?QN6%kgcQl-dZskGV z?xXB@-0SQ8YCAMu0~xdTsA6qP6{ZTod3U4k_VFeby-a1GJ2@uAC1~E_;?)dKGGmT#G4(=1`4SbJ~^@dtETLxiUT>$5RY2PTB zFXIARVMr;NDYxyJE95LRe&}dVWYovkP(_Me4F*H|ti67M4wsOkOf;1B;oete{{@IUAgX_he|0(K>f7ehMlY|_oZnbd6Fe$Svg$g?KEKU zWpm`J$G;Zs;{VkFYQ2o`KBj@2`>V1nrnLyXhv6xtQ zu*pkBK4X4OEUH-VEK8c9mlJDm&vcPTj0uy|Dj6Zl1$jg+aa^}IcWu$IO6JjMvWJ(@ z%A<^BuG3$|UMFNuXRA?DyaG%AFf-C)q)l?vaF@FLxTzz2JR%}|eCvz)*ekHZsXm>v zJT-3OUW`p z-;@f!_Dcl|zv?L1`rA=UM`;egj~gm7(!4)O2!t;pXnXc( zgNh*ZpN$7Rg8sJ_u!1NcnRxb;?Q4GV?kNU#Q)Xi4*>|^3QAp9T z2yL2QJYrnF0%F84!84{b9J(<$5M_pgD&(T-6_BLb_G$ygQ1#C)zKAAJp9uvfOtO)P zOgi6i+NRE_vE?ZvtBOzK>MrsJ9QkWVbEN@H%{Ig5d2;rLNJ>dcS43+o3Jkar_w$HY z3$>SJXT#aP3UbxUZuU>b5N6-LmocpY3t_^0>#KOj%tci`yQNu4^Xg1ne&>irv5a@tm-58aPQg0G!9L z1?=9Nl(uLNO?#^Q^h#s1lMh6>s=i%U{Tq=)G7)aTrH-#^%4>7nCeCej`>VkLTbnP_ zbt<{IKl=B0h2BD@?2Z`G&%V-s9YEj6c4Yny@p>o_Vhkp-&rzx0+(LVAk1A0-jK5wH zcijsu9T$g8iqwh;s7cQY`@4-5NPx>e4_VFce;#C9b-V+=Q0LIfG$ebgqjd`c9P~!S zpUYnY^`Eu)+jjA}+JtR;F0QrjrT6$Eb8&FaSlg+5DgVVl>@VCv3&q?(>FN&_#+CK3 z*1lCD;M=)X8T(@}Qa=yx)JX@iaw^0t@*d)$D)$yd-Ij8AU17I>$y2HGcka9iYaic) z@})XCFFLxuZ^X6;T-~n->ncjZ1(HIw3Af<-gUrpI6iLSSPWBo<#G7J&1s`Y9U#m!xd6%`*HKsb9 zUyFmOH9>=i!F*jRC##UNp}_GO4L!>Sj?i|k#p^O#SbIDu!H}}E`|DmrCv^s3 z>FO2;oL-DxxVqqrPUydkbNKOlDe=4p%mX_kK0P(Z%Pv}+lE=9V9t@s_W!DbhHTUB# zB{=q%)g6)6%}+NTW8!t!&#K9InLR{pxuZ{~^HdVR*6J&Iouaap?)8cM`DI=1)n|KI z=mPKbGP~D~+Zd4>e6xboFELB?mHv_)s zDaDt}kFTpt9iO5Es}{mHNKLOX=_`MxY;;CP@4bT}Bj=sL)f;q~ zufs)T`YP8;NGmbm6SWa}eem`1Bb4bvw1t@5q*{??-{~O+DfSeB8)iB1=D?x#oITUB ze{J>xw`uUyC|G#CY~ba@qtx@2T)6M%GYpfxT6b?hWl#LI1bTg4g=gO3d6=}^^65nX|XfOi3s)Jf7Z~A zIgqjhBmg;r3gHrX&=YvcS)ZOEI=$BO*D^(vC}=cXw}w9pWiSW5MK5pt0c!&%> z|i>q0(@EHRMR?yYGQW<3Ja4Vr)wikEsL{ z{lEs{xE%vh8LlbjB2vC8A z%)k;h9NVdz#y!}X+e^IDygUbgAIuTLwy{V-^SKYoC@+=PhMKhb>ru<=xl`;v2rEHB zvJL6#ourDF*#_@03msBp4s)L<*cK$&)g?n&FkxNM{wD5v zt`JaxU*R^vlEmM2>yA=maOn=aDV+3oYL?5Ojk90BlUn0|Au^_gZUT-cib`fmj$2m4 zEYRTvcPn=5jjH40_7ocq!BHszgl|HDsdL)ZVd!K@kwUUY1NV(V?;1{mc0w2Ag`}+8 z1egkkV8)~HWwb3Ff=cfTkb`Lrnw*|y^tG7BlAa{tm6hJP)^g4AxcDrd`c>vaXuE|x zsNtf$1Ky+%C~)KQVXIW{e%9wPTvuI28_mBQhjFd}K`I)@W)B_c1#fc_LJ@T(R2QjH z(~1~?grXigtvqG%qv*xqK}^xNtHq~d;+ynxwUMPuB4Ob!kHnddFQsmliI|)EL3*XW zrSMatO4=6aqIABlW-~>12VWmKCnlgn8%>$^4Ye%BfbZTC9?ZDP-ClS4qMKc%-a&>HMVGM94r&aRoI5o79Os?I(d31%su{n zGY#4BErRErR1I(RfL-`QdXXJ_@bgI(-{Tft@3cqJH(*9@6A5~pqgTt0@4C;>!3^UP zo5*&TQ=_|v-bqQsI_35jqGnse+^wx?t)GQFjrry=!cZ(E)-FEr*U?9lLaLcsVc6Hd z274Vq?91TH7ewp$Txg*2cHQSoqJc;p(x`cRj1U!uvHJm6q#|Dgs=uGGt{?@;EQCCU zsE{-zc4$AChoMbM8MaiMbnxo-uU=u-cCQuS=49mT;n$UM>-#eRu!wnDFswPs!6Qs~ zB@gi!_5`%PI6lxJFSjFwuQVf$hx=d6${lgvT$l* z{ZuS>w6%lB?#D?ZH}CzN1NW7-WBoWJp4DlGTN~(%i@3(1%xWp;L~rzy$3wjd-6PIzh-KHM3*u9OD&3j8bin>pUVgoE070N+ zAqM&q<2iY1L0#8eU?(9`=)jr%+C(6KYVtl;L>CYZuZ2z+^kK=Ml^pMh@GF8l8Z4<| z3IO#&53_Hpsf1g#)mQ?Tbk@HTBl3`n;c)YMfVt;+@%Hb;&4foP&)NA-5^SnDC|xVz z?p)b>NT>-gft?jBAEX>{EZ7~l-H0bAPz+dO%v5dkD@p5`F-lY}MuUfRK$WZY$!*F- zXiZwBLzkxP0Y?b_C(!jalZaf^sZCpysr`yX)V>W5F&0rT1IOrjX(px>x6kd>p+$xo zm3DES9A9Rbo&D!DAV8XwfoU>8fsgiJ(oi{OKWu5{5P61v;E=SH1^vu9oPta{g&fn| z^MjNb2tb<>lwo5)2?!@eQv}4`U7mg7B;pO-rmQpZHdF1LtCC~bm>#W^KXI|Ki7m>pKIggWvz#C zfLqV$IS_5xyWg6s<86#XLk_k7?>E}oR^iGH(d={`ZrjZiIhhLhk#~e7#s*~9#W!z# zQAIDeO@4h6jO&O17I6~?X%C5C6itA_bqfpV;dqx*0d@Yp=!WrN&ov20>7A@KwvY6vP%KQ* z+CGi>n9V<%4w~R28(14f3U@#m{RPX~x1xFjZ#S%h=~s!?2V3|NBwnMT9yEwFJO9;h z_te2#xb%hgR)_^*j~SV;14u|kQ7POTDCtV(e%nZ-x8@|;CE<8@VKIhw0B+wF84jyEy1-3ghIJ;I>^13&77CX`iaPWp_ z4xJ$*N8&pkH%9b!IMp_gI0!I%xl7aA;X5`sZEG-A!6A!CZItuxfmH(nigvW4y=PXg zjdN7=a&KJl-;{n;A3?;TnM|PrcYi|a9P%)1RHf=V@`NHmW`lox1X?xC?%nl$!BV1l zd_<|ni=Sa@R`Lpuq^Iv=?VJa1_O9Pkstwfo|MLI9B)oW-yi7FcvOP#`o-epogx!ki zEFE-pzu!EdskfLeegryBbRIvF)DIidoG7S{E4Hw$-kEzP{Tp)M_@jFC{8kAT3GL-Z zHbi2VDeuO|n6F5a7|zNX2}QVz!c_11yzkEKj85)dtPHl*9|!XiFx>buRYA}vVSx1Ec4 z=osjy$kr<9Fr zs=8#5jFB9`>>MBCFpbH~;U*_Vn}JKCa@bxH)M;{C**m(i5+M9K1Z_c$T*C0fdcpCT zW<-MzdXawf6XD-yKq!ti(W)?`-)5a-NhVKn55>8wJVYX4O@pSRk27u#`faBf za{cMwC4|K$l^%vBM`m^d%V$)Xw;(hC;~qH!F=kG~_XmIccAF`IyTL$1Wi)#I|2KmM z>2YDvMhcPaDh)H?m2+mqHE1xmXw30S@W`dg0E#li2Oy=&S07BUPWzOGaELaHNiL<}_NoUVPRr6HKW^oY>r#VT!Wms2n5qzB8< zq3(YUd!rEp$-yP4nSIVO>tDNRP}&qlm)bfDY=&K8@_Y;Bt!*cGjl;FpQ5` zTmbS&@6 zX*qvO(B6)0q>S6Lwz0X1RG!xQavO4JdT2z{;i+Z4RJ(S@!~kPn@sp0LL;Qn*`JXVU zI<11_j|R56Ak@&QGk8Dr2sDx|dwtB})~gFH=V#HefZLAXySsdGGAz}U1H$+H-8X1? z^J437X(OzcpDMc~1sP#&^F2?$7{&KyGUG!c^O1l*HM97~u$%-=yq0`&!M;$xg{#=` zbQ0-!rJ9sfK-Bw72?+E z(&EINCFVEXfw_ATnj;GWdcoP@XfQBbo#I#Jq~<19Cx;#Xb$6FfjispB#J7yd5}((p zh!+|4T$j3c1K*AaC}05w4RZCHyCY^^%=8YYsZ=HC(;8G0;59{xrK)kc9W-jDJU|C% zjOy}I^`2Aaxi(bMg!k`-$FA_8{8EpLk7waD6_*kwL-jX;yqp=OG!qZhropJJOt*Fo zDV8ow09Gi%07>Bjo@nF^1(=(jC3`GP$Bmk~3p?}s!)$%4w2kV574!-d+BQ<5e@k@k z4wpKFz>Y4z-3^z{8Iw=9BT zV8?zga;$e|57iJGZtaIQ*Pwq1SJ}eouj*wK)uchdB7O>na8GFh=EuQgYl4`gS_kjT zC~i4{mCs)4D$f_|&{;8}@y)Nji>?0A;B>kE-|lk4w5e_%{yO{ipt2aelt{l8!BaE} zR-{Yu4KP~>NYpw_E^0{;emw@5D-Rel)52mgeb*W#7~XtWA^krX=sP{8fG8LT0{h{y zYNl`#^4L{3HFP?1(rSIgO<#Mwp);Bt-9~>Q96~9+X5rm*_czOgO4zS} zZAaCWEKxwOoNq>io!ef@DFD8~+P}ljSWZ{JtgBM(s>j7)Yw2vHV*TYT(CPRPfNs88 z_(N-RQuPp{s$%mmn%PzdE<|tF=YRy^I&2V7mZal8-LkQG=^ytB;Dxbz$U?9Gao#v}*Gl9);SFfd)7IdgIc(c;j+yXb1+Vya zLo}7u&fy_KCSq*)967RFwd_;$D=aQLyfx}qI&8|7HRqs9JmyRjY}++nWLGPPM4Hy=k)>T z?S{E~+igd!oqglm%NFwKo2&_4u__rBEJUMFDg7vXJMd-2qn7qJQY=a}dmV@sdyUTU z-EqqrQcmYQ_$Xri!=R@`{->SyUH)F`^hMM#ePM*LZB9O|2+nvZ4iV8L>*%#Y6d2T1Sr2{5MGyHQJ5L_*42QE7eNI2HMscVZ?4-GZaOkJ~W=Ik3n3W9TZFns39 z(ht@pOO1fLMGz@m(u6k7_ao~oh$y!o|9r;Vo9^Cb=Sj`Lnjzo zqNfQ;TUzgx&74EW^k1H_+K&??c17dc^pm9n6Eg{bjdn~sGEtYV>*T;jYtMrf`wy{XF!4t zr^P7($Brl+#o0f0WL_U-X&gUIY`EGc>sqbfbGN=-i@EtN3qeZE+W$tnDGyx&mU<%R zb}ugqbOS;oj~U16DPIORfprk*h_n-}o9sDzi%jQ=aHTO`|BcmYutA~H2QF#NB<2&dA7T(AS z#3L4FoAmjvuDaiMZC1nb0euJ~LuHNGoy$6W0tST%wrlnX8-rO_SN}M#8_YRAdr;hS zZp5QFWoynolLwGtjjE^2S%$5%a^F3mGqC;#P^U3}19g@}60@lL#?n8x9MBLP-m!uB z3`j@RUB^T^(%T_>w{0|58n#^BFTEMW-5c4kmy1v0484}CG&F=m@wi5cOLP1e&Y#q7 ze0y<2z29YrcHXmX8iKI(b8u9AX?j~e+sL5?j}W_&QO3+Iun@FiYq!1Q5N^^0-w936 zZLiAiI+~yALrha&$ahVr&33x#ccth5xwP~DX9ej0o@So>oCQqWF=U?m=G{k7Qi}L= zR}~EU0+x8a|C@AQ&rjiu%Y}PVsmUr&{|{7#6aJs5ob}0?i!**6LIPPA@hwRG7u&WL zKg!XdEpl|Y$I7%erj%2H|8XlZNHF8P6>%5sSpOgr|6r|x5s^n^@X(=@=vW8^7tXC< z;Lvtv@=cgFkLQwNeeDkhlQAQIz{`<0i>6GY7B4mAkD$UrX+Wc3LXSNJkia0tpQr@38;g3k0@pv_gma zd{PRwxzLWA$=giGB0}KnjHkx?w|}=2V{sc?%HCank+*R&F*?23U=%OR=+E^2opW<& z6X;eY@i#Wf7bdU>J#JIWnKM0xSi_>x-PJqEGBMEq(4{0+CImAt$YmgIYVVD zm#X>syId+?1>Eu`P;}jCxPC1WBXe%hCg#g%n1w^Ie5@9cMQi7nxIU309BQxsarN}% zflxj?9K+8rXKpD}8rk`IYU>ZggsYQw7uHVCPN$0E^wKu~$x=)Lxrx3TWiRP`*a?r> zocVTp2gpbvdV|1D9VCo|iX{^;;4Bq!EBfvZp@%;Fw@nN*?F%=*0|U(Cylo31uV=aW z-sorg)$?NLgFbPCa~~OoK5YWRlPn6)BL}x`S4_^%*M@t?jj)EsR@mCv*WRPa zb%b)Ljh@hXG#kL|`wf8h_4R3q^JPf&(4^xWBGqL{(g@mvS*gWY=bhB5i{7c&MN^mQ z(&*o;Iv?A(cE9umn&;U7%Bt6(czHO-2;bz9qq#TN)=02mX92fo%@~1-@jF)z*UQ1V zpRXTfh_Jr2%>PLKIydG+o-c%7RJpj)U^ujTqjb1>f-|<{8fiYGkMBNMpWs(YL;}6o z|MB@GbY!5E(mLQN*;a`oS>D@I&+H-kfx$tB4_5B3ZS5fBa+Fbx*&8B~IuUyQ)WgPV zI?7!K=$lBYXxUsUw7g$Wr@wJ9c)!LwBcSto{AIxF1apt@v2yj8wlVErB=+26@jNXi zXU@g_J_1F40TP$VQ+fMcY><#S)eKVwuZad=&!G!Y2^m0Apwnzw%ZWS!r%|N+AO@Jc z*tZ2dJtZ&laKYCJnUfajGoLOm6Dv}Z{5M#mm840Ox5a?A zL_RMl(#pfVxXR30ipCTa`X-BZ6hsBjp$dQ+9ex4r6&^z>7>B+HxUwuA!}Whwz#nUm zfss!q8@V2Cgr;auMEt&WRlYu!NJB$MA3|j^wAdo^0v?W%m;nTi1s{gLM_y@l+WwOW zM9?yYw~FUY-GhLD$^EBCU;_p@8HbhFl6k`7FUu%2H2&3A$Nj+3C1~Wy$46;NJXzzi zu0y$neDmbtHJpWXahzW(ICmJD$?Gm88C+;+<<{;f*s?77q6LF!p$n14`nMKLM~bJm zwd|vJ0CtMM#$HoVO*a+z>zjb}@>?$c{MdSj$k2XGQO6c|dLA_B?3#*Ker@`CUxPd` z3mLwP;xO(v@-W+~p!bo4ab)}D5~uM^14Jb8Fra76EVLm+Y`)@tiqyeihh@*k)RNoN_c8Wb8CHl z_Uq$)s7W-izj6pe?xzP>wSx8&9F35RHn0e~;cN~0edl^C#}D1;TN)CK3!u={PZRA? z+5L_nAoNVUl#@pYl4@6)JT~7VSU-4<6z2a$SHk~Q=n}s3I+YWN02=;r6#OR{gGdIp zX7DXdIg|AEim`$s$12-FvLHY?z6mpfa=@e^1EQ#}lm32BfCQ;CULhHJ?L#8pYmvy3 zz~ckKk`3aDIii}@}kwkh5`Qzj3@eI literal 12804 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 literal 9579 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 diff --git a/docs/assets/light/modifiers/MultiplyModifier.png b/docs/assets/light/modifiers/MultiplyModifier.png index 9919da1dd8853ad0be09fc8573776510a2d56719..928300598643a30d6bc1de00b5f3bde52a5f37e1 100644 GIT binary patch literal 16148 zcmb`ub9AhIm?aw9wr$(CZQIU?&WUXsC&`Iz+qP{xC!G4ar|0(c^u2dh&;0XSwJKHb zs+D?c?`PwQP*RYDhrxjX0s?}UmJ(9|0s>A3Jidei0i2r!BR4=mNI=qJ!fIaGmtBxv zxGNbqeijg2C}dI~mt9gMij@@<~=6PnWd0cCZ zo;_w)gN7W=dSv(e}01793M z2NI1I29;P9XhB<~P8dH{Co&)HYxlc?2_u;~_q!6Q?&3$18P`(egQJ9EASp2bE+&pR zNk)uDO4a4F(@M%tyOK`tgaXmS@JG75(CaV1~M2lw@|B68xk0_v{L7P zJi!1Lf)s(K%FNKe!I*L78$sEA*e!YROjYXn8WXw`iH8(oCOOSI(Z&>NyW*_wUyXyyAU;ba-e_qXIG-+EWq>MJBc>ko@@Tq*-zs2al zDFfaZW-3O~?f$bzt>BaZsg6z@iR@AMPKRj_rA~_m14bMrL#;d>7Q7$1VabBPxlNy- zbm6ESwK@Cgz|OR!s#@NyT!bDuQLO4=SLXfOciyd7+o@b^$q@|&4BA<#69dA}?y-5q zL+p1+n-?x{Q^SLmUYXz-Ev>`bZnwx*pD9+>I{)3U?LI}X{>BVE^Yh-7$P}% z6FyoPa1Nn{_o_m&e&U{N`k(H_pb0|@F6dtA=~ zcO#=mp<$O%Z>3=%)?h%zjj?DM81vy%2pc%NWdbRwsB38J1}C!{r7^pP_uIBPxM*)O z+@bhZx$LLb+8vmN7$ z&&2XGdZ#H`^Z&9@SIkQYCb|{%yNj6GGj^eRfzSMQd#ztU@AaxKgW7F*A71FOuqtWp z`1q{&X4aramiZn*?fKb1bZ)w^*-K?vah0tmUl|t}u*ZU@XZOZv3l|cv1l4~XgCdKKorWhor+By%;{gZgN1b zf_;&npC#VMTX=**LXkR|4b`ya_cc2^OLR$&0>gQ|o!(*_HH6SH$2J4S#VJqarxK_% z>a`hMY@K>QPlukcI=eJy+OiH=X;K^v7rW`|5tjA&!kXxzI>`B)S+rQalMBPCi?JOt zDZ4D#Ktjt&qlb%24okGjm?SojIV94c&gF6mn&6o%-12(KChF%<&R884|@(ZaYJZP0Ob zjWra461mv8%`Wbj)wV3NX)q!Kx{*LH^O0lb#-B&mP?pAT3<19~@ABkSC*Pv==`QY~ z(!AYX)ABm^a_>ePAwg^s|HwNM+CA0;Zh?)99}8Je6j$%13QypZj@IZ2a(~bxUW6{) zWf4eSudBy>PQmW8*$3tPmZ6T5LCX4Vx`B`8ouF!i_;j;yWpXUjWz6e};Y~rET^chH0f`xa+!qZ3f z)Em?k?hPKWsNIJGNT|0>fUt~+nyb$awEyWt`Ciey`a z?d&6bHYj!wp%OoS#9-E}go_3Ce7^PlfkKCdX!yHyTxv(~@Wo+qjo))t)?Z_O?kd>& zwNbK7qxHESdlT67)T8)qR0%9KrrGR0MG}hqF@Wl5P$uYFd_8D*<3F&E_4g&|I~lv- zyezP0`9*D<45qdq+hOGD*|yX%fawcu;$WGt`B-+hrps@ybnpfDZMmDUoqJ^_&fl_f zs^k*%DzDqSr8A)aX+YcKkgr<(RG&a{#ONSw#UHjqv`eMj+hfac$O?tO^2F^Z%=BvE ziF*dkziV3w_X`pU zlYM`{C)aa;fc@8f>{rXoX-;*>S)d+r)!*xOJ^l1`)^nr@a^JiJ$cM2Ca5m2KUFwVG z%gGzQ_NVu-X`W5b+_e0)?<-lKL6Vw2uIJH3o8){weEuMFbo%#}ldJXQ3(Ok74UJze z=sPwz?yb#Ly3MYp(|fAqUtQC_I%V;)%f}@@#Z`ZFgupt8oe(D-B>b$b#@QW0&o>$6Uz@3=A6{{GvMui+XufyOVdO?4Cs zcD{vhGQhb%z{uNqEoR40=|i}qE9m0-D5i_RW{~s+DbyVrOJR_S?*zNaOUyzsIjKSI zC9>wbxNiI%>t|S%+F)fktRVqCGPA?&m)A|s1wJY$C;rT@6{#>utED|2Ch}e0K>hrX zIf;e?N9o8&1XP(|Pybx?sp~vKbwaI!^{(M_^tKSAECH3XJ$(Mp$3IEH1MmQ3ei#>b6$I2Z@5#K`=lz; zw@w}WP7ecwe>BFyKp_18cuyor#RE-z&}#;R5d@=sH?xueLDD!G_&a1V$f)YfxwMgS z8DI1cMp5dSI)VrPAxZh6wUv0pZbQTCF!=!$gfS41{TFlp3hm+JM)ezxVC~a>H|*(R zVJED0=`2#T7UqrJzhZ&ahRH+3*!#m~=LBc};c^&f)1d<*Rato5W1khJZ>h?vN1)mL z;$G7D;wjYCG52*OkMJGgRHu;#;!-$=M?j7MxcZJ!;BQzS{@)E-c*~ofS^-x~y@%By z#Z%wax_xJ^drHoo)SuD@frPJcQNV^Cv_npQKb4UyT@lhfjuP-y6LWn?jb|CS!w z+c%am#+2sE&T8eD_r~mp*ncI8jfr@6bDFl_Cd~ zi|OTW3R(QSLWxR5&D=M715d*Z;!7hR=1eD_h|@&#oK`kxr>?@DEF;q7h4dlXHpR(c zpw!0Sgb{tc(8j+&Dii+#lK|s1bv6~J$0@|ZSAN4SuJ0~+wz?eoY)ga(Ubd0n$zYoHg1w=_ z){HJT?h|ZrgRJKu`7Q*CmRMN7Pok1P%e`oa{p4|~SN%5_OiE4*#MeRF`hj9ZE;?nQdiNhfAMB z2dXJV3$k1}a@xxJuD5WbN_J&o6AH*3eOtOhv>K&k$WYm7Cz*IO#HRfDwE-Ea!sA6x z%=HV10tI$;rG2k|3#{WFB~NscpcE+kJAJGd zpmO#u_?q0T*9{x>Ipduew>^^aW3iJ7wa3^S4ed}PwjgL-w~A0Ftcj)ypxE^qA$x~t z9Y&q1lMRU{7}Y8oAtQhJAn?;EtOxCYAhIi zPc69TEkEKw9gsM{I%n)f^L?Z==7d|bXsxJto`-vToiZyH0Rm8&_G>wzN zC*@PvFh|7CwMnn5QyaX?Od^$~RCZ0Lozo7!|NDS;zzmr-iDPq{iRS#@ya2n;FwwxYa*jY0miAC zY1b1*f~Otc1G?Z};4lHs;DS0gk`(BojSdUzbSQilta8Yc7*H*ahR;}7Tt`)DBaSX@ zUB{k*9Pk1mjhSy?TeWx_L05bJ}6aFnXa?SZ~w{8AM+PZ)eBIKiiw-}5b2bu;&H6<_zMA6M+ z>2}+ztCm3P7w#>se6#d5PplH@r~N>S!pinJrc8vI#GnX_nB?wZAEX;XMy7%<-|8HP zKW5|!ee+!8@*eKgu|R|A;#D1wKGLp+RKZ0Ip?h1HeYHT*!u9Q_xk~8YOIv)F9}FpO zcdCJTc!ko3`& zRdv<1)%A0ISkf)-8t$u(t?t|YitYPF`=Vp;l7v+1_amSWAUaG6*~g#_Dh4e)e~LW8 zXM&6HuruQX8X~pb;I^YWhESS_RC4fZLlXOH;d5w%cHQ4E(>`srbhq6=a^Hc^ej~u5 z8En1J@DFqJ=o7m2T7Nw8TK2Xl%aHTfJMmoZmRcR(L_-9F2s$b<)?yn+#KMsFnR0Z+ zATg~cenR3bFK(ssD!Nk@*)(mWB>7?HRmH1(z(_muZ|9~u@6P)Q_-feZ#5o-FsM%o$WB zmoGfh_R?2fePv1G`f&aDQ`CKQpE7#tH||sxe*_*3IUp|Asls2xDqLoe)_E%7(^p-1o`AJ^oKkWZd(T-dKvPe7{&4`;VimWML9n^al4T^4_&^tQQ%)mA3wMI;k4ZKkIO#y zL0&bJ$I-Kyepp7n>lmpYe0K7tFIVdxC|tL`Jn=962jGU@kzY7>;v!L5(|LE`HYdBvSAUOALJWv;wpzC8GboFs!GFN?J@9Be8y;R; zd!0`s+we@}YQ3u?jVyPsN91gFH=uFquO_{_MciO>`Fk{OT&<|h-^#DO=VPL1$S?P` zFn-~lB<=1PzO?{U2|{UVMAAg2pngs}HV>5m@0r=J)Vr+RQ5)^S;mR&=>g|qx790PU z`yRyyj^KeQc0>NEWG@ZAA4;P#+_8z){6(D8YPmee?TmKkE^S%m=j3D9C{eghcq2)9tS$sGgUM#TW1Y6-VtK2^Bnbz&7I8@B;&8bTEU5~;nd!p zY&@n{!^!o>!*$4U_FV)d@t7rW$xD(+VXFjVmOOP3(f#myD0-~}F>S1|Ei%sEij#n(a5$ayetc-H3y zEE1%%51!K1fGtT%V)wbBM!ym{-3cbXjMu|F4XjBFly(oO}d&V zmLnlP(WKS7?4P1r_Ma`X_l}&PIy!r32SYA! z&nBo;3Auk#)()BUJl`d#8^+0dz~UhIakaT12T(#OR$_Pzo)RY~S>SYZyicHzCYfR< zbar%aug{NeTsF3>{3O7&Jawzf(^&P^5U0BSoWE3K=hm*N<*j5q=A zP5on(PCJc@^YrjkIrSwLNl)rX1cNooRwIJI)JJ>b=$V@5Y?uj) zx9e`JZ{D4`4MxzX&HhUv|6+KUF zhBD!80h~tYQC`b`<7ZILR|L^_ISK(5a-$MR&9SR%Zom24!Q{@rSja$wu=K8A85jg6 z(T$wE)0c+YCBD$`XJ^-A|7s>L?#h)z-2?R!-ya_oiZ>{f!i0Gl@$~=eAJzWxrGxG= zKy&}bN>BgG1u4O|B*274P|z6v>!)vva~%vh#}j( z0%{A*Yt@T+&+R0qgp(TfY;H~O^n(-H2x8TTz^K9Esn-0P8g;VP$(*~Ixn;Y3$1eI`Swksqk^?X4VheBpVinl z=;EQUcd(|lV1~CZmCJfi~cGvaL(NoY6QPsUc^;t1!)!CX~ zQxu5-y?{L`On2%VhIXzlLxTAYuYZDHEpA**8U>s-!Oq7=mmo#LHlN$)?OV>RpL_f) zu$=bdX=|)e$*})eioSatzlK6s0bT&5IyOY|%Nzj%uQi4h|76JPDKTQc{M+}jeBkWI z^KSc_MlD%QBOYDHDTZR|*|=$-u%JCQd5;U6>I}vJVWN zBn_TeCR92`0p-Hj)zww^CUvhgst`x7mEwP8F+k@l(VC!&Qb-gic71%})V|5@2YhIe zo7@XgM!>DQKF6=6v2=b{ds3s;POp2wg1o2+&*$WoHlq^r`5jR5n0k}re3_QrMbfQs^ge2_m*K76^ zcYJ?ZGNpcY7$=tDY%!;vL6QQiY2cUM!3m3(NQUr)lWX^%kyFHL$iVLl2X_RKC&a&x zqN9~!c61E3a`6boeLwMA$~QhznCJFL5>}ixy13JVsivi9bqSTAY-bn6kPZ#pc=TW3 z>MLgwE*n>acprq@V)Ga&8$`&EejfF`C(-~?5aQFrDl~q*yG)4OTbDEZ3nAZ?0AHem zB}`xGqBRbGTY1sap9QWBsQKFJL7Wm$)yoU-D<0UPJ3nqfw0yxU=B1!q8k((>ZCUG9 zEYeA`4qAa(BQfu>k!lrXWfyFk+^aNL@}!3PB|VN_o^fSqb&8sdYr{b?@oSZP7w;v# z@D*AXOA#4X^hQL$t6H2_&7>n%tl4FL#Y>0BFl}DU>ey`;7#ImPZQ~l2TAwH6{5@gN z#5gVv;$NDd~WB;_0-J|1o zpkWj@Ph2EUj7m9V9b?g<)cYqz1&UCZkuU>S7`3KwzkM*9{vZ6C`M@FB&MFA&Yu|pA31-XtPvt=!2yz5=UEWz zc*wGK$m(l9|U(uRQ>R z1_qN+8T{Wl5vkAU?uDFW@W7y<&}u@$O49Y)6su%+xQ$u*0UqGAI>GQ56tbC$MJ6+D z24$nnXH-^C3Vs?Vu@6V(u&wHXJFU+91)c*h;KSje(PtapMMf{kh3osd=h0`C{%4qCO1u&&rvQC`_K$Qv z;i*CS9TX7b9p8I!R!upiLx$}|Oa4!Hdygnne^jVG{pWvSMTpiL4SL1R7I$@3-5oa7 z7D2iHg%mB4*gA_WYpZN`>$d*(d~8YQQf_e4p+cP{VLB%L=cFhtMBSV~9`o;LamMys zB1BJ5f5&@ICuL#^BaPEuD<=aFlRM_z$%lV zZZ*%xjbHEa?ZYi=3md=8-}hy`ejFpdLDI8IL2;RIGogio(|eGGhs%z5JK5?ihhNkQ zAS^fad@JSxfNOd>5g)q`H5T4J~Hl%8uQ2S~nXI z*@i}JgsJ+~TBcHd>a0|SIoRT* z2T=?$9EC_Q#)=E;{NO(+l(4Bj?ru}wFoK}2#UonC_56Y*fGY^`dX~3rL6}u&1R8$z z@r1~iMetBj4%!r>)U6ma@z$g+IcnwHP4GY2pZsi)D5`Pl2e`f`o9 zF#dqz@+Maxje&u~g&T0;ZeT+%0tU=r#}A6wgB^Ys>{!>+LHFE~d0&+yK&C_4w>;U`0ZA?)1w)tsggfId?#4h>du6Xh1cY3#2#C^j zQX1?ZIb?Nv&W5(I~!fO2L-=&V} z|Be{ZGC3$%@=o2_9R@nX%glQ`%gGltb4Uc zhCx=JQ{~NfDSU+YMG!PRSw_ZxSZgl*NylFV4%8kqeEfZm=`jpZL@12?A-#b$Cvc32 zT?ej=dEp1zrJ6K~e)3|rZ}obUxrXXA@2N9*F#=8eCJ8T5{D<2fy+CdB4c6CFtb5)* zrB9{ZxN?%N)oW?s|Bc(uv!ngz~-U`Phao$Ng;d-=?9HkPU3PT&wSy6ePlll2{g^*GBmY)Xxn! zKdLTUJE7Mai~+%GX0`6zy5Wh_2B80SkZ-m35veKHC{diOeVqftE=Mk_IRErMKdT@k zQJ;In73NxLwCX5ljICyG_fOfr>n3a^VYrMAo zi|BAVotMbq;ew-jW(El=9U!^D`)DR*1>Mg$)Q&C40YjU{vZq4R%GXszb@FnWM&oAB z*;Cq!H2KS6`Rk#Gx41ndG`q{e!hKqC*cj@f+~y-aG1BuCr6H5+5SZ}wzP#V^g5ioq z3)eB{FC_UnK!s#u)4}WJv`Kve^~GL)X>plzYVis&DGcpl{tr4Jp8VKXcPn~cNL(X> zhxC6ag`M0&nD^VbM=@z?lIJH|)XGS&^GHz;5idVgXSHTDcirZ{`;4DyiULCn5h+-? zXsL{$ra8-9S&V^cYi;j-=x?G)%c5s+T(9L}KWJcb)b(zpm?89*)Lf#sD>AfCdvw{m3uaja-5JPpVfVzneuO`8j(19p)m_2SA%r zR3rpSOc|_d41zrJ9K!KFXIED-OOlCUAXumXxlyxammV?$#pxm=f+iN9fBC({tAEW+ zg9+^xf1bcvjK39Ru3kle=<_9`ZhHb$85%ZLx&s^N3)+3lr^f)b^9tx*_4pjJ;GN7y zT=2~l|NT9Vn6B0ZD#7%a-^s#T_m5_)4Ol4Reb{?gUCTOj4Kj+XY=pW;8Xb!c@O{Y~ zZ%61sN1@uo0e{Sm zlcfOF%H6|}nMODmNG+e2AMF3*IvbTQ+$>cmgRZYibDa<(F5DyPO12Lp>9tJ{d~0+a~IO33vAdlbewb zf$tl9BcOLwK<#p%feJS9Vc!et*)Bq75zx`~>!kJLh($-E*hGV`wkw2jr^69bIKIOx zOa==gQs&2TQw8#gG@v8;uc$P~Cf>gPnaK*3!)$3Bp?*MrLL}$8dt2LT zmVBPSP!>?m?YSwmYxb2l0_I1-?)J$$ta{teuY}w@g0JW4Y|3TJ%iLR& z=ci#;OIm?`%m#oC3bgYE50)Ag%C^lkCPl&r)5opzXRrwEqjp9zJN|jp6u%!r1jWKD z)agW_{$KYj|DE5N7?#|E+?EGsuTvtRSrZYbGBQR^!@_A7n;@X7SyR?f{qAw%#3~$L zj4(}8$8@Rx*DjcC)8v9v2W}WSXuzD*Rg^@=7+@~piK&MObQkxXXi}A9|FT|sx;!kTR9dy3qoDIB=zbR5pKYYd+wzDd` z)J$}gw7dDa%P3wxwG5S!kuesYdJr9h1s=Tw6yd2?*m1E?Pz4HaQJIE?PEpK9-VMThM)yN^EHxqDW?QNLoY# z7B9zIkF}L2*Nhtn#y360l)p_HH|0D3#7B+H`@SG%4w?Mg$;z1Zmo-l90m=a~gPyZI zpa1hn=GEBpq_C4;IifJKO)7r$|1D%_!g-y{|po>Pkfli z=v=!ryksFDN$RGhIp6)5`dhK|mo|}<^!ROia=&0?u|WA;$|)a8T%Svq!>=eZv0I?V z3*6%RR|t4$s-WC4fF(={TIP=^pz71T{_HPpvuo9|(9?*3UmvFS+YOi*CzrmU2NrvL zS{wlSs=I{(4L$L6=;s}@$&pkjWLA;g`r9rYoyO%5#Y60$IsL=kKi_S_qA_NxeskHU z%Mf5!M=qBWk3%cs1QJC>gwYs`%%mW~=^A|XKWiFnntQe)Gzs6{X%cO-EQz3+#@n#rLb&A&}PD{2gY#B%QNn<$f2&gTuRa3zhTb8 z`SCVX&wzMgq0KqslLyH*WJX~xCrjmZu|LzxBYGr~3b4gshpV$oNse@){AT$~u$~nn zOvxMiIdxKk#L1FFsS6ina#WD{t#CWld^T_NP{6b!0os7f8JQaUZ4*nrlY!1SHVHZK zr?%u&SIM)3sidi*c}pFN9tEnZJ=tY|8h0Wt%wmy6h)Y=ZeqOJalZy--8!`F*oYOqP3>%F z<{%{o6C*=dJzs$~_qqJFfF1@FNT=^4lO3}61S)8A-m1Lf5dsGNr9guEO_`F@NzLwm z#i-Z`aOxudfq$U?2iJGAqT?C=JF+ijX;u}lIlWs<#FWSNG~Gb<@ciWuB$7?e*ERq| z2dzmwKSH5c*nKnw25PI{nk&e#e%e`+95VWPZ`^MlLT8oJ>O{@xhDo+IsE0uZ(sB3R z!{|63OvlhRSL-Sq4+B~!-482qGJ_=F^ zDX>4sr{3B3ROIcvSODZEH9L6Wd1Lr7ASrIT_equGql$VKK<4|<$zO;^(_VF;T9&MXWDfxrmuQ)VCCHz{FeY?65%f8Z@Y z?{KL{*>rdwU7P36axIuQ!S_2Ekk#mTsN1sDO6B+O{uuKE2UPbl%Sx!uJqh)KyUw%V zwXN$c1*)iO8~`1`^Jp`E@r35;K2gd@?pVT|FHA>2myeIB(r3&;FM0M~IwCWc>K&G}N#+obY2A*X_}F>EPRLsW6+Hpyq@dOJ~9eTSQgO(YdY+1Pm) z859~}m(}GiVs3$Re&|ns%ABVUu_eqObs3RlpgI&8RJP}C-y!xu0dtE&HfFbYc-OoCfz@g#0SJ19s#nEyjhA=*QlU)_F7nvL2XI5< zfWVrqULw5ydnm8s78B|y6< zHHhQx7dKmhd|a7m(PF}`5OQR@Q?uQh1Uk8&pTQl>tp2QrVyXIZoGKOs!-!FS3++z;hyMLDna7CUA>- z8-qokD&A!0E>hs&yJO^>GjmsUl}rnD;A{~zFEGL3_vyrl6eo*lx_B~5TqKB(fOKw* zGO@k#A#suB$r@~Y57eI*b-Cug_VG%km~Ii&Mqc7_&>QN<=j0{;J;lJ|n{(P^mDAg5 z@ZG%^a#BYQgRPIwgBng6U;*CCIF)1WZl5-`d3%95(au+yWxj=X<3})ymXy)ROkc2D z6(tCI0SCBs5&+m2yal% zf9=TtKn`)h7Fc3ycru)yLo|f}W-8Oj7?f~tWzn&Ls!vN@QC(^M#%gGN2%Y^ui1*v} z4>$%3V!jJ;9^|dP?*HlJ4d@K?NzIl3)-;|nU#Z+T@eC&+{-=pMn-W$uehBeDj@%MA z$y^*PoMa>+62*v`XX=rs{9?!SHeMab^H`Ny_HBoHisG9ltSXttjdGg^s$LABBQSuJs&P{YUvM|1m~Q1IMltP1wKDP&6VInAmgntS{ThxWmPU5g zUxEyCJ_v;4$z^8gYJ#=sH>L6UMZq#~ZZW_sX|*^oM^h<8zWUQz=x5|}Ys=aTn_fHZ zy@L65-2tI$B58W+3ILM%2(A$c(G$4ivvQn_e70XRmBSvUS`-uifn#HdT7ffNQkKHnr6tV>Th^jCgg^(w@l^QyYz zG#jHT#G-k&4e;?q!23-OuFJp2k03e7Et;NVD$}F9=FoRW*R&fev^)x7?tc7 zYm6Cq`%9|(X)0(0ZcGty>$Y3EGN|cP7X7OwB+%>wKT$t2lP1_!BSeOFO0t9|{&^h~ zRjcXOKuk;jJXwl+L{ja>XC0m=>F_God`x6m7Rg0V&17} zMDhOx$YjV-A0daYqxIvmt}>KrYGY7hbrz;kH6q^ z^$bR%*m@x4hOk2>6-oJA>md9W7-a4Nx4zuqV+={*;okV4j;?rC@I@MOVi_W%{L2-- z(utVy5IPPJSKPR4YW7TffPbS4Q$KB37MKYL8g7~X23zQd8utvLRX;oMxb45i&tn+nVb`-g$@oD+*J}k#96R0Qwv7S_Woi$eoK=e2QNF5LF=0Pk?~Eb`cP;XKhiZ zMF`L7IUoYoSw)R%AlLr4F&GiyAb#veS7!tr{hORVPD(CV+;j8x8SbMS_WRTpnUEL= zFu=sGGrjc#)Hu9o#sB+6?TIUi&k&UFy~T+*B*k6iUVCQ@?q5Ph8!Hmf<90tUP+c z;J({P{e;7&&)1c9US~?-W6?veQWs4|&1D1Fxu}Rsm|XtVe0*|u_n6J1*mwh?lu?vy zT1iPV3ybI3Xj&iabR(aag0YF@!YfV>Ki$nW=7-x5Rf;>AKqMYZJryh&6)_@$QE{SU zd7>1aR-$8W2x98-VWc<*;{~KNdo2cOZ|BljuF2*4C zW@o<`Eg0cyuD;Wbr|a9BC(ImPpQ6n536`ho9b#Vu5UnD|7NKU~)Fs__x(Mh~67WSc5-BDBG}R~4HluSa znlLs4Ln)9FW;KB!hXed3LIs!dCai%i=L{bL04wd^-&#kH+<*rV{|Hu4pw{t_?Iq9{ RCBQR4(&7qY)gnfL{|#HMPrv{G literal 16018 zcmeIZWpEr(wkBvXGg{1Gm6(~qVrFJ$MvIxrVv8(hvY^B)S!gjcGxL_a2X^1eZdKR2>6t1@q7W_@(djZ~DEM1seI|Mck-(pM=lhm#C%ha3oPTT0L*iFIdw!RJF&V4{|21V;LQ4+pSJ&50*)2cth;SWIw6 zdq8$)UR@DLP6v5$jfr%~lY~q);hhgtxMYZ?EdI9_(YKsjvR%Ic1X` zx~4iqerKouuid9W4|z#lyA&q@L|1^nWt2KCWf~f_*6>v02JyBiXUrcz^iC=9@j)|` z2jmt58*Y9h3{mEq^VfE?gG*kEj{{7};i&_98C|!+9pfQG@>WJZMqa5*$5uDpC{_B0MlG>Cq{y>X)|NvD$iR7V z)2heNGByPJJ$L_nevl(UFj;SSmFO5a-NSin-PNk~ybzCg8h_*ODSSkrN1-5)BY{D*)7$uXSu6p*0?59JwEH=p{dBA%e zQX-l&4GN;xN8?A(3TyDYcQSME#@mU)duD#d^ZMum$yoEK2oYPJ4 z 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 diff --git a/docs/assets/ui/moondeck_esp32.png b/docs/assets/ui/moondeck_esp32.png index e3eef6fb33360bb08e4d2f5fda9787a2001dde26..53856d75fa9f18519dea725edc48f1e915fc00d0 100644 GIT binary patch literal 57075 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%0AX2u)?8%Ng6&t>h}gjo<6H%3&62GGhKA) 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 CZl|#T literal 48570 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 z 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 JylnU9{{n2nLu>#5 diff --git a/docs/assets/ui/moondeck_live.png b/docs/assets/ui/moondeck_live.png index 02509ec1a7154438f0cb129b77f2066ccdad880c..97893d81f3234cfe4956b9e2c02c7608d2ae0b86 100644 GIT binary patch literal 96512 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 e21!IgR09ABNb>u+22eKu0000ea7fEyGrc471tT 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 literal 53481 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 literal 107100 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

CP_EHDuN{ZP;8sk0-xb%pia)7J*vb6%$XO@avF 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 diff --git a/docs/backlog/README.md b/docs/backlog/README.md index 65be5733..3d0f22b7 100644 --- a/docs/backlog/README.md +++ b/docs/backlog/README.md @@ -23,7 +23,7 @@ A map of everything in the three files, by theme. - **Distribution** — remaining platforms (Linux, Teensy, RPi), code-signing (macOS/Windows), live RMII Ethernet reconfigure, installer UX polish, P4 DHCP-hostname recheck, S31 web-flash (waiting on esptool-js); DevicesModule interop growth (more plugins, the command half, live peer state). - **ESP32 performance & memory** — E1.31 multicast (IGMP), WiFi ArtNet perf matrix, async ArtNet send (PSRAM-only), network round-trip drop/reorder test, slow eth bring-up, non-PSRAM memory ceiling + boot-time buffer degradation, task core-pinning; ops: static IP on STA, MoonDeck doc-asset hardening, CI SHA-pinning. - **Architecture** — disable-releases-resources, cross-module pin-uniqueness check, Improv-child-of-NetworkModule, `std::span` platform API, Improv-as-REST follow-ups, **live scripting** (on-device authored effects/layouts/modifiers/drivers/sensor logic — design phase, see the bottom-up survey); composition/config: runtime board presets, per-layout coordinate offset. -- **HTTP & OTA** — direct binary-upload OTA, HTTP file serving off the render tick. +- **HTTP & OTA** — HTTP file serving off the render tick; generic control + state topics over MQTT (the automation escape hatch beside the semantic HomeKit surface). - **Testing** — additional coverage (UI load time, teardown memory, JS harness), live full-suite state leak. - **Housekeeping** — WS-send socket-pair fixture, ESP-IDF version pinning, three-level device model, persistence-overlay audit, **ESP32-P4 rounds 3-4 (in progress)**, WiFi runtime disable. - **UI** — deferred-to-1.x items, open design questions (multi-layer UI, modifier-chain viz, presets, node-graph), and the v1 gap analysis. diff --git a/docs/backlog/backlog-core.md b/docs/backlog/backlog-core.md index 475da5ef..bef48ae0 100644 --- a/docs/backlog/backlog-core.md +++ b/docs/backlog/backlog-core.md @@ -281,6 +281,27 @@ What to build (~4 h): `HttpServerModule::handleConnection()` serves large embedded files (`app.js`, `style.css`) with the blocking `TcpConnection::write` — a page load can briefly stall `loop20ms`. One-shot per load (lower priority than the per-tick preview issue, which is fixed). Fix: serve large HTTP responses with `writeChunks` (the same non-blocking path used for preview frames). +### Generic control + state topics over MQTT — the automation escape hatch (backlog) + +The MQTT bridge ships a **semantic** topic surface (`/on/set`, `brightness/set`, `hsv/set` → the `Drivers` controls) sized for Homebridge/HomeKit, which need fixed, typed topics per accessory. That leaves everything else the web UI can reach — effect choice, layout, modifier params, palette-by-index — unreachable from a home hub. The ask that surfaced this: *"expose the whole REST API over MQTT."* + +**It's compatible with Homebridge/HA, because it's a second topic namespace, not a replacement.** Homebridge only ever subscribes to the semantic topics it's configured for; a generic topic family sits beside them and a broker carries both. The two surfaces already share one apply-core — `Scheduler::setControl(module, control, json)`, the same seam `/api/control` and IR funnel through — so a generic MQTT surface is that core under a different topic shape, honouring the module's own "MQTT is a transport, not new control logic" contract. + +But "the whole REST API" over-scopes: of the routes (`/api/control`, `/api/state`, `/api/system`, `/api/modules[/…]`, `/api/dir`, `/api/file`, `/api/firmware/*`, `/api/reboot`, `/api/types`, the `/json/*` shim, `/ws`), only two are genuinely pub/sub-shaped. The rest are request/response or bulk transfer and belong on REST: + +- **`/api/control/set`** ← `{"module","control","value"}` (the exact JSON `/api/control` takes) → `applySetControl`. The real win: any control on any module — the effect/layout/modifier/palette reach HomeKit can't express. The apply-core already validates (range / read-only / module-not-found via `SetControlResult`), so safety is free. +- **`/api/state/get`** → publishes the `/api/state` JSON (retained). For dashboards (fps / heap / tick / current effect across a fleet), offline detection, and alerting — the monitoring half. + +Explicitly **out** (no practical MQTT case, and wrong for the transport): +- **`/api/file`, `/api/dir`, `/api/firmware/upload`** — kilobytes-to-megabytes of binary; MQTT is a small-message bus, REST already streams these correctly. +- **`/api/modules` add/delete/move/replace** — stateful, order-sensitive pipeline surgery a human does once in the UI; an automation reshaping the pipeline is an anti-pattern (the *Robust to any input* guarantee makes it *safe*, not *advisable*). +- **`/api/reboot`** — one narrow action; a single fleet-reboot topic is a mild nice-to-have, not "the API." +- **`/api/types`, `/json/*`, `/`, `/ws`, `/api/firmware/url`** — discovery metadata, the WLED shim, the UI itself, the socket: static, already-served-elsewhere, or a different protocol. + +**Shape:** ~15 lines routing into the existing `applySetControl` + a state publish; gate behind a `generic API` bool defaulting **off**, so a home user's broker isn't a remote-config backdoor and the curated HomeKit surface stays the clean default. **Don't** auto-generate a semantic topic per control — HomeKit/HA need stable typed topics; a generic `palette/set` whose meaning shifts per firmware breaks their discovery. Keep semantic topics hand-curated; let the generic pair be the escape hatch. + +**If the actual goal is deeper HA (not scripting), the better path is HA MQTT Discovery** — the device announces its controls as HA entities via retained `homeassistant/…/config` topics (the industry-standard pattern, *Common patterns first*), giving HA typed entities instead of a raw JSON pipe. Bigger than the generic pair, and the right lift if HA depth — not power-user scripting — is the target. Related integration threads to keep this coherent with: the [DevicesModule command half](#devicesmodule-interop-plugins-the-command-half-discovery-shipped) (Tasmota-MQTT / zigbee2mqtt as *outbound* control of foreign devices — the mirror of this *inbound* surface), and the [LightsControl integration point](backlog-mixed.md) (the eventual single owner of "device ↔ outside world", MQTT/HA included). + ## Testing ### Additional test coverage (pending) @@ -356,7 +377,7 @@ Compile-time answer already ships: `--firmware esp32-eth` excludes the WiFi stac ## UI -Forward-looking companion to the shipped UI spec, [moonmodules/core/ui/ui.md](../moonmodules/core/ui/ui.md). The live spec describes the UI as shipped; this file holds what is **not** in it yet: deferred items, open design questions for 1.0, and the gap analysis against projectMM v1. The backward-looking half (how v1/v2 actually worked, patterns consciously rejected, recorded quirks) lives in [history/v1-inventory.md](../history/v1-inventory.md). +Forward-looking companion to the shipped UI spec, [moonmodules/core/services/services.md](../moonmodules/core/services/services.md). The live spec describes the UI as shipped; this file holds what is **not** in it yet: deferred items, open design questions for 1.0, and the gap analysis against projectMM v1. The backward-looking half (how v1/v2 actually worked, patterns consciously rejected, recorded quirks) lives in [history/v1-inventory.md](../history/v1-inventory.md). ### Deferred to 1.x @@ -368,7 +389,7 @@ Forward-looking companion to the shipped UI spec, [moonmodules/core/ui/ui.md](.. ### File Manager follow-ups -The shipped File Manager (see [ui.md](../moonmodules/core/ui/ui.md)) is a lazy expand/collapse tree over `/api/dir` + a size-capped text editor over `/api/file`, with drag-drop upload (tier 1) + per-file download + a filesystem-usage bar. Deferred capabilities, each self-contained: +The shipped File Manager (see [ui.md](../moonmodules/core/services/services.md)) is a lazy expand/collapse tree over `/api/dir` + a size-capped text editor over `/api/file`, with drag-drop upload (tier 1) + per-file download + a filesystem-usage bar. Deferred capabilities, each self-contained: - **Upload — recursive folder tier.** Single-file upload of **any size** streams to the file (`fsWriteStream`, binary-safe, `kUploadMax` + free-space guarded) and downloads stream back (`fsReadAt`), so text/config/binary all work. Remaining: **multi-file / recursive folder drops** — client-side `mkdir` + walk via `dataTransfer.items` `webkitGetAsEntry()`. - **Download — folder as `.zip`.** Per-file download streams (`` on `/api/file`). A folder download needs the browser to walk `/api/dir` recursively, fetch each file, and build a `.zip` client-side — which means bundling a zip library into `app.js`. That's a permanent app.js size bump, and app.js is embedded in firmware, so it weighs on the flash budget (see the flash-budget item above). Gate on real demand; symmetric with the folder-upload tier. diff --git a/docs/gettingstarted.md b/docs/gettingstarted.md index d6d8499d..99b42641 100644 --- a/docs/gettingstarted.md +++ b/docs/gettingstarted.md @@ -183,8 +183,8 @@ network — lives here as its own module, and we're adding more all the time. ![The System module](assets/gettingstarted/02-05-UI-System.png) -> [SystemModule](moonmodules/core/ui/ui.md) · -> [AudioModule](moonmodules/core/ui/ui.md) +> [SystemModule](moonmodules/core/services/services.md) · +> [AudioModule](moonmodules/core/services/services.md) **Firmware** — which build you're running, and where you update it. The **Install** button here does an over-the-air update straight from the device — no @@ -192,7 +192,7 @@ USB cable needed once it's on your network. ![The Firmware module](assets/gettingstarted/02-06-UI-Firmware.png) -> [FirmwareUpdateModule](moonmodules/core/ui/ui.md) +> [FirmwareUpdateModule](moonmodules/core/services/services.md) **Network** — your connection: WiFi or Ethernet, signal strength, and the address others reach it at. The **Devices** section underneath finds other @@ -201,8 +201,8 @@ other. ![The Network module](assets/gettingstarted/02-07-UI-Network.png) -> [NetworkModule](moonmodules/core/ui/ui.md) · -> [DevicesModule](moonmodules/core/ui/ui.md) +> [NetworkModule](moonmodules/core/services/services.md) · +> [DevicesModule](moonmodules/core/services/services.md) > **Lights are just one use.** Everything above — the modules, the live controls, the > 3D view, the web UI, the networking — is a general-purpose engine that knows nothing diff --git a/docs/moonmodules/core/ui/ui.md b/docs/moonmodules/core/services/services.md similarity index 70% rename from docs/moonmodules/core/ui/ui.md rename to docs/moonmodules/core/services/services.md index 050a0d80..4537d788 100644 --- a/docs/moonmodules/core/ui/ui.md +++ b/docs/moonmodules/core/services/services.md @@ -1,11 +1,15 @@ -# Core UI modules +# Core services The user-facing core services — the machinery that runs a show, each configurable in the web UI. Every row links to its generated technical page (the full API, from the `.h`) and its tests. Cross-cutting rationale that no single `.h` owns lives in the prose sections below the table. + + ### System The device's identity and vitals — name (behind mDNS `.local`, the SoftAP SSID, the DHCP hostname), uptime, heap, and per-module footprint reporting. Hosts the Audio and I2C-scan peripherals. +System module controls + - `deviceName` — the device identity behind mDNS `.local`, the SoftAP SSID, and the DHCP hostname. - `deviceModel` — the board model (drives the installer catalog entry). - read-only vitals — `uptime`, `fps`, `heap`, `psram`, `flash`, `chip`, and per-module footprint. @@ -14,10 +18,14 @@ Detail: [technical](../moxygen/SystemModule.md) [Tests](../../../tests/unit-tests.md#systemmodule) + + ### Network WiFi / Ethernet connectivity, static-IP configuration, RSSI and TX-power reporting. Brings the device onto the LAN before the HTTP and WebSocket servers start. +Network module controls + - `mode` — WiFi / Ethernet / off. - `ssid` / `password` — WiFi credentials. - `mDNS` — the `.local` hostname. @@ -29,81 +37,57 @@ Detail: [technical](../moxygen/NetworkModule.md) [Tests](../../../tests/unit-tests.md#networkmodule) + + ### Improv provisioning Serial/BLE Improv Wi-Fi provisioning — the web installer hands credentials to a fresh device over this protocol during the flash-and-connect flow. +Improv provisioning module controls + - `provision_status` — read-only provisioning state. Detail: [technical](../moxygen/ImprovProvisioningModule.md) + + ### Devices Discovers and lists other projectMM devices on the LAN (the `devices` List control), each row expanding to a detail panel; persists the last-known list across reboot. +Devices module — discovered LAN devices + - `devices` — a List control of discovered devices; each row expands to a detail panel. Persistable. Detail: [technical](../moxygen/DevicesModule.md) [Tests](../../../tests/unit-tests.md#devicesmodule) + + ### MQTT -Bridges the light to an MQTT broker so a home-automation hub (Homebridge) can control it. It drives the same `Drivers` controls IR and the WLED app do — every command routes through `Scheduler::setControl`, so MQTT is a transport, not new control logic. The MQTT 3.1.1 client is our own (dependency-free, golden-vector-tested in `MqttPacket.h`), speaking to the broker over the platform TCP socket. Disabled until a broker is set; works over WiFi or Ethernet. +Bridges the light to an MQTT broker so a home-automation hub (Homebridge) can control it — a transport over the shared `Scheduler::setControl` apply-core, not new control logic. Our own dependency-free MQTT 3.1.1 client; disabled until a broker is set. Topics, colour-wheel mapping, and the Homebridge config: ⌄ details. + +MQTT module controls - `broker` — the broker hostname (e.g. `homeassistant.lan`) or IP. A hostname is resolved via DNS. - `port` — broker port (default 1883). - `username` / `password` — broker credentials (optional; the password is stored obfuscated like the WiFi password). -- The topic prefix is `projectMM/` — a **stable** identifier (the last 6 hex of the device's MAC), fixed for the device's life. Renaming the device does **not** change its topics, so a hub's config never breaks on a rename (the WLED/Tasmota/Home-Assistant convention). Not a stored control. - read-only — `mqtt_status` (`disabled` / `idle` / `connecting` / `connected` / `disconnected` / an error). -**Topics** (for a device whose MAC ends `563cfe`): the device SUBSCRIBEs to the `set` topics and PUBLISHes the `get` topics on change (and on connect, so a controller never reads "No Response"). It also publishes its friendly `deviceName` on the retained `name` topic, so a hub can show the human name while the topics stay MAC-stable: - -| direction | topic | payload | -|---|---|---| -| set → device | `projectMM/563cfe/on/set` | `true` / `false` | -| device → get | `projectMM/563cfe/on/get` | `true` / `false` | -| set → device | `projectMM/563cfe/brightness/set` | `0`–`100` | -| device → get | `projectMM/563cfe/brightness/get` | `0`–`100` | -| set → device | `projectMM/563cfe/hsv/set` | `h,s,v` (hue `0`–`359`, sat/val `0`–`100`) | -| device → get | `projectMM/563cfe/hsv/get` | `h,s,v` | -| device → get | `projectMM/563cfe/name` | the friendly `deviceName` (retained) | - -The HomeKit colour wheel has no "palette" concept, so `hsv/set`'s hue+saturation pick the **nearest palette** (each built-in palette has a representative colour; the closest one is selected) and the value drives brightness — the colour wheel becomes a natural palette selector. - -**Homebridge** — install [`homebridge-mqttthing`](https://github.com/arachnetech/homebridge-mqttthing) and add a `lightbulb` accessory. Use the device's own MAC suffix (read it from the `mqtt_status`/topics, or `mosquitto_sub -t 'projectMM/#'`) in place of `563cfe`: - -```json -{ - "accessory": "mqttthing", - "type": "lightbulb", - "name": "projectMM", - "url": "mqtt://:1883", - "username": "", - "password": "", - "topics": { - "getOn": "projectMM/563cfe/on/get", - "setOn": "projectMM/563cfe/on/set", - "getBrightness": "projectMM/563cfe/brightness/get", - "setBrightness": "projectMM/563cfe/brightness/set", - "getHSV": "projectMM/563cfe/hsv/get", - "setHSV": "projectMM/563cfe/hsv/set" - }, - "onValue": "true", - "offValue": "false" -} -``` - -Home Assistant does not need MQTT: it adopts the device through its built-in WLED integration over the existing WLED `/json` API. - Detail: [technical](../moxygen/MqttModule.md) [Tests](../../../tests/unit-tests.md#mqttmodule) + + ### Firmware update Over-the-air firmware flashing — the one operation that swaps the binary and needs a power cycle (every *config* change applies live; a firmware OTA does not). +Firmware update module controls + - `firmware` — the OTA image to flash. - read-only — `version`, `build`, `firmwarePartition`, `update_pct` (progress). @@ -111,36 +95,29 @@ Detail: [technical](../moxygen/FirmwareUpdateModule.md) [Tests](../../../tests/unit-tests.md#firmwareupdatemodule) -### Filesystem - -Persists control values as JSON and restores them on boot, overlaying loaded values through each control's pointer during `onBuildControls()`. The home of the no-reboot live-reconfiguration behaviour. - -- read-only — `lastSaved`. - -Detail: [technical](../moxygen/FilesystemModule.md) - -[Tests](../../../tests/unit-tests.md#filesystemmodule) + ### File Manager -A boot-wired system tool (distinct from Filesystem, which is the persistence *engine*): browse and manage the device filesystem. It renders a dedicated panel — a lazy expand/collapse folder **tree** (the standard VS Code / Explorer shape: each folder loads its children on first expand) plus an inline text editor. Browsing is UI-side over the `/api/dir` listing endpoint; file contents come over `/api/file`; so the module itself stays minimal, exposing only the operations. Dot-prefixed entries (the `.config` persistence dir) are hidden unless `show hidden` is on. +A boot-wired system tool (distinct from Filesystem, the persistence *engine*): browse and manage the device filesystem from a dedicated panel — a lazy expand/collapse folder tree (VS Code / Explorer shape) plus an inline text editor. Browsing is UI-side over `/api/dir` + `/api/file`, so the module itself stays minimal. Tree/toolbar/editor behaviour: ⌄ details. -- `show hidden` — reveal dot-prefixed files/folders (e.g. `.config`); forwarded to `/api/dir` as its `hidden` filter. -- Click a folder's row to select it and toggle its expansion (▸/▾); click a selected file to open the editor. -- The toolbar acts on the selected node: **+ folder** creates a folder inside it, **+ file** creates an empty file (click it to edit), **🗑 delete** removes the selected file or empty folder (press-twice to confirm), **⟳** refreshes. -- **Drag files from the desktop** onto a folder (or the tree) to upload them — the body streams straight to the file (any size, binary-safe; capped only by a sanity limit and the free space, which it reports if short); a per-file **⤓** streams it back to the desktop. -- The editor loads a file's text, pretty-prints JSON on open, and saves atomically; a binary file (contains a NUL) loads read-only (use ⤓ to fetch it intact). Upload and download both stream, so neither truncates. -- A filesystem-usage bar (used / total, read from the platform) sits below the tree, with a `last saved` line under it (how long ago config was persisted — read from the FilesystemModule engine). -- Create / delete are HTTP calls (`POST` / `DELETE /api/dir?path=`), not controls — the path rides the request, so nothing is stored on the device per op. +File Manager panel — folder tree + toolbar -Last-modified dates (needs an NTP time source + LittleFS mtime), binary/large + folder upload, folder-as-zip download, and `.ml` syntax highlighting are backlogged ([backlog-core § File Manager follow-ups](../../../backlog/backlog-core.md#file-manager-follow-ups)). +- `file browser` — the panel itself: an expand/collapse folder tree with a toolbar (+folder / +file / delete / refresh / upload) and an inline text editor. The module's main surface (⌄ details for the interactions). +- `show hidden` — reveal dot-prefixed files/folders (e.g. `.config`); forwarded to `/api/dir` as its `hidden` filter. +- `filesystem` — read-only usage bar (used / total bytes, from the platform). +- `lastSaved` — read-only; how long ago config was persisted (read from the Filesystem engine). Detail: [technical](../moxygen/FileManagerModule.md) + + ### Audio A System peripheral (added by the user, not auto-wired): an I²S microphone (or line-in ADC) feeding the FFT that audio-reactive effects consume via `AudioModule::latestFrame()`. It also syncs audio over UDP, WLED-compatible: broadcast the local analysis for the WLED ecosystem, or receive a peer's audio to drive effects with no local mic. Idle until real GPIOs are entered. +Audio module controls + - `wsPin` / `sdPin` / `sckPin` — the I²S GPIOs (unset until entered). - `mclkPin` — master-clock GPIO for a line-in ADC that needs one (e.g. the PCM1808); leave unset for a plain mic. - `sampleRate` — mic/ADC sample rate. @@ -153,26 +130,91 @@ Detail: [technical](../moxygen/AudioModule.md) [Tests](../../../tests/unit-tests.md#audiomodule) + + ### I2C scan A System peripheral that probes the I²C bus (default GPIO21/22) on a button press and reports the addresses found. +I2C scan module controls + - `sda` / `scl` — the bus GPIOs (default GPIO21/22). - `scan` — a button; press to probe the bus now. - read-only — `result` (addresses found). Detail: [technical](../moxygen/I2cScanModule.md) + + ### IR -A System peripheral (added per board, not auto-wired): an IR remote receiver that drives other modules' controls through the shared `Scheduler::setControl` primitive — the device's IR input, the counterpart of the WLED-app bridge. It **learns** any remote: pick an action in `learn`, press a remote button to bind its code, and thereafter that button drives the action. Decoding is real NEC-over-RMT; a received code (bound or not) shows in the status line. +A System peripheral (added per board): an IR remote receiver that drives other modules' controls through the shared `Scheduler::setControl` primitive. It **learns** any remote (NEC-over-RMT): pick an action in `learn`, press a button to bind its code. What each action does + the status-line messages: ⌄ details. -An IR receiver and the common 21-key RGB remote it decodes +IR module controls - `pin` — the IR receiver GPIO (unset until entered; on the SE16 it shares GPIO 5 with the Ethernet MISO via the board switch, on the LightCrafter it is its own GPIO 4 alongside Ethernet). - `learn` — pick an action to bind (`on/off` / brightness up / brightness down / palette next / palette prev); the next received code binds to it, then learning disarms. The first option, `off`, is the disarmed state (bind nothing), not a light action. - `code on/off` / `code brightness up` / `code brightness down` / `code palette next` / `code palette prev` — read-only, the learned code for each action (persisted). -The actions toggle `Drivers.on` (master power), nudge `Drivers.brightness` (±16, clamped 0–255) and step `Drivers.palette` (next/previous). The status line reports setup state ("set pin to receive" / "ready"), the learn prompt, a binding ("learned … = 0x…"), a fired action ("Drivers.brightness → N", "Drivers.on → off"), and an unbound code ("received 0x… (unassigned)"). - Detail: [technical](../moxygen/IrModule.md) + +## MQTT — details + +The topic prefix is `projectMM/` — a **stable** identifier (the last 6 hex of the device's MAC), fixed for the device's life. Renaming the device does **not** change its topics, so a hub's config never breaks on a rename (the WLED/Tasmota/Home-Assistant convention). It's derived, not a stored control. + +**Topics** (for a device whose MAC ends `563cfe`): the device SUBSCRIBEs to the `set` topics and PUBLISHes the `get` topics on change (and on connect, so a controller never reads "No Response"). It also publishes its friendly `deviceName` on the retained `name` topic, so a hub can show the human name while the topics stay MAC-stable: + +| direction | topic | payload | +|---|---|---| +| set → device | `projectMM/563cfe/on/set` | `true` / `false` | +| device → get | `projectMM/563cfe/on/get` | `true` / `false` | +| set → device | `projectMM/563cfe/brightness/set` | `0`–`100` | +| device → get | `projectMM/563cfe/brightness/get` | `0`–`100` | +| set → device | `projectMM/563cfe/hsv/set` | `h,s,v` (hue `0`–`359`, sat/val `0`–`100`) | +| device → get | `projectMM/563cfe/hsv/get` | `h,s,v` | +| device → get | `projectMM/563cfe/name` | the friendly `deviceName` (retained) | + +The HomeKit colour wheel has no "palette" concept, so `hsv/set`'s hue+saturation pick the **nearest palette** (each built-in palette has a representative colour; the closest one is selected) and the value drives brightness — the colour wheel becomes a natural palette selector. + +**Homebridge** — install [`homebridge-mqttthing`](https://github.com/arachnetech/homebridge-mqttthing) and add a `lightbulb` accessory. Use the device's own MAC suffix (read it from the `mqtt_status`/topics, or `mosquitto_sub -t 'projectMM/#'`) in place of `563cfe`: + +```json +{ + "accessory": "mqttthing", + "type": "lightbulb", + "name": "projectMM", + "url": "mqtt://:1883", + "username": "", + "password": "", + "topics": { + "getOn": "projectMM/563cfe/on/get", + "setOn": "projectMM/563cfe/on/set", + "getBrightness": "projectMM/563cfe/brightness/get", + "setBrightness": "projectMM/563cfe/brightness/set", + "getHSV": "projectMM/563cfe/hsv/get", + "setHSV": "projectMM/563cfe/hsv/set" + }, + "onValue": "true", + "offValue": "false" +} +``` + +Home Assistant does not need MQTT: it adopts the device through its built-in WLED integration over the existing WLED `/json` API. + +## File Manager — details + +The panel is a lazy folder **tree** (each folder loads its children on first expand) plus an inline text editor. Dot-prefixed entries (the `.config` persistence dir) are hidden unless `show hidden` is on. + +- Click a folder's row to select it and toggle its expansion (▸/▾); click a selected file to open the editor. +- The toolbar acts on the selected node: **+ folder** creates a folder inside it, **+ file** creates an empty file (click it to edit), **🗑 delete** removes the selected file or empty folder (press-twice to confirm), **⟳** refreshes. +- **Drag files from the desktop** onto a folder (or the tree) to upload them — the body streams straight to the file (any size, binary-safe; capped only by a sanity limit and the free space, which it reports if short); a per-file **⤓** streams it back to the desktop. +- The editor loads a file's text, pretty-prints JSON on open, and saves atomically; a binary file (contains a NUL) loads read-only (use ⤓ to fetch it intact). Upload and download both stream, so neither truncates. +- Create / delete are HTTP calls (`POST` / `DELETE /api/dir?path=`), not controls — the path rides the request, so nothing is stored on the device per op. + +Last-modified dates (needs an NTP time source + LittleFS mtime), binary/large + folder upload, folder-as-zip download, and `.ml` syntax highlighting are backlogged ([backlog-core § File Manager follow-ups](../../../backlog/backlog-core.md#file-manager-follow-ups)). + +## IR — details + +The learned actions drive the `Drivers` module: `on/off` toggles `Drivers.on` (master power), brightness up/down nudge `Drivers.brightness` (±16, clamped 0–255), and palette next/prev step `Drivers.palette`. + +The status line reports setup state ("set pin to receive" / "ready"), the learn prompt, a binding ("learned … = 0x…"), a fired action ("Drivers.brightness → N", "Drivers.on → off"), and an unbound code ("received 0x… (unassigned)"). diff --git a/docs/moonmodules/core/supporting/supporting.md b/docs/moonmodules/core/supporting/supporting.md index cf5eb446..306762c6 100644 --- a/docs/moonmodules/core/supporting/supporting.md +++ b/docs/moonmodules/core/supporting/supporting.md @@ -26,6 +26,16 @@ Detail: [technical](../moxygen/MoonModule.md) [Tests](../../../tests/unit-tests.md#moonmodule) + + +### Filesystem + +The persistence **engine**: writes control values to `/.config/*.json` and restores them on boot, overlaying loaded values through each control's pointer during `onBuildControls()`. A non-UI module (renders no card); its "last saved" status is surfaced by the File Manager. The home of the no-reboot live-reconfiguration behaviour (see below). + +Detail: [technical](../moxygen/FilesystemModule.md) + +[Tests](../../../tests/unit-tests.md#filesystemmodule) + ## Persistence and dynamic rebuild Control values persist via [FilesystemModule](../moxygen/FilesystemModule.md), which overlays loaded values through each control's variable pointer during `onBuildControls()`. Calling `onBuildControls()` again at runtime (e.g. when a Select changes mode) clears and rebuilds the set, so only the controls relevant to the current mode show — this is how a control's conditional `hidden` flag re-evaluates. The rebuild sweep is also how a config change applies live, with no reboot. diff --git a/docs/moonmodules/light/drivers/drivers.md b/docs/moonmodules/light/drivers/drivers.md index 19df7cb8..a0be1caf 100644 --- a/docs/moonmodules/light/drivers/drivers.md +++ b/docs/moonmodules/light/drivers/drivers.md @@ -14,6 +14,8 @@ A driver reads its window of the [Drivers](../moxygen/Drivers.md) container's sh Addressable WS2812B-class LEDs over a wire, one GPIO per strand. Three peripherals do this — pick by chip: **RMT** (single/few strands, any ESP32), **LCD_CAM** (8 parallel strands, S3), **Parlio** (1–8 parallel strands, P4). Same controls, same wire contract; they differ only in how many strands clock out at once and on which chip. +LED output driver controls + - `pins` — data GPIO list, e.g. `18,17,16` (one strand each). Empty idles until set; changing it re-inits live. - `ledsPerPin` — lights per pin, matched by position; empty or short = even split of the remainder. - `loopbackTest` — on/off TX→RX loopback self-test (jumper the first pin to `loopbackRxPin`); verdict in the status field. diff --git a/docs/moonmodules/light/supporting/supporting.md b/docs/moonmodules/light/supporting/supporting.md index 8cae5501..c5afcb7f 100644 --- a/docs/moonmodules/light/supporting/supporting.md +++ b/docs/moonmodules/light/supporting/supporting.md @@ -6,6 +6,8 @@ The light-domain machinery the catalog modules (effects, modifiers, layouts, dri One rendering layer — an effect writes into its buffer, modifiers transform the coordinate mapping, and the layer composites onto the shared output. The unit the render loop iterates. +Layer container with a child effect + - `blendMode` — how this layer composites onto the ones below (overwrite / alpha / additive). Detail: [technical](../moxygen/Layer.md) @@ -16,6 +18,8 @@ Detail: [technical](../moxygen/Layer.md) The container of layers — composites them (blend mode + opacity per layer) into the final light buffer. +Layers container + Detail: [technical](../moxygen/Layers.md) [Tests](../../../tests/unit-tests.md#layers) @@ -24,6 +28,8 @@ Detail: [technical](../moxygen/Layers.md) The container of layout modules — walks each layout's coordinates to build the physical light set the mapping consumes. +Layouts container + Detail: [technical](../moxygen/Layouts.md) [Tests](../../../tests/unit-tests.md#layouts) @@ -32,6 +38,10 @@ Detail: [technical](../moxygen/Layouts.md) The container of driver modules — owns the shared driver buffer and the per-light output correction every driver applies before sending. +Drivers container with the on/off + brightness controls + +- `on` — master power (default on). Turning it off scales the whole output to black while preserving `brightness`, so on restores the exact level. The single power control every consumer drives (the UI toggle, IR's on/off, the WLED app / Home Assistant, MQTT/Homebridge) through `Scheduler::setControl`. +- `brightness` — global output brightness (0–255). - `lightPreset` — the output-correction preset (colour order, gamma, brightness) every driver applies. - `palette` — the active palette effects sample from. diff --git a/docs/usecases/home-automation.md b/docs/usecases/home-automation.md new file mode 100644 index 00000000..820ec371 --- /dev/null +++ b/docs/usecases/home-automation.md @@ -0,0 +1,149 @@ +# Home automation + +Bring a projectMM device into your smart home — controlled alongside your lights, scenes, and automations — using the [MQTT module](../moonmodules/core/services/services.md#mqtt) (or, for some hubs, the built-in WLED compatibility). The device exposes on/off, brightness, and colour; a home-automation platform adopts it and drives those from its own app, voice assistant, and automations. + +Integration goes **both directions**, and this page covers both: + +- **Your smart home controlling the device** — a hub (Homebridge, Home Assistant, …) adopts the projectMM device and drives its on/off, brightness, and colour from its own app, voice assistant, and automations. +- **The device controlling smart-home lights** — projectMM drives **Philips Hue** bulbs as effect pixels, so your existing smart bulbs become part of a show. + +The recipes below are each self-contained: + +- **[Homebridge (Apple Home / HomeKit)](#homebridge-apple-home-homekit)** — bridge the device over MQTT so it appears as a HomeKit accessory. Full walkthrough (the worked example today). +- **[Drive Hue lights](#drive-hue-lights)** — point an effect at your Hue bulbs. +- **[Other platforms](#other-platforms)** — Home Assistant and beyond (an overview of the paths; detailed recipes as they land). + +The control surface these integrations drive — the MQTT controls, topics, and accessory config — is documented once in [Core › Services › MQTT](../moonmodules/core/services/services.md#mqtt); this page is the setup, and links there for the reference. + +## Prerequisites + +- A projectMM device on your WiFi/Ethernet with the [MQTT module](../moonmodules/core/services/services.md#mqtt) present (it ships on boards whose catalog entry includes it; the Shelly model does). +- The device's **MAC suffix** — the last 6 hex of its MAC, which is its stable topic id (`projectMM/`). Read it from the MQTT module's `mqtt_status`, or once the device is talking to the broker, `mosquitto_sub -t 'projectMM/#'`. The examples below use `563cfe`; substitute yours. + +## Homebridge (Apple Home / HomeKit) + +[Homebridge](https://homebridge.io) exposes non-HomeKit devices to Apple Home. The chain is the same however you host it: an **MQTT broker** sits in the middle, because Homebridge's `homebridge-mqttthing` plugin is an MQTT *client*, not a broker. The device publishes/subscribes to the broker; Homebridge talks to the same broker; HomeKit talks to Homebridge. + +``` +Apple Home ──HAP──▶ Homebridge ──MQTT──▶ broker ◀──MQTT── projectMM device +``` + +So there are two things to do: **install** a broker + Homebridge (the only part that differs by host — a Pi for a permanent setup, a Mac/PC for a quick test), then **configure** the device and the accessory (identical everywhere). If you already run Homebridge and a broker, skip straight to [Set up Homebridge](#set-up-homebridge). + +### Install a broker + Homebridge + +Only this part is host-specific — pick your platform. Each installs **Mosquitto** (the broker) and **Homebridge**; the next section wires them up the same way regardless. A **Raspberry Pi** is the natural permanent home (services survive a reboot); a **Mac or PC** is fine for a throwaway test. Already have both running? Jump to [Set up Homebridge](#set-up-homebridge). + +Wherever the broker runs, the device reaches it over the LAN, so the broker must listen on all interfaces, not just loopback — noted per platform below. Confirm the broker sees the device at any point with: + +``` +mosquitto_sub -t 'projectMM/#' -v +``` + +#### Raspberry Pi + +On Raspberry Pi OS (or any Debian-based distro): + +```bash +# broker +sudo apt update && sudo apt install -y mosquitto mosquitto-clients +``` + +The package starts a `mosquitto` **systemd service**. Mosquitto 2.x listens only on `localhost` by default, so open the LAN listener with a drop-in config — create `/etc/mosquitto/conf.d/projectmm.conf` containing: + +``` +listener 1883 0.0.0.0 +allow_anonymous true +``` + +then `sudo systemctl restart mosquitto`. (`allow_anonymous true` is fine for a home LAN; add a password file if the broker is exposed more widely.) + +Install Homebridge via the official Debian repository ([the apt-package guide](https://github.com/homebridge/homebridge/wiki/Install-Homebridge-on-Raspbian)) — it runs as a systemd service with the Config UI at `http://:8581`. Both services persist across reboots by default (`sudo systemctl enable mosquitto homebridge` to be explicit), which is what makes a Pi the right permanent host. + +#### macOS + +```bash +# broker — run in the foreground so you see every packet (Ctrl-C to stop) +brew install mosquitto +/opt/homebrew/sbin/mosquitto -v +``` + +The foreground broker listens on `1883` on all interfaces, so the device reaches it at your Mac's LAN IP while Homebridge reaches it on loopback. + +Install Homebridge ([homebridge.io](https://homebridge.io) has the macOS installer; `npm i -g homebridge homebridge-config-ui-x` is the CLI route). Start it with `homebridge` in a terminal, or via the menu-bar app. + +**Tearing it down:** Ctrl-C the foreground `mosquitto` and quit Homebridge — nothing persists as a service. + +#### Windows + +```powershell +# broker +winget install EclipseFoundation.Mosquitto +``` + +The installer registers a Windows service and installs the tools under `C:\Program Files\mosquitto\`. For a test, stop the service and run it in the foreground — Mosquitto 2.x binds only to `localhost` unless told otherwise, so pass a one-line config that opens the LAN listener (create `test.conf` with `listener 1883 0.0.0.0` and `allow_anonymous true`): + +```powershell +net stop mosquitto +& 'C:\Program Files\mosquitto\mosquitto.exe' -v -c test.conf +``` + +Allow `mosquitto.exe` through Windows Defender Firewall on `1883` the first time (accept the prompt, or add an inbound rule for TCP 1883). + +Install Homebridge for Windows ([the official installer](https://github.com/homebridge/homebridge/wiki/Install-Homebridge-on-Windows-10-11)) — it runs as a service with the Config UI at `http://localhost:8581`. + +**Tearing it down:** Ctrl-C the foreground `mosquitto` (leave the broker service stopped, or disable it in **Services**); stop the Homebridge service from the Config UI or **Services**. + +### Set up Homebridge + +With a broker and Homebridge running — anywhere — the rest is host-independent: point the device at the broker, then add one accessory to Homebridge. Do this whether you just installed both above or already had them. + +1. **Point the device at the broker.** In the device's web UI, open the **MQTT** module and set: + - `broker` — the broker's hostname or IP. Use the broker host's **LAN** IP (or `.local` name) so the device can route to it — not `127.0.0.1`, which is loopback on the *host*, unreachable from the device. Find it with `hostname -I` (Pi/Linux), `ipconfig getifaddr en0` (macOS), or `ipconfig` (Windows). + - `port` — usually `1883`. + - `username` / `password` — only if your broker requires auth (the test brokers above don't). + + `mqtt_status` turns to `connected` once it reaches the broker, and `mosquitto_sub -t 'projectMM/#' -v` shows the device's `.../on/get`, `.../brightness/get`, `.../hsv/get`, and retained `.../name`. + +2. **Add the accessory to Homebridge.** Install the [`homebridge-mqttthing`](https://github.com/arachnetech/homebridge-mqttthing) plugin (Config UI **Plugins** screen, or `npm i -g homebridge-mqttthing`), then add the `lightbulb` accessory block from [Core › Services › MQTT § Homebridge](../moonmodules/core/services/services.md#mqtt) to your Homebridge config — via the Config UI **Config** editor, or `~/.homebridge/config.json` for a CLI install. Set: + - `url` — `mqtt://:1883`. When Homebridge and the broker share a host (the usual case), `mqtt://127.0.0.1:1883` works, since here loopback *is* the broker. + - `563cfe` — replaced by your device's MAC suffix throughout the `topics`. + - `username` / `password` — matching the broker, or removed if none. + + Restart Homebridge. + +### Pair it in Apple Home + +Once the broker, device, and Homebridge are all talking (the `mosquitto_sub` window shows the device, and Homebridge lists the accessory), add it to HomeKit: in the **Home** app, **Add Accessory → More options →** the Homebridge bridge, using the PIN Homebridge prints on start (or shown in the Config UI). The device shows up as a light — on/off, brightness, and the colour wheel that steps through palettes — the same control surface a real hub gives, verified locally. + +## Drive Hue lights + +The other direction: instead of a hub controlling the device, the **device controls your Philips Hue bulbs**, treating each colour bulb as a pixel of an effect. Your existing smart lights join the show — an effect's colours glide across them alongside (or instead of) an LED strip. This is a projectMM **output driver**, not a hub integration, so there's no broker and no Homebridge — the device talks straight to the Hue bridge over its LAN HTTP API. + +Because Hue is a rate-limited HTTP hub (~10 commands/s), this is **smooth ambient colour**, not fast strobing — the driver paces itself to the bridge and lets it fade between colours. Full behaviour, controls, and the wire contract are in the driver reference: [Drivers › Hue](../moonmodules/light/drivers/drivers.md#hue). + +**Recommended layout:** set up a **one-dimensional grid — width 1, height = the number of Hue lights** you want to control. Each pixel of that column maps to one bulb (the driver assigns window pixels to bulbs in order), so a 1×N grid gives you exactly N discrete lights with no wasted pixels, and 1D effects (rainbow, chase, …) read naturally across the bulbs. Sizing the grid to your bulb count keeps the effect and the driver in step. + +To set it up: + +1. **Add a Hue driver.** In the device's web UI pipeline (**Layers → a Layer → its Drivers**), add a **Hue** driver. Enter your bridge's IP in `bridgeIp` (find it in the Hue app, or at [discovery.meethue.com](https://discovery.meethue.com)). +2. **Pair with the bridge.** Press the physical **link button** on the Hue bridge, then click the driver's **`pair`** button within ~30 seconds. The device claims an app key (stored on the driver as `appKey`) — a one-time step; the status line reports `paired, N lights`. +3. **Pick what it drives.** The driver lists the bridge's colour-capable, reachable bulbs and its rooms; use the `room` / `light` controls to aim the effect at all bulbs, one room, or a single light. Each selected bulb becomes one pixel of the driver's window. +4. **Run an effect.** Any effect on the layer now drives the bulbs — the global brightness slider and colour-order correction apply to them just like a physical strip (brightness 0 turns a bulb off). + +*Note:* a bulb is only driven if it's an "Extended color light" and currently reachable — a white-only bulb, a plug, or a powered-off light is skipped. For true real-time (fast) Hue, the [Hue Entertainment API](https://developers.meethue.com/develop/hue-entertainment/) (DTLS streaming) is a separate future path; today's driver targets the standard API's ambient-colour sweet spot. + +## Other platforms + +Homebridge above is the worked example; other home-automation platforms adopt the same device through the same primitives. The building blocks are shared — the [MQTT control surface](../moonmodules/core/services/services.md#mqtt) (broker + the `on`/`brightness`/`hsv` topics) and, for hubs that speak it, the device's WLED compatibility — so a new integration is a new front-end on top, not new device work. + +- **Home Assistant** — HA adopts the device **without MQTT**: its built-in WLED integration discovers it over the existing WLED `/json` API the device already serves (the same interface the WLED apps use), so on/off + brightness work with no broker in the middle. An MQTT path (HA's MQTT Discovery, for the full control surface) is the natural next step. *Detailed recipe to be added.* +- **Others** (Node-RED, openHAB, voice assistants via a hub, …) — anything that speaks MQTT can drive the device through the [control topics](../moonmodules/core/services/services.md#mqtt); the broker setup is the same [install step](#install-a-broker-homebridge) as above, only the consumer differs. *Recipes added as they're worked through.* + +When a platform gets a full walkthrough, it becomes its own `##` section beside Homebridge, listed in the intro — the per-integration recipe is self-contained, while the shared reference stays in [Core › Services › MQTT](../moonmodules/core/services/services.md#mqtt). + +## Troubleshooting + +- **`mqtt_status` stuck on `connecting`** — the device can't reach the broker. Check the broker IP is your computer's *LAN* IP (not `127.0.0.1`, which the device can't route to), that the broker is actually listening on all interfaces (on Windows, the `listener 1883 0.0.0.0` line above), and that the firewall isn't blocking `1883`. +- **Homebridge shows "No Response"** — the accessory's topics don't match the device's MAC suffix, or the `url` points at the wrong broker. Confirm the suffix with `mosquitto_sub -t 'projectMM/#'` and that the same broker appears in both the device's `broker` control and the accessory `url`. +- **Colour wheel doesn't match a specific colour** — expected: HomeKit sends a full-precision hue, and the device snaps it to the *nearest* built-in palette (there's no arbitrary-colour mode). See the palette note in the [MQTT reference](../moonmodules/core/services/services.md#mqtt). diff --git a/mkdocs.yml b/mkdocs.yml index 16305f4f..f150ac19 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -122,6 +122,8 @@ nav: # site-relative /projectMM/install/) so MkDocs treats it as the external # resource it is, rather than warning about an unresolvable absolute path. - Web installer: https://moonmodules.org/projectMM/install/ + - Use cases: + - Home automation: usecases/home-automation.md - Effects & building shows: - Effects: moonmodules/light/effects/effects.md - Layouts: moonmodules/light/layouts/layouts.md @@ -130,7 +132,7 @@ nav: - Live scripting: moonmodules/light/moonlive/MoonLiveEffect.md - Supporting: moonmodules/light/supporting/supporting.md - Core: - - UI: moonmodules/core/ui/ui.md + - Services: moonmodules/core/services/services.md - Supporting: moonmodules/core/supporting/supporting.md - Tests (what we verify): - Unit tests: tests/unit-tests.md diff --git a/moondeck/docs/mkdocs_hooks.py b/moondeck/docs/mkdocs_hooks.py index 74240670..275e3e62 100644 --- a/moondeck/docs/mkdocs_hooks.py +++ b/moondeck/docs/mkdocs_hooks.py @@ -130,7 +130,7 @@ def _sub(m: re.Match) -> str: # transform, one common authoring process for every summary page (supporting rows # just leave the preview/controls columns blank). "moonmodules/core/supporting/supporting.md", - "moonmodules/core/ui/ui.md", + "moonmodules/core/services/services.md", "moonmodules/light/supporting/supporting.md", } @@ -184,9 +184,9 @@ def _emit_row(b: dict, details_names: set) -> str: # awaiting a gif and a supporting module that has no visual by nature. col2 = "—" - # Col 3: parameters, one per line. Split each at the em-dash into the name part + # Col 3: controls, one per line. Split each at the em-dash into the name part # (before — keeps its `code` chips, styled accent) and the description (after — - # greyed via .mm-pdesc, matching the muted module description). Params without a + # greyed via .mm-pdesc, matching the muted module description). Controls without a # dash render whole in the name part. col3_parts = [] for p in b["params"]: @@ -247,7 +247,7 @@ def flush_table(): if rows: out.append('

') out.append("") - out.append("| Name | Preview | Parameters | Links |") + out.append("| Name | Preview | Controls | Links |") out.append("|------|---------|------------|-------|") out.extend(rows) out.append("") diff --git a/moondeck/docs/screenshot_modules.py b/moondeck/docs/screenshot_modules.py index f04e9810..10df4d13 100644 --- a/moondeck/docs/screenshot_modules.py +++ b/moondeck/docs/screenshot_modules.py @@ -134,9 +134,34 @@ def asset_dir_for(type_name: str) -> Path: "FirmwareUpdateModule", "NetworkModule", "HttpServerModule", - "ImprovProvisioningModule", # ESP32-only — skipped if not in state + "MqttModule", + "FileManagerModule", + "DevicesModule", + # Present only in an ESP32 tree (peripherals / provisioning) — skipped on desktop + # (not in state); capture these against a board when needed. + "ImprovProvisioningModule", + "AudioModule", + "I2cScanModule", + "IrModule", ] +# Core modules that are CHILDREN of another module (so they have no top-level nav entry +# of their own): {child type → parent type}. The capture navs to the parent's nav root, +# then screenshots the child's own card. Everything not listed here is a top-level card. +CORE_NAV_ROOT = { + "MqttModule": "NetworkModule", + "DevicesModule": "NetworkModule", + "ImprovProvisioningModule": "NetworkModule", + # The System peripherals (Audio / IR / I2C scan) are children of SystemModule when present, + # but they're added per-board and never exist in the desktop tree — so they're captured + # against an ESP32, where these entries route the shot to the System nav root. + "AudioModule": "SystemModule", + "I2cScanModule": "SystemModule", + "IrModule": "SystemModule", +} +# FileManagerModule, FirmwareUpdateModule, SystemModule, NetworkModule are top-level +# (scheduler.addModule in main.cpp) — NOT listed here, so they capture as standalone cards. + # --------------------------------------------------------------------------- # Extra shots: MoonDeck tabs + web installer # Each entry: (filename, url, wait_selector, doc_files, anchor_text) @@ -435,15 +460,22 @@ def find_container_nav_names(host: str) -> dict[str, str]: def find_core_module_names(host: str) -> dict[str, str]: - """Return a map of type → live module name for core (always-present) modules.""" + """Return a map of type → live module name for core (always-present) modules. + Recurses the tree: some core modules (Mqtt, Devices, Improv) are children of + NetworkModule, not top-level, so a flat scan would miss them.""" r = _get(f"http://{host}/api/state", timeout=5) if not r.ok: return {} result: dict[str, str] = {} - for m in r.json().get("modules", []): - t = m.get("type", "") - if t in CORE_MODULES: - result[t] = m.get("name", "") + + def walk(mods): + for m in mods: + t = m.get("type", "") + if t in CORE_MODULES and t not in result: + result[t] = m.get("name", "") + walk(m.get("children", [])) + + walk(r.json().get("modules", [])) return result @@ -813,7 +845,15 @@ def _sweep_orphans(modules: list) -> None: skipped.append((type_name, "already exists")) continue print(f" {type_name} …", end=" ", flush=True) - ok = screenshot_container(page, args.host, cname, out_path) + # A top-level module is its own nav root (screenshot_container navs + cards by the + # same name). A CHILD module (Mqtt/Devices/Improv under Network) has no nav entry of + # its own — nav to its parent root, then screenshot the child's own card by name. + parent_type = CORE_NAV_ROOT.get(type_name) + if parent_type: + nav_name = core_names.get(parent_type, "") # live name of the nav root (e.g. "Network") + ok = screenshot_module(page, args.host, cname, nav_name, out_path) + else: + ok = screenshot_container(page, args.host, cname, out_path) print(f"saved → {out_path.relative_to(ROOT)}" if ok else "failed") if ok: captured.append(type_name) diff --git a/src/core/MqttModule.h b/src/core/MqttModule.h index f77ff1ac..429d78fd 100644 --- a/src/core/MqttModule.h +++ b/src/core/MqttModule.h @@ -39,7 +39,7 @@ namespace mm { /// reads "No Response"). A dropped socket reconnects with a backoff. /// /// **Prior art:** the OASIS MQTT 3.1.1 standard + homebridge-mqttthing's topic conventions (see -/// docs/moonmodules/core/ui/ui.md#mqtt for the Homebridge accessory config). The MoonLight sibling +/// docs/moonmodules/core/services/services.md#mqtt for the Homebridge accessory config). The MoonLight sibling /// bridges the same on/off+brightness surface through a full framework MQTT client + HA discovery; /// projectMM writes its own lean client over the platform socket primitive instead. class MqttModule : public MoonModule { diff --git a/src/main.cpp b/src/main.cpp index 56493ac8..11410757 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -209,18 +209,18 @@ static void registerModuleTypes() { #if defined(CONFIG_SOC_PARLIO_SUPPORTED) mm::ModuleFactory::registerType("ParlioLedDriver", "light/drivers/ParlioLedDriver.md"); #endif - mm::ModuleFactory::registerType("HttpServerModule", "core/ui/ui.md"); - mm::ModuleFactory::registerType("SystemModule", "core/ui/ui.md#system"); - mm::ModuleFactory::registerType("AudioModule", "core/ui/ui.md#audio"); - mm::ModuleFactory::registerType("I2cScanModule", "core/ui/ui.md#i2c-scan"); - mm::ModuleFactory::registerType("IrModule", "core/ui/ui.md#ir"); - mm::ModuleFactory::registerType("FileManagerModule", "core/ui/ui.md#file-manager"); - mm::ModuleFactory::registerType("FirmwareUpdateModule", "core/ui/ui.md#firmware-update"); - mm::ModuleFactory::registerType("ImprovProvisioningModule", "core/ui/ui.md#improv-provisioning"); - mm::ModuleFactory::registerType("MqttModule", "core/ui/ui.md#mqtt"); - mm::ModuleFactory::registerType("DevicesModule", "core/ui/ui.md#devices"); - mm::ModuleFactory::registerType("NetworkModule", "core/ui/ui.md#network"); - mm::ModuleFactory::registerType("FilesystemModule", "core/ui/ui.md#filesystem"); + mm::ModuleFactory::registerType("HttpServerModule", "core/services/services.md"); + mm::ModuleFactory::registerType("SystemModule", "core/services/services.md#system"); + mm::ModuleFactory::registerType("AudioModule", "core/services/services.md#audio"); + mm::ModuleFactory::registerType("I2cScanModule", "core/services/services.md#i2c-scan"); + mm::ModuleFactory::registerType("IrModule", "core/services/services.md#ir"); + mm::ModuleFactory::registerType("FileManagerModule", "core/services/services.md#file-manager"); + mm::ModuleFactory::registerType("FirmwareUpdateModule", "core/services/services.md#firmware-update"); + mm::ModuleFactory::registerType("ImprovProvisioningModule", "core/services/services.md#improv-provisioning"); + mm::ModuleFactory::registerType("MqttModule", "core/services/services.md#mqtt"); + mm::ModuleFactory::registerType("DevicesModule", "core/services/services.md#devices"); + mm::ModuleFactory::registerType("NetworkModule", "core/services/services.md#network"); + mm::ModuleFactory::registerType("FilesystemModule", "core/supporting/supporting.md#filesystem"); } static void printModuleMetrics(mm::MoonModule* mod, int depth) { diff --git a/src/ui/app.js b/src/ui/app.js index 8fd579e4..ff5c4e6e 100644 --- a/src/ui/app.js +++ b/src/ui/app.js @@ -520,7 +520,7 @@ function createCard(mod, depth) { // Help link → the module's spec page on the rendered docs site, far right of // the row. docPath comes from /api/types (relative to docs/moonmodules/, e.g. - // "core/ui/ui.md#audio" or "light/effects/effects.md#fire"); omitted if none. + // "core/services/services.md#audio" or "light/effects/effects.md#fire"); omitted if none. // The site is Material for MkDocs at moonmodules.org/projectMM/ (flat URLs, so // foo.md → foo.html; the MkDocs heading slugs match these #anchors), reached // via the same /projectMM/ subpath the installer uses. Convert only the `.md` diff --git a/web-installer/deviceModels.json b/web-installer/deviceModels.json index b44de44c..fa230101 100644 --- a/web-installer/deviceModels.json +++ b/web-installer/deviceModels.json @@ -1064,8 +1064,8 @@ "parent_id": "Layers" }, { - "type": "SolidEffect", - "id": "Solid", + "type": "RainbowEffect", + "id": "Rainbow", "parent_id": "Layer" }, { From adde7dcbeebbe7aac837719427c0f9e0ecf2eec6 Mon Sep 17 00:00:00 2001 From: ewowi Date: Mon, 6 Jul 2026 13:34:00 +0200 Subject: [PATCH 2/5] Docs: embed module card screenshots in moxygen pages via @card; trim inherited-member bloat MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a @card image directive so each module's generated technical page shows its UI card screenshot, trims the moxygen inherited-member dump (a link to the base class is enough), fixes AudioModule's class description not rendering, and gives every catalog module a short technical one-line class description. Also sweeps the image assets so every non-board image is referenced, parking the strays. KPI: 16384lights | PC:666KB | tick:121/97/123/15/2/275/59/17/20/162/120/17/1/36us(FPS:8264/10309/8130/66666/500000/3636/16949/58823/50000/6172/8333/58823/1000000/27777) | ESP32:1369KB | tick:2272us(FPS:440) | heap:157KB Scripts / MoonDeck - gen_api.py: new @card directive — a plain-text line in a class /// comment that the generator post-processes into an on the technical page (resolving ../../../assets//). Doxygen with GENERATE_HTML=NO drops \image/@htmlonly/raw from the XML, but preserves plain text, so @card survives Doxygen→moxygen and is rendered here; a missing asset drops the directive (no broken link). Matches @card anywhere on the line since a rich multi-paragraph comment flows the directive inline. - moxygen class.md template: stop re-listing the full inherited-member interface on every subclass — the `> **Inherits:** [Base]` link already points to the base's own page where those members are documented once. Re-dumping MoonModule/EffectBase's large surface on every subclass was bloat (a RainbowEffect page went 118→26 lines). No-duplication applied to generated pages. Docs - AudioModule.h: moved the class /// comment from the top of the file (before the includes + `namespace mm {`) to directly above `class AudioModule`, so Doxygen attaches it — its whole class description was silently missing from the technical page. It was the only file with a detached class comment (swept all pages to confirm). - Added a short technical one-line class description to the 72 catalog effect/modifier/layout/driver .h files that had none (their user-facing prose stays in the catalog summary pages; this is a distinct terse type label, not a duplicate). - Added @card lines to the 37 modules that have a card screenshot (core services + light drivers/containers/effects). Renamed the Hue driver asset "Hue driver.png" → HueDriver.png (no space, matches convention) + updated the catalog reference. - Image sweep: deleted 7 redundant effect/modifier PNGs whose module @cards the animated .gif instead; parked 5 genuinely-stray images (superseded UI/installer shots + a Hue screenshot) under docs/backlog/archive_images/unused/. Renamed docs/backlog/moonlight_images → archive_images (now holds moonlight/ migration pool + unused/ orphan park). Every non-board image is now referenced; the 15-photo board library under assets/boards/ is left as the installer's photo pool. Reviews - 🐇 backlog-core File Manager link text (ui.md → services.md), gettingstarted module-link anchors, home-automation future-tense wording + the macOS Mosquitto localhost-only listener: all fixed. clientId/brightness-topic finding skipped (the device has genuine separate brightness topics driving HomeKit's slider, distinct from the HSV colour picker). Co-Authored-By: Claude Opus 4.8 --- .../drivers/{Hue driver.png => HueDriver.png} | Bin docs/assets/light/effects/LavaLampEffect.png | Bin 13724 -> 0 bytes docs/assets/light/effects/NoiseEffect.png | Bin 10390 -> 0 bytes docs/assets/light/effects/PlasmaEffect.png | Bin 15359 -> 0 bytes docs/assets/light/effects/RingsEffect.png | Bin 14978 -> 0 bytes docs/assets/light/effects/RipplesEffect.png | Bin 11166 -> 0 bytes .../light/modifiers/CheckerboardModifier.png | Bin 9566 -> 0 bytes .../assets/light/modifiers/MirrorModifier.png | Bin 10537 -> 0 bytes .../moonlight/drivers/Art-Net-In.png | Bin .../moonlight/drivers/ArtNetInControls.png | Bin .../moonlight/drivers/ArtNetOutControls.png | Bin .../moonlight/drivers/FastLED-Audio.png | Bin .../moonlight/drivers/FastLED-Driver.png | Bin .../moonlight/drivers/IMUDriverControls.png | Bin .../moonlight/drivers/MPU-6050.jpg | Bin .../moonlight/effects/E_Ball2D.gif | Bin .../moonlight/effects/E_Cosmic3D.gif | Bin .../moonlight/effects/E_Geq2D.gif | Bin .../moonlight/effects/E_Hello1D.gif | Bin .../moonlight/effects/E_Noise2D.gif | Bin .../moonlight/effects/E_Noise3D.gif | Bin .../moonlight/effects/E_Orbit2D.gif | Bin .../moonlight/effects/E_Oscillate2D.gif | Bin .../moonlight/effects/E_Random1D.gif | Bin .../moonlight/effects/E_Sweep2D.gif | Bin .../moonlight/effects/E_Vu1D.gif | Bin .../moonlight/effects/layers.gif | Bin .../unused}/Hue device disco.png | Bin .../archive_images/unused}/installer2.png | Bin .../archive_images/unused}/installer3.png | Bin .../archive_images/unused}/moondeck.gif | Bin .../archive_images/unused}/ui_light.png | Bin docs/backlog/backlog-core.md | 2 +- docs/gettingstarted.md | 10 +++--- docs/moonmodules/light/drivers/drivers.md | 2 +- docs/usecases/home-automation.md | 18 ++++++----- moondeck/docs/gen_api.py | 29 +++++++++++++++++ moondeck/docs/moxygen-templates/cpp/class.md | 12 +++---- src/core/AudioModule.h | 30 +++++++++--------- src/core/DevicesModule.h | 1 + src/core/FileManagerModule.h | 1 + src/core/FilesystemModule.h | 1 + src/core/FirmwareUpdateModule.h | 1 + src/core/I2cScanModule.h | 1 + src/core/ImprovProvisioningModule.h | 1 + src/core/IrModule.h | 1 + src/core/MqttModule.h | 1 + src/core/NetworkModule.h | 1 + src/core/SystemModule.h | 1 + src/light/drivers/Drivers.h | 1 + src/light/drivers/HueDriver.h | 2 ++ src/light/drivers/LcdLedDriver.h | 1 + src/light/drivers/NetworkSendDriver.h | 2 ++ src/light/drivers/ParallelLedDriver.h | 1 + src/light/drivers/ParlioLedDriver.h | 1 + src/light/drivers/PreviewDriver.h | 1 + src/light/drivers/RmtLedDriver.h | 2 ++ src/light/effects/AudioSpectrumEffect.h | 1 + src/light/effects/AudioVolumeEffect.h | 1 + src/light/effects/BlurzEffect.h | 1 + src/light/effects/BouncingBallsEffect.h | 1 + src/light/effects/DemoReelEffect.h | 1 + src/light/effects/DistortionWavesEffect.h | 1 + src/light/effects/FireEffect.h | 2 ++ src/light/effects/FixedRectangleEffect.h | 1 + src/light/effects/FreqMatrixEffect.h | 1 + src/light/effects/FreqSawsEffect.h | 1 + src/light/effects/GEQ3DEffect.h | 1 + src/light/effects/GEQEffect.h | 1 + src/light/effects/GameOfLifeEffect.h | 1 + src/light/effects/LavaLampEffect.h | 2 ++ src/light/effects/LinesEffect.h | 2 ++ src/light/effects/LissajousEffect.h | 1 + src/light/effects/MetaballsEffect.h | 2 ++ src/light/effects/NetworkReceiveEffect.h | 1 + src/light/effects/Noise2DEffect.h | 1 + src/light/effects/NoiseEffect.h | 2 ++ src/light/effects/NoiseMeterEffect.h | 1 + src/light/effects/PaintBrushEffect.h | 1 + src/light/effects/ParticlesEffect.h | 2 ++ src/light/effects/PlasmaEffect.h | 2 ++ src/light/effects/PraxisEffect.h | 1 + src/light/effects/RainbowEffect.h | 2 ++ src/light/effects/RandomEffect.h | 1 + src/light/effects/RingsEffect.h | 2 ++ src/light/effects/RipplesEffect.h | 2 ++ src/light/effects/RubiksCubeEffect.h | 1 + src/light/effects/SineEffect.h | 1 + src/light/effects/SolidEffect.h | 1 + src/light/effects/SphereMoveEffect.h | 1 + src/light/effects/SpiralEffect.h | 2 ++ src/light/effects/StarFieldEffect.h | 1 + src/light/effects/StarSkyEffect.h | 2 ++ src/light/effects/TetrixEffect.h | 1 + src/light/effects/TextEffect.h | 1 + src/light/effects/WaveEffect.h | 1 + src/light/layers/Layer.h | 1 + src/light/layers/Layers.h | 1 + src/light/layouts/CarLightsLayout.h | 2 ++ src/light/layouts/CubeLayout.h | 1 + src/light/layouts/GridLayout.h | 2 ++ src/light/layouts/HumanSizedCubeLayout.h | 1 + src/light/layouts/Layouts.h | 1 + src/light/layouts/PanelLayout.h | 1 + src/light/layouts/PanelsLayout.h | 1 + src/light/layouts/RingLayout.h | 1 + src/light/layouts/Rings241Layout.h | 1 + src/light/layouts/SingleColumnLayout.h | 1 + src/light/layouts/SingleRowLayout.h | 1 + src/light/layouts/SphereLayout.h | 1 + src/light/layouts/SpiralLayout.h | 1 + src/light/layouts/TorontoBarGourdsLayout.h | 2 ++ src/light/layouts/TubesLayout.h | 1 + src/light/layouts/WheelLayout.h | 1 + src/light/modifiers/BlockModifier.h | 1 + src/light/modifiers/CheckerboardModifier.h | 2 ++ src/light/modifiers/CircleModifier.h | 1 + src/light/modifiers/MirrorModifier.h | 2 ++ src/light/modifiers/MultiplyModifier.h | 2 ++ src/light/modifiers/PinwheelModifier.h | 1 + src/light/modifiers/RandomMapModifier.h | 1 + src/light/modifiers/RegionModifier.h | 1 + src/light/modifiers/RippleXZModifier.h | 1 + src/light/modifiers/RotateModifier.h | 1 + src/light/modifiers/TransposeModifier.h | 1 + src/light/moonlive/MoonLiveEffect.h | 1 + 126 files changed, 174 insertions(+), 37 deletions(-) rename docs/assets/light/drivers/{Hue driver.png => HueDriver.png} (100%) delete mode 100644 docs/assets/light/effects/LavaLampEffect.png delete mode 100644 docs/assets/light/effects/NoiseEffect.png delete mode 100644 docs/assets/light/effects/PlasmaEffect.png delete mode 100644 docs/assets/light/effects/RingsEffect.png delete mode 100644 docs/assets/light/effects/RipplesEffect.png delete mode 100644 docs/assets/light/modifiers/CheckerboardModifier.png delete mode 100644 docs/assets/light/modifiers/MirrorModifier.png rename docs/backlog/{moonlight_images => archive_images}/moonlight/drivers/Art-Net-In.png (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/drivers/ArtNetInControls.png (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/drivers/ArtNetOutControls.png (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/drivers/FastLED-Audio.png (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/drivers/FastLED-Driver.png (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/drivers/IMUDriverControls.png (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/drivers/MPU-6050.jpg (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/effects/E_Ball2D.gif (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/effects/E_Cosmic3D.gif (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/effects/E_Geq2D.gif (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/effects/E_Hello1D.gif (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/effects/E_Noise2D.gif (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/effects/E_Noise3D.gif (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/effects/E_Orbit2D.gif (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/effects/E_Oscillate2D.gif (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/effects/E_Random1D.gif (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/effects/E_Sweep2D.gif (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/effects/E_Vu1D.gif (100%) rename docs/backlog/{moonlight_images => archive_images}/moonlight/effects/layers.gif (100%) rename docs/{assets/core => backlog/archive_images/unused}/Hue device disco.png (100%) rename docs/{assets/ui => backlog/archive_images/unused}/installer2.png (100%) rename docs/{assets/ui => backlog/archive_images/unused}/installer3.png (100%) rename docs/{assets => backlog/archive_images/unused}/moondeck.gif (100%) rename docs/{assets/ui => backlog/archive_images/unused}/ui_light.png (100%) diff --git a/docs/assets/light/drivers/Hue driver.png b/docs/assets/light/drivers/HueDriver.png similarity index 100% rename from docs/assets/light/drivers/Hue driver.png rename to docs/assets/light/drivers/HueDriver.png diff --git a/docs/assets/light/effects/LavaLampEffect.png b/docs/assets/light/effects/LavaLampEffect.png deleted file mode 100644 index 8d3638eeb66e065e74ef25fdd2c2202ef2898dc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13724 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

6IG(ObIMk+b^qMT^vp!niRjof-Y7XfY|8D!R#O zaS+?NOE^DzihD301F5g~`HLmz!*BVovXVB~ga@>LRxkqP2nl>dsVYt-1!~4>ElVkv z*%ZP*Qe6!$3T4Y~PF??U3Y)f?d2GAH?w@OEVcIrJh@Ro)0v)+h6?}~Y-@>&R%guU? z;$Ks$SOV%`{R&k%0DBNiD7moo! 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 diff --git a/docs/assets/light/effects/NoiseEffect.png b/docs/assets/light/effects/NoiseEffect.png deleted file mode 100644 index b6e9cb37ca3c07eb97f4d7c82d92fd74d877a146..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10390 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 diff --git a/docs/assets/light/effects/PlasmaEffect.png b/docs/assets/light/effects/PlasmaEffect.png deleted file mode 100644 index b9569cac39885af2d7158900000d255552513bcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15359 zcmb`uWl&^alkSVVJ2WnhyEj@`qm4Th?(Xgmjk~+MySrQC?$Ee99RBmp8!B#6=W9KtL0|z7N2FeSLBQ1sgy>P(UO^ z07|YIXPMBB-`E z4kjQ|Z%4E)7ljTcRsb@&hCn?d@<9}cFeV&?LvJAz*C_a)0BeS`=%krhfeI1fI5tqs z7GK|g?sf%`i;ES2u+knki}L5mAE0rOU%>?Q>R!k~5E{aD2&+^C%d$yCP{)boXyG70 zIcy2T=!NT3NlMpO;6otlG2uwh5i^l;!*bv}U@_xJvyfa7YmraU>ocVkfCs|UVnYQ; zNY=ROeJvp({+oqqU@9JmaVQQ+gO}X)Qy^cD?o4nNP%nPQFr`>c<(LgVgmLV3l5Q9k zCcv#H=Wb;Ij7Tg+gjGu7qwo@>c+~V^E*D~SX;m_LROtO8rYKk2690QSOFuH>UD*O? zeB$*Jbzm>ro1=8-X5+w3fwHTYt51wu zL0{QB5y0_&9vk(7>4UL_kxqUa2a{NxoL>Qgfg^Nm*ArSg%t^nF)^m8Jd9BtooAnj(2CWj`;l3t14&uE&F1 z>#Mivt9YA9RB2Fy5;Sr1PEL9yS35($0RnOTa@1PZV6@~?W^x8>xfMeVbG>(0f9o+S zF4=o}q{`JB^zJ6Yz~sd^^BwYBEGj|M{|X8emYl&MB?WTWPEv@+-*>cT9-D6^wZ0L@ z;^M5pAe88aIzYM6za>NdkO5_�}m~@--x7QLWCC=aP~rn?Fc09))zARE5B#oznk& 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 diff --git a/docs/assets/light/effects/RipplesEffect.png b/docs/assets/light/effects/RipplesEffect.png deleted file mode 100644 index d0ca2dfffce51f8d060beb18f51e8edf7f2bd828..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11166 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 diff --git a/docs/assets/light/modifiers/CheckerboardModifier.png b/docs/assets/light/modifiers/CheckerboardModifier.png deleted file mode 100644 index e6a4a22f385355781f67290c48913b46d4c46ade..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9566 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 diff --git a/docs/backlog/moonlight_images/moonlight/drivers/Art-Net-In.png b/docs/backlog/archive_images/moonlight/drivers/Art-Net-In.png similarity index 100% rename from docs/backlog/moonlight_images/moonlight/drivers/Art-Net-In.png rename to docs/backlog/archive_images/moonlight/drivers/Art-Net-In.png diff --git a/docs/backlog/moonlight_images/moonlight/drivers/ArtNetInControls.png b/docs/backlog/archive_images/moonlight/drivers/ArtNetInControls.png similarity index 100% rename from docs/backlog/moonlight_images/moonlight/drivers/ArtNetInControls.png rename to docs/backlog/archive_images/moonlight/drivers/ArtNetInControls.png diff --git a/docs/backlog/moonlight_images/moonlight/drivers/ArtNetOutControls.png b/docs/backlog/archive_images/moonlight/drivers/ArtNetOutControls.png similarity index 100% rename from docs/backlog/moonlight_images/moonlight/drivers/ArtNetOutControls.png rename to docs/backlog/archive_images/moonlight/drivers/ArtNetOutControls.png diff --git a/docs/backlog/moonlight_images/moonlight/drivers/FastLED-Audio.png b/docs/backlog/archive_images/moonlight/drivers/FastLED-Audio.png similarity index 100% rename from docs/backlog/moonlight_images/moonlight/drivers/FastLED-Audio.png rename to docs/backlog/archive_images/moonlight/drivers/FastLED-Audio.png diff --git a/docs/backlog/moonlight_images/moonlight/drivers/FastLED-Driver.png b/docs/backlog/archive_images/moonlight/drivers/FastLED-Driver.png similarity index 100% rename from docs/backlog/moonlight_images/moonlight/drivers/FastLED-Driver.png rename to docs/backlog/archive_images/moonlight/drivers/FastLED-Driver.png diff --git a/docs/backlog/moonlight_images/moonlight/drivers/IMUDriverControls.png b/docs/backlog/archive_images/moonlight/drivers/IMUDriverControls.png similarity index 100% rename from docs/backlog/moonlight_images/moonlight/drivers/IMUDriverControls.png rename to docs/backlog/archive_images/moonlight/drivers/IMUDriverControls.png diff --git a/docs/backlog/moonlight_images/moonlight/drivers/MPU-6050.jpg b/docs/backlog/archive_images/moonlight/drivers/MPU-6050.jpg similarity index 100% rename from docs/backlog/moonlight_images/moonlight/drivers/MPU-6050.jpg rename to docs/backlog/archive_images/moonlight/drivers/MPU-6050.jpg diff --git a/docs/backlog/moonlight_images/moonlight/effects/E_Ball2D.gif b/docs/backlog/archive_images/moonlight/effects/E_Ball2D.gif similarity index 100% rename from docs/backlog/moonlight_images/moonlight/effects/E_Ball2D.gif rename to docs/backlog/archive_images/moonlight/effects/E_Ball2D.gif diff --git a/docs/backlog/moonlight_images/moonlight/effects/E_Cosmic3D.gif b/docs/backlog/archive_images/moonlight/effects/E_Cosmic3D.gif similarity index 100% rename from docs/backlog/moonlight_images/moonlight/effects/E_Cosmic3D.gif rename to docs/backlog/archive_images/moonlight/effects/E_Cosmic3D.gif diff --git a/docs/backlog/moonlight_images/moonlight/effects/E_Geq2D.gif b/docs/backlog/archive_images/moonlight/effects/E_Geq2D.gif similarity index 100% rename from docs/backlog/moonlight_images/moonlight/effects/E_Geq2D.gif rename to docs/backlog/archive_images/moonlight/effects/E_Geq2D.gif diff --git a/docs/backlog/moonlight_images/moonlight/effects/E_Hello1D.gif b/docs/backlog/archive_images/moonlight/effects/E_Hello1D.gif similarity index 100% rename from docs/backlog/moonlight_images/moonlight/effects/E_Hello1D.gif rename to docs/backlog/archive_images/moonlight/effects/E_Hello1D.gif diff --git a/docs/backlog/moonlight_images/moonlight/effects/E_Noise2D.gif b/docs/backlog/archive_images/moonlight/effects/E_Noise2D.gif similarity index 100% rename from docs/backlog/moonlight_images/moonlight/effects/E_Noise2D.gif rename to docs/backlog/archive_images/moonlight/effects/E_Noise2D.gif diff --git a/docs/backlog/moonlight_images/moonlight/effects/E_Noise3D.gif b/docs/backlog/archive_images/moonlight/effects/E_Noise3D.gif similarity index 100% rename from docs/backlog/moonlight_images/moonlight/effects/E_Noise3D.gif rename to docs/backlog/archive_images/moonlight/effects/E_Noise3D.gif diff --git a/docs/backlog/moonlight_images/moonlight/effects/E_Orbit2D.gif b/docs/backlog/archive_images/moonlight/effects/E_Orbit2D.gif similarity index 100% rename from docs/backlog/moonlight_images/moonlight/effects/E_Orbit2D.gif rename to docs/backlog/archive_images/moonlight/effects/E_Orbit2D.gif diff --git a/docs/backlog/moonlight_images/moonlight/effects/E_Oscillate2D.gif b/docs/backlog/archive_images/moonlight/effects/E_Oscillate2D.gif similarity index 100% rename from docs/backlog/moonlight_images/moonlight/effects/E_Oscillate2D.gif rename to docs/backlog/archive_images/moonlight/effects/E_Oscillate2D.gif diff --git a/docs/backlog/moonlight_images/moonlight/effects/E_Random1D.gif b/docs/backlog/archive_images/moonlight/effects/E_Random1D.gif similarity index 100% rename from docs/backlog/moonlight_images/moonlight/effects/E_Random1D.gif rename to docs/backlog/archive_images/moonlight/effects/E_Random1D.gif diff --git a/docs/backlog/moonlight_images/moonlight/effects/E_Sweep2D.gif b/docs/backlog/archive_images/moonlight/effects/E_Sweep2D.gif similarity index 100% rename from docs/backlog/moonlight_images/moonlight/effects/E_Sweep2D.gif rename to docs/backlog/archive_images/moonlight/effects/E_Sweep2D.gif diff --git a/docs/backlog/moonlight_images/moonlight/effects/E_Vu1D.gif b/docs/backlog/archive_images/moonlight/effects/E_Vu1D.gif similarity index 100% rename from docs/backlog/moonlight_images/moonlight/effects/E_Vu1D.gif rename to docs/backlog/archive_images/moonlight/effects/E_Vu1D.gif diff --git a/docs/backlog/moonlight_images/moonlight/effects/layers.gif b/docs/backlog/archive_images/moonlight/effects/layers.gif similarity index 100% rename from docs/backlog/moonlight_images/moonlight/effects/layers.gif rename to docs/backlog/archive_images/moonlight/effects/layers.gif diff --git a/docs/assets/core/Hue device disco.png b/docs/backlog/archive_images/unused/Hue device disco.png similarity index 100% rename from docs/assets/core/Hue device disco.png rename to docs/backlog/archive_images/unused/Hue device disco.png diff --git a/docs/assets/ui/installer2.png b/docs/backlog/archive_images/unused/installer2.png similarity index 100% rename from docs/assets/ui/installer2.png rename to docs/backlog/archive_images/unused/installer2.png diff --git a/docs/assets/ui/installer3.png b/docs/backlog/archive_images/unused/installer3.png similarity index 100% rename from docs/assets/ui/installer3.png rename to docs/backlog/archive_images/unused/installer3.png diff --git a/docs/assets/moondeck.gif b/docs/backlog/archive_images/unused/moondeck.gif similarity index 100% rename from docs/assets/moondeck.gif rename to docs/backlog/archive_images/unused/moondeck.gif diff --git a/docs/assets/ui/ui_light.png b/docs/backlog/archive_images/unused/ui_light.png similarity index 100% rename from docs/assets/ui/ui_light.png rename to docs/backlog/archive_images/unused/ui_light.png diff --git a/docs/backlog/backlog-core.md b/docs/backlog/backlog-core.md index bef48ae0..bb3dbd54 100644 --- a/docs/backlog/backlog-core.md +++ b/docs/backlog/backlog-core.md @@ -389,7 +389,7 @@ Forward-looking companion to the shipped UI spec, [moonmodules/core/services/ser ### File Manager follow-ups -The shipped File Manager (see [ui.md](../moonmodules/core/services/services.md)) is a lazy expand/collapse tree over `/api/dir` + a size-capped text editor over `/api/file`, with drag-drop upload (tier 1) + per-file download + a filesystem-usage bar. Deferred capabilities, each self-contained: +The shipped File Manager (see [services.md](../moonmodules/core/services/services.md#file-manager)) is a lazy expand/collapse tree over `/api/dir` + a size-capped text editor over `/api/file`, with drag-drop upload (tier 1) + per-file download + a filesystem-usage bar. Deferred capabilities, each self-contained: - **Upload — recursive folder tier.** Single-file upload of **any size** streams to the file (`fsWriteStream`, binary-safe, `kUploadMax` + free-space guarded) and downloads stream back (`fsReadAt`), so text/config/binary all work. Remaining: **multi-file / recursive folder drops** — client-side `mkdir` + walk via `dataTransfer.items` `webkitGetAsEntry()`. - **Download — folder as `.zip`.** Per-file download streams (`` on `/api/file`). A folder download needs the browser to walk `/api/dir` recursively, fetch each file, and build a `.zip` client-side — which means bundling a zip library into `app.js`. That's a permanent app.js size bump, and app.js is embedded in firmware, so it weighs on the flash budget (see the flash-budget item above). Gate on real demand; symmetric with the folder-upload tier. diff --git a/docs/gettingstarted.md b/docs/gettingstarted.md index 99b42641..466ad410 100644 --- a/docs/gettingstarted.md +++ b/docs/gettingstarted.md @@ -183,8 +183,8 @@ network — lives here as its own module, and we're adding more all the time. ![The System module](assets/gettingstarted/02-05-UI-System.png) -> [SystemModule](moonmodules/core/services/services.md) · -> [AudioModule](moonmodules/core/services/services.md) +> [SystemModule](moonmodules/core/services/services.md#system) · +> [AudioModule](moonmodules/core/services/services.md#audio) **Firmware** — which build you're running, and where you update it. The **Install** button here does an over-the-air update straight from the device — no @@ -192,7 +192,7 @@ USB cable needed once it's on your network. ![The Firmware module](assets/gettingstarted/02-06-UI-Firmware.png) -> [FirmwareUpdateModule](moonmodules/core/services/services.md) +> [FirmwareUpdateModule](moonmodules/core/services/services.md#firmware-update) **Network** — your connection: WiFi or Ethernet, signal strength, and the address others reach it at. The **Devices** section underneath finds other @@ -201,8 +201,8 @@ other. ![The Network module](assets/gettingstarted/02-07-UI-Network.png) -> [NetworkModule](moonmodules/core/services/services.md) · -> [DevicesModule](moonmodules/core/services/services.md) +> [NetworkModule](moonmodules/core/services/services.md#network) · +> [DevicesModule](moonmodules/core/services/services.md#devices) > **Lights are just one use.** Everything above — the modules, the live controls, the > 3D view, the web UI, the networking — is a general-purpose engine that knows nothing diff --git a/docs/moonmodules/light/drivers/drivers.md b/docs/moonmodules/light/drivers/drivers.md index a0be1caf..24eca82d 100644 --- a/docs/moonmodules/light/drivers/drivers.md +++ b/docs/moonmodules/light/drivers/drivers.md @@ -52,7 +52,7 @@ Origin: MoonLight D_NetworkOut; Art-Net 4 / E1.31 / DDP specs ### Hue 💫 · bridge -A HueDriver in the UI +A HueDriver in the UI Drives **Philips Hue bulbs as pixels**: each colour bulb in the driver's window becomes one pixel, pushed to the bridge over its HTTP API. Paced to the bridge's ~10 cmd/s limit — smooth ambient colour, not strobing. diff --git a/docs/usecases/home-automation.md b/docs/usecases/home-automation.md index 820ec371..2a72e03a 100644 --- a/docs/usecases/home-automation.md +++ b/docs/usecases/home-automation.md @@ -9,9 +9,9 @@ Integration goes **both directions**, and this page covers both: The recipes below are each self-contained: -- **[Homebridge (Apple Home / HomeKit)](#homebridge-apple-home-homekit)** — bridge the device over MQTT so it appears as a HomeKit accessory. Full walkthrough (the worked example today). +- **[Homebridge (Apple Home / HomeKit)](#homebridge-apple-home-homekit)** — bridge the device over MQTT so it appears as a HomeKit accessory. The full walkthrough. - **[Drive Hue lights](#drive-hue-lights)** — point an effect at your Hue bulbs. -- **[Other platforms](#other-platforms)** — Home Assistant and beyond (an overview of the paths; detailed recipes as they land). +- **[Other platforms](#other-platforms)** — how Home Assistant and other MQTT hubs reach the same device. The control surface these integrations drive — the MQTT controls, topics, and accessory config — is documented once in [Core › Services › MQTT](../moonmodules/core/services/services.md#mqtt); this page is the setup, and links there for the reference. @@ -62,13 +62,15 @@ Install Homebridge via the official Debian repository ([the apt-package guide](h #### macOS +Mosquitto 2.x binds only to `localhost` by default, so open the LAN listener with a one-line config (`test.conf` with `listener 1883 0.0.0.0` and `allow_anonymous true`), then run it in the foreground so you see every packet (Ctrl-C to stop): + ```bash -# broker — run in the foreground so you see every packet (Ctrl-C to stop) brew install mosquitto -/opt/homebrew/sbin/mosquitto -v +printf 'listener 1883 0.0.0.0\nallow_anonymous true\n' > test.conf +/opt/homebrew/sbin/mosquitto -v -c test.conf ``` -The foreground broker listens on `1883` on all interfaces, so the device reaches it at your Mac's LAN IP while Homebridge reaches it on loopback. +Now the device reaches the broker at your Mac's LAN IP while Homebridge reaches it on loopback. (Allow `mosquitto` through the macOS firewall on `1883` if prompted.) Install Homebridge ([homebridge.io](https://homebridge.io) has the macOS installer; `npm i -g homebridge homebridge-config-ui-x` is the CLI route). Start it with `homebridge` in a terminal, or via the menu-bar app. @@ -137,10 +139,10 @@ To set it up: Homebridge above is the worked example; other home-automation platforms adopt the same device through the same primitives. The building blocks are shared — the [MQTT control surface](../moonmodules/core/services/services.md#mqtt) (broker + the `on`/`brightness`/`hsv` topics) and, for hubs that speak it, the device's WLED compatibility — so a new integration is a new front-end on top, not new device work. -- **Home Assistant** — HA adopts the device **without MQTT**: its built-in WLED integration discovers it over the existing WLED `/json` API the device already serves (the same interface the WLED apps use), so on/off + brightness work with no broker in the middle. An MQTT path (HA's MQTT Discovery, for the full control surface) is the natural next step. *Detailed recipe to be added.* -- **Others** (Node-RED, openHAB, voice assistants via a hub, …) — anything that speaks MQTT can drive the device through the [control topics](../moonmodules/core/services/services.md#mqtt); the broker setup is the same [install step](#install-a-broker-homebridge) as above, only the consumer differs. *Recipes added as they're worked through.* +- **Home Assistant** — HA adopts the device **without MQTT**: its built-in WLED integration discovers it over the WLED `/json` API the device already serves (the same interface the WLED apps use), so on/off + brightness work with no broker in the middle. For the full control surface, HA's MQTT Discovery reaches the same [control topics](../moonmodules/core/services/services.md#mqtt) below. +- **Others** (Node-RED, openHAB, voice assistants via a hub, …) — anything that speaks MQTT drives the device through the [control topics](../moonmodules/core/services/services.md#mqtt); the broker setup is the same [install step](#install-a-broker-homebridge) as above, only the consumer differs. -When a platform gets a full walkthrough, it becomes its own `##` section beside Homebridge, listed in the intro — the per-integration recipe is self-contained, while the shared reference stays in [Core › Services › MQTT](../moonmodules/core/services/services.md#mqtt). +Each integration is a self-contained recipe; the shared MQTT reference lives once in [Core › Services › MQTT](../moonmodules/core/services/services.md#mqtt). ## Troubleshooting diff --git a/moondeck/docs/gen_api.py b/moondeck/docs/gen_api.py index 04b1699c..285b8821 100644 --- a/moondeck/docs/gen_api.py +++ b/moondeck/docs/gen_api.py @@ -178,6 +178,34 @@ def _strip_bad_anchor_links(md: str) -> str: return _BAD_ANCHOR_RE.sub("]", md) +# A `@card ` directive in a class `///` comment — the module's UI-card screenshot. +# Doxygen with GENERATE_HTML=NO drops `\image`/`@htmlonly`/raw `` from the XML, but +# preserves plain text, so `@card foo.png` survives Doxygen → moxygen as-is and we render +# it to an `` here (post-process). The asset lives at docs/assets/[/]/; +# from a moxygen page (moonmodules//moxygen/) that resolves to ../../../assets/… . +# `@card ` can land mid-line: Doxygen flows consecutive `///` lines into one paragraph, +# so in a richly-commented class the directive trails the last text run (`… esp_event.h. @card x.png`) +# rather than sitting on its own line. Match it ANYWHERE, with optional surrounding whitespace, and +# render to an on its own block (a leading newline lifts it out of the trailing paragraph). +_CARD_RE = re.compile(r'[ \t]*@card\s+(?P\S+\.(?:png|jpe?g|gif))[ \t]*') +_ASSETS = ROOT / "docs" / "assets" + + +def _render_card_directives(md: str, domain: str, stem: str) -> str: + """Replace each `@card ` directive with an pointing at the resolved asset. + A file that doesn't exist on disk drops the directive (no broken image) — the same + fail-soft as a missing generated page.""" + def repl(m: re.Match) -> str: + fname = m.group("file") + # Search under docs/assets// for the file (handles the light/{drivers,effects,…} subdir). + hits = list((_ASSETS / domain).rglob(fname)) + if not hits: + return "" # asset absent → emit nothing rather than a broken link + rel = os.path.relpath(hits[0], DOCS_MOONMODULES / domain / "moxygen") + return f'\n\n{stem} card\n' + return _CARD_RE.sub(repl, md) + + def _class_to_header(xml_dir: Path) -> dict[str, str]: """Map each moxygen class-file key → its source header (repo-relative), read from the Doxygen XML `` of every class/struct compound. The key is @@ -276,6 +304,7 @@ def generate() -> dict[str, str]: stem = Path(header).stem body = _rewrite_cls_links("".join(blocks), domain, cls_to_page) body = _strip_bad_anchor_links(body) + body = _render_card_directives(body, domain, stem) md = _migration_crosscheck_header(header, domain, stem) + body uri = f"moonmodules/{domain}/moxygen/{stem}.md" dst = DOCS_MOONMODULES / domain / "moxygen" / f"{stem}.md" diff --git a/moondeck/docs/moxygen-templates/cpp/class.md b/moondeck/docs/moxygen-templates/cpp/class.md index 608ea57e..c1504292 100644 --- a/moondeck/docs/moxygen-templates/cpp/class.md +++ b/moondeck/docs/moxygen-templates/cpp/class.md @@ -13,13 +13,11 @@ {{detaileddescription}} -{{#each inheritedMemberGroups}} -### Inherited from {{linkedName name refid}} - -{{#each members}}- `{{kind}}` {{linkedName name refid}}{{#if (memberSummary this)}} — {{cell (memberSummary this)}}{{/if}} -{{/each}} - -{{/each}} +{{! Inherited members are NOT re-listed: the `> **Inherits:** [Base]` link above already + points the reader to the base class's own page, where those members are documented once. + Re-dumping the full base interface on every subclass (MoonModule/EffectBase have a large + surface) is bloat — a subclass page should show what THAT class adds, not restate its + superclass. This is the *No duplication* rule applied to the generated API pages. }} {{! Public API only: skip the private/protected member sections (`section` is the raw Doxygen kind, a stabler discriminator than the English label). A technical reference documents the surface a caller uses, not internals. moxygen registers diff --git a/src/core/AudioModule.h b/src/core/AudioModule.h index b4d2ff37..9bfdc3a7 100644 --- a/src/core/AudioModule.h +++ b/src/core/AudioModule.h @@ -1,5 +1,19 @@ #pragma once +#include "core/MoonModule.h" +#include "core/AudioFrame.h" +#include "core/AudioLevel.h" +#include "core/AudioBands.h" +#include "core/math8.h" // beatsin8 / sin8 — the simulated-audio oscillators +#include "light/WLEDAudioSyncPacket.h" // WLED audio-sync wire format (send/receive) +#include "platform/platform.h" + +#include +#include // snprintf for the read-out strings +#include + +namespace mm { + /// Acquires an audio source and publishes an `AudioFrame` — an overall sound /// **level**, a 16-band frequency **spectrum**, and the **dominant peak** — as the /// producer half of the audio-reactive pipeline @@ -65,21 +79,7 @@ /// docs/moonmodules/core/moxygen/AudioModule.md for the full DSP rationale, the source-seam /// backlog (line-in / PDM / analog / I2C codecs), and the forward-looking adaptive /// noise-gate analysis. - -#include "core/MoonModule.h" -#include "core/AudioFrame.h" -#include "core/AudioLevel.h" -#include "core/AudioBands.h" -#include "core/math8.h" // beatsin8 / sin8 — the simulated-audio oscillators -#include "light/WLEDAudioSyncPacket.h" // WLED audio-sync wire format (send/receive) -#include "platform/platform.h" - -#include -#include // snprintf for the read-out strings -#include - -namespace mm { - +/// @card AudioModule.png class AudioModule : public MoonModule { public: /// Block size = FFT size: a power of two. 512 samples at 22050 Hz is ~23 ms of diff --git a/src/core/DevicesModule.h b/src/core/DevicesModule.h index cf13777e..32f896b3 100644 --- a/src/core/DevicesModule.h +++ b/src/core/DevicesModule.h @@ -71,6 +71,7 @@ namespace mm { /// forward as the 44-byte WLED-compatible packet on UDP 65506. See /// docs/moonmodules/core/moxygen/DevicesModule.md for the WLED-interop screenshots + the /// wire shape. +/// @card DevicesModule.png class DevicesModule : public MoonModule, public ListSource { public: /// Wire this device's own name (deviceName) before setup so the self row matches the diff --git a/src/core/FileManagerModule.h b/src/core/FileManagerModule.h index c3875934..d347f0f6 100644 --- a/src/core/FileManagerModule.h +++ b/src/core/FileManagerModule.h @@ -40,6 +40,7 @@ namespace mm { /// **Prior art:** the lazy-loaded folder tree is the standard file-explorer shape (a node loads its /// children when expanded); the `/api/dir` + `/api/file` split mirrors the listing-vs-contents split /// every file API draws (WebDAV PROPFIND vs GET). +/// @card FileManagerModule.png class FileManagerModule : public MoonModule { public: ModuleRole role() const override { return ModuleRole::Peripheral; } diff --git a/src/core/FilesystemModule.h b/src/core/FilesystemModule.h index 8c30b9a1..d9f100ac 100644 --- a/src/core/FilesystemModule.h +++ b/src/core/FilesystemModule.h @@ -74,6 +74,7 @@ struct ControlDescriptor; /// member-initialised values; after the first UI change the debounce creates the file. /// A missing key keeps the default, an unknown key is silently ignored (no schema /// migration). +/// @card FilesystemModule.png class FilesystemModule : public MoonModule { public: static constexpr const char* CONFIG_DIR = "/.config"; diff --git a/src/core/FirmwareUpdateModule.h b/src/core/FirmwareUpdateModule.h index 9636d4d1..5c380c9e 100644 --- a/src/core/FirmwareUpdateModule.h +++ b/src/core/FirmwareUpdateModule.h @@ -77,6 +77,7 @@ inline bool otaInFlight() { /// every ESP32 OTA flow since IDF v4.x; the install-picker UI is the new layer on top. See /// docs/moonmodules/core/moxygen/FirmwareUpdateModule.md for the `POST /api/firmware/url` wire /// contract, the compatibility rules, and the flash lifecycle + error taxonomy. +/// @card FirmwareUpdateModule.png class FirmwareUpdateModule : public MoonModule { public: /// Diagnostics keep ticking regardless of the user toggle; matches diff --git a/src/core/I2cScanModule.h b/src/core/I2cScanModule.h index 7fda8468..c3a2643e 100644 --- a/src/core/I2cScanModule.h +++ b/src/core/I2cScanModule.h @@ -42,6 +42,7 @@ namespace mm { /// **Prior art:** the bus-scan-as-a-feature mirrors MoonLight's I2C scan diagnostic; the seam /// name and probe range follow the Linux `i2c-tools` `i2cdetect` convention /// (https://manpages.debian.org/i2c-tools/i2cdetect.8.en.html). +/// @card I2cScanModule.png class I2cScanModule : public MoonModule { public: /// A diagnostic, like FirmwareUpdateModule / DevicesModule — keeps its diff --git a/src/core/ImprovProvisioningModule.h b/src/core/ImprovProvisioningModule.h index 534efb0c..312ae5ee 100644 --- a/src/core/ImprovProvisioningModule.h +++ b/src/core/ImprovProvisioningModule.h @@ -75,6 +75,7 @@ namespace mm { /// `deploy/flashfs.py --wifi` covered the same rack-provisioning use case by baking credentials /// into a LittleFS partition image and re-flashing; Improv replaces that with live serial /// provisioning (devices stay running, no flash mode required). +/// @card ImprovProvisioningModule.png class ImprovProvisioningModule : public MoonModule { public: void setSystemModule(SystemModule* s) { systemModule_ = s; } diff --git a/src/core/IrModule.h b/src/core/IrModule.h index 12791b4a..6b51655c 100644 --- a/src/core/IrModule.h +++ b/src/core/IrModule.h @@ -47,6 +47,7 @@ namespace mm { /// **Prior art:** consumer IR remotes use the NEC protocol (a 32-bit address+command frame, /// LSB-first, ~9 ms lead burst); the ESP-IDF RMT peripheral decodes it (the espressif /// `ir_nec_transceiver` example). The decode itself lives behind `platform::irRead`. +/// @card IrModule.png class IrModule : public MoonModule { public: ModuleRole role() const override { return ModuleRole::Peripheral; } diff --git a/src/core/MqttModule.h b/src/core/MqttModule.h index 429d78fd..31657a96 100644 --- a/src/core/MqttModule.h +++ b/src/core/MqttModule.h @@ -42,6 +42,7 @@ namespace mm { /// docs/moonmodules/core/services/services.md#mqtt for the Homebridge accessory config). The MoonLight sibling /// bridges the same on/off+brightness surface through a full framework MQTT client + HA discovery; /// projectMM writes its own lean client over the platform socket primitive instead. +/// @card MqttModule.png class MqttModule : public MoonModule { public: void setSystemModule(SystemModule* s) { systemModule_ = s; } diff --git a/src/core/NetworkModule.h b/src/core/NetworkModule.h index a9cb3d26..86fcf4aa 100644 --- a/src/core/NetworkModule.h +++ b/src/core/NetworkModule.h @@ -84,6 +84,7 @@ namespace mm { /// **Prior art:** MoonLight — mDNS hostname advertising, REST API for network config, /// credentials persisted to SPIFFS. ESP-IDF — `esp_wifi.h`, `mdns.h`, `esp_netif.h`, /// `esp_event.h`. +/// @card NetworkModule.png class NetworkModule : public MoonModule { public: void setScheduler(Scheduler* s) { scheduler_ = s; } diff --git a/src/core/SystemModule.h b/src/core/SystemModule.h index 40c1313b..998d1f50 100644 --- a/src/core/SystemModule.h +++ b/src/core/SystemModule.h @@ -60,6 +60,7 @@ namespace mm { /// /// **Prior art:** MoonLight — system diagnostics via REST API; device name used for /// mDNS. +/// @card SystemModule.png class SystemModule : public MoonModule { public: void setScheduler(Scheduler* s) { scheduler_ = s; } diff --git a/src/light/drivers/Drivers.h b/src/light/drivers/Drivers.h index 367ac9aa..858cb216 100644 --- a/src/light/drivers/Drivers.h +++ b/src/light/drivers/Drivers.h @@ -225,6 +225,7 @@ class DriverBase : public MoonModule { /// `compositeLayers()` maps virtualChannels → channelsD, parallelism via a semaphore /// (driver signals completion, compositor writes) /// (https://github.com/ewowi/MoonLight/blob/main/src/MoonLight/Layers/PhysicalLayer.h). +/// @card Drivers.png class Drivers : public MoonModule { public: const char* acceptsChildRoles() const override { return "driver"; } diff --git a/src/light/drivers/HueDriver.h b/src/light/drivers/HueDriver.h index 7b7f9823..984ae663 100644 --- a/src/light/drivers/HueDriver.h +++ b/src/light/drivers/HueDriver.h @@ -41,6 +41,8 @@ namespace mm { // // Plain HTTP, no TLS — the Hue v1 API allows it (bench-confirmed on a BSB002 bridge). Prior // art: the Hue v1 CLIP API (public docs); the effect-as-output mapping is projectMM's own. +/// Output driver: sends the buffer to Philips Hue bulbs as pixels. +/// @card HueDriver.png class HueDriver : public DriverBase { public: uint8_t bridgeIp[4] = {}; // the bridge's LAN IP (from the UI) diff --git a/src/light/drivers/LcdLedDriver.h b/src/light/drivers/LcdLedDriver.h index 2850a8d9..177aa9bc 100644 --- a/src/light/drivers/LcdLedDriver.h +++ b/src/light/drivers/LcdLedDriver.h @@ -27,6 +27,7 @@ namespace mm { // WiFi-induced bit-slip of refill-based drivers can't occur. Prior art: Adafruit's // LCD_CAM discovery, hpwit's I2SClockless lineage, FastLED's S3 driver — // architecture studied, never copied (see LcdLedDriver.md). +/// Output driver: parallel WS2812 LEDs over the S3 LCD_CAM bus. class LcdLedDriver : public ParallelLedDriver { public: // Data pins + loopback pin default to UNSET: they are user-soldered (the strand diff --git a/src/light/drivers/NetworkSendDriver.h b/src/light/drivers/NetworkSendDriver.h index 50fcc548..91d4f213 100644 --- a/src/light/drivers/NetworkSendDriver.h +++ b/src/light/drivers/NetworkSendDriver.h @@ -18,6 +18,8 @@ namespace mm { // 480 RGB lights per packet vs 170, and per-packet cost is what dominates the // wire time). The single-node-multiple-protocols shape follows MoonLight's // D_NetworkOut (architecture studied, not copied). +/// Output driver: streams the buffer over Art-Net/E1.31/DDP. +/// @card NetworkSendDriver.png class NetworkSendDriver : public DriverBase { public: // Index-aligned with the protocol constants used in loop()'s switch: diff --git a/src/light/drivers/ParallelLedDriver.h b/src/light/drivers/ParallelLedDriver.h index 2fb7daaf..d87c97d1 100644 --- a/src/light/drivers/ParallelLedDriver.h +++ b/src/light/drivers/ParallelLedDriver.h @@ -39,6 +39,7 @@ namespace mm { // configErr_/failBuf_ and their clear/ensure helpers come from DriverBase (shared // with RmtLedDriver too). template +/// Base for parallel WS2812 LED-output drivers. class ParallelLedDriver : public DriverBase { public: // Bus width this increment: 8 of the peripheral's 16 lanes (matches the diff --git a/src/light/drivers/ParlioLedDriver.h b/src/light/drivers/ParlioLedDriver.h index b8f066b8..06eb592d 100644 --- a/src/light/drivers/ParlioLedDriver.h +++ b/src/light/drivers/ParlioLedDriver.h @@ -24,6 +24,7 @@ namespace mm { // lanes — whatever `pins` names. // Prior art: the ESP32-P4 Parlio peripheral, the hpwit/FastLED parallel-WS2812 // lineage — architecture studied, never copied (see ParlioLedDriver.md). +/// Output driver: parallel WS2812 LEDs over the P4 Parlio engine. class ParlioLedDriver : public ParallelLedDriver { public: // All controls default to UNSET — pins="", ledsPerPin="" (= all lights on the diff --git a/src/light/drivers/PreviewDriver.h b/src/light/drivers/PreviewDriver.h index 0b44be61..f3f56b5b 100644 --- a/src/light/drivers/PreviewDriver.h +++ b/src/light/drivers/PreviewDriver.h @@ -37,6 +37,7 @@ namespace mm { /// from this `count`, not from the light total. `stride` rises above 1 only when the /// point set would exceed the runtime send-buffer cap (`min(display, memory)`); below /// the cap every light is sent (stride 1), so a sparse layout streams in full. +/// @card PreviewDriver.png class PreviewDriver : public DriverBase { public: /// The 3D preview the web UI renders streams from this driver. Deleting or diff --git a/src/light/drivers/RmtLedDriver.h b/src/light/drivers/RmtLedDriver.h index 189f0c54..9bc7a052 100644 --- a/src/light/drivers/RmtLedDriver.h +++ b/src/light/drivers/RmtLedDriver.h @@ -31,6 +31,8 @@ namespace mm { // `if constexpr (platform::rmtTxChannels == 0)` so it compiles everywhere. // The pin/count parsing and buffer slicing run on every platform, which is what // lets the host unit tests (unit_RmtLedDriver_pins.cpp) pin them. +/// Output driver: WS2812 LEDs over the RMT peripheral. +/// @card RmtLedDriver.png class RmtLedDriver : public DriverBase { public: // Hard cap on the pin arrays: the largest RMT TX group of any supported diff --git a/src/light/effects/AudioSpectrumEffect.h b/src/light/effects/AudioSpectrumEffect.h index 1268b222..9e0c13ba 100644 --- a/src/light/effects/AudioSpectrumEffect.h +++ b/src/light/effects/AudioSpectrumEffect.h @@ -22,6 +22,7 @@ namespace mm { // bands zero → dark, so it is safe on any target and any grid size (including // 0×0). On a 1D strip (height 1) the bars collapse to per-column brightness. // Author: projectMM original, on the WLED-SR GEQ / spectrum-analyser concept (Andrew Tuline) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h +/// Audio-reactive effect: colours the layer from the 16-band FFT spectrum. class AudioSpectrumEffect : public EffectBase { public: const char* tags() const override { return "📊"; } diff --git a/src/light/effects/AudioVolumeEffect.h b/src/light/effects/AudioVolumeEffect.h index 44e184ed..549620a7 100644 --- a/src/light/effects/AudioVolumeEffect.h +++ b/src/light/effects/AudioVolumeEffect.h @@ -12,6 +12,7 @@ namespace mm { // live frame from AudioModule::latestFrame(); with no mic (or silence) the frame is // zero and the grid stays dark, so the effect is safe on any target. // Author: projectMM original (VU-meter) +/// Audio-reactive effect: drives brightness/colour from the overall sound level. class AudioVolumeEffect : public EffectBase { public: const char* tags() const override { return "🔊"; } diff --git a/src/light/effects/BlurzEffect.h b/src/light/effects/BlurzEffect.h index c5777319..c7efe125 100644 --- a/src/light/effects/BlurzEffect.h +++ b/src/light/effects/BlurzEffect.h @@ -31,6 +31,7 @@ namespace mm { // // 1D in spirit (a strip of `nrOfLights` pixels) but declared D2 so it spans a 2D panel as a flat run // along the buffer's pixel index; the dot and blur work over the whole pixel count either way. +/// Audio-reactive effect: blurred dots positioned by frequency band. class BlurzEffect : public EffectBase { public: const char* tags() const override { return "🐙📊"; } // WLED-lineage · audio diff --git a/src/light/effects/BouncingBallsEffect.h b/src/light/effects/BouncingBallsEffect.h index 39c5748d..b995ea4f 100644 --- a/src/light/effects/BouncingBallsEffect.h +++ b/src/light/effects/BouncingBallsEffect.h @@ -26,6 +26,7 @@ namespace mm { // shared draw primitives. Per-column ball state lives on the heap (sized to width()×maxNumBalls), // allocated in onBuildState and freed in teardown — never a large inline member. // Author: Andrew Tuline (WLED-SR) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h +/// Physics effect: gravity-bounced balls trailing along the layer. class BouncingBallsEffect : public EffectBase { public: const char* tags() const override { return "💫🐙"; } // MoonLight origin · 2D diff --git a/src/light/effects/DemoReelEffect.h b/src/light/effects/DemoReelEffect.h index 2ef7240f..90e60dec 100644 --- a/src/light/effects/DemoReelEffect.h +++ b/src/light/effects/DemoReelEffect.h @@ -28,6 +28,7 @@ namespace mm { // Prior art: FastLED's DemoReel100 sketch (Mark Kriegsman) — the canonical "rotate through a list of // patterns on a timer" demo; the registry-driven, self-skipping variant is ours. // Author: projectMM original, on Mark Kriegsman's FastLED DemoReel100 pattern — https://github.com/FastLED/FastLED/blob/master/examples/DemoReel100/DemoReel100.ino +/// Showcase effect: cycles through other effects with a name overlay. class DemoReelEffect : public EffectBase { public: const char* tags() const override { return "🎬"; } // demo reel diff --git a/src/light/effects/DistortionWavesEffect.h b/src/light/effects/DistortionWavesEffect.h index 7b3bc636..467079d4 100644 --- a/src/light/effects/DistortionWavesEffect.h +++ b/src/light/effects/DistortionWavesEffect.h @@ -19,6 +19,7 @@ namespace mm { // Prior art: MoonLight E_WLED.h (the WLED port); projectMM v1/v2 DistortionWaves (those // used float sinf — this is the integer-sin8 equivalent). // Author: ldirko & blazoncek (WLED port) — https://editor.soulmatelights.com/gallery/1089-distorsion-waves , https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h +/// Interference effect: overlaid moving waves distorting the field. class DistortionWavesEffect : public EffectBase { public: const char* tags() const override { return "💫"; } // MoonLight / WLED origin diff --git a/src/light/effects/FireEffect.h b/src/light/effects/FireEffect.h index fb04ee2f..57134fcb 100644 --- a/src/light/effects/FireEffect.h +++ b/src/light/effects/FireEffect.h @@ -16,6 +16,8 @@ namespace mm { /// the Lava palette (black->red->orange->yellow->white) gives the classic look; any /// palette works (Ocean/Forest turn the flame blue/green). // Author: Mark Kriegsman's Fire2012 (FastLED); MoonLight adapts MatrixFireFast by toggledbits — https://github.com/toggledbits/MatrixFireFast +/// Fire2012-style heat-field effect coloured through the active palette. +/// @card FireEffect.png class FireEffect : public EffectBase { public: const char* tags() const override { return "⚡️🦅"; } // FastLED origin (Fire2012-style) · David Jupijn / Rising Step diff --git a/src/light/effects/FixedRectangleEffect.h b/src/light/effects/FixedRectangleEffect.h index 506525e6..016417fa 100644 --- a/src/light/effects/FixedRectangleEffect.h +++ b/src/light/effects/FixedRectangleEffect.h @@ -23,6 +23,7 @@ namespace mm { // per-row when height>width), and the white-vs-colour chequerboard are reproduced exactly, // written fresh on EffectBase + the shared draw primitives. // Author: limpkin (MoonLight) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h +/// Test effect: draws a fixed rectangle at set coordinates. class FixedRectangleEffect : public EffectBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/light/effects/FreqMatrixEffect.h b/src/light/effects/FreqMatrixEffect.h index f99328e6..2e68aab7 100644 --- a/src/light/effects/FreqMatrixEffect.h +++ b/src/light/effects/FreqMatrixEffect.h @@ -41,6 +41,7 @@ namespace mm { // /2560 divisor so a full-scale level·fx·sensitivity lands near 255 — the same response curve on our // integer level. These two scale conversions are the only deviations from the verbatim WLED math; // every constant (80 Hz, 0.25, 42·highBin, 3·lowBin) is otherwise preserved. +/// Audio-reactive effect: scrolls the dominant frequency as a colour column. class FreqMatrixEffect : public EffectBase { public: const char* tags() const override { return "🐙📊"; } // 1D · audio diff --git a/src/light/effects/FreqSawsEffect.h b/src/light/effects/FreqSawsEffect.h index 26fbb29b..4f375acc 100644 --- a/src/light/effects/FreqSawsEffect.h +++ b/src/light/effects/FreqSawsEffect.h @@ -38,6 +38,7 @@ namespace mm { // EffectBase + the shared draw / palette / beat8 primitives. Reads AudioModule::latestFrame(); // silence → every band decays → flat → dark, safe on any target and grid size. // Author: @TroyHacks (MoonLight / WLED MoonModules) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h +/// Audio-reactive effect: sawtooth bands driven by the frequency spectrum. class FreqSawsEffect : public EffectBase { public: const char* tags() const override { return "💫📊"; } // MoonLight origin · audio diff --git a/src/light/effects/GEQ3DEffect.h b/src/light/effects/GEQ3DEffect.h index edc00139..eb59ecf7 100644 --- a/src/light/effects/GEQ3DEffect.h +++ b/src/light/effects/GEQ3DEffect.h @@ -27,6 +27,7 @@ namespace mm { // any target and grid size. (MoonLight's `softHack` anti-alias toggle is dropped — draw::line is a // crisp Bresenham; the `soft` arg has no projectMM equivalent.) // Author: @TroyHacks (MoonModules, GPLv3) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonModules.h +/// Audio-reactive 3D graphic-equaliser effect. class GEQ3DEffect : public EffectBase { public: const char* tags() const override { return "💫🌙📊"; } // MoonLight origin · MoonModules · audio diff --git a/src/light/effects/GEQEffect.h b/src/light/effects/GEQEffect.h index 9c2c749e..49a66108 100644 --- a/src/light/effects/GEQEffect.h +++ b/src/light/effects/GEQEffect.h @@ -31,6 +31,7 @@ namespace mm { // size. The per-column peak-fall state lives on the heap (sized to width()), allocated in onBuildState // and freed in teardown — never a large inline member. // Author: Andrew Tuline (WLED-SR) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h +/// Audio-reactive graphic-equaliser effect: 16 bands as vertical bars. class GEQEffect : public EffectBase { public: const char* tags() const override { return "💫🐙📊"; } // MoonLight origin · 2D · audio diff --git a/src/light/effects/GameOfLifeEffect.h b/src/light/effects/GameOfLifeEffect.h index 3c2c74be..6f327422 100644 --- a/src/light/effects/GameOfLifeEffect.h +++ b/src/light/effects/GameOfLifeEffect.h @@ -28,6 +28,7 @@ namespace mm { // EffectBase + shared primitives (Random8, colorFromPalette, draw::, crc16). Conway's Game of Life // (John Conway, 1970) is the underlying automaton. // Author: Ewoud Wijma (2022), modifications by Brandon Butler / @Brandon502 / wildcats08 — https://natureofcode.com/book/chapter-7-cellular-automata/ , https://github.com/DougHaber/nlife-color , https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonModules.h +/// Conway's Game of Life cellular-automaton effect. class GameOfLifeEffect : public EffectBase { public: const char* tags() const override { return "💫🌙"; } // MoonLight origin · MoonModules diff --git a/src/light/effects/LavaLampEffect.h b/src/light/effects/LavaLampEffect.h index bf023a10..8bc5949b 100644 --- a/src/light/effects/LavaLampEffect.h +++ b/src/light/effects/LavaLampEffect.h @@ -11,6 +11,8 @@ namespace mm { // through a black → red → orange → yellow → white palette. // Distinct from MetaballsEffect (which is fast, HSV-coloured). // Author: projectMM original (metaball lava lamp) +/// Lava-lamp effect: slow rising/merging palette blobs. +/// @card LavaLampEffect.gif class LavaLampEffect : public EffectBase { public: const char* tags() const override { return "💫🦅"; } // MoonLight origin · David Jupijn / Rising Step diff --git a/src/light/effects/LinesEffect.h b/src/light/effects/LinesEffect.h index b8e0bb1c..beff5dd7 100644 --- a/src/light/effects/LinesEffect.h +++ b/src/light/effects/LinesEffect.h @@ -11,6 +11,8 @@ namespace mm { // Useful for verifying preview axis orientation: each colour names its axis. // Port of MoonLight's Lines effect via projectMM-v1/LinesEffect.h. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h +/// Test effect: axis-aligned planes sweeping in sync (RGB = XYZ). +/// @card LinesEffect.png class LinesEffect : public EffectBase { public: const char* tags() const override { return "💫"; } diff --git a/src/light/effects/LissajousEffect.h b/src/light/effects/LissajousEffect.h index a039e9b1..f131f333 100644 --- a/src/light/effects/LissajousEffect.h +++ b/src/light/effects/LissajousEffect.h @@ -25,6 +25,7 @@ namespace mm { // 2·locn → 2·(size−1) remap, and the elapsed()/100 + i palette walk are reproduced exactly here, // written fresh on EffectBase + the shared draw primitives. // Author: Andrew Tuline (WLED-SR) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h +/// Parametric effect tracing a Lissajous curve across the layer. class LissajousEffect : public EffectBase { public: const char* tags() const override { return "🐙"; } // WLED-lineage diff --git a/src/light/effects/MetaballsEffect.h b/src/light/effects/MetaballsEffect.h index 7610e815..259a82e3 100644 --- a/src/light/effects/MetaballsEffect.h +++ b/src/light/effects/MetaballsEffect.h @@ -8,6 +8,8 @@ namespace mm { // Author: projectMM original (metaballs) +/// Metaballs effect: smooth merging blobs via a scalar field. +/// @card MetaballsEffect.png class MetaballsEffect : public EffectBase { public: const char* tags() const override { return "💫🦅"; } // MoonLight origin · David Jupijn / Rising Step diff --git a/src/light/effects/NetworkReceiveEffect.h b/src/light/effects/NetworkReceiveEffect.h index 90320299..95137a15 100644 --- a/src/light/effects/NetworkReceiveEffect.h +++ b/src/light/effects/NetworkReceiveEffect.h @@ -38,6 +38,7 @@ namespace mm { // realtime UDP input (multi-port + per-packet validation, ArtPollReply), and // projectMM v1's ArtNetInModule. // Author: projectMM original (E1.31 / Art-Net receive) +/// Effect that paints the layer from received Art-Net/E1.31/DDP pixels. class NetworkReceiveEffect : public EffectBase { public: const char* tags() const override { return "📡🌙"; } // network input · MoonLight / v1 lineage diff --git a/src/light/effects/Noise2DEffect.h b/src/light/effects/Noise2DEffect.h index 8f6f68c8..632feeb4 100644 --- a/src/light/effects/Noise2DEffect.h +++ b/src/light/effects/Noise2DEffect.h @@ -26,6 +26,7 @@ namespace mm { // per-pixel coordinate-scale + time-on-Z animation and the direct palette indexing are reproduced // exactly here, written fresh on EffectBase + the shared draw / noise primitives. // Author: WLED (Noise 2D) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h +/// 2D value-noise effect. class Noise2DEffect : public EffectBase { public: const char* tags() const override { return "💫🌙🐙"; } // MoonLight origin · MoonModules · 2D diff --git a/src/light/effects/NoiseEffect.h b/src/light/effects/NoiseEffect.h index 48a0c78f..b562dacb 100644 --- a/src/light/effects/NoiseEffect.h +++ b/src/light/effects/NoiseEffect.h @@ -7,6 +7,8 @@ namespace mm { // Author: FastLED inoise field (Mark Kriegsman) +/// Smooth animated value-noise effect (3D on volumetric layouts). +/// @card NoiseEffect.gif class NoiseEffect : public EffectBase { public: const char* tags() const override { return "⚡️"; } // FastLED-style noise diff --git a/src/light/effects/NoiseMeterEffect.h b/src/light/effects/NoiseMeterEffect.h index f280bf66..4824d9aa 100644 --- a/src/light/effects/NoiseMeterEffect.h +++ b/src/light/effects/NoiseMeterEffect.h @@ -27,6 +27,7 @@ namespace mm { // palette / noise / beatsin8 primitives. Reads AudioModule::latestFrame(); silence → level 0 → // maxLen 0 → the panel fades to dark, safe on any target and grid size. // Author: Andrew Tuline (WLED-SR) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h +/// Audio-reactive effect: a noise field modulated by sound level. class NoiseMeterEffect : public EffectBase { public: const char* tags() const override { return "🐙📊"; } // WLED origin · audio diff --git a/src/light/effects/PaintBrushEffect.h b/src/light/effects/PaintBrushEffect.h index bc783561..9c182301 100644 --- a/src/light/effects/PaintBrushEffect.h +++ b/src/light/effects/PaintBrushEffect.h @@ -22,6 +22,7 @@ namespace mm { // fades to dark, safe on any target and any grid size. The 'soft' anti-alias control is omitted // (the one approved omission — draw::line is crisp, projectMM has no Xiaolin-Wu line yet). // Author: @TroyHacks (WLED MoonModules, GPLv3) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonModules.h +/// Effect that paints moving brush-stroke lines across the layer. class PaintBrushEffect : public EffectBase { public: const char* tags() const override { return "💫🌙📊"; } // MoonLight origin · MoonModules · audio diff --git a/src/light/effects/ParticlesEffect.h b/src/light/effects/ParticlesEffect.h index 99405660..ecd72b98 100644 --- a/src/light/effects/ParticlesEffect.h +++ b/src/light/effects/ParticlesEffect.h @@ -10,6 +10,8 @@ namespace mm { // Author: WildCats08 / @Brandon502 (MoonLight) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h +/// Particle-system effect with spawned, moving points. +/// @card ParticlesEffect.png class ParticlesEffect : public EffectBase { public: const char* tags() const override { return "💫🦅"; } // MoonLight origin · David Jupijn / Rising Step diff --git a/src/light/effects/PlasmaEffect.h b/src/light/effects/PlasmaEffect.h index 8ff89a32..f2fee2db 100644 --- a/src/light/effects/PlasmaEffect.h +++ b/src/light/effects/PlasmaEffect.h @@ -8,6 +8,8 @@ namespace mm { // Author: classic plasma, FastLED / WLED lineage +/// Plasma effect: summed sine waves forming rolling blobs. +/// @card PlasmaEffect.gif class PlasmaEffect : public EffectBase { public: const char* tags() const override { return "💫🦅"; } // MoonLight origin · David Jupijn / Rising Step diff --git a/src/light/effects/PraxisEffect.h b/src/light/effects/PraxisEffect.h index a21c9fe0..15cdcce8 100644 --- a/src/light/effects/PraxisEffect.h +++ b/src/light/effects/PraxisEffect.h @@ -26,6 +26,7 @@ namespace mm { // takes the current time (elapsed()) as its second argument, matching the lib8tion shape // (bpm, timebase) with the time source threaded in at the domain edge. // Author: MONSOONO / @Flavourdynamics (MoonLight) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h +/// Algorithmic palette-pattern effect driven by two beat oscillators. class PraxisEffect : public EffectBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/light/effects/RainbowEffect.h b/src/light/effects/RainbowEffect.h index 6aab6de4..4eaa0df3 100644 --- a/src/light/effects/RainbowEffect.h +++ b/src/light/effects/RainbowEffect.h @@ -7,6 +7,8 @@ namespace mm { // Author: FastLED rainbow (Mark Kriegsman) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_FastLED.h +/// Palette-cycling diagonal rainbow effect — the default/test effect. +/// @card RainbowEffect.png class RainbowEffect : public EffectBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/light/effects/RandomEffect.h b/src/light/effects/RandomEffect.h index c871de34..c6d8599c 100644 --- a/src/light/effects/RandomEffect.h +++ b/src/light/effects/RandomEffect.h @@ -20,6 +20,7 @@ namespace mm { // chosen by a flat light index across all nrOfLights (the engine's native ordering, the direct // equivalent of MoonLight's index-based setRGB), so it can land anywhere in a 1D/2D/3D layer. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h +/// Effect that fills the layer with animated random colours. class RandomEffect : public EffectBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/light/effects/RingsEffect.h b/src/light/effects/RingsEffect.h index 9df1e7ee..8c349647 100644 --- a/src/light/effects/RingsEffect.h +++ b/src/light/effects/RingsEffect.h @@ -13,6 +13,8 @@ namespace mm { // (Renamed from RipplesEffect: the Ripples name now holds the MoonLight // sine-wave water-surface port; this concentric-rings effect is Rings.) // Author: projectMM original (concentric rings) +/// Effect of expanding concentric rings from random centres. +/// @card RingsEffect.gif class RingsEffect : public EffectBase { public: const char* tags() const override { return "💫🦅"; } // MoonLight origin · David Jupijn / Rising Step diff --git a/src/light/effects/RipplesEffect.h b/src/light/effects/RipplesEffect.h index 86daa11f..f519d475 100644 --- a/src/light/effects/RipplesEffect.h +++ b/src/light/effects/RipplesEffect.h @@ -23,6 +23,8 @@ namespace mm { // the hot-path integer-math preference is for per-light colour work, not the // handful of transcendental ops a wave front needs. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h +/// Water-ripple effect: distance-from-centre drives a wave phase. +/// @card RipplesEffect.gif class RipplesEffect : public EffectBase { public: const char* tags() const override { return "💫🟦🦅"; } // MoonLight origin · water-ripple diff --git a/src/light/effects/RubiksCubeEffect.h b/src/light/effects/RubiksCubeEffect.h index f1b2a6d0..05877c8f 100644 --- a/src/light/effects/RubiksCubeEffect.h +++ b/src/light/effects/RubiksCubeEffect.h @@ -28,6 +28,7 @@ namespace mm { // in-bounds voxel is treated as mapped (the source's isMapped()-skip and the mapping-driven // sizeX++/sizeY++/sizeZ++ adjustments are dropped; the projection uses sizeX = max(size.x-1, 1)). // Author: WildCats08 / @Brandon502 (MoonLight) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h +/// Effect rendering a rotating Rubik's cube on a 3D layout. class RubiksCubeEffect : public EffectBase { public: const char* tags() const override { return "💫🧊"; } // MoonLight origin · 3D-native diff --git a/src/light/effects/SineEffect.h b/src/light/effects/SineEffect.h index d7f2a462..ba8aad54 100644 --- a/src/light/effects/SineEffect.h +++ b/src/light/effects/SineEffect.h @@ -18,6 +18,7 @@ namespace mm { // Prior art: projectMM v1/v2 SineEffect (same 3D sine; those used float sinf and a // KvStore brightness publish we don't carry). // Author: MoonLight (Sinus, AI-generated) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h +/// Effect of a moving sine wave across the layer. class SineEffect : public EffectBase { public: const char* tags() const override { return "🌀"; } diff --git a/src/light/effects/SolidEffect.h b/src/light/effects/SolidEffect.h index d9a80b79..aad4c2f6 100644 --- a/src/light/effects/SolidEffect.h +++ b/src/light/effects/SolidEffect.h @@ -27,6 +27,7 @@ namespace mm { // MoonLight's per-entry scan one-for-one. The optional white channel is written only when the layer // carries a 4th channel (channelsPerLight() >= 4); on RGB layers the white member is ignored. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h +/// Effect that fills the whole layer with one palette colour. class SolidEffect : public EffectBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/light/effects/SphereMoveEffect.h b/src/light/effects/SphereMoveEffect.h index 05c220e2..3bb98166 100644 --- a/src/light/effects/SphereMoveEffect.h +++ b/src/light/effects/SphereMoveEffect.h @@ -27,6 +27,7 @@ namespace mm { // expression) so the origin sweep and diameter breathing integrate continuously rather than in // quantised integer-time steps — a smooth sweep at every speed. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h +/// Effect moving a lit sphere through a 3D layout. class SphereMoveEffect : public EffectBase { public: const char* tags() const override { return "💫🧊"; } // MoonLight origin · 3D-native diff --git a/src/light/effects/SpiralEffect.h b/src/light/effects/SpiralEffect.h index 2c8d84b1..8e85804f 100644 --- a/src/light/effects/SpiralEffect.h +++ b/src/light/effects/SpiralEffect.h @@ -8,6 +8,8 @@ namespace mm { // Author: projectMM original (rotating spiral) +/// Effect winding a lit spiral up a conical layout. +/// @card SpiralEffect.png class SpiralEffect : public EffectBase { public: const char* tags() const override { return "💫🦅"; } // MoonLight origin · David Jupijn / Rising Step diff --git a/src/light/effects/StarFieldEffect.h b/src/light/effects/StarFieldEffect.h index 995b5ba5..3aa5ba28 100644 --- a/src/light/effects/StarFieldEffect.h +++ b/src/light/effects/StarFieldEffect.h @@ -31,6 +31,7 @@ namespace mm { // + the shared draw/palette primitives. The star table lives on the heap (platform::alloc), sized // to the control maximum, rather than as a large inline member. // Author: @Brandon502 (MoonLight), inspired by Daniel Shiffman / Coding Train — https://www.youtube.com/watch?v=17WoOqgXsRM , https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h +/// Star-field effect: drifting points like flying through stars. class StarFieldEffect : public EffectBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/light/effects/StarSkyEffect.h b/src/light/effects/StarSkyEffect.h index 2f965514..0ee34cd3 100644 --- a/src/light/effects/StarSkyEffect.h +++ b/src/light/effects/StarSkyEffect.h @@ -24,6 +24,8 @@ namespace mm { // colorFromPalette, draw::). The per-star arrays live on the heap (platform::alloc), never as inline // members, so sizeof(StarSkyEffect) stays tiny. // Author: limpkin (MoonLight) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h +/// Night-sky effect: twinkling stars over a dark field. +/// @card StarSkyEffect.gif class StarSkyEffect : public EffectBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/light/effects/TetrixEffect.h b/src/light/effects/TetrixEffect.h index 0bf7d48c..8ca129ad 100644 --- a/src/light/effects/TetrixEffect.h +++ b/src/light/effects/TetrixEffect.h @@ -23,6 +23,7 @@ namespace mm { // MoonLight spec, written fresh on EffectBase + the shared draw primitives. One drop per X column; // safe at any grid size. // Author: Andrew Tuline (WLED-SR) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h +/// Tetris-style effect: falling, stacking blocks. class TetrixEffect : public EffectBase { public: const char* tags() const override { return "💫🌙"; } // MoonLight origin · MoonModules diff --git a/src/light/effects/TextEffect.h b/src/light/effects/TextEffect.h index 6e04b08c..bf720aaa 100644 --- a/src/light/effects/TextEffect.h +++ b/src/light/effects/TextEffect.h @@ -26,6 +26,7 @@ namespace mm { // on projectMM's EffectBase + the shared draw/font primitives. (MoonLight's IP/FPS/uptime presets are // a separate follow-up — see backlog — kept out so a light effect doesn't reach into system state.) // Author: projectMM original, on MoonLight's Scrolling Text — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h +/// Effect rendering a scrolling multi-line string in a bitmap font. class TextEffect : public EffectBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/light/effects/WaveEffect.h b/src/light/effects/WaveEffect.h index be7fc3e9..32c27747 100644 --- a/src/light/effects/WaveEffect.h +++ b/src/light/effects/WaveEffect.h @@ -27,6 +27,7 @@ namespace mm { // selected waveform to a y in [0, height); that pixel is lit, and for the discontinuous shapes // (sawtooth, square) a vertical segment connects to the previous column so the line stays joined. // Author: Ewoud Wijma (MoonLight) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h +/// Effect of a travelling wave across the layer. class WaveEffect : public EffectBase { public: const char* tags() const override { return "🌊"; } diff --git a/src/light/layers/Layer.h b/src/light/layers/Layer.h index bc919203..627b0dbd 100644 --- a/src/light/layers/Layer.h +++ b/src/light/layers/Layer.h @@ -31,6 +31,7 @@ namespace mm { /// **Status:** the status slot shows the LOGICAL box the effects render into (`` `××` ``), which can differ from the physical box shown on `Layouts` (a Mirror-XY modifier folds a 128×128 physical layout into a 64×64 logical box). The same slot carries memory-degradation warnings when a build can't fit (`modifier mapping skipped`, `buffer reduced`, `buffer allocation failed`, all `— not enough memory`), and a warning wins over the neutral box line. /// /// **Prior art:** MoonLight's `VirtualLayer` — `oneToOneMapping` fast-path flag, `virtualChannels` per-layer buffer, `effectDimension`, a `nodes` vector for effects/modifiers, and `forEachLight` per-logical-light iteration that asks the modifier for physical destinations (https://github.com/ewowi/MoonLight/blob/main/src/MoonLight/Layers/VirtualLayer.h). +/// @card Layer.png class Layer : public MoonModule { public: ModuleRole role() const override { return ModuleRole::Layer; } diff --git a/src/light/layers/Layers.h b/src/light/layers/Layers.h index 3cfe590e..1470b411 100644 --- a/src/light/layers/Layers.h +++ b/src/light/layers/Layers.h @@ -14,6 +14,7 @@ namespace mm { /// **No buffer of its own:** each Layer owns its buffer and the `Drivers` container owns the composited output. Layers wires the shared `Layouts` into every child so each can size its buffer. Two queries serve the Drivers compositor: `activeLayer` (the first enabled child, or a disabled one as fallback) answers physical dimensions and feeds the single-layer fast path, and `forEachEnabledLayer` walks the enabled children in container order (bottom→top) marking the bottom layer that clears the buffer. `enabledLayerCount` lets Drivers pick the fast path (one enabled layer → hand its buffer straight to the driver) versus the composite path (≥2 → blend into the output buffer). /// /// **Prior art:** MoonLight's `PhysicalLayer` runs N `VirtualLayer`s and composites their buffers into the display channel — same idea, different shape: Drivers (not Layers) does the compositing here (https://github.com/ewowi/MoonLight/blob/main/src/MoonLight). +/// @card Layers.png class Layers : public MoonModule { public: const char* acceptsChildRoles() const override { return "layer"; } diff --git a/src/light/layouts/CarLightsLayout.h b/src/light/layouts/CarLightsLayout.h index 8d820f28..88fc7382 100644 --- a/src/light/layouts/CarLightsLayout.h +++ b/src/light/layouts/CarLightsLayout.h @@ -35,6 +35,8 @@ namespace mm { // pin/wiring plumbing (nextPin / doNextPin) is dropped — a projectMM layout // emits coordinates only; the driver owns pins. // Author: projectMM / custom fixture +/// Layout mapping automotive light-strip coordinates. +/// @card CarLightsLayout.gif class CarLightsLayout : public LayoutBase { public: // Verbatim MoonLight default and range (the commented-out nrOfSpokes / diff --git a/src/light/layouts/CubeLayout.h b/src/light/layouts/CubeLayout.h index 8225624d..cc548a37 100644 --- a/src/light/layouts/CubeLayout.h +++ b/src/light/layouts/CubeLayout.h @@ -26,6 +26,7 @@ namespace mm { // layouts emit coordinates only — the driver owns pins — so that plumbing is // dropped and only the geometry is kept. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h +/// Layout of a 3D cube volume (width×height×depth). class CubeLayout : public LayoutBase { public: // Cube edges. Defaults 10×10×10, range 1..128 — MoonLight's exact defaults. diff --git a/src/light/layouts/GridLayout.h b/src/light/layouts/GridLayout.h index 9ad969a4..ab8153c3 100644 --- a/src/light/layouts/GridLayout.h +++ b/src/light/layouts/GridLayout.h @@ -14,6 +14,8 @@ namespace mm { constexpr lengthType defaultGridSize = 16; // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h +/// Layout of a dense row-major 3D grid. +/// @card GridLayout.png class GridLayout : public LayoutBase { public: lengthType width = defaultGridSize; diff --git a/src/light/layouts/HumanSizedCubeLayout.h b/src/light/layouts/HumanSizedCubeLayout.h index 73415ebd..14059e5b 100644 --- a/src/light/layouts/HumanSizedCubeLayout.h +++ b/src/light/layouts/HumanSizedCubeLayout.h @@ -24,6 +24,7 @@ namespace mm { // layout emits coordinates only (the driver owns pins), and the sixth face // is disabled in the source. tags 💫 marks the MoonLight lineage. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h +/// Layout of a walk-in cube built from five LED-curtain faces. class HumanSizedCubeLayout : public LayoutBase { public: // Verbatim MoonLight defaults and ranges: a 10×10×10 cube, each edge 1..20. diff --git a/src/light/layouts/Layouts.h b/src/light/layouts/Layouts.h index cbeae521..2c869335 100644 --- a/src/light/layouts/Layouts.h +++ b/src/light/layouts/Layouts.h @@ -36,6 +36,7 @@ class LayoutBase : public MoonModule { /// **Reordering:** layout children reorder by drag-and-drop (`POST /api/modules//move` with `{"to": }`), with insert (not swap) semantics — the standard reorderable-list behaviour (Finder, Trello, SortableJS). Order sets the physical index range each layout occupies, which drives ArtNet universe assignment. The same `move` op applies to every container. /// /// **Status:** the status slot shows the physical setup it describes — `` ` lights · ××` `` — the total light count summed across enabled children (the driver output buffer size) and the physical bounding box (the extent of all light coordinates, the dense render buffer size). For a dense grid the count equals the box volume; for a sparse layout (a sphere shell) the count is smaller than the box, and that gap is the at-a-glance signal that the layout is sparse. An empty setup reports Warning severity. Recomputed on every rebuild, not per tick. +/// @card Layouts.png class Layouts : public MoonModule { public: const char* acceptsChildRoles() const override { return "layout"; } diff --git a/src/light/layouts/PanelLayout.h b/src/light/layouts/PanelLayout.h index f9bb7b80..fdc7b3d7 100644 --- a/src/light/layouts/PanelLayout.h +++ b/src/light/layouts/PanelLayout.h @@ -24,6 +24,7 @@ namespace mm { // the control labels/defaults; the reconstructed logic is marked // RECONSTRUCTED // and cross-checks against GridLayout's serpentine on the defaults. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h +/// Layout of a single 2D LED panel. class PanelLayout : public LayoutBase { public: // Geometry (verbatim MoonLight defaults): a 16×16 panel. diff --git a/src/light/layouts/PanelsLayout.h b/src/light/layouts/PanelsLayout.h index 5e9a8a52..17ae5268 100644 --- a/src/light/layouts/PanelsLayout.h +++ b/src/light/layouts/PanelsLayout.h @@ -32,6 +32,7 @@ namespace mm { // reconstruction. The reconstructed logic is marked // RECONSTRUCTED and, on the // defaults, cross-checks against a plain serpentine tiling. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h +/// Layout tiling multiple panels into one grid. class PanelsLayout : public LayoutBase { public: // Outer level — the panel grid (MoonLight `panels`, default 2×2 panels). diff --git a/src/light/layouts/RingLayout.h b/src/light/layouts/RingLayout.h index aaf8f42c..4af4e0d7 100644 --- a/src/light/layouts/RingLayout.h +++ b/src/light/layouts/RingLayout.h @@ -24,6 +24,7 @@ namespace mm { // Float trig runs on the cold build path (forEachCoord / lightCount, called from a // rebuild), never the hot render loop, so it's allowed here. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h +/// Layout of a single ring of evenly-spaced LEDs. class RingLayout : public LayoutBase { public: // MoonLight defaults and ranges, preserved verbatim. diff --git a/src/light/layouts/Rings241Layout.h b/src/light/layouts/Rings241Layout.h index 329dec4e..97220e20 100644 --- a/src/light/layouts/Rings241Layout.h +++ b/src/light/layouts/Rings241Layout.h @@ -30,6 +30,7 @@ namespace mm { // MoonLight by one unit. The faithful path is MoonLight's own: form the angle in // double → narrow to float → float trig → float radius. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h +/// Layout of the 241-LED concentric-rings disc. class Rings241Layout : public LayoutBase { public: // Spacing multiplier — scales both the ring radii and the shared centre. diff --git a/src/light/layouts/SingleColumnLayout.h b/src/light/layouts/SingleColumnLayout.h index c24debe9..b0bbad52 100644 --- a/src/light/layouts/SingleColumnLayout.h +++ b/src/light/layouts/SingleColumnLayout.h @@ -15,6 +15,7 @@ namespace mm { // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h +/// Layout of one vertical LED column (1D). class SingleColumnLayout : public LayoutBase { public: // Geometry controls mirror MoonLight's defaults and ranges 1:1. diff --git a/src/light/layouts/SingleRowLayout.h b/src/light/layouts/SingleRowLayout.h index 53e796fa..744a2aea 100644 --- a/src/light/layouts/SingleRowLayout.h +++ b/src/light/layouts/SingleRowLayout.h @@ -18,6 +18,7 @@ namespace mm { // ledPinDIO select, its "LED NN" pin menu, and nextPin()): a projectMM layout // emits coordinates only, the driver owns pin assignment. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h +/// Layout of one horizontal LED row (1D). class SingleRowLayout : public LayoutBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/light/layouts/SphereLayout.h b/src/light/layouts/SphereLayout.h index d9720cc1..0c85552e 100644 --- a/src/light/layouts/SphereLayout.h +++ b/src/light/layouts/SphereLayout.h @@ -18,6 +18,7 @@ namespace mm { // though layout iteration is a cold path, because the same pattern reads // uniformly across the codebase. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h +/// Layout mapping LEDs onto a sphere surface. class SphereLayout : public LayoutBase { public: // Surface radius in light-units. Min 1 (the smallest hollow sphere: 18 diff --git a/src/light/layouts/SpiralLayout.h b/src/light/layouts/SpiralLayout.h index 249c5111..e574bee9 100644 --- a/src/light/layouts/SpiralLayout.h +++ b/src/light/layouts/SpiralLayout.h @@ -24,6 +24,7 @@ namespace mm { // MoonLight's per-strip pin plumbing (nextPin) is dropped: a projectMM layout // emits coordinates only; the driver owns wiring. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h +/// Layout winding LEDs up a conical spiral. class SpiralLayout : public LayoutBase { public: lengthType ledCount = 640; // total lights along the spiral diff --git a/src/light/layouts/TorontoBarGourdsLayout.h b/src/light/layouts/TorontoBarGourdsLayout.h index 9280cf18..0ab604d1 100644 --- a/src/light/layouts/TorontoBarGourdsLayout.h +++ b/src/light/layouts/TorontoBarGourdsLayout.h @@ -31,6 +31,8 @@ namespace mm { // count and the emitted set can never disagree (the RingLayout/SphereLayout // pattern). Integer math throughout; this is the cold build path. // Author: projectMM / custom fixture +/// Layout for the Toronto bar decorative-gourd installation. +/// @card TorontoBarGourdsLayout.gif class TorontoBarGourdsLayout : public LayoutBase { public: // Mode 0 only: how many stacked lights one gourd contributes. MoonLight diff --git a/src/light/layouts/TubesLayout.h b/src/light/layouts/TubesLayout.h index 1ee3edc0..fe476f94 100644 --- a/src/light/layouts/TubesLayout.h +++ b/src/light/layouts/TubesLayout.h @@ -19,6 +19,7 @@ namespace mm { // driver owns pin assignment, so MoonLight's per-column nextPin() plumbing is // dropped. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h +/// Layout of parallel LED tubes. class TubesLayout : public LayoutBase { public: // Defaults verbatim from MoonLight (nrOfTubes 4, ledsPerTube 54, diff --git a/src/light/layouts/WheelLayout.h b/src/light/layouts/WheelLayout.h index 27931d20..90c2c598 100644 --- a/src/light/layouts/WheelLayout.h +++ b/src/light/layouts/WheelLayout.h @@ -22,6 +22,7 @@ namespace mm { // Prior art: MoonLight ring/spoke layouts (L_MoonLight.h); projectMM v2 WheelLayoutModule // (those used double cos/sin/round — this is the integer-LUT equivalent). // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h +/// Layout of LEDs around a wheel/disc. class WheelLayout : public LayoutBase { public: uint16_t spokes = 8; // number of spokes, 2..64 diff --git a/src/light/modifiers/BlockModifier.h b/src/light/modifiers/BlockModifier.h index 6ebf600f..32dd1ab4 100644 --- a/src/light/modifiers/BlockModifier.h +++ b/src/light/modifiers/BlockModifier.h @@ -25,6 +25,7 @@ namespace mm { // our fold interface: modifySize() -> modifyLogicalSize (stashing the incoming box), // modifyPosition() -> the const modifyLogical fold that reads the stash. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h +/// Modifier expanding a 1D effect into concentric square rings. class BlockModifier : public ModifierBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/light/modifiers/CheckerboardModifier.h b/src/light/modifiers/CheckerboardModifier.h index 54096981..74f98d43 100644 --- a/src/light/modifiers/CheckerboardModifier.h +++ b/src/light/modifiers/CheckerboardModifier.h @@ -12,6 +12,8 @@ namespace mm { // Prior art: MoonLight's Checkerboard modifier (M_MoonLight.h) drops lights by // setting position to a sentinel; our fold returns false from modifyLogical. // Author: WildCats08 / @Brandon502 (MoonLight) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h +/// Modifier masking the layer in a checkerboard pattern. +/// @card CheckerboardModifier.gif class CheckerboardModifier : public ModifierBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/light/modifiers/CircleModifier.h b/src/light/modifiers/CircleModifier.h index 02dbcffb..1254311c 100644 --- a/src/light/modifiers/CircleModifier.h +++ b/src/light/modifiers/CircleModifier.h @@ -25,6 +25,7 @@ namespace mm { // fresh against our ModifierBase fold interface (modifyLogicalSize / modifyLogical) // rather than MoonLight's modifySize / modifyPosition Node API. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h +/// Modifier expanding a 1D effect into concentric circular rings. class CircleModifier : public ModifierBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/light/modifiers/MirrorModifier.h b/src/light/modifiers/MirrorModifier.h index 939b2b32..6330e2ae 100644 --- a/src/light/modifiers/MirrorModifier.h +++ b/src/light/modifiers/MirrorModifier.h @@ -23,6 +23,8 @@ namespace mm { // modifyLogicalSize()/modifyLogical(), and the box is stashed for the const fold // via the `modifierSize` pattern the base class documents. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h +/// Modifier folding each box axis onto itself (mirror). +/// @card MirrorModifier.gif class MirrorModifier : public ModifierBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/light/modifiers/MultiplyModifier.h b/src/light/modifiers/MultiplyModifier.h index 7d3d2fa9..874cd8ff 100644 --- a/src/light/modifiers/MultiplyModifier.h +++ b/src/light/modifiers/MultiplyModifier.h @@ -18,6 +18,8 @@ namespace mm { // mirror bools (3) instead of MoonLight's single mirror flag, and per-axis // multipliers, so X/Y/Z can fold and tile independently. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h +/// Modifier tiling the image across the box, optionally mirrored. +/// @card MultiplyModifier.png class MultiplyModifier : public ModifierBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/light/modifiers/PinwheelModifier.h b/src/light/modifiers/PinwheelModifier.h index 398c9de8..ce5f52cd 100644 --- a/src/light/modifiers/PinwheelModifier.h +++ b/src/light/modifiers/PinwheelModifier.h @@ -24,6 +24,7 @@ namespace mm { // emits coordinates only. Float math (atan2/hypot/sqrt) runs on the build path // (modifyLogical is called at rebuild, not in the hot render loop). // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h +/// Modifier remapping the grid into radial petals. class PinwheelModifier : public ModifierBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/light/modifiers/RandomMapModifier.h b/src/light/modifiers/RandomMapModifier.h index 72085dea..eeb8da40 100644 --- a/src/light/modifiers/RandomMapModifier.h +++ b/src/light/modifiers/RandomMapModifier.h @@ -27,6 +27,7 @@ namespace mm { // Sparse layouts: the permutation is over box indices, so a real light can map to a // non-light cell (dropped → dark). Acceptable for v1. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h +/// Modifier remapping every light through a random 1:1 permutation. class RandomMapModifier : public ModifierBase { public: uint8_t bpm = 6; // reshuffles per minute (0–60); 6 ≈ every 10 s; 0 = frozen diff --git a/src/light/modifiers/RegionModifier.h b/src/light/modifiers/RegionModifier.h index 4e3620b6..a4b147f3 100644 --- a/src/light/modifiers/RegionModifier.h +++ b/src/light/modifiers/RegionModifier.h @@ -36,6 +36,7 @@ namespace mm { // its identity/memcpy path with zero carving cost. Adding a full-region (0/100) // RegionModifier is correct but not free; the default is to not add one. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h +/// Modifier carving the layer to a percentage sub-rectangle. class RegionModifier : public ModifierBase { public: lengthType startX = 0, startY = 0, startZ = 0; diff --git a/src/light/modifiers/RippleXZModifier.h b/src/light/modifiers/RippleXZModifier.h index 49498fd0..d9348652 100644 --- a/src/light/modifiers/RippleXZModifier.h +++ b/src/light/modifiers/RippleXZModifier.h @@ -22,6 +22,7 @@ namespace mm { // propagation is dropped here (the geometry — the axis collapse — is preserved // exactly). Defaults match MoonLight: shrink=true, towardsX=true, towardsZ=false. // Author: @Troy (WLEDMM Art-Net) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h +/// Modifier collapsing an axis so an effect ripples along the rest. class RippleXZModifier : public ModifierBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/light/modifiers/RotateModifier.h b/src/light/modifiers/RotateModifier.h index ed668b7d..cae84feb 100644 --- a/src/light/modifiers/RotateModifier.h +++ b/src/light/modifiers/RotateModifier.h @@ -31,6 +31,7 @@ namespace mm { // Prior art: MoonLight M_MoonLight.h Rotate (modifyXYZ per-frame transform). Same per-frame // coordinate remap; we name the hook modifyLive and carry an explicit matrix. // Author: WildCats08 / @Brandon502 (MoonLight) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h +/// Modifier rotating the 2D image about its centre over time. class RotateModifier : public ModifierBase { public: Dim dimensions() const override { return Dim::D2; } // 2D rotation (advisory chip) diff --git a/src/light/modifiers/TransposeModifier.h b/src/light/modifiers/TransposeModifier.h index 4889ce46..f9345e6d 100644 --- a/src/light/modifiers/TransposeModifier.h +++ b/src/light/modifiers/TransposeModifier.h @@ -17,6 +17,7 @@ namespace mm { // `layer->size`), reproduced here by inverting against the stashed box. Written // fresh against our fold interface. // Author: MoonLight — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h +/// Modifier swapping a pair of box axes. class TransposeModifier : public ModifierBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/light/moonlive/MoonLiveEffect.h b/src/light/moonlive/MoonLiveEffect.h index ba371a02..da869d3b 100644 --- a/src/light/moonlive/MoonLiveEffect.h +++ b/src/light/moonlive/MoonLiveEffect.h @@ -17,6 +17,7 @@ namespace mm { +/// Effect whose render is a live-authored MoonLive script. class MoonLiveEffect : public EffectBase { public: const char* tags() const override { return "📝"; } // scripted From 869a8579db13abb9ec3ea19a956eac601d362d0d Mon Sep 17 00:00:00 2001 From: ewowi Date: Mon, 6 Jul 2026 16:00:31 +0200 Subject: [PATCH 3/5] Split DriverBase/LayoutBase, compact driver docs, name-highlight moxygen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Gives drivers and layouts their own base-class files (matching effects/modifiers), so DriverBase and LayoutBase now render as standalone technical pages with supporting cards. Reworks the LED-driver header docs to a compact-class-comment/detail-on-members standard, adds coloured headings plus a name-only highlight to the generated API pages, deletes the six migrated driver detail pages, and renames the installer image dir to deviceModels for consistency. KPI: 16384lights | PC:666KB | tick:119/91/119/14/2/271/57/17/20/157/114/16/1/34us(FPS:8403/10989/8403/71428/500000/3690/17543/58823/50000/6369/8771/62500/1000000/29411) | ESP32:1369KB | tick:1416us(FPS:706) | heap:155KB | src:176(34639) | test:122(17897) | lizard:125w Core: - DriverBase.h / LayoutBase.h: split the base classes out of Drivers.h / Layouts.h into their own headers, so each has its own moxygen technical page + supporting card, symmetric with EffectBase / ModifierBase. - Drivers.h / Layouts.h: reduced to the container class, now including the split-out base header. Light domain: - LED drivers (Rmt/Parallel/Lcd/Parlio/NetworkSend/Hue/Preview): compacted each class comment to identity + defining contract and distributed the per-control / per-method detail onto the attributes and methods themselves (every public member now carries a `///`), so the generated page reads as a documented list rather than one class blurb; no logic change. - RmtLedDriver: carried the modern-RMT-v2-vs-legacy rationale and the classic-ESP32 whole-frame-loopback cap into the `.h` `///` (were archive-only). - driver subclasses + concrete layouts: include the lighter DriverBase.h / LayoutBase.h directly (matching how effects include EffectBase); main.cpp + the container-using tests gained an explicit Drivers.h / Layouts.h include. - RippleXZModifier: reworded the class summary to describe the axis collapse/fold it actually does (was "ripples"). UI: - extra.css: coloured h1/h2/h3 site-wide (the slate theme rendered every heading the same grey), and a name-only signature highlight on the technical pages (accent name, muted type/args). Scripts / MoonDeck: - gen_api.py: post-process wrapping each generated member-signature name in a `.mm-sig-name` span so the theme can highlight the name while type/args stay muted. - check_devices.py / preview_installer.py: follow the docs/assets/boards -> docs/assets/deviceModels rename. Tests: - 33 effect/layout unit tests: explicit `#include "light/layouts/Layouts.h"` where they construct the container fixture (they previously got it transitively through a layout header now switched to the lighter base). Docs / CI: - docs/assets/boards -> docs/assets/deviceModels (34 images git-renamed; deviceModels.json, install.js, README, release.yml, mkdocs references updated). - coding-standards.md: documented the compact-class-comment/detail-on-members standard and the two moxygen shaping levers. - drivers/effects/layouts/modifiers/supporting/MoonLiveEffect catalog pages: repointed card links to the generated moxygen pages; deleted the six migrated driver detail pages (content now lives in the `.h` `///`). - home-automation.md: portable `$(brew --prefix)/sbin/mosquitto` path (was hardcoded Apple-Silicon); led-signal-integrity.md use-case guide added. - backlog-core.md: parked the open Homebridge brightness-vs-HSV question (resolve on hardware). Reviews: - 🐇 File Manager link / gettingstarted anchors / roadmap wording / bare `mosquitto -v`: verified already-correct in current code, no change. - 🐇 Homebridge example redundant brightness topics: accepted-with-note — brightness is one of the three first-class MQTT controls, so kept in the example; parked the mqttthing-config nuance in backlog for a hardware check. - 🐇 AudioModule.h platform/platform.h include: rejected — that header IS the platform-abstraction seam core depends on (18 core files include it, incl. MoonModule.h); the boundary check forbids ``/``, not this. - 🐇 Apple-Silicon mosquitto path + RippleXZ "ripples" summary: fixed. KPI Details: [doctest] test cases: 638 | 638 passed | 0 failed | 0 skipped PC tick: 119/91/119/14/2/271/57/17/20/157/114/16/1/34 us (per scenario) 19 scenario(s), 19 passed, 0 failed Platform boundary: PASS ESP32 (esp32, classic ESP32-D0WD-V3): tick 1416 us (FPS 706), heap free 159152, flash 1369KB ESP32 builds verified: esp32 (RMT) + esp32s3-n16r8 (LCD_CAM) + esp32p4-eth (Parlio) Co-Authored-By: Claude Opus 4.8 --- .github/workflows/release.yml | 10 +- CLAUDE.md | 2 +- docs/architecture.md | 8 +- .../ESP32-P4-NANO-details-inter.jpg | Bin .../{boards => deviceModels}/ch9102.jpg | Bin .../{boards => deviceModels}/cp210x-ch34x.jpg | Bin .../esp32-c3-supermini.jpg | Bin .../{boards => deviceModels}/esp32-c3.jpg | Bin .../esp32-d0-16mb.jpg | Bin .../esp32-d0-pico2.jpg | Bin .../esp32-d0-wrover.jpg | Bin .../{boards => deviceModels}/esp32-p4-eth.png | Bin .../esp32-p4-olimex.jpg | Bin .../{boards => deviceModels}/esp32-p4.jpg | Bin .../esp32-s3-atoms3r.jpg | Bin .../esp32-s3-n16r8-dev.jpg | Bin .../esp32-s3-n8r8-dev.jpg | Bin .../esp32-s3-seeed_xiao.png | Bin .../esp32-s3-stephanelec-16p.jpg | Bin .../esp32-s3-zero-n4r2.jpg | Bin .../esp32-s31-function-coreboard-1.jpg | Bin .../generic-esp32-dev.jpg | Bin .../lightcrafter-16.jpg | Bin .../{boards => deviceModels}/lolin-d32.jpg | Bin .../{boards => deviceModels}/mhc-v57-pro.jpg | Bin .../mhc-wled-esp32-p4-shield.jpg | Bin .../olimex-esp32-gateway-rev-g.jpg | Bin .../{boards => deviceModels}/others.jpg | Bin .../quinled-dig-2-go.jpg | Bin .../quinled-dig-next-2.jpg | Bin .../quinled-dig-octa-32-8l.jpg | Bin .../quinled-dig-quad-v3.jpg | Bin .../quinled-dig-uno-v3.jpg | Bin .../serg-minishield.jpg | Bin .../serg-unishield-v5.jpg | Bin .../{boards => deviceModels}/shelly.jpg | Bin .../waveshare-esp32-p4-nano.jpg | Bin docs/assets/extra.css | 38 ++++ docs/backlog/backlog-core.md | 6 +- docs/backlog/backlog-light.md | 2 +- docs/backlog/livescripts-analysis-top-down.md | 2 +- docs/building.md | 2 +- docs/coding-standards.md | 25 ++- docs/gettingstarted.md | 4 +- docs/history/decisions.md | 2 +- docs/moonmodules/light/drivers/HueDriver.md | 27 --- .../moonmodules/light/drivers/LcdLedDriver.md | 21 -- .../light/drivers/NetworkSendDriver.md | 32 --- .../light/drivers/ParlioLedDriver.md | 21 -- .../light/drivers/PreviewDriver.md | 31 --- .../moonmodules/light/drivers/RmtLedDriver.md | 54 ----- docs/moonmodules/light/drivers/drivers.md | 22 +- docs/moonmodules/light/effects/effects.md | 160 +++++++++---- docs/moonmodules/light/layouts/layouts.md | 60 +++-- docs/moonmodules/light/modifiers/modifiers.md | 44 +++- .../light/moonlive/MoonLiveEffect.md | 2 +- .../light/supporting/supporting.md | 18 ++ docs/usecases/home-automation.md | 2 +- docs/usecases/led-signal-integrity.md | 17 ++ mkdocs.yml | 1 + moondeck/check/check_devices.py | 6 +- moondeck/check/check_specs.py | 8 +- moondeck/docs/gen_api.py | 44 ++++ moondeck/docs/mkdocs_hooks.py | 12 +- moondeck/run/preview_installer.py | 12 +- src/light/drivers/DriverBase.h | 174 +++++++++++++++ src/light/drivers/Drivers.h | 162 +------------- src/light/drivers/HueDriver.h | 99 +++++---- src/light/drivers/LcdLedDriver.h | 78 ++++--- src/light/drivers/NetworkSendDriver.h | 100 +++++---- src/light/drivers/ParallelLedDriver.h | 127 +++++++---- src/light/drivers/ParlioLedDriver.h | 51 +++-- src/light/drivers/PreviewDriver.h | 2 +- src/light/drivers/RmtLedDriver.h | 210 ++++++++++-------- src/light/layouts/CarLightsLayout.h | 2 +- src/light/layouts/CubeLayout.h | 2 +- src/light/layouts/GridLayout.h | 2 +- src/light/layouts/HumanSizedCubeLayout.h | 2 +- src/light/layouts/LayoutBase.h | 28 +++ src/light/layouts/Layouts.h | 20 +- src/light/layouts/PanelLayout.h | 2 +- src/light/layouts/PanelsLayout.h | 2 +- src/light/layouts/RingLayout.h | 2 +- src/light/layouts/Rings241Layout.h | 2 +- src/light/layouts/SingleColumnLayout.h | 2 +- src/light/layouts/SingleRowLayout.h | 2 +- src/light/layouts/SphereLayout.h | 2 +- src/light/layouts/SpiralLayout.h | 2 +- src/light/layouts/TorontoBarGourdsLayout.h | 2 +- src/light/layouts/TubesLayout.h | 2 +- src/light/layouts/WheelLayout.h | 2 +- src/light/modifiers/RippleXZModifier.h | 3 +- src/main.cpp | 1 + test/unit/light/unit_BlurzEffect.cpp | 1 + test/unit/light/unit_BouncingBallsEffect.cpp | 1 + .../unit/light/unit_DistortionWavesEffect.cpp | 1 + test/unit/light/unit_FireEffect.cpp | 1 + test/unit/light/unit_FixedRectangleEffect.cpp | 1 + test/unit/light/unit_FreqMatrixEffect.cpp | 1 + test/unit/light/unit_FreqSawsEffect.cpp | 1 + test/unit/light/unit_GEQ3DEffect.cpp | 1 + test/unit/light/unit_GEQEffect.cpp | 1 + test/unit/light/unit_GridLayout.cpp | 1 + test/unit/light/unit_Layer_extrude.cpp | 1 + test/unit/light/unit_Layers_container.cpp | 1 + test/unit/light/unit_LissajousEffect.cpp | 1 + test/unit/light/unit_MetaballsEffect.cpp | 1 + test/unit/light/unit_NetworkReceiveEffect.cpp | 1 + .../unit_NetworkReceiveEffect_protocols.cpp | 1 + test/unit/light/unit_Noise2DEffect.cpp | 1 + test/unit/light/unit_NoiseEffect.cpp | 1 + test/unit/light/unit_NoiseMeterEffect.cpp | 1 + test/unit/light/unit_PaintBrushEffect.cpp | 1 + test/unit/light/unit_ParticlesEffect.cpp | 1 + test/unit/light/unit_PlasmaEffect.cpp | 1 + test/unit/light/unit_PraxisEffect.cpp | 1 + test/unit/light/unit_RainbowEffect.cpp | 1 + test/unit/light/unit_RandomEffect.cpp | 1 + test/unit/light/unit_RubiksCubeEffect.cpp | 1 + test/unit/light/unit_SineEffect.cpp | 1 + test/unit/light/unit_SolidEffect.cpp | 1 + test/unit/light/unit_SphereMoveEffect.cpp | 1 + test/unit/light/unit_StarFieldEffect.cpp | 1 + test/unit/light/unit_StarSkyEffect.cpp | 1 + test/unit/light/unit_TetrixEffect.cpp | 1 + test/unit/light/unit_effects_render.cpp | 1 + web-installer/README.md | 10 +- web-installer/deviceModels.json | 42 ++-- web-installer/install.js | 2 +- 129 files changed, 1055 insertions(+), 812 deletions(-) rename docs/assets/{boards => deviceModels}/ESP32-P4-NANO-details-inter.jpg (100%) rename docs/assets/{boards => deviceModels}/ch9102.jpg (100%) rename docs/assets/{boards => deviceModels}/cp210x-ch34x.jpg (100%) rename docs/assets/{boards => deviceModels}/esp32-c3-supermini.jpg (100%) rename docs/assets/{boards => deviceModels}/esp32-c3.jpg (100%) rename docs/assets/{boards => deviceModels}/esp32-d0-16mb.jpg (100%) rename docs/assets/{boards => deviceModels}/esp32-d0-pico2.jpg (100%) rename docs/assets/{boards => deviceModels}/esp32-d0-wrover.jpg (100%) rename docs/assets/{boards => deviceModels}/esp32-p4-eth.png (100%) rename docs/assets/{boards => deviceModels}/esp32-p4-olimex.jpg (100%) rename docs/assets/{boards => deviceModels}/esp32-p4.jpg (100%) rename docs/assets/{boards => deviceModels}/esp32-s3-atoms3r.jpg (100%) rename docs/assets/{boards => deviceModels}/esp32-s3-n16r8-dev.jpg (100%) rename docs/assets/{boards => deviceModels}/esp32-s3-n8r8-dev.jpg (100%) rename docs/assets/{boards => deviceModels}/esp32-s3-seeed_xiao.png (100%) rename docs/assets/{boards => deviceModels}/esp32-s3-stephanelec-16p.jpg (100%) rename docs/assets/{boards => deviceModels}/esp32-s3-zero-n4r2.jpg (100%) rename docs/assets/{boards => deviceModels}/esp32-s31-function-coreboard-1.jpg (100%) rename docs/assets/{boards => deviceModels}/generic-esp32-dev.jpg (100%) rename docs/assets/{boards => deviceModels}/lightcrafter-16.jpg (100%) rename docs/assets/{boards => deviceModels}/lolin-d32.jpg (100%) rename docs/assets/{boards => deviceModels}/mhc-v57-pro.jpg (100%) rename docs/assets/{boards => deviceModels}/mhc-wled-esp32-p4-shield.jpg (100%) rename docs/assets/{boards => deviceModels}/olimex-esp32-gateway-rev-g.jpg (100%) rename docs/assets/{boards => deviceModels}/others.jpg (100%) rename docs/assets/{boards => deviceModels}/quinled-dig-2-go.jpg (100%) rename docs/assets/{boards => deviceModels}/quinled-dig-next-2.jpg (100%) rename docs/assets/{boards => deviceModels}/quinled-dig-octa-32-8l.jpg (100%) rename docs/assets/{boards => deviceModels}/quinled-dig-quad-v3.jpg (100%) rename docs/assets/{boards => deviceModels}/quinled-dig-uno-v3.jpg (100%) rename docs/assets/{boards => deviceModels}/serg-minishield.jpg (100%) rename docs/assets/{boards => deviceModels}/serg-unishield-v5.jpg (100%) rename docs/assets/{boards => deviceModels}/shelly.jpg (100%) rename docs/assets/{boards => deviceModels}/waveshare-esp32-p4-nano.jpg (100%) delete mode 100644 docs/moonmodules/light/drivers/HueDriver.md delete mode 100644 docs/moonmodules/light/drivers/LcdLedDriver.md delete mode 100644 docs/moonmodules/light/drivers/NetworkSendDriver.md delete mode 100644 docs/moonmodules/light/drivers/ParlioLedDriver.md delete mode 100644 docs/moonmodules/light/drivers/PreviewDriver.md delete mode 100644 docs/moonmodules/light/drivers/RmtLedDriver.md create mode 100644 docs/usecases/led-signal-integrity.md create mode 100644 src/light/drivers/DriverBase.h create mode 100644 src/light/layouts/LayoutBase.h diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 23cf38d4..72300c95 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -525,14 +525,14 @@ jobs: cp src/ui/install-picker-boards.js pages/install/ # library.json — install page reads the project version from it. cp library.json pages/install/ - # Board picker images live in docs/assets/boards/ (the project's asset + # Board picker images live in docs/assets/deviceModels/ (the project's asset # home, also a library for boards not yet in the catalog). Stage ONLY the # images a deviceModels.json entry actually references, under install/assets/, - # so an "image": "assets/boards/.jpg" resolves same-origin from + # so an "image": "assets/deviceModels/.jpg" resolves same-origin from # /install/ without shipping the unused library to Pages. - mkdir -p pages/install/assets/boards - # rel is "assets/boards/." (the path served from /install/); - # the source file lives in docs/ (i.e. docs/assets/boards/...). + mkdir -p pages/install/assets/deviceModels + # rel is "assets/deviceModels/." (the path served from /install/); + # the source file lives in docs/ (i.e. docs/assets/deviceModels/...). jq -r '.[].image // empty' web-installer/deviceModels.json | while read -r rel; do src="docs/$rel" [ -f "$src" ] && cp "$src" "pages/install/$rel" \ diff --git a/CLAUDE.md b/CLAUDE.md index 4cd8d096..2ce7833b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -212,7 +212,7 @@ docs/ Documentation describes the system as it is. Git commits are the history. Module specs are written before implementation. Doc pages are kept current with the code. -**Documentation model** — the full standard lives in [docs/coding-standards.md § Documentation model](docs/coding-standards.md#documentation-model); the working-memory summary: the four **catalog pages** (`effects/modifiers/layouts/drivers.md`, authored as prose `### ` blocks, rendered as tables by the build hook) are the end-user documentation. A per-module detail `.md` exists **only** for cross-file wiring / design rationale no single source file owns (and doesn't exist otherwise). Test inventories + catalog tables are **generated at build time, not committed**. Where a fact is the same in the `.h` and a doc (a control range, a source URL), `check_specs.py` **validates** they agree rather than duplicating; where a doc would hand-copy a struct/enum/wire format, embed the real source via a `--8<--` snippet. Never re-type a fact the `.h` already states. +**Documentation model** — the full standard lives in [docs/coding-standards.md § Documentation model](docs/coding-standards.md#documentation-model); the working-memory summary: every module has **two surfaces** — a hand-written **summary/catalog page** (`effects/modifiers/layouts/drivers.md`, `core/services/`, `*/supporting/`; authored as prose `### ` blocks, rendered as tables by the build hook) for the end user, and a **generated technical page** (`/moxygen/.md`, from the `.h`'s `///` comments) for the developer. Each summary card's Links column links to the technical page via a `Detail: [technical]` line (🧪 Tests · 📄 Technical, icon'd by the hook) — **not to the `.h`** (the technical page already links the `.h`). Rich rationale therefore goes in `///` (not `//` — `//` is invisible to moxygen), directly above the class; a `@card ` line adds the UI screenshot; relative `.md` links are stripped by Doxygen, so use full URLs. Retired per-module detail `.md`s move to `/archive/` (never linked from live docs). Test inventories + catalog tables are **generated at build time, not committed**. Where a fact is the same in the `.h` and a doc, `check_specs.py` **validates** they agree; embed a struct/enum/wire format via a `--8<--` snippet. Never re-type a fact the `.h` already states. The `history/` folder is the distilled experience of years of building LED/light systems, from WLED, WLED-MM, StarLight, MoonLight, through projectMM. It contains proven patterns, memory tricks, control mechanisms, and hard-won lessons, studied under the [*Industry standards, our own code*](#principles) principle. Per-project credits live in the `history/` digests and the per-module "Prior art" sections. diff --git a/docs/architecture.md b/docs/architecture.md index 2f4e0b09..5f7db89d 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -311,7 +311,7 @@ Modules in the light pipeline can be added, replaced, or removed dynamically at **Data flow.** The pipeline instantiates both core data-exchange shapes (see [§ Data exchange between modules](#data-exchange-between-modules)): - *Shared-struct (pull):* `Drivers` hands every child driver a `Buffer*` (source) plus a `Correction*` (shared brightness/reorder/white), and `Layer` exposes its pixel buffer to `Drivers` directly on the identity-mapping fast path: each consumer holds a `const`-pointer and reads it per frame. The pointers are **(re)bound on every rebuild**, not just at boot: `Drivers::onBuildState()` re-resolves the active `Layer` (`Layers::activeLayer()`) and calls `passBufferToDrivers()`, which re-runs `setSourceBuffer()`/`setLayer()` on each child (clearing them to `nullptr` when there is no active Layer). So a held pointer is valid only until the next rebuild — which is exactly why the consumers re-read it each frame and tolerate a null (the [robustness rule](#robustness)): a Layer add/delete/replace re-binds or clears it live, no dangling reference. -- *Push to a core sink:* `PreviewDriver` owns the preview wire format (a one-time coordinate table + per-frame RGB point list) and pushes the bytes to a `BinaryBroadcaster` (the core HTTP server). The server broadcasts them over WebSocket without knowing they're a preview: the format and the light types stay entirely in the driver. See [PreviewDriver](moonmodules/light/drivers/PreviewDriver.md). +- *Push to a core sink:* `PreviewDriver` owns the preview wire format (a one-time coordinate table + per-frame RGB point list) and pushes the bytes to a `BinaryBroadcaster` (the core HTTP server). The server broadcasts them over WebSocket without knowing they're a preview: the format and the light types stay entirely in the driver. See [PreviewDriver](moonmodules/light/moxygen/PreviewDriver.md). **Graceful degradation under transport backpressure.** The preview is the project's worked example of a property worth naming generically, because it is the transport-side sibling of the memory-side [§ Degradation cascade](#degradation-cascade): when a consumer can't keep up, **shed quality first** — degrade the stream rather than reach for a stall. The link to a browser is the slow consumer; a full-resolution frame (128² = 16384 lights = ~49 KB) may not drain in the budget one tick allows. Rather than block the loop until it drains, the producer **degrades**, shedding in the order video streaming does — frame rate first, then resolution: (1) the full-resolution frame streams from the driver buffer with no intermediate copy, drained a memory-adaptive chunk per transport tick (a **resumable** send), and the next frame starts only when the previous one finished — so the **effective frame rate self-limits** to what the link sustains, with no loop stall and no connection drop; (2) only when even one frame can't drain promptly does it shed **resolution** via a spatial-lattice downsample, the same congestion-responsive, adaptive-bitrate idea behind HLS/DASH/WebRTC applied to a binary WebSocket. The point budget is itself memory-derived (per [§ Scaling to available memory](#scaling-to-available-memory)), so a tighter board downsamples sooner. The render loop is charged only a bounded slice per tick; each delivered frame is a faithful **complete** frame at a lower rate or coarser sample — a WebSocket message is atomic to the browser, so a frame is whole or absent, never partial/torn. The coordinate table and the downsampled frames take a bounded synchronous send (begin/push/end): a client whose socket stays blocked past the spin budget is closed and reconnects (the browser re-handshakes and the next coordinate table re-primes it) — the bound caps tick occupancy, and a reconnect is a brief blip rather than a frozen preview. This is *graceful degradation*: a fast link sees every light at full rate, a slow link sees a faithful coarser sample at a few fps, and a wedged client is dropped and recovers rather than stalling the device. The mechanism (resumable cross-tick send + drop-new backpressure — a frame offered while one is in flight is dropped, the in-flight one is kept — plus adaptive frame rate + adaptive lattice) lives in `PreviewDriver` + `HttpServerModule`; it is payload-agnostic, so other bulky streams can ride the same transport. @@ -392,7 +392,7 @@ Every effect declares its native dimensionality through `EffectBase::dimensions( D1/D2 are **opt-in promises**: declaring them tells the framework it can fill the missing axes, saving the per-effect work of iterating z (or x and z). Effects that don't make that promise stay at the D3 default and iterate the whole buffer. -**Why 1D runs along Y, and the unified expand rule.** A lower-D effect occupies the *low* axes and the framework expands it across the *next* axis: **1D → 2D adds columns across X** (the 1D output is the first column, duplicated rightward); **2D → 3D adds slices across Z** (the 2D front face, duplicated in depth). 1D-along-Y is the deliberate choice (shared with MoonLight): it makes a 1D effect the natural **first column** of its 2D form — write the effect once down Y, and expanding to a panel is just "repeat the column," same math, no special-casing. (The alternative, 1D-along-X, would make 1D a *row* that expands *downward* — a less natural fit, since a strip is a column and a 2D effect's columns are what you tile.) Concretely: a 1D effect draws its shape down Y, so it renders correctly on a layer whose single populated axis is Y (a `1 × N` grid, width 1, height N); on an `N × 1` grid the extrude would run the wrong way and collapse the shape to a flat line. How a physical output (a strip, a row of [Hue lights](moonmodules/light/drivers/HueDriver.md)) maps to a `1 × N` grid is a layout concern — see the layout docs. +**Why 1D runs along Y, and the unified expand rule.** A lower-D effect occupies the *low* axes and the framework expands it across the *next* axis: **1D → 2D adds columns across X** (the 1D output is the first column, duplicated rightward); **2D → 3D adds slices across Z** (the 2D front face, duplicated in depth). 1D-along-Y is the deliberate choice (shared with MoonLight): it makes a 1D effect the natural **first column** of its 2D form — write the effect once down Y, and expanding to a panel is just "repeat the column," same math, no special-casing. (The alternative, 1D-along-X, would make 1D a *row* that expands *downward* — a less natural fit, since a strip is a column and a 2D effect's columns are what you tile.) Concretely: a 1D effect draws its shape down Y, so it renders correctly on a layer whose single populated axis is Y (a `1 × N` grid, width 1, height N); on an `N × 1` grid the extrude would run the wrong way and collapse the shape to a flat line. How a physical output (a strip, a row of [Hue lights](moonmodules/light/moxygen/HueDriver.md)) maps to a `1 × N` grid is a layout concern — see the layout docs. Hot-path cost: extrude pays one comparison and returns for the D3 case. For D1/D2 on a layer whose unused axes are size 1 (a D2 effect on a 2D layer, a D1 effect on a 1D `1 × N` layer) the inner loops are guarded by `depth_ > 1` / `width_ > 1` and never run. Real `memcpy` work happens only for a D1 or D2 effect on a layer with more dimensions than the effect writes: exactly the case where you wanted the framework to do the duplication. @@ -461,7 +461,7 @@ The shared output buffer is necessary when blend+map writes to arbitrary physica Each driver (a MoonModule) speaks one protocol: -- **LED drivers**: WS2812 via RMT (multi-pin), plus two parallel-output paths on the newer chips. The S3's LCD_CAM i80 bus ([LcdLedDriver](moonmodules/light/drivers/LcdLedDriver.md)) drives exactly 8 data GPIOs — the i80 bus claims every data line of its width, so a partial set is rejected. The P4's Parlio peripheral ([ParlioLedDriver](moonmodules/light/drivers/ParlioLedDriver.md)) drives 1–8 lanes — it takes the data GPIOs directly, so any count up to 8 is valid. Both are DMA-driven. Platform-specific; all behind the platform boundary. +- **LED drivers**: WS2812 via RMT (multi-pin), plus two parallel-output paths on the newer chips. The S3's LCD_CAM i80 bus ([LcdLedDriver](moonmodules/light/moxygen/LcdLedDriver.md)) drives exactly 8 data GPIOs — the i80 bus claims every data line of its width, so a partial set is rejected. The P4's Parlio peripheral ([ParlioLedDriver](moonmodules/light/moxygen/ParlioLedDriver.md)) drives 1–8 lanes — it takes the data GPIOs directly, so any count up to 8 is valid. Both are DMA-driven. Platform-specific; all behind the platform boundary. - **DMX / ArtNet**: sends DMX over UDP. Supports addressable LEDs and conventional DMX fixtures (pars, moving heads, dimmers). - **Preview**: streams light data to the web UI via WebSocket. - **Desktop output**: SDL2 or terminal for visual preview. Desktop also serves as a high-speed processing node, driving lights via ArtNet/DDP over the network. @@ -547,7 +547,7 @@ The UI is **MoonModule-driven**. It contains no hard-coded knowledge of specific Adding a new MoonModule with controls needs **zero changes** to the UI files. This extends to the tree-mutation affordances: which modules accept children (and of what role) comes from each type's `acceptsChildRoles()`, and whether a module can be deleted/replaced comes from its `userEditable()`: both declared on the C++ side and reported in `/api/types` + `/api/state`. The UI hardcodes no list of "which types are containers" or "which roles are editable"; a new container type or a fixed child is a one-line C++ override. -The light domain plugs into the UI at three points: a fixed top-level tree (Layouts / Layers / Drivers pinned in `main.cpp`, root reorder disabled while child reorder works via drag-and-drop), a binary WebSocket preview channel ([PreviewDriver](moonmodules/light/drivers/PreviewDriver.md): a `0x03` coordinate table sent once per LUT rebuild plus per-frame `0x02` RGB point lists, so sparse layouts preview at their real positions), and per-role emoji for the chip filter (the `ROLE_EMOJI` map in `app.js` is the single source of truth: `effect`, `driver`, …, `peripheral`). Full UI spec: [docs/moonmodules/core/services/services.md](moonmodules/core/services/services.md). +The light domain plugs into the UI at three points: a fixed top-level tree (Layouts / Layers / Drivers pinned in `main.cpp`, root reorder disabled while child reorder works via drag-and-drop), a binary WebSocket preview channel ([PreviewDriver](moonmodules/light/moxygen/PreviewDriver.md): a `0x03` coordinate table sent once per LUT rebuild plus per-frame `0x02` RGB point lists, so sparse layouts preview at their real positions), and per-role emoji for the chip filter (the `ROLE_EMOJI` map in `app.js` is the single source of truth: `effect`, `driver`, …, `peripheral`). Full UI spec: [docs/moonmodules/core/services/services.md](moonmodules/core/services/services.md). ## Tag emoji legend diff --git a/docs/assets/boards/ESP32-P4-NANO-details-inter.jpg b/docs/assets/deviceModels/ESP32-P4-NANO-details-inter.jpg similarity index 100% rename from docs/assets/boards/ESP32-P4-NANO-details-inter.jpg rename to docs/assets/deviceModels/ESP32-P4-NANO-details-inter.jpg diff --git a/docs/assets/boards/ch9102.jpg b/docs/assets/deviceModels/ch9102.jpg similarity index 100% rename from docs/assets/boards/ch9102.jpg rename to docs/assets/deviceModels/ch9102.jpg diff --git a/docs/assets/boards/cp210x-ch34x.jpg b/docs/assets/deviceModels/cp210x-ch34x.jpg similarity index 100% rename from docs/assets/boards/cp210x-ch34x.jpg rename to docs/assets/deviceModels/cp210x-ch34x.jpg diff --git a/docs/assets/boards/esp32-c3-supermini.jpg b/docs/assets/deviceModels/esp32-c3-supermini.jpg similarity index 100% rename from docs/assets/boards/esp32-c3-supermini.jpg rename to docs/assets/deviceModels/esp32-c3-supermini.jpg diff --git a/docs/assets/boards/esp32-c3.jpg b/docs/assets/deviceModels/esp32-c3.jpg similarity index 100% rename from docs/assets/boards/esp32-c3.jpg rename to docs/assets/deviceModels/esp32-c3.jpg diff --git a/docs/assets/boards/esp32-d0-16mb.jpg b/docs/assets/deviceModels/esp32-d0-16mb.jpg similarity index 100% rename from docs/assets/boards/esp32-d0-16mb.jpg rename to docs/assets/deviceModels/esp32-d0-16mb.jpg diff --git a/docs/assets/boards/esp32-d0-pico2.jpg b/docs/assets/deviceModels/esp32-d0-pico2.jpg similarity index 100% rename from docs/assets/boards/esp32-d0-pico2.jpg rename to docs/assets/deviceModels/esp32-d0-pico2.jpg diff --git a/docs/assets/boards/esp32-d0-wrover.jpg b/docs/assets/deviceModels/esp32-d0-wrover.jpg similarity index 100% rename from docs/assets/boards/esp32-d0-wrover.jpg rename to docs/assets/deviceModels/esp32-d0-wrover.jpg diff --git a/docs/assets/boards/esp32-p4-eth.png b/docs/assets/deviceModels/esp32-p4-eth.png similarity index 100% rename from docs/assets/boards/esp32-p4-eth.png rename to docs/assets/deviceModels/esp32-p4-eth.png diff --git a/docs/assets/boards/esp32-p4-olimex.jpg b/docs/assets/deviceModels/esp32-p4-olimex.jpg similarity index 100% rename from docs/assets/boards/esp32-p4-olimex.jpg rename to docs/assets/deviceModels/esp32-p4-olimex.jpg diff --git a/docs/assets/boards/esp32-p4.jpg b/docs/assets/deviceModels/esp32-p4.jpg similarity index 100% rename from docs/assets/boards/esp32-p4.jpg rename to docs/assets/deviceModels/esp32-p4.jpg diff --git a/docs/assets/boards/esp32-s3-atoms3r.jpg b/docs/assets/deviceModels/esp32-s3-atoms3r.jpg similarity index 100% rename from docs/assets/boards/esp32-s3-atoms3r.jpg rename to docs/assets/deviceModels/esp32-s3-atoms3r.jpg diff --git a/docs/assets/boards/esp32-s3-n16r8-dev.jpg b/docs/assets/deviceModels/esp32-s3-n16r8-dev.jpg similarity index 100% rename from docs/assets/boards/esp32-s3-n16r8-dev.jpg rename to docs/assets/deviceModels/esp32-s3-n16r8-dev.jpg diff --git a/docs/assets/boards/esp32-s3-n8r8-dev.jpg b/docs/assets/deviceModels/esp32-s3-n8r8-dev.jpg similarity index 100% rename from docs/assets/boards/esp32-s3-n8r8-dev.jpg rename to docs/assets/deviceModels/esp32-s3-n8r8-dev.jpg diff --git a/docs/assets/boards/esp32-s3-seeed_xiao.png b/docs/assets/deviceModels/esp32-s3-seeed_xiao.png similarity index 100% rename from docs/assets/boards/esp32-s3-seeed_xiao.png rename to docs/assets/deviceModels/esp32-s3-seeed_xiao.png diff --git a/docs/assets/boards/esp32-s3-stephanelec-16p.jpg b/docs/assets/deviceModels/esp32-s3-stephanelec-16p.jpg similarity index 100% rename from docs/assets/boards/esp32-s3-stephanelec-16p.jpg rename to docs/assets/deviceModels/esp32-s3-stephanelec-16p.jpg diff --git a/docs/assets/boards/esp32-s3-zero-n4r2.jpg b/docs/assets/deviceModels/esp32-s3-zero-n4r2.jpg similarity index 100% rename from docs/assets/boards/esp32-s3-zero-n4r2.jpg rename to docs/assets/deviceModels/esp32-s3-zero-n4r2.jpg diff --git a/docs/assets/boards/esp32-s31-function-coreboard-1.jpg b/docs/assets/deviceModels/esp32-s31-function-coreboard-1.jpg similarity index 100% rename from docs/assets/boards/esp32-s31-function-coreboard-1.jpg rename to docs/assets/deviceModels/esp32-s31-function-coreboard-1.jpg diff --git a/docs/assets/boards/generic-esp32-dev.jpg b/docs/assets/deviceModels/generic-esp32-dev.jpg similarity index 100% rename from docs/assets/boards/generic-esp32-dev.jpg rename to docs/assets/deviceModels/generic-esp32-dev.jpg diff --git a/docs/assets/boards/lightcrafter-16.jpg b/docs/assets/deviceModels/lightcrafter-16.jpg similarity index 100% rename from docs/assets/boards/lightcrafter-16.jpg rename to docs/assets/deviceModels/lightcrafter-16.jpg diff --git a/docs/assets/boards/lolin-d32.jpg b/docs/assets/deviceModels/lolin-d32.jpg similarity index 100% rename from docs/assets/boards/lolin-d32.jpg rename to docs/assets/deviceModels/lolin-d32.jpg diff --git a/docs/assets/boards/mhc-v57-pro.jpg b/docs/assets/deviceModels/mhc-v57-pro.jpg similarity index 100% rename from docs/assets/boards/mhc-v57-pro.jpg rename to docs/assets/deviceModels/mhc-v57-pro.jpg diff --git a/docs/assets/boards/mhc-wled-esp32-p4-shield.jpg b/docs/assets/deviceModels/mhc-wled-esp32-p4-shield.jpg similarity index 100% rename from docs/assets/boards/mhc-wled-esp32-p4-shield.jpg rename to docs/assets/deviceModels/mhc-wled-esp32-p4-shield.jpg diff --git a/docs/assets/boards/olimex-esp32-gateway-rev-g.jpg b/docs/assets/deviceModels/olimex-esp32-gateway-rev-g.jpg similarity index 100% rename from docs/assets/boards/olimex-esp32-gateway-rev-g.jpg rename to docs/assets/deviceModels/olimex-esp32-gateway-rev-g.jpg diff --git a/docs/assets/boards/others.jpg b/docs/assets/deviceModels/others.jpg similarity index 100% rename from docs/assets/boards/others.jpg rename to docs/assets/deviceModels/others.jpg diff --git a/docs/assets/boards/quinled-dig-2-go.jpg b/docs/assets/deviceModels/quinled-dig-2-go.jpg similarity index 100% rename from docs/assets/boards/quinled-dig-2-go.jpg rename to docs/assets/deviceModels/quinled-dig-2-go.jpg diff --git a/docs/assets/boards/quinled-dig-next-2.jpg b/docs/assets/deviceModels/quinled-dig-next-2.jpg similarity index 100% rename from docs/assets/boards/quinled-dig-next-2.jpg rename to docs/assets/deviceModels/quinled-dig-next-2.jpg diff --git a/docs/assets/boards/quinled-dig-octa-32-8l.jpg b/docs/assets/deviceModels/quinled-dig-octa-32-8l.jpg similarity index 100% rename from docs/assets/boards/quinled-dig-octa-32-8l.jpg rename to docs/assets/deviceModels/quinled-dig-octa-32-8l.jpg diff --git a/docs/assets/boards/quinled-dig-quad-v3.jpg b/docs/assets/deviceModels/quinled-dig-quad-v3.jpg similarity index 100% rename from docs/assets/boards/quinled-dig-quad-v3.jpg rename to docs/assets/deviceModels/quinled-dig-quad-v3.jpg diff --git a/docs/assets/boards/quinled-dig-uno-v3.jpg b/docs/assets/deviceModels/quinled-dig-uno-v3.jpg similarity index 100% rename from docs/assets/boards/quinled-dig-uno-v3.jpg rename to docs/assets/deviceModels/quinled-dig-uno-v3.jpg diff --git a/docs/assets/boards/serg-minishield.jpg b/docs/assets/deviceModels/serg-minishield.jpg similarity index 100% rename from docs/assets/boards/serg-minishield.jpg rename to docs/assets/deviceModels/serg-minishield.jpg diff --git a/docs/assets/boards/serg-unishield-v5.jpg b/docs/assets/deviceModels/serg-unishield-v5.jpg similarity index 100% rename from docs/assets/boards/serg-unishield-v5.jpg rename to docs/assets/deviceModels/serg-unishield-v5.jpg diff --git a/docs/assets/boards/shelly.jpg b/docs/assets/deviceModels/shelly.jpg similarity index 100% rename from docs/assets/boards/shelly.jpg rename to docs/assets/deviceModels/shelly.jpg diff --git a/docs/assets/boards/waveshare-esp32-p4-nano.jpg b/docs/assets/deviceModels/waveshare-esp32-p4-nano.jpg similarity index 100% rename from docs/assets/boards/waveshare-esp32-p4-nano.jpg rename to docs/assets/deviceModels/waveshare-esp32-p4-nano.jpg diff --git a/docs/assets/extra.css b/docs/assets/extra.css index e4dbf88f..19c3ab00 100644 --- a/docs/assets/extra.css +++ b/docs/assets/extra.css @@ -86,3 +86,41 @@ .md-typeset .mm-catalog-wrap .mm-links { color: var(--md-default-fg-color--light); } + +/* --------------------------------------------------------------------------- + Coloured headings (whole site). The slate theme renders every heading in the + same near-white, so an h1/h2/h3 doesn't stand out from body text — the page + reads as one grey wall. Give headings the theme's primary/accent colour so + the document structure is scannable at a glance (the standard Material-site + look: coloured headings over neutral body). h4+ stay default — colouring + every level would just re-flatten the hierarchy. */ +.md-typeset h1, +.md-typeset h2 { + color: var(--md-primary-fg-color); + font-weight: 700; +} +.md-typeset h3 { + color: var(--md-accent-fg-color); + font-weight: 600; +} + +/* --------------------------------------------------------------------------- + Signature standout on the generated moxygen technical pages. Each attribute / + method renders as a paragraph leading with its declaration + (`uint8_t protocol = 0`, `virtual void onBuildControls() override`) followed + by a `: summary`. gen_api.py rewrites each into + `name` so the + chip can highlight ONLY the declared member name while the type and arguments + stay muted — the eye lands on the name it's scanning for, and the signature + still reads as one code chip. (A flat `` can't do this in CSS alone — + there's no way to select 'the name' inside an undelimited string.) */ +.md-typeset code.mm-sig { + background: color-mix(in srgb, var(--md-accent-fg-color) 7%, transparent); + border: 1px solid color-mix(in srgb, var(--md-accent-fg-color) 22%, transparent); + color: var(--md-default-fg-color--light); /* type + args: muted */ + padding: 0.15em 0.5em; +} +.md-typeset code.mm-sig .mm-sig-name { + color: var(--md-accent-fg-color); /* the declared name: accent + bold */ + font-weight: 700; +} diff --git a/docs/backlog/backlog-core.md b/docs/backlog/backlog-core.md index bb3dbd54..bc8ee4d7 100644 --- a/docs/backlog/backlog-core.md +++ b/docs/backlog/backlog-core.md @@ -25,7 +25,7 @@ Forward-looking to-build items for the **core / infrastructure** domain (`src/co DevicesModule discovers via **passive UDP presence** (UDP 65506) feeding a [`DevicePlugin`](../../src/core/DevicePlugin.h) seam (shipped: projectMM + WLED plugins). mDNS is advertise-only so projectMM appears in the native WLED apps + Home Assistant; the WLED-app interop (list + live colour + brightness control) is shipped too. What remains is *growth on the seam*, each piece additive (one plugin file, no core change): -- **More discovery plugins** — ESPHome, Tasmota, Hue (*hub-shaped*: a bridge whose Zigbee bulbs are children behind it, with link-button auth). Each is a new `DevicePlugin` declaring its `discoveryPort()` + classifying the datagram (or, for a system that only does mDNS, a re-introduced advertise-side browse scoped to *foreign* services only — never the ones we advertise). Hue is the canonical "more than a flat device" case the seam is shaped for. (Note: Hue *control* already ships as an **output driver**, see [HueDriver](../moonmodules/light/drivers/HueDriver.md) — bulbs as effect pixels; the driver also *lists* its bridge in DevicesModule with the colour-light count. Two complementary follow-ups remain: (a) auto-fill the driver's bridge IP from discovery so the user doesn't type it (the mDNS-browse plugin above); (b) **pair once, not per driver** — pairing + the app key currently live on each HueDriver, so two drivers on one bridge pair twice. The clean end-state moves the bridge identity (IP + key + Pair button + light list) into DevicesModule and makes HueDriver a pure output that reads the paired bridge by IP — do this together with the discovery plugin, since both hinge on DevicesModule owning the bridge.) +- **More discovery plugins** — ESPHome, Tasmota, Hue (*hub-shaped*: a bridge whose Zigbee bulbs are children behind it, with link-button auth). Each is a new `DevicePlugin` declaring its `discoveryPort()` + classifying the datagram (or, for a system that only does mDNS, a re-introduced advertise-side browse scoped to *foreign* services only — never the ones we advertise). Hue is the canonical "more than a flat device" case the seam is shaped for. (Note: Hue *control* already ships as an **output driver**, see [HueDriver](../moonmodules/light/moxygen/HueDriver.md) — bulbs as effect pixels; the driver also *lists* its bridge in DevicesModule with the colour-light count. Two complementary follow-ups remain: (a) auto-fill the driver's bridge IP from discovery so the user doesn't type it (the mDNS-browse plugin above); (b) **pair once, not per driver** — pairing + the app key currently live on each HueDriver, so two drivers on one bridge pair twice. The clean end-state moves the bridge identity (IP + key + Pair button + light list) into DevicesModule and makes HueDriver a pure output that reads the paired bridge by IP — do this together with the discovery plugin, since both hinge on DevicesModule owning the bridge.) - **The command half** — `DevicePlugin::command()` (+ per-plugin capability/auth), so projectMM can *control* a discovered foreign device, not just list it: set WLED brightness via its JSON API, a Hue resource via the bridge's authenticated CLIP API, a Tasmota via `cmnd`. Built when a control consumer exists; the discovery seam is already shaped to accept it (incl. hub plugins). This is the **multi-ecosystem selling point** — one UI controlling WLED + ESPHome + Hue. Commands split by need (the rule, not "all REST"): must-arrive config over REST; latency-critical sync over UDP (~0.5–1 ms vs REST's 10–50 ms — REST would visibly de-sync). - **Live peer state** — a discovered peer's brightness / on-off shown in our list, refreshed by polling its REST `/json` after discovery gives the IP (discovery = UDP/mDNS, state = REST). The read-side complement to the command half. - **Non-IP transports (board-gated, far future)** — Tasmota-MQTT / zigbee2mqtt need an MQTT client; **direct Zigbee/Thread** (S31/C6/H2 802.15.4 radio) makes projectMM the *hub itself*, driving bulbs over the mesh with no gateway — the standout differentiator, the biggest lift. Same plugin philosophy, a transport addition + board gate. @@ -83,7 +83,7 @@ The real fix is a **dedicated send task**: `loop()` snapshots the corrected fram - A double-buffer (so the task reads frame N while render writes N+1) doubles it to ~96 KB — even more out of reach. - At 64×64 the frame is only 12 KB and *might* fit, but at 64×64 the synchronous send is already fast enough that ArtNet isn't the bottleneck — so the task buys nothing where it's affordable on no-PSRAM. -So the PSRAM gate isn't conservative; it's a hard requirement. PSRAM boards (S3/S2, Olimex-with-PSRAM variants) have megabytes for the handoff buffer via `heap_caps_malloc(..., MALLOC_CAP_SPIRAM)`; non-PSRAM boards keep the synchronous send and the documented "use Ethernet / smaller grid for high FPS at large grids" guidance ([NetworkSendDriver.md](../moonmodules/light/drivers/NetworkSendDriver.md)). +So the PSRAM gate isn't conservative; it's a hard requirement. PSRAM boards (S3/S2, Olimex-with-PSRAM variants) have megabytes for the handoff buffer via `heap_caps_malloc(..., MALLOC_CAP_SPIRAM)`; non-PSRAM boards keep the synchronous send and the documented "use Ethernet / smaller grid for high FPS at large grids" guidance ([NetworkSendDriver.md](../moonmodules/light/moxygen/NetworkSendDriver.md)). When implemented: `if constexpr (platform::hasPsram)` (or a runtime `hasPsram()` check) selects the async path; the buffer lives in PSRAM; the send task pins to the core opposite the render task (see [Task core-pinning](#task-core-pinning-backlog)). Non-PSRAM keeps `loop()`'s inline send unchanged. One handoff buffer + a binary semaphore/notification is the minimal shape — don't build a ring of frames until a second consumer needs it. @@ -302,6 +302,8 @@ Explicitly **out** (no practical MQTT case, and wrong for the transport): **If the actual goal is deeper HA (not scripting), the better path is HA MQTT Discovery** — the device announces its controls as HA entities via retained `homeassistant/…/config` topics (the industry-standard pattern, *Common patterns first*), giving HA typed entities instead of a raw JSON pipe. Bigger than the generic pair, and the right lift if HA depth — not power-user scripting — is the target. Related integration threads to keep this coherent with: the [DevicesModule command half](#devicesmodule-interop-plugins-the-command-half-discovery-shipped) (Tasmota-MQTT / zigbee2mqtt as *outbound* control of foreign devices — the mirror of this *inbound* surface), and the [LightsControl integration point](backlog-mixed.md) (the eventual single owner of "device ↔ outside world", MQTT/HA included). +**Open question — Homebridge example maps both `setBrightness` and `setHSV`.** In `homebridge-mqttthing`'s `lightbulb`, HSV's *value* (V) already carries HomeKit's Brightness characteristic, so mapping both topic pairs may double-drive brightness (mqttthing's docs lean toward using one or the other). The [MQTT § Homebridge example](../moonmodules/core/services/services.md#mqtt) currently lists both, to show the device's full topic surface. Resolve on hardware: flash a board, run Homebridge + mqttthing with that config, and check whether the Home-app brightness slider misbehaves — if it does, drop the two `brightness` topics from the example; if not, it's a non-issue. (Flagged by CodeRabbit; parked here rather than changing the doc on an untested hunch.) + ## Testing ### Additional test coverage (pending) diff --git a/docs/backlog/backlog-light.md b/docs/backlog/backlog-light.md index 553254c3..038735f3 100644 --- a/docs/backlog/backlog-light.md +++ b/docs/backlog/backlog-light.md @@ -131,7 +131,7 @@ For driving **lots of LEDs**, internal SRAM is the scarce resource and the paral ## LED drivers — deferred -The LED-driver increments **shipped**: increment 1 (RMT/WS2812B single-strand on classic ESP32 — [`RmtLedDriver.h`](../../src/light/drivers/RmtLedDriver.h), `RmtSymbol.h`, `platform_esp32_rmt.cpp`) and increment 2 (2a multi-pin RMT, 2b parallel LCD_CAM on the S3 — [`LcdLedDriver.h`](../../src/light/drivers/LcdLedDriver.h) via [`ParallelLedDriver.h`](../../src/light/drivers/ParallelLedDriver.h), `platform_esp32_lcd.cpp`), all with host + on-board-loopback tests, hardware-proven. The locked decisions, file-by-file phases, the WiFi-flicker test-rig analysis, and the bench deviations (8-GPIO i80 bus, 2.67 MHz slot clock, SOC-macro gate, real-frame loopback) are in [decisions.md](../history/decisions.md), the [driver docs](../moonmodules/light/drivers/RmtLedDriver.md), and the [analysis docs](leddriver-analysis-top-down.md). What remains here is only the work that has **not** shipped and is tracked nowhere else. +The LED-driver increments **shipped**: increment 1 (RMT/WS2812B single-strand on classic ESP32 — [`RmtLedDriver.h`](../../src/light/drivers/RmtLedDriver.h), `RmtSymbol.h`, `platform_esp32_rmt.cpp`) and increment 2 (2a multi-pin RMT, 2b parallel LCD_CAM on the S3 — [`LcdLedDriver.h`](../../src/light/drivers/LcdLedDriver.h) via [`ParallelLedDriver.h`](../../src/light/drivers/ParallelLedDriver.h), `platform_esp32_lcd.cpp`), all with host + on-board-loopback tests, hardware-proven. The locked decisions, file-by-file phases, the WiFi-flicker test-rig analysis, and the bench deviations (8-GPIO i80 bus, 2.67 MHz slot clock, SOC-macro gate, real-frame loopback) are in [decisions.md](../history/decisions.md), the [driver docs](../moonmodules/light/moxygen/RmtLedDriver.md), and the [analysis docs](leddriver-analysis-top-down.md). What remains here is only the work that has **not** shipped and is tracked nowhere else. - **sigrok/fx2lafw cross-check + MoonDeck "LED driver test" Python script** — the independent-clock proof and the run-from-MoonDeck flow ([analysis §5.3](leddriver-analysis-top-down.md)). The on-board RMT-RX loopback (shipped) is the cheap CI correctness gate but a *compromised witness* for WiFi-induced flicker — the RX capture runs on the same ESP32 whose WiFi causes the glitch. The real flicker test is a **sustained capture (seconds) with WiFi associated + a packet flood**, decoding every frame for a byte-slip or reset-gap deviation; it belongs with the core-1 driver-task work below, since that task pinning is the *fix* it validates. A DSLogic Plus (100 MS/s) upgrade is reactive — only if a flicker reproduces that 24 MS/s can't resolve. - **Dedicated core-1 driver task + per-module core-affinity control** ([analysis §7.2](leddriver-analysis-top-down.md)) — the WiFi-glitch mitigation, shared across all the LED drivers. (See also [backlog-core § Task core-pinning](backlog-core.md#task-core-pinning-backlog) for the general task-pinning question.) diff --git a/docs/backlog/livescripts-analysis-top-down.md b/docs/backlog/livescripts-analysis-top-down.md index aa977a39..2aa2dfdd 100644 --- a/docs/backlog/livescripts-analysis-top-down.md +++ b/docs/backlog/livescripts-analysis-top-down.md @@ -427,7 +427,7 @@ Credits also live in the bottom-up's *Prior art & credits* and the digest [histo ### Public credit — to lift into `docs/moonmodules/core/MoonLive.md` when the module spec is written -The credits above are the analysis's internal record. The block below is the **user-facing** version for the eventual `MoonLive.md` "Prior art" section. Drop it in when MoonLive ships; matches the house style of the other modules' Prior-art sections (e.g. AudioModule.md, [LcdLedDriver.md](../moonmodules/light/drivers/LcdLedDriver.md)). +The credits above are the analysis's internal record. The block below is the **user-facing** version for the eventual `MoonLive.md` "Prior art" section. Drop it in when MoonLive ships; matches the house style of the other modules' Prior-art sections (e.g. AudioModule.md, [LcdLedDriver.md](../moonmodules/light/moxygen/LcdLedDriver.md)). > MoonLive's native-codegen approach — compile a small C-like language straight to machine code and call it as a function, so a live-authored effect runs at near hand-written speed — was pioneered by **Yves Bazin (hpwit)** in **[ESPLiveScript](https://github.com/hpwit/ESPLiveScript)**: a from-scratch tokenizer, parser, and Xtensa code generator that drives a 12,288-LED panel at ~85 fps where interpreted languages (Lua, Gravity) managed 3–10. That result is what makes "go native, not interpreted" the right call, and ESPLiveScript is the reference MoonLive is built against — studied closely, credited, and written fresh against projectMM's architecture, never copied, per [*Industry standards, our own code*](../../CLAUDE.md#principles). MoonLive carries the idea forward where ESPLiveScript stops: a multi-ISA backend behind an IR seam (Xtensa, then RISC-V / ARM / desktop) and a binding that makes a script a first-class MoonModule. > diff --git a/docs/building.md b/docs/building.md index 9427f494..94809e4f 100644 --- a/docs/building.md +++ b/docs/building.md @@ -140,7 +140,7 @@ The ESP32 tab in MoonDeck wraps the same steps as cards (Setup → Firmware → **v6.0 vs v6.1, and where the real change was.** The earthquake was **v5.x → v6.0**, not v6.0 → v6.1: -- **v6.0** (vs v5.x): the legacy peripheral drivers were **removed entirely** (ADC, DAC, I2S, Timer, PCNT, MCPWM, **RMT**, temp sensor), which is why the LED drivers use the modern RMT v2 / parlio / `esp_lcd` APIs (rationale at [RmtLedDriver.md](moonmodules/light/drivers/RmtLedDriver.md)); **picolibc** replaced newlib as the default C library; **warnings-as-errors** became the default (matches our own `-Werror`); the `CONFIG_ESP_WIFI_ENABLED` switch was dropped (forced on for WiFi SoCs, hence the `EXCLUDE_COMPONENTS` path documented under [Firmware variants](#firmware-variants)); plus the new install manager (EIM), a built-in MCP server, CMake Build System v2 (preview), `wifi_provisioning` → `network_provisioning`, PSA Crypto, and new chips (C5/C61 full, H21/H4 preview). +- **v6.0** (vs v5.x): the legacy peripheral drivers were **removed entirely** (ADC, DAC, I2S, Timer, PCNT, MCPWM, **RMT**, temp sensor), which is why the LED drivers use the modern RMT v2 / parlio / `esp_lcd` APIs (rationale at [RmtLedDriver.md](moonmodules/light/moxygen/RmtLedDriver.md)); **picolibc** replaced newlib as the default C library; **warnings-as-errors** became the default (matches our own `-Werror`); the `CONFIG_ESP_WIFI_ENABLED` switch was dropped (forced on for WiFi SoCs, hence the `EXCLUDE_COMPONENTS` path documented under [Firmware variants](#firmware-variants)); plus the new install manager (EIM), a built-in MCP server, CMake Build System v2 (preview), `wifi_provisioning` → `network_provisioning`, PSA Crypto, and new chips (C5/C61 full, H21/H4 preview). - **v6.1** (vs v6.0): an ordinary minor — bugfixes, more chip maturity, incremental features on the v6.0 baseline. No second mass-removal. Because it is still beta, its feature set isn't frozen until RC1. **Support / EOL policy.** Each *stable* ESP-IDF release is supported for **30 months** from its GA date, split into a Service period (frequent bugfix releases, occasional regulatory features) and a Maintenance period (security and high-severity fixes only). Pre-release and dev snapshots get none of this. So pinning to a GA tag (v6.0 today, or v6.1 after 2026-07-31) is what buys the support window; riding `v6.1-dev` does not. diff --git a/docs/coding-standards.md b/docs/coding-standards.md index cb50dde6..e37783f9 100644 --- a/docs/coding-standards.md +++ b/docs/coding-standards.md @@ -116,21 +116,34 @@ Where each kind of fact lives. The guiding rule: **document a thing once, in the ### The two surfaces -1. **Summary page (hand-written, end-user).** One `.md` per module *group*, a 4-column table — **name + description · gif/image · controls · links** (per module: tests · its technical page · attribution · anchors to any extra prose). One row per module, authored as `###` prose blocks that a build-time hook ([`moondeck/docs/mkdocs_hooks.py`](../moondeck/docs/mkdocs_hooks.py)) renders as the table. Catalog controls live here because a catalog module's user surface is its runtime `controls_.add(...)` calls, which no static tool sees. Each group is nested in its own subfolder, consistent with the catalog: +1. **Summary page (hand-written, end-user).** One `.md` per module *group*, a 4-column table — **name + description · gif/image · controls · links**. One row per module, authored as `###` prose blocks that a build-time hook ([`moondeck/docs/mkdocs_hooks.py`](../moondeck/docs/mkdocs_hooks.py)) renders as the table. Catalog controls live here because a catalog module's user surface is its runtime `controls_.add(...)` calls, which no static tool sees. Each group is nested in its own subfolder: - `light/{effects,modifiers,layouts,drivers}/.md` — the four light-catalog pages (may later split, e.g. `effects_wled.md` / `effects_moonmodules.md`). - - `core/ui/`, `core/supporting/`, `light/supporting/` — the core-UI, core-supporting, and light-supporting summary pages. + - `core/services/`, `core/supporting/`, `light/supporting/` — the core-services (user-facing modules), core-supporting, and light-supporting summary pages. - Cross-file design rationale that no single `.h` owns (module interactions, buffer-lifecycle coupling) is a prose section beneath a summary page's table — the only home for it, so a module needs no page of its own. + **The Links column** is assembled by the hook in a fixed order — **🧪 Tests · 📄 Technical · attribution · ⌄ details** — each with a Material icon (`:material-…:`, rendered as inline SVG by `pymdownx.emoji`, the same mechanism as the tag emoji in the Name column) so a link's *type* is scannable. A card carries these lines: a `[Tests](../../../tests/unit-tests.md#)` line (omitted when the module has no unit test — a missing Tests link truthfully means "untested"), a **`Detail: [technical](../moxygen/.md)`** line pointing at the generated technical page, and an `Origin:` attribution line. `check_specs` matches each block to its `.h` via that `moxygen/.md` link, so keep the link's target on it. -2. **Technical page (generated).** `docs/moonmodules/{core,light}/moxygen/.md`, produced from the `.h` by [`moondeck/docs/gen_api.py`](../moondeck/docs/gen_api.py): **Doxygen** (the de-facto-standard C++ parser) emits XML, **moxygen** renders Markdown through a custom Handlebars template ([`moondeck/docs/moxygen-templates/`](../moondeck/docs/moxygen-templates/)). Layout is controlled only through Doxygen config + that template — moxygen's own levers, the output is used verbatim, never post-processed. Each page carries the module's **class, variables, and members** from their `///` comments and links to its `.h`; a summary page's per-module link points here. + Cross-file design rationale that no single `.h` owns (module interactions, buffer-lifecycle coupling) is a prose section beneath a summary page's table — a `## — details` section the hook links from the row as `⌄ details`. That's the only home for it, so a module needs no page of its own. + +2. **Technical page (generated).** `docs/moonmodules/{core,light}/moxygen/.md`, produced from the `.h` by [`moondeck/docs/gen_api.py`](../moondeck/docs/gen_api.py): **Doxygen** (the de-facto-standard C++ parser) emits XML, **moxygen** renders Markdown through a custom Handlebars template ([`moondeck/docs/moxygen-templates/`](../moondeck/docs/moxygen-templates/)). Each page carries the module's **description, variables, and members** from their `///` comments and links to its `.h`; the summary page's per-module `Detail: [technical]` link points here. Two shaping levers beyond raw moxygen, both to keep the page lean: + - **Template** (`class.md`): the base class is a one-line `> **Inherits:** [Base]` link — the full inherited-member list is *not* re-dumped on every subclass (it lives once on the base's own page; re-listing `MoonModule`/`EffectBase`'s large surface everywhere is bloat — *No duplication*). + - **Post-process** in `gen_api.py`: a `@card ` directive in a class `///` comment renders to an `` of the module's UI-card screenshot. Doxygen with `GENERATE_HTML=NO` drops `\image`/`@htmlonly`/raw `` from the XML but preserves plain text, so `@card` survives and is rendered here (a missing asset drops the directive — no broken link). A second post-process wraps each member signature's declared **name** in `name` so the theme ([`extra.css`](assets/extra.css)) can highlight the name (accent, bold) while the type and arguments stay muted — moxygen emits a flat `` string with no internal markup, so 'colour only the name' can't be done in CSS alone. Site-wide, `extra.css` also colours `h1`/`h2`/`h3` with the theme's primary/accent (the slate theme otherwise renders every heading the same near-white, flattening the hierarchy). The pages are **gitignored, regenerated on build** (flipping to committed-and-drift-gated is a one-line `.gitignore` change plus a gate like `check_firmwares.py`, if PR-review of the generated output ever earns it). Doxygen (a brew/apt binary) and moxygen (via npx) are the one justified non-uv dependency, like ESP-IDF's Python (see CLAUDE.md); absent locally the pages skip and the rest of the site builds, present in CI they render. ### `///` comments are the single home for technical detail -A module's per-entity detail — the module description, each variable, each member — is a `///` / `///<` comment in the `.h`. It generates into the technical page and shows on IDE hover. Two gotchas: a bare `` in a comment renders as a live HTML element and swallows the rest of the page (wrap any `<…>` in backticks), and Doxygen's `JAVADOC_AUTOBRIEF` ends the brief at the first `.` (write "such as", not "e.g."). Where a comment would hand-copy a wire format / enum / constant, embed the real source with a `--8<--` snippet instead (`// --8<-- [start:name]`). +A module's per-entity detail — the module description, each variable, each member — is a `///` / `///<` comment in the `.h`. It generates into the technical page and shows on IDE hover. Rules that decide what actually reaches the generated page: + +- **`///`, not `//`.** Only `///` (Doxygen) comments generate; a plain `//` comment is invisible on the technical page (it's an implementation note for the source reader only). Class-level rationale you want documented goes in `///`. +- **Distribute detail to the member it describes; keep the class comment compact.** The class `///` states what the module *is* and its one defining contract — not a wall of per-control / per-method prose. Every public attribute (the config controls) and every public method gets its OWN `///`, leading with a tight one-sentence brief (the generated page shows that first sentence as the member's summary, so the reader scans a list of named declarations each with its purpose). Detail that belongs to one control (its range, what changing it does) lives on that control; detail that belongs to one method (its lifecycle role, its guarantees) lives on that method. This spreads the same information across the entities it documents instead of piling it into the class blurb, so nothing is repeated and each member is self-describing on hover and on the page. Don't restate what a superclass already documents (a `DriverBase` hook's contract lives on `DriverBase`, not re-explained on every driver). Compact, dense prose — relocate detail, don't delete it. +- **The class comment must sit directly above the class**, inside `namespace mm {` — a `///` block separated from `class X` by the `#include`s or the namespace open is detached and Doxygen drops it (its whole description then goes missing from the page). Put the includes first, then `namespace mm {`, then the `///` block, then the class. +- **Relative `.md`/doc links are stripped** by Doxygen's XML-only mode (only `http(s)://` links survive). Don't put `[text](../some.md)` in a `///` comment — link with a full URL, or name the target in prose (e.g. "see the LED signal-integrity use-case guide"). +- A bare `` renders as a live HTML element and swallows the rest of the page (wrap any `<…>` in backticks), and `JAVADOC_AUTOBRIEF` ends the brief at the first `.` (write "such as", not "e.g."). +- Where a comment would hand-copy a wire format / enum / constant, embed the real source with a `--8<--` snippet (`// --8<-- [start:name]`). Add `@card ` to show the module's UI card. + +A module's story therefore lives in exactly two places: its `.h` (technical, generated) and its group summary row (end-user), which links to the technical page. Prior-art credit points at *other* projects learned from (FastLED, WLED, MoonLight, datasheets); superseded internal prototypes are not linked. -A module's story therefore lives in exactly two places: its `.h` (technical, generated) and its group summary row (end-user). Prior-art credit points at *other* projects learned from (FastLED, WLED, MoonLight, datasheets); superseded internal prototypes are not linked. +**Migrating a catalog module's detail page → `.h`.** Historically some modules also had a hand-written `docs/moonmodules//.md` detail page. These are being retired: their content moves into the `.h`'s `///` comment (so it generates onto the technical page) and the old `.md` is moved to `/archive/`, kept only until the generated page is validated against it, then deleted. Live docs never link an `archive/` file (the generated moxygen page is the one exception — it may link the archive during that validation window). When a common rationale repeats across sibling modules (e.g. the shared parallel-LED-driver body), it lives once on the shared base's `///` and the siblings reference it — the same *No duplication* rule, applied to the generated pages. ### Test inventories: their own generator, not moxygen diff --git a/docs/gettingstarted.md b/docs/gettingstarted.md index 466ad410..477784cf 100644 --- a/docs/gettingstarted.md +++ b/docs/gettingstarted.md @@ -166,7 +166,7 @@ the device; it never slows the lights down, and it gracefully eases off (fewer updates, then fewer points) on a slow connection rather than stalling. > More on how the preview streams from the device: -> [PreviewDriver](moonmodules/light/drivers/PreviewDriver.md). +> [PreviewDriver](moonmodules/light/moxygen/PreviewDriver.md). ## The system modules @@ -242,7 +242,7 @@ then add an output: real LED strips on a pin, or send the frame over the network ![The Drivers module](assets/gettingstarted/02-10-UI-Drivers.png) > [Drivers](moonmodules/light/supporting/supporting.md) · -> [NetworkSendDriver](moonmodules/light/drivers/NetworkSendDriver.md) +> [NetworkSendDriver](moonmodules/light/moxygen/NetworkSendDriver.md) That's the whole picture: **layout → layers → drivers**, previewed in 3D, all tuned live in your browser. Pick an effect, drag a slider, watch the lights — then diff --git a/docs/history/decisions.md b/docs/history/decisions.md index 359d84af..1368d09b 100644 --- a/docs/history/decisions.md +++ b/docs/history/decisions.md @@ -601,7 +601,7 @@ A classic ESP32 driving a WS2812 strip on RMT showed random wrong colours on LED 3. **Sweep `txPowerSetting` 20 → 1 dBm** while watching the strip — the flicker was *constant*. A ~50× drop in radiated RF changed nothing, so it is **not** WiFi coupling into the data line (the standing hypothesis, disproven by the experiment). 4. **Check the pulse timing** — 350/700/1250 ns, spec-exact, and the loopback confirms the wire carries them. Not a timing-margin bug like the LCD T0H case. -With every firmware cause eliminated *by test*, the remaining cause is the physical data path — and "constant regardless of TX power" specifically fingers electrical signal integrity over radio. On a 3.3 V part driving WS2812 directly, the dominant cause is the missing 3.3 → 5 V level shift (the LED's logic-high threshold sits above what the GPIO drives, so marginal bits flip under any noise). Fix is hardware: level shifter, series resistor, shorter/grounded wire — documented in [RmtLedDriver.md § Troubleshooting](../moonmodules/light/drivers/RmtLedDriver.md). +With every firmware cause eliminated *by test*, the remaining cause is the physical data path — and "constant regardless of TX power" specifically fingers electrical signal integrity over radio. On a 3.3 V part driving WS2812 directly, the dominant cause is the missing 3.3 → 5 V level shift (the LED's logic-high threshold sits above what the GPIO drives, so marginal bits flip under any noise). Fix is hardware: level shifter, series resistor, shorter/grounded wire — documented in [LED signal integrity](../usecases/led-signal-integrity.md). **The transferable lesson** is the order: when hardware output looks wrong, prove the firmware is *not* the cause with a measurement at each layer (buffer → encode/transmit loopback → environment sweep) before either editing code or buying parts. Two strong hypotheses here (a buffering regression, WiFi interference) were both wrong, and only the measurements said so — guessing would have burned a level shifter's worth of time on the wrong layer, or "fixed" code that was never broken. The whole-frame loopback self-test exists precisely so step 2 is a one-click answer instead of a scope session. diff --git a/docs/moonmodules/light/drivers/HueDriver.md b/docs/moonmodules/light/drivers/HueDriver.md deleted file mode 100644 index a6576ceb..00000000 --- a/docs/moonmodules/light/drivers/HueDriver.md +++ /dev/null @@ -1,27 +0,0 @@ -# HueDriver - -Overview, controls, prior art, source, and tests: [drivers.md § Hue](drivers.md#hue). This page carries *only* what no single source file can: what makes Hue different (rate limit, bridge-smoothed transitions, pairing), the Hue v1 HTTP wire contract, and the Devices-module listing. - -![A HueDriver in the UI](../../../assets/light/drivers/Hue%20driver.png) - -## What makes Hue different (and why the driver is shaped this way) - -Hue is an HTTP hub, not a strip, and these properties drive the design: - -- **It's rate-limited** (~10 commands/s across the bridge; true real-time needs the [Hue Entertainment API](https://developers.meethue.com/develop/hue-entertainment/) — DTLS streaming at ~25 Hz, a separate future). So the driver paces itself: **`loop()` does at most one bridge PUT every `kPutIntervalMs`**, gated by a `platform::millis()` check (never work-every-tick), round-robined across the lights. A single bounded ~ms PUT can't stall a frame; the rest of `loop()` returns instantly. This is **smooth ambient colour**, the standard API's sweet spot — not fast strobing. -- **Only colour-capable, reachable lights are driven.** The bridge reports each light's capabilities; the driver keeps only lights whose state has a `hue` field (an "Extended color light") *and* `reachable:true`, so every window pixel maps to a bulb that can actually show the effect's colour right now. A dimmable-only white, an on/off plug, or a powered-off bulb is skipped. -- **Transitions are smoothed by the bridge.** Each PUT carries a `transitiontime` matched to how often that light is refreshed (lights × interval), so the bulb *glides* from its current colour to the next instead of snapping — the bridge's built-in fade, tuned to the cadence. (The Hue default of 400 ms is too long for this rate and smears into a frozen look.) -- **The shared output Correction applies**, same as the physical LED / network drivers: the global brightness slider and a swapped colour-order preset reach the Hue lights too (each pixel runs through the brightness LUT + channel reorder before RGB→HSV). Brightness 0 → black → the light turns off. -- **It needs an app key** (a "username"): the user presses the bridge's physical link button once, then the device claims a key. The driver runs this as a short bounded poll across a few 1 Hz ticks — never blocking the loop waiting for the press. -- **It's plain HTTP, no TLS.** The Hue v1 API answers over `http:///api/...`, so there is no certificate handling on the device. Bench-confirmed against a BSB002 bridge (API 1.77). - -![An effect driving the Hue lights](../../../assets/light/drivers/Hue%20friendly%20effect.png) - -## Wire contract (Hue v1 API, plain HTTP) - -The driver talks to the bridge over `platform::httpRequest` (declared in `src/platform/platform.h` — a synchronous LAN HTTP GET/PUT/POST helper that reads the response straight into the caller's buffer): - -- **Pair** — `POST http:///api` with `{"devicetype":"projectMM#device"}`. Before the link button is pressed the bridge returns `link button not pressed`; after, `[{"success":{"username":""}}]` — the `` becomes `appKey`. -- **List lights** — `GET http:///api//lights` → a JSON object keyed by light id (`{"1":{…},"2":{…}}`). A real bridge's response runs several KB; the driver scans it for colour-capable (`"hue"` in state) + reachable (`"reachable":true`) lights and maps window index → light id. -- **List rooms** — `GET http:///api//groups` → a JSON object keyed by group id (`{"1":{"name":…,"lights":["1","2"],"type":"Room"},…}`). The driver scans it for `"type":"Room"` entries, reads each room's `name` and `lights` id array, and records which colour lights belong to each room (a bitmask over the colour-light list). This feeds the `room`/`light` dropdowns and the driven-set filter. -- **Set a light** — `PUT http:///api//lights//state` with `{"on":true,"bri":0-254,"hue":0-65535,"sat":0-254,"transitiontime":N}` (or `{"on":false,…}` when the pixel is black). `hue`/`sat`/`bri` come from a textbook integer RGB→HSV of the pixel; `transitiontime` (deciseconds) is the cadence-matched fade. diff --git a/docs/moonmodules/light/drivers/LcdLedDriver.md b/docs/moonmodules/light/drivers/LcdLedDriver.md deleted file mode 100644 index 28466fa2..00000000 --- a/docs/moonmodules/light/drivers/LcdLedDriver.md +++ /dev/null @@ -1,21 +0,0 @@ -# LCD LED Driver - -Overview, controls, prior art, source, and tests: [drivers.md § LED output](drivers.md#lcdled). This page carries *only* what no single source file can: the 3-slot-per-bit wire contract, buffer slicing, DMA memory sizing, and cross-domain wiring. - -## Wire contract — 3 slots per bit - -Each WS2812 bit becomes three bus slots at 2.67 MHz (slot = 375 ns): all-active-lanes HIGH, then the data bits, then all LOW — so a `1` is HIGH 750 ns and a `0` 375 ns, approximating the [RMT driver's](RmtLedDriver.md) 700/350 ns timings. The slot is deliberately not the lineage's ~416 ns: newer WS2812B revisions spec T0H max ≈ 380 ns, and a longer `0` pulse on a direct 3.3 V data line gets misread as `1` (the strip washes out white). One 8-bit bus word per slot; bus bit L is the L-th pin of `pins`. Strands of unequal length idle LOW once exhausted (they are dropped from both the pulse-start and data slots — no white flashes on short strands). The ≥300 µs latch is **part of the DMA buffer** — driven zero bytes appended to the frame — so the lines rest actively LOW between frames. The full slot layout lives in [LcdSlots.h](../../../../src/light/drivers/LcdSlots.h). - -Because the whole frame is pre-encoded into one DMA buffer off the hot path and the transfer runs autonomously, **no CPU deadline exists during transmission** — the WiFi-induced bit-slip that plagues refill-based drivers cannot occur by construction. - -## Buffer slicing across pins - -Identical semantics to the [RMT driver](RmtLedDriver.md#buffer-slicing-across-pins): consecutive slices of the source buffer in `pins` order, sizes from `ledsPerPin`, even-split remainder. The parsers are shared (`PinList.h`). - -## Memory - -One internal-RAM DMA frame buffer owned by the platform (PSRAM is deliberately not used — the peripheral streams from internal SRAM): `longest lane × channels × 24 + latch pad` bytes, ~72 B per RGB light. A 1000-light installation across 8 lanes ≈ 9 KB; the documented boundary is ~1500+ lights on a *single* lane (~110 KB), where a future streaming/PSRAM increment takes over. Allocation respects the platform heap reserve and degrades to a status error — never a crash. - -## Cross-domain wiring - -The driver is added as a child of the `Drivers` container at runtime via the catalog (`POST /api/modules`, a board's [`deviceModels.json`](../../../../web-installer/deviceModels.json) `modules` entry) — not boot-wired, so it only exists on a board that selects it. The type is registered on every target, but the peripheral exists only where the SOC has the LCD_CAM i80 bus (the S3 among current targets): on a chip without it the driver is inert (`lanesAvailable()` is 0, so init / loopback report "not supported on this platform"), so a board entry only lists `LcdLedDriver` where it makes sense. Once added, `Drivers::passBufferToDrivers` wires it like any child. The **slot encode** (`LcdSlots.h`) is domain code, host-testable; the **peripheral** (`platform_esp32_lcd.cpp`, ESP-IDF's [`esp_lcd` i80 bus](https://docs.espressif.com/projects/esp-idf/en/stable/esp32s3/api-reference/peripherals/lcd/index.html) + GDMA) is the only IDF-touching part. diff --git a/docs/moonmodules/light/drivers/NetworkSendDriver.md b/docs/moonmodules/light/drivers/NetworkSendDriver.md deleted file mode 100644 index fac2240c..00000000 --- a/docs/moonmodules/light/drivers/NetworkSendDriver.md +++ /dev/null @@ -1,32 +0,0 @@ -# Network Send Driver - -Overview, controls, prior art, source, and tests: [drivers.md § Network Send](drivers.md#networksend). This page carries *only* what no single source file can: the per-protocol chunking table, E1.31/Art-Net interop notes, the synchronous-send caveat, and the packet-layout headers. - -![NetworkSendDriver controls](../../../assets/light/drivers/NetworkSendDriver.png) - -## Chunking per protocol - -| Protocol | Port | Chunk | Lights/packet (RGB) | Frame at 128×128 | -|---|---|---|---|---| -| ArtNet | 6454 | 510-channel universes | 170 | 97 packets | -| E1.31 | 5568 | 510-channel universes | 170 | 97 packets | -| DDP | 4048 | 1440-byte chunks, byte offset + push on last | 480 | 35 packets | - -ArtNet and E1.31 split at **510 channels per universe** — whole RGB lights, the xLights/Falcon convention; consecutive universes from `universe_start`. **DDP is the fast path**: per-packet cost dominates the wire time (~280 µs/packet Ethernet, ~1140 µs WiFi), so 480 lights per packet cuts a 128×128 WiFi frame from ~110 ms to ~40 ms. - -E1.31 framing facts an integrator needs: CID is stable per device (derived from the MAC), source name `projectMM`, priority 100, one frame-level sequence stamped on every universe of a frame. The full byte layouts live in [E131Packet.h](../../../../src/light/E131Packet.h), [DdpPacket.h](../../../../src/light/DdpPacket.h) and [ArtNetPacket.h](../../../../src/light/ArtNetPacket.h) — shared with the receiver so the two sides cannot drift. - -## Interop notes - -- **Universe rule (both ends):** buffer offset = (universe − `universe_start`) × 510, and the sender emits from `universe_start` verbatim — no hidden 1-based adjustment for E1.31. Strict sACN gear reserves universe 0, so set `universe_start ≥ 1` on **both** ends when talking to it; the matching default of 0 on our own receiver keeps device↔device pairs aligned out of the box. -- **Unicast or broadcast; not multicast.** The destination can be a single device (unicast) or the limited-broadcast address `255.255.255.255` (the default), which sprays the frame to every device on the LAN — the platform socket sets `SO_BROADCAST` so this works for all three protocols. The standard Art-Net convention is broadcast; a device↔device pair works out of the box with no IP typed. E1.31 multicast (group 239.255.x.x) is not implemented — the platform has no IGMP join; MoonLight ships without it too. - -## Synchronous send (blocks the render tick) - -The whole frame goes out inline in `loop()` — ~35 ms over Ethernet / ~90 ms over WiFi at 128×128 with ArtNet (DDP proportionally less). The dedicated send task that decouples the wire from the render tick is a backlog item gated on PSRAM ([backlog](../../../backlog/README.md)). FPS limiting plus the all-universes-in-one-burst shape is what receivers expect. - -## Cross-domain wiring - -The driver is added as a child of the `Drivers` container at runtime — not boot-wired, but added per board through the catalog (`POST /api/modules`, the board's [`deviceModels.json`](../../../../web-installer/deviceModels.json) `modules` entry), so a device only carries the outputs its board actually has. Once added it receives `setSourceBuffer` / `setCorrection` from `Drivers::passBufferToDrivers` (which wires every child generically, boot-added or runtime-added) and applies the shared `const Correction*` before every send — the same correction the RMT LED driver applies, so network and wired outputs show identical colours. The added child persists across reboot via `FilesystemModule`. - -The live send tier — `uv run moondeck/scenario/run_network_live.py` ([MoonDeck.md § run_network_live](../../../../moondeck/MoonDeck.md#run_network_live)) — relays between real boards with the protocol control cycled round-robin, exercising the wire path no host test reaches. diff --git a/docs/moonmodules/light/drivers/ParlioLedDriver.md b/docs/moonmodules/light/drivers/ParlioLedDriver.md deleted file mode 100644 index c3a77fb6..00000000 --- a/docs/moonmodules/light/drivers/ParlioLedDriver.md +++ /dev/null @@ -1,21 +0,0 @@ -# Parlio LED Driver - -Overview, controls, prior art, source, and tests: [drivers.md § LED output](drivers.md#parlioled). This page carries *only* what no single source file can: the P4 pin budget (all three LED peripherals at once), the shared 3-slot wire contract, memory sizing, and cross-domain wiring. - -## Wire contract — 3 slots per bit - -Identical to the [LCD driver's](LcdLedDriver.md#wire-contract-3-slots-per-bit): each WS2812 bit becomes three bus slots at 2.67 MHz (slot = 375 ns) — all-active-lanes HIGH, the data bits, then all LOW — so a `1` is HIGH 750 ns and a `0` 375 ns. The 375 ns slot (not the lineage's ~416 ns) keeps T0H inside newer WS2812B revisions' ~380 ns window; the P4 Parlio's 160 MHz PLL clock divides to it exactly (÷60). One 8-bit bus word per slot, bus bit L = the L-th pin of `pins`; short strands idle LOW once exhausted. The ≥300 µs latch is zeroed trailing bytes of the DMA buffer, so the lines rest actively LOW between frames. The encoder is **shared with the LCD driver** — a Parlio bus byte and an i80 bus byte are identical — and lives in [LcdSlots.h](../../../../src/light/drivers/LcdSlots.h). - -Because the whole frame is pre-encoded into one DMA buffer off the hot path and the transfer runs autonomously (single-shot, not Parlio's loop-transmission mode), **no CPU deadline exists during transmission** — the WiFi-induced bit-slip of refill-based drivers cannot occur by construction. - -## Buffer slicing across pins - -Identical semantics to the [RMT driver](RmtLedDriver.md#buffer-slicing-across-pins): consecutive slices of the source buffer in `pins` order, sizes from `ledsPerPin`, even-split remainder. The parsers are shared (`PinList.h`). - -## Memory - -One internal-RAM DMA frame buffer owned by the platform (PSRAM is deliberately not used — Parlio streams from internal SRAM): `longest lane × channels × 24 + latch pad` bytes, ~72 B per RGB light, same sizing as the LCD driver. A 1000-light installation across 8 lanes ≈ 9 KB; the ~1500+-lights-on-a-single-lane (~110 KB) boundary where a future streaming/PSRAM increment takes over is the same documented limit. Allocation respects the platform heap reserve and degrades to a status error — never a crash. - -## Cross-domain wiring - -The driver is added as a child of the `Drivers` container at runtime via the catalog (`POST /api/modules`, a board's [`deviceModels.json`](../../../../web-installer/deviceModels.json) `modules` entry) — not boot-wired, so it only exists on a board that selects it. The type is registered on every target, but the peripheral exists only where the SOC has the Parlio TX unit (the P4 among current targets): on a chip without it the driver is inert (`lanesAvailable()` is 0), so a board entry only lists `ParlioLedDriver` where it makes sense. Once added, `Drivers::passBufferToDrivers` wires it like any child. The **slot encode** ([LcdSlots.h](../../../../src/light/drivers/LcdSlots.h), shared) is domain code, host-testable; the **peripheral** (`platform_esp32_parlio.cpp`, ESP-IDF's `esp_driver_parlio` TX unit + DMA) is the only IDF-touching part. diff --git a/docs/moonmodules/light/drivers/PreviewDriver.md b/docs/moonmodules/light/drivers/PreviewDriver.md deleted file mode 100644 index 08969b22..00000000 --- a/docs/moonmodules/light/drivers/PreviewDriver.md +++ /dev/null @@ -1,31 +0,0 @@ -# Preview Driver - -Overview, controls, prior art, source, and tests: [drivers.md § Preview](drivers.md#preview). This page carries *only* what no single source file can: the wire contract and the cross-module data flow. (Implementation mechanics live in `PreviewDriver.h`.) - -## Protocol - -PreviewDriver owns both wire formats and **streams** the bytes to a `BinaryBroadcaster` — the core [HttpServerModule](../../core/moxygen/HttpServerModule.md) — via `beginBinaryFrame`/`pushBinaryFrame`/`endBinaryFrame`, never building a copy of a frame. The HTTP server only writes the bytes to its WebSocket clients: no knowledge of the preview, the light domain, or the formats. `main.cpp` wires the driver's broadcaster to the HTTP server instance. - -The wire layout is the device source itself — edit the header, this follows: - -```cpp ---8<-- "src/light/drivers/PreviewDriver.h:wire-format" -``` - -- **`0x03` coordinate table** — sent on geometry change (LUT rebuild), new-client connect, or a downscale-factor change; not per-frame. `stride` carries the downscale factor (1 = full res). -- **`0x02` per-frame channels** — RGB by coordinate-table order. The browser **skips a `0x02` whose `count` ≠ the current `0x03` count** (a rebuild is mid-flight); the device likewise withholds colour frames until the matching `0x03` is accepted, so the two never desync. - -## Cross-module data flow - -PreviewDriver reads the **sparse driver buffer** — the one the LED/ArtNet drivers also consume — which the `Layer`'s [MappingLUT](../moxygen/MappingLUT.md) fills with exactly the real lights (a radius-4 sphere → 210 entries, not its 9×9×9 = 729 box). Both messages stream straight from that buffer and the layout's coordinate iterator; neither holds a preview-side copy. The coordinate table is built in the **same driver order** as the buffer, so RGB index `i` and coordinate `i` always refer to the same light. See [Layer](../moxygen/Layer.md) / [MappingLUT](../moxygen/MappingLUT.md) for the box→driver mapping. - -**Buffer-lifecycle coupling (the non-obvious one).** A large frame rides HttpServerModule's resumable `sendBufferedFrame`, drained a chunk per tick from the *stable* driver buffer — so a 196² frame (~115 KB) never stalls the loop, and the frame rate self-limits to what the link sustains. But a geometry rebuild frees + reallocs that buffer, so `onBuildState()` must call `cancelBufferedSend()` first, or a half-sent frame reads freed memory — a use-after-free guard pinned by a test. This coupling spans PreviewDriver ↔ HttpServerModule ↔ the Layer buffer, and is why the driver streams without its own frame copy. - -## Large layouts — design rationale - -The preview never freezes or tears at any grid size: it always delivers a **complete** frame, shedding in order — frame rate first, then spatial resolution. - -- **Point cap = min(display, memory).** A browser canvas is a few hundred px wide, so beyond ~4096 points the lights are sub-pixel and more points only cost link bandwidth (a 16K-point full-res frame streams at <1 fps even on Ethernet) — the bottleneck at large grids is *throughput, not memory*. A second cap from `maxAllocBlock()` only bites on a board too tight to stream even the display cap. Above the cap the driver keeps lights on a **spatial lattice** (position ≡ 0 mod `s`), sampling *positions* not indices so there's no diagonal moiré in 2D/3D. -- **Adaptive downscale** — the deeper fallback after frame rate. The struggle signal is **latency** (a frame still draining after several `fps` slots), catching the slow-but-complete case a pure all-sent signal misses. Sustained struggle coarsens the lattice (`stride`++); sustained prompt sends refine back, with hysteresis to stop oscillation. - -Positions are 1 byte/axis; a box exceeding 255 on any axis is scaled (largest edge → 255, aspect preserved), so large grids preview at true proportions. diff --git a/docs/moonmodules/light/drivers/RmtLedDriver.md b/docs/moonmodules/light/drivers/RmtLedDriver.md deleted file mode 100644 index f882ec4e..00000000 --- a/docs/moonmodules/light/drivers/RmtLedDriver.md +++ /dev/null @@ -1,54 +0,0 @@ -# RMT LED Driver - -Overview, controls, prior art, source, and tests: [drivers.md § LED output](drivers.md#rmtled). This page carries *only* what no single source file can: the WS2812B wire contract, buffer slicing, the on-device loopback self-test, and the LED-flicker troubleshooting playbook. - -Output driver for WS2812B-class addressable LEDs over the ESP32 **[RMT (Remote Control Transceiver)](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/rmt.html)** peripheral — one GPIO and one RMT TX channel per strand. Reads the [Drivers](../moxygen/Drivers.md) buffer, applies the shared [output correction](../archive/Drivers.md#output-correction) per light, and emits the WS2812 1-wire signal. - -## Wire contract — [WS2812B](https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf) - -1-wire NRZ at 800 kHz, no clock line. Each data bit is a 1.25 µs cell that starts HIGH then drops LOW; the HIGH duration encodes the bit: - -| | HIGH | period | meaning | -|---|---|---|---| -| `0` bit | 350 ns | 1250 ns | short high, long low | -| `1` bit | 700 ns | 1250 ns | long high, short low | - -Bits are sent **MSB-first** within each byte; channel order (GRB, GRBW, …) is the light preset applied by `Correction` before the encode, so the encoder itself is order-agnostic. Frames are latched by ≥ 300 µs idle-LOW (current WS2812B/SK6812 silicon — the old 50 µs value is dead). These timings live in `LedDriverConfig` and are converted to RMT ticks from the peripheral's granted resolution (≈ 40 MHz / 25 ns per tick), so they are not hard-coded to one clock. - -## Buffer slicing across pins - -The source buffer is split into **consecutive slices**, one per pin, in list order: pin 1 takes lights `[0, n₁)`, pin 2 takes `[n₁, n₁+n₂)`, and so on. Slice sizes come from `ledsPerPin`; pins without an explicit count split the unassigned remainder evenly (the last pin takes the rounding remainder). Counts are clamped so the sum never exceeds the buffer; lights beyond the last slice are not emitted. With `ledsPerPin` empty the whole buffer splits evenly over all pins — the zero-config case. - -Each pin is also capped at a **WS2812 per-pin ceiling** (2048 lights). A single 1-wire WS2812 line clocks a fixed ~30 µs/light, so 2048 lights is already ~61 ms/frame (~16 FPS) — the floor before output turns to a slideshow. A pin over the ceiling is **clamped to it** (the driver still drives the first 2048, output stays lit — it does not idle) and a Warning status is raised ("some LEDs not driven…"), cleared once the count drops back under. This guards the common misconfig — a whole grid funneled onto one pin — which otherwise pins the tick at ~490 ms (FPS 1). The intended way to drive fewer lights is the start/count window, not this safety cap. The cap is a per-protocol value: a clocked 2-wire type (APA102/SK9822 over SPI) has no such fixed-rate limit and would pass a far higher one. (Clamping accumulates offsets from the clamped counts, so on a multi-pin over-ceiling config the later strips show a shifted window, not just a truncated one — accepted as a degraded, warned state for a config no one wires on purpose; the one-pin headline case is exact.) - -## Concurrent show (blocks the render tick for the longest strand) - -`loop()` encodes the whole frame once, then starts every pin's transmission (`platform::rmtWs2812Transmit`) before waiting on each (`platform::rmtWs2812Wait`) — the RMT channels clock out concurrently, so the render tick is charged roughly the **longest** strand, not the sum (~3 ms per 100 pixels on the longest slice), plus one shared reset gap. The transmission runs synchronously on the render task, so a large strand or a WiFi-interrupt-sensitive install can show timing artifacts. - -## Cross-domain wiring - -The driver is added as a child of the `Drivers` container at runtime via the catalog (`POST /api/modules`, a board's [`deviceModels.json`](../../../../web-installer/deviceModels.json) `modules` entry) — not boot-wired, exactly like [NetworkSendDriver](NetworkSendDriver.md). RMT is the default LED driver for classic ESP32 and S3 board entries. The type is registered on every target; on a chip without RMT TX channels it is inert. Once added, it receives `setSourceBuffer` / `setCorrection` / `setLayer` from `Drivers::passBufferToDrivers` (which wires every child, boot- or runtime-added), and applies the same `const Correction*` ArtNet uses. The **symbol encode** (`encodeWs2812Symbols` in `RmtSymbol.h`) is domain code in `src/light/` so it is host-testable; the **peripheral** (`platform::rmtWs2812*` in `src/platform/esp32/platform_esp32_rmt.cpp`) is the only ESP-IDF-touching part. Per-chip channel and memory limits come from the IDF SOC capability macros, so the same code serves classic, S3 and P4. - -The peripheral half uses the [**modern RMT driver**](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/rmt.html) (ESP-IDF 5.x+ "RMT v2": `driver/rmt_tx.h` / `rmt_rx.h` / `rmt_encoder.h` — `rmt_new_tx_channel()`, a copy encoder, `rmt_transmit()`), **not** the legacy channel-numbered API (`driver/rmt.h`, `rmt_config_t`, `RMT_CHANNEL_n`, `rmt_write_items()`). This isn't a preference — the legacy driver was **removed entirely in [ESP-IDF v6](https://docs.espressif.com/projects/esp-idf/en/v6.0/esp32/migration-guides/release-6.x/6.0/peripherals.html)** (the build IDF), so the modern API is the only one that exists. One payoff is portability: the same v2 code serves every RMT-bearing target with no per-chip branching, including the [**P4**](https://www.espressif.com/en/products/socs/esp32-p4), whose RMT additionally has a DMA backend (`SOC_RMT_SUPPORT_DMA`, used by the whole-frame loopback capture — the classic ESP32 has no RMT DMA). - -## Loopback self-test (on device) - -The RMT peripheral is a transceiver, so the driver can verify its own output on real silicon — no separate test firmware. Jumper the **first** pin in `pins` (TX) to `loopbackRxPin`, then tick the `loopbackTest` control: the driver transmits a known WS2812 pattern out the data pin, captures it back on the RX pin, decodes, and compares. To test another output, temporarily move it to the front of the list. The outcome goes to the module's **status field** (`setStatus`): `loopback PASS`, `loopback FAIL: sent … got …`, or `loopback: jumper not detected` (a plain-GPIO continuity pre-check runs first, so a wiring fault is reported as such, not mistaken for a code bug). The test releases **all** TX channels first (so the RX capture can always allocate RMT memory, even with every channel in use) and briefly drives the test pattern, so any strips flicker once during the run; normal output resumes after. All hardware lives in `platform::rmtWs2812Loopback`. - -The default test sends a 24-bit pattern — enough to prove the GPIO emits correct bytes, but blind to faults that only appear over a sustained transfer (frame-rate DMA corruption, RF interference on a long data line — the *intermittent flicker* class of bug). Tick `loopbackFrame` to switch to the whole-frame variant: it transmits a real frame the size of the first pin's slice, back to back like the render loop, captures the **entire** frame, and bit-verifies every WS2812 bit. A single flipped bit anywhere fails the test and the status reports its position (`loopback FAIL: bad bit N/M (light K)`); a clean run reports the bit count (`loopback PASS (M bits)`). Run it while WiFi is active to reproduce interference that only manifests under radio load. Hardware lives in `platform::rmtWs2812LoopbackFrame`. (On the classic ESP32, which has no RMT DMA, the whole-frame capture is capped to one RMT channel's worth of symbols — ~2 RGB lights — and the frame is still clocked back to back; the S3/P4 capture the full frame via DMA.) - -## Troubleshooting: flicker on LEDs that should be off - -Random wrong colours on LEDs that the effect leaves black — most often a few stray pixels flickering — is, on a 3.3 V ESP32 driving WS2812 **directly**, almost always a **data-line signal-integrity** problem, not a firmware bug. WS2812 wants a logic-high near 0.7 × VDD (≈ 3.5 V on a 5 V strip), but the ESP32 only drives 3.3 V, so individual bits sit at the margin and noise tips them. Confirm the firmware is innocent before reaching for the soldering iron — these checks were the actual diagnosis path on the bench (recorded in [decisions.md](../../../history/decisions.md)): - -1. **Is the data clean?** The preview/source buffer is the logical RGB the effect produced — if it shows no stray colour, the effect is innocent (the corruption is downstream of the buffer). -2. **Is the firmware/peripheral clean?** Run the `loopbackFrame` self-test through a short jumper on the data pin. A `PASS` means the RMT encode + transmit emit bit-perfect WS2812 — the GPIO is fine. -3. **Is it WiFi RF?** Lower `Network.txPowerSetting` from 20 dBm down toward 2 and watch. If the flicker shrinks with TX power, it's radio coupling into the data wire (mitigate with the cap below). If it's **unchanged across the whole sweep, it is not the radio** — it's the physical data path. - -When 1–3 all come back clean, the fix is electrical, in rough order of effectiveness: - -- **Add a 3.3 → 5 V level shifter** on the data line (e.g. 74HCT125 / 74AHCT125) — the single most effective fix; it restores the logic-high margin the LEDs expect. -- **Add a ~330 Ω series resistor** at the GPIO, close to the board, to damp reflections. -- **Shorten / shield the data wire**, and keep it away from the power leads and the antenna. -- **Share a solid, thick common ground** between the strip's supply and the board. -- If RF coupling was implicated by step 3, set a per-board `Network.txPowerSetting` cap (the same `deviceModels.json` mechanism the ESP32-S3 N16R8 Dev uses). diff --git a/docs/moonmodules/light/drivers/drivers.md b/docs/moonmodules/light/drivers/drivers.md index 24eca82d..9ad7c8b8 100644 --- a/docs/moonmodules/light/drivers/drivers.md +++ b/docs/moonmodules/light/drivers/drivers.md @@ -1,6 +1,6 @@ # Drivers -A driver reads its window of the [Drivers](../moxygen/Drivers.md) container's shared buffer, applies the shared [output correction](../archive/Drivers.md#output-correction) per light, and sends the result out — a wire protocol (WS2812), the network (Art-Net / E1.31 / DDP), a smart-light hub (Hue), or the web UI (Preview). Drivers are added per board through the catalog ([`deviceModels.json`](../../../../web-installer/deviceModels.json)); `PreviewDriver` is the one boot-wired driver. Every driver shares the `start` / `count` [source-window](../archive/Drivers.md#per-driver-source-window-start-count) controls (the slice `[start, start+count)` it sends). Each card links to a detail page and, where it doesn't fit the table, a **⌄ details** section below. +A driver reads its window of the [Drivers](../moxygen/Drivers.md) container's shared buffer, applies the shared [output correction](../moxygen/Drivers.md) per light, and sends the result out — a wire protocol (WS2812), the network (Art-Net / E1.31 / DDP), a smart-light hub (Hue), or the web UI (Preview). Drivers are added per board through the catalog ([`deviceModels.json`](../../../../web-installer/deviceModels.json)); `PreviewDriver` is the one boot-wired driver. Every driver shares the `start` / `count` [source-window](../moxygen/Drivers.md) controls (the slice `[start, start+count)` it sends). Each card links to a detail page and, where it doesn't fit the table, a **⌄ details** section below. **Jump to:** [LED output](#led-output-drivers) · [Network](#network-drivers) · [Smart light](#smart-light-drivers) · [Preview](#preview-drivers) @@ -25,7 +25,7 @@ Origin: WS2812B on FastLED / hpwit / WLED prior art ([analysis](../../../backlog [Tests](../../../tests/unit-tests.md#rmtleddriver) -Detail: RMT [.h](../../../../src/light/drivers/RmtLedDriver.h) · [md](RmtLedDriver.md) — LCD [.h](../../../../src/light/drivers/LcdLedDriver.h) · [md](LcdLedDriver.md) — Parlio [.h](../../../../src/light/drivers/ParlioLedDriver.h) · [md](ParlioLedDriver.md) +Detail: [RMT](../moxygen/RmtLedDriver.md) · [LCD](../moxygen/LcdLedDriver.md) · [Parlio](../moxygen/ParlioLedDriver.md) ## Network drivers @@ -44,7 +44,9 @@ Streams the buffer over UDP as **Art-Net**, **E1.31 / sACN**, or **DDP** — one Origin: MoonLight D_NetworkOut; Art-Net 4 / E1.31 / DDP specs -[Tests](../../../tests/unit-tests.md#networksenddriver) · [.h](../../../../src/light/drivers/NetworkSendDriver.h) · [detail](NetworkSendDriver.md) +[Tests](../../../tests/unit-tests.md#networksenddriver) + +Detail: [technical](../moxygen/NetworkSendDriver.md) ## Smart light drivers @@ -63,7 +65,9 @@ Drives **Philips Hue bulbs as pixels**: each colour bulb in the driver's window Origin: projectMM, on the [Hue v1 CLIP API](https://developers.meethue.com/develop/hue-api/) -[Tests](../../../tests/unit-tests.md#huedriver) · [.h](../../../../src/light/drivers/HueDriver.h) · [detail](HueDriver.md) +[Tests](../../../tests/unit-tests.md#huedriver) + +Detail: [technical](../moxygen/HueDriver.md) ## Preview drivers @@ -79,7 +83,9 @@ Streams a true-shape 3D preview to the web UI over WebSocket as a **point list** Origin: projectMM, on [MoonLight](https://github.com/ewowi/MoonLight/blob/main/src/MoonLight/Layers/PhysicalLayer.h)'s PhysicalLayer model -[Tests](../../../tests/unit-tests.md#previewdriver) · [.h](../../../../src/light/drivers/PreviewDriver.h) · [detail](PreviewDriver.md) +[Tests](../../../tests/unit-tests.md#previewdriver) + +Detail: [technical](../moxygen/PreviewDriver.md) ## LED output — details @@ -87,8 +93,8 @@ The three LED-output peripherals, compared. All drive WS2812B-class strips with | Peripheral | Chip | Strands | Notes | |------------|------|---------|-------| -| **RMT** ([RmtLedDriver.md](RmtLedDriver.md)) | any ESP32 (classic 8 ch, S3 4, P4 4 DMA) | one per RMT TX channel | the general single-/few-strand output; default for classic + S3 board entries. Adds `loopbackFrame` — a whole-frame variant of the self-test (bit-verifies a full frame, catching frame-rate / RF corruption a 24-bit burst misses). | -| **LCD_CAM** ([LcdLedDriver.md](LcdLedDriver.md)) | ESP32-S3 | **exactly 8** parallel (one DMA transfer) | the S3's scale path where RMT tops out at 4. Adds `clockPin` (10) / `dcPin` (11) — i80 bus lines the LEDs ignore. Give unused lanes `0`. | -| **Parlio** ([ParlioLedDriver.md](ParlioLedDriver.md)) | ESP32-P4 | **1–8** parallel (one DMA transfer) | the P4's parallel path (Parlio generates its own pixel clock — no clock/dc pins). On P4-NANO a known-good set is `20,21,22,23,24,25,26,27`. | +| **RMT** ([RmtLedDriver.md](../moxygen/RmtLedDriver.md)) | any ESP32 (classic 8 ch, S3 4, P4 4 DMA) | one per RMT TX channel | the general single-/few-strand output; default for classic + S3 board entries. Adds `loopbackFrame` — a whole-frame variant of the self-test (bit-verifies a full frame, catching frame-rate / RF corruption a 24-bit burst misses). | +| **LCD_CAM** ([LcdLedDriver.md](../moxygen/LcdLedDriver.md)) | ESP32-S3 | **exactly 8** parallel (one DMA transfer) | the S3's scale path where RMT tops out at 4. Adds `clockPin` (10) / `dcPin` (11) — i80 bus lines the LEDs ignore. Give unused lanes `0`. | +| **Parlio** ([ParlioLedDriver.md](../moxygen/ParlioLedDriver.md)) | ESP32-P4 | **1–8** parallel (one DMA transfer) | the P4's parallel path (Parlio generates its own pixel clock — no clock/dc pins). On P4-NANO a known-good set is `20,21,22,23,24,25,26,27`. | The detail pages carry each peripheral's wire contract, buffer slicing, memory sizing, and the loopback self-test. diff --git a/docs/moonmodules/light/effects/effects.md b/docs/moonmodules/light/effects/effects.md index 792ec6ee..db6395a6 100644 --- a/docs/moonmodules/light/effects/effects.md +++ b/docs/moonmodules/light/effects/effects.md @@ -1,6 +1,6 @@ # Effects -Every effect, one block each: its preview, what it does, and what each control means — together. An effect writes per-pixel colour into its [Layer](../moxygen/Layer.md)'s buffer each tick; [modifiers](../modifiers/modifiers.md) reshape the result and a [driver](../drivers/PreviewDriver.md) sends it out. Effects that name an index colour read the global palette (the `palette` control on [Drivers](../moxygen/Drivers.md)) via `colorFromPalette`. Each block's emoji are its `tags()` (origin/creator/audio — see the [tag emoji legend](../../../architecture.md#tag-emoji-legend)); **Dim** is its native axes ([Layer](../moxygen/Layer.md) extrudes a lower-dim effect onto a bigger grid). Effects are grouped into sections by origin, and each block carries that effect's preview, behaviour, and control descriptions together. (For how this page maps to the source/asset folders, see the [folder-structure decision](../../../backlog/folder-structure-proposal.md).) +Every effect, one block each: its preview, what it does, and what each control means — together. An effect writes per-pixel colour into its [Layer](../moxygen/Layer.md)'s buffer each tick; [modifiers](../modifiers/modifiers.md) reshape the result and a [driver](../moxygen/PreviewDriver.md) sends it out. Effects that name an index colour read the global palette (the `palette` control on [Drivers](../moxygen/Drivers.md)) via `colorFromPalette`. Each block's emoji are its `tags()` (origin/creator/audio — see the [tag emoji legend](../../../architecture.md#tag-emoji-legend)); **Dim** is its native axes ([Layer](../moxygen/Layer.md) extrudes a lower-dim effect onto a bigger grid). Effects are grouped into sections by origin, and each block carries that effect's preview, behaviour, and control descriptions together. (For how this page maps to the source/asset folders, see the [folder-structure decision](../../../backlog/folder-structure-proposal.md).) **Jump to:** [MoonLight](#moonlight-effects) · [MoonModules](#moonmodules-effects) · [WLED](#wled-effects) · [FastLED](#fastled-effects) · [projectMM-native](#projectmm-native-effects) @@ -19,7 +19,9 @@ Two interfering sine waves beat against each other into a moiré colour field. - `freq_x` / `freq_y` — horizontal/vertical wave frequency (1–8). - `speed` — animation rate (0 = frozen). -Origin: WLED · by ldirko & blazoncek (WLED port) · [gallery](https://editor.soulmatelights.com/gallery/1089-distorsion-waves) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) · source [DistortionWavesEffect.h](../../../../src/light/effects/DistortionWavesEffect.h) +Origin: WLED · by ldirko & blazoncek (WLED port) · [gallery](https://editor.soulmatelights.com/gallery/1089-distorsion-waves) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) + +Detail: [technical](../moxygen/DistortionWavesEffect.md) [Tests](../../../tests/unit-tests.md#distortionwaveseffect) @@ -34,7 +36,9 @@ A solid colour filling a positioned box within the grid, with an optional altern - `Rectangle width` / `Rectangle height` / `Rectangle depth` — the box extent on each axis. - `alternateWhite` — alternate box pixels to white in a checker pattern. -Origin: MoonLight · by [limpkin](https://github.com/limpkin) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) · source [FixedRectangleEffect.h](../../../../src/light/effects/FixedRectangleEffect.h) +Origin: MoonLight · by [limpkin](https://github.com/limpkin) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) + +Detail: [technical](../moxygen/FixedRectangleEffect.md) [Tests](../../../tests/unit-tests.md#fixedrectangleeffect) @@ -52,7 +56,9 @@ Audio-reactive sawtooth waves: each column maps to a frequency band whose magnit - `keepOn` — keep oscillating even when a band is silent. - `method` — phase model (`Chaos`, `Chaos fix`, `BandPhases`). -Origin: MoonLight (audio) · by [@TroyHacks](https://github.com/troyhacks) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) · source [FreqSawsEffect.h](../../../../src/light/effects/FreqSawsEffect.h) +Origin: MoonLight (audio) · by [@TroyHacks](https://github.com/troyhacks) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) + +Detail: [technical](../moxygen/FreqSawsEffect.md) [Tests](../../../tests/unit-tests.md#freqsawseffect) @@ -68,7 +74,9 @@ Three slow blobs through a black→red→orange→yellow→white ramp — atmosp - `radius` — blob influence radius. - `intensity` — field gain into the black→red→orange→yellow→white ramp. -Origin: projectMM original (metaball lava lamp) · source [LavaLampEffect.h](../../../../src/light/effects/LavaLampEffect.h) +Origin: projectMM original (metaball lava lamp) + +Detail: [technical](../moxygen/LavaLampEffect.md) [Tests](../../../tests/unit-tests.md#spiraleffect) @@ -83,7 +91,9 @@ Sweeps axis-aligned planes in sync; red/green/blue name the X/Y/Z axis — a pre - `speed` — sweep BPM. - `axis` — which plane sweeps (`all`, `x (red)`, `y (green)`, `z (blue)`). -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) · source [LinesEffect.h](../../../../src/light/effects/LinesEffect.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) + +Detail: [technical](../moxygen/LinesEffect.md) @@ -98,7 +108,9 @@ Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/bl - `count` — number of orbiting balls (1–8). - `hue_shift` — rotate the palette index. -Origin: projectMM original (metaballs) · source [MetaballsEffect.h](../../../../src/light/effects/MetaballsEffect.h) +Origin: projectMM original (metaballs) + +Detail: [technical](../moxygen/MetaballsEffect.md) [Tests](../../../tests/unit-tests.md#metaballseffect) @@ -115,7 +127,9 @@ A swarm of drifting particles with persistent fading trails. - `fade` — trail persistence (higher = longer tails). - `hue_shift` — rotate every particle's hue. -Origin: MoonLight · by WildCats08 / [@Brandon502](https://github.com/Brandon502) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) · source [ParticlesEffect.h](../../../../src/light/effects/ParticlesEffect.h) +Origin: MoonLight · by WildCats08 / [@Brandon502](https://github.com/Brandon502) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) + +Detail: [technical](../moxygen/ParticlesEffect.md) [Tests](../../../tests/unit-tests.md#particleseffect) @@ -131,7 +145,9 @@ Summed sine waves on orthogonal + diagonal axes; large rolling blobs (3D on volu - `scale_x` / `scale_y` — blob size on each axis (larger = bigger, calmer blobs, lower spatial frequency). - `hue_shift` — rotate the palette index. -Origin: FastLED / WLED lineage (classic plasma) · source [PlasmaEffect.h](../../../../src/light/effects/PlasmaEffect.h) +Origin: FastLED / WLED lineage (classic plasma) + +Detail: [technical](../moxygen/PlasmaEffect.md) [Tests](../../../tests/unit-tests.md#plasmaeffect) @@ -144,7 +160,9 @@ An algorithmic palette pattern driven by two beat oscillators (a macro and a mic - `macroMutatorFreq` / `macroMutatorMin` / `macroMutatorMax` — the coarse mutator's beat frequency and its oscillation range. - `microMutatorFreq` / `microMutatorMin` / `microMutatorMax` — the fine mutator's beat frequency and range. -Origin: MoonLight · by MONSOONO / @Flavourdynamics · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) · source [PraxisEffect.h](../../../../src/light/effects/PraxisEffect.h) +Origin: MoonLight · by MONSOONO / @Flavourdynamics · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) + +Detail: [technical](../moxygen/PraxisEffect.md) [Tests](../../../tests/unit-tests.md#praxiseffect) @@ -158,7 +176,9 @@ Diagonal animated rainbow — always-visible default/test effect. - `speed` — animation BPM (one full hue cycle per beat). -Origin: FastLED · Mark Kriegsman (rainbow) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_FastLED.h) · source [RainbowEffect.h](../../../../src/light/effects/RainbowEffect.h) +Origin: FastLED · Mark Kriegsman (rainbow) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_FastLED.h) + +Detail: [technical](../moxygen/RainbowEffect.md) [Tests](../../../tests/unit-tests.md#rainboweffect) @@ -170,7 +190,9 @@ Lights one random light per frame in a random palette colour over a fading backg - `fade` — how fast prior sparkles fade to black. -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) · source [RandomEffect.h](../../../../src/light/effects/RandomEffect.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) + +Detail: [technical](../moxygen/RandomEffect.md) [Tests](../../../tests/unit-tests.md#randomeffect) @@ -187,7 +209,9 @@ Expanding concentric rings from random centres, additive overlap (calm defaults) - `thickness` — ring band width. - `hue_shift` — rotate every ring's hue. -Origin: projectMM original (concentric rings) · source [RingsEffect.h](../../../../src/light/effects/RingsEffect.h) +Origin: projectMM original (concentric rings) + +Detail: [technical](../moxygen/RingsEffect.md) [Tests](../../../tests/unit-tests.md#spiraleffect) @@ -202,7 +226,9 @@ Distance-from-centre sets a per-column wave phase; the lit surface ripples like - `speed` — wave animation rate (0 = frozen, 99 = fast). - `interval` — wavefront spacing (low = tight rings, high = wide). -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) · source [RipplesEffect.h](../../../../src/light/effects/RipplesEffect.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) + +Detail: [technical](../moxygen/RipplesEffect.md) [Tests](../../../tests/unit-tests.md#spiraleffect) @@ -217,7 +243,9 @@ A 3D Rubik's Cube projected onto the volume: it scrambles, then plays its soluti - `randomTurning` — turn endlessly at random instead of scramble-then-solve. - `usePalette` — colour the six faces from the system-wide palette instead of the classic Rubik's colours. -Origin: MoonLight · by WildCats08 / [@Brandon502](https://github.com/Brandon502) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) · source [RubiksCubeEffect.h](../../../../src/light/effects/RubiksCubeEffect.h) +Origin: MoonLight · by WildCats08 / [@Brandon502](https://github.com/Brandon502) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) + +Detail: [technical](../moxygen/RubiksCubeEffect.md) [Tests](../../../tests/unit-tests.md#rubikscubeeffect) @@ -233,7 +261,9 @@ A flat fill with five colour modes: a plain RGB(W) colour, the active palette sp - `minRGB` — in the band modes, drops palette entries whose every channel is below this floor. - `randomColors` — in the band modes, deterministically shuffles the surviving palette entries. -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) · source [SolidEffect.h](../../../../src/light/effects/SolidEffect.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) + +Detail: [technical](../moxygen/SolidEffect.md) [Tests](../../../tests/unit-tests.md#solideffect) @@ -245,7 +275,9 @@ A hollow spherical shell that bounces through the 3D volume, its surface coloure - `speed` — how fast the sphere moves through the volume. -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) · source [SphereMoveEffect.h](../../../../src/light/effects/SphereMoveEffect.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) + +Detail: [technical](../moxygen/SphereMoveEffect.md) [Tests](../../../tests/unit-tests.md#spheremoveeffect) @@ -261,7 +293,9 @@ Rotating spiral from angle + distance (`atan2_8`/`dist8`). - `twist` — how tightly the arm winds (hue gain per unit of distance). - `hue_shift` — rotate the palette index. -Origin: projectMM original (rotating spiral) · source [SpiralEffect.h](../../../../src/light/effects/SpiralEffect.h) +Origin: projectMM original (rotating spiral) + +Detail: [technical](../moxygen/SpiralEffect.md) [Tests](../../../tests/unit-tests.md#spiraleffect) @@ -276,7 +310,9 @@ A perspective starfield: stars approach the viewer from a vanishing point, brigh - `blur` — motion-trail fade per frame. - `usePalette` — colour the stars from the palette instead of white. -Origin: MoonLight · by [@Brandon502](https://github.com/Brandon502), inspired by Daniel Shiffman / [Coding Train](https://www.youtube.com/watch?v=17WoOqgXsRM) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) · source [StarFieldEffect.h](../../../../src/light/effects/StarFieldEffect.h) +Origin: MoonLight · by [@Brandon502](https://github.com/Brandon502), inspired by Daniel Shiffman / [Coding Train](https://www.youtube.com/watch?v=17WoOqgXsRM) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) + +Detail: [technical](../moxygen/StarFieldEffect.md) [Tests](../../../tests/unit-tests.md#starfieldeffect) @@ -292,7 +328,9 @@ Twinkling stars at random light positions, each fading in and out independently - `star_fill_ratio` — how many stars (as a fraction of the light count). - `usePalette` — colour the stars from the active palette instead of white. -Origin: MoonLight · by [limpkin](https://github.com/limpkin) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) · source [StarSkyEffect.h](../../../../src/light/effects/StarSkyEffect.h) +Origin: MoonLight · by [limpkin](https://github.com/limpkin) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) + +Detail: [technical](../moxygen/StarSkyEffect.md) [Tests](../../../tests/unit-tests.md#starskyeffect) @@ -308,7 +346,9 @@ Renders a multi-line string in a bitmap font. Static by default (laid out top-le - `speed` — marquee speed (only used when `scroll` is on). - `hue` — palette index for the text colour. -Origin: projectMM original, on MoonLight's Scrolling Text · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) · source [TextEffect.h](../../../../src/light/effects/TextEffect.h) +Origin: projectMM original, on MoonLight's Scrolling Text · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) + +Detail: [technical](../moxygen/TextEffect.md) [Tests](../../../tests/unit-tests.md#texteffect) @@ -332,7 +372,9 @@ Conway's cellular automaton generalised to 2D/3D: selectable rulesets (+ custom - `infinite` — respawn on stasis (R-pentomino/glider) instead of resetting. - `blur` — dead-cell fade strength toward the background colour. -Origin: MoonModules · by Ewoud Wijma (2022), mods by Brandon Butler / [@Brandon502](https://github.com/Brandon502) · [natureofcode](https://natureofcode.com/book/chapter-7-cellular-automata/) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonModules.h) · source [GameOfLifeEffect.h](../../../../src/light/effects/GameOfLifeEffect.h) +Origin: MoonModules · by Ewoud Wijma (2022), mods by Brandon Butler / [@Brandon502](https://github.com/Brandon502) · [natureofcode](https://natureofcode.com/book/chapter-7-cellular-automata/) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonModules.h) + +Detail: [technical](../moxygen/GameOfLifeEffect.md) [Tests](../../../tests/unit-tests.md#gameoflifeeffect) @@ -349,7 +391,9 @@ A flat graphic equaliser: the 16 audio bands rise as vertical bars from the bott - `colorBars` — colour each bar from the palette by band instead of by row. - `smoothBars` — blend neighbouring bands for smoother bar heights. -Origin: WLED (audio) · by Andrew Tuline (WLED-SR) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) · source [GEQEffect.h](../../../../src/light/effects/GEQEffect.h) +Origin: WLED (audio) · by Andrew Tuline (WLED-SR) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) + +Detail: [technical](../moxygen/GEQEffect.md) [Tests](../../../tests/unit-tests.md#geqeffect) @@ -366,7 +410,9 @@ A 3D-perspective graphic equaliser: audio bands rise as bars with faked depth, t - `numBands` — bands shown (2–16, fewer = wider bars). - `borders` — outline each bar. -Origin: MoonModules (audio) · by [@TroyHacks](https://github.com/troyhacks) (GPLv3) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonModules.h) · source [GEQ3DEffect.h](../../../../src/light/effects/GEQ3DEffect.h) +Origin: MoonModules (audio) · by [@TroyHacks](https://github.com/troyhacks) (GPLv3) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonModules.h) + +Detail: [technical](../moxygen/GEQ3DEffect.md) [Tests](../../../tests/unit-tests.md#geq3deffect) @@ -379,7 +425,9 @@ A smoothly drifting value-noise field: each pixel samples 3D noise (grid positio - `speed` — how fast the field morphs (time-flow rate). - `scale` — noise zoom (higher = finer, more detailed). -Origin: WLED · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) · source [Noise2DEffect.h](../../../../src/light/effects/Noise2DEffect.h) +Origin: WLED · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) + +Detail: [technical](../moxygen/Noise2DEffect.md) [Tests](../../../tests/unit-tests.md#noise2deffect) @@ -396,7 +444,9 @@ Audio-reactive brush strokes: lines whose 3D endpoints oscillate on the beat (`b - `color_chaos` — per-line random hue vs a per-band gradient. - `phase_chaos` — random per-frame phase jitter. -Origin: MoonModules (audio) · by [@TroyHacks](https://github.com/troyhacks) (GPLv3) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonModules.h) · source [PaintBrushEffect.h](../../../../src/light/effects/PaintBrushEffect.h) +Origin: MoonModules (audio) · by [@TroyHacks](https://github.com/troyhacks) (GPLv3) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonModules.h) + +Detail: [technical](../moxygen/PaintBrushEffect.md) [Tests](../../../tests/unit-tests.md#paintbrusheffect) @@ -410,7 +460,9 @@ Falling Tetris-style blocks: each column drops a brick that lands on the growing - `width` — brick height (0 = randomised). - `oneColor` — one advancing palette colour for all bricks instead of random per-brick colours. -Origin: WLED · by Andrew Tuline (WLED-SR) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) · source [TetrixEffect.h](../../../../src/light/effects/TetrixEffect.h) +Origin: WLED · by Andrew Tuline (WLED-SR) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) + +Detail: [technical](../moxygen/TetrixEffect.md) [Tests](../../../tests/unit-tests.md#tetrixeffect) @@ -429,7 +481,9 @@ Audio-reactive blurred dots: one frequency band per frame lights a dot whose pos - `freqMap` — place the dot by the major-peak frequency instead of scanning bands. - `geqScanner` — scan the dot across the strip in a GEQ-like sweep. -Origin: WLED (audio) · by Andrew Tuline (WLED-SR), enhancements by [@softhack007](https://github.com/softhack007) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) · source [BlurzEffect.h](../../../../src/light/effects/BlurzEffect.h) +Origin: WLED (audio) · by Andrew Tuline (WLED-SR), enhancements by [@softhack007](https://github.com/softhack007) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) + +Detail: [technical](../moxygen/BlurzEffect.md) [Tests](../../../tests/unit-tests.md#blurzeffect) @@ -444,7 +498,9 @@ A row of balls per column bounce under gravity, each losing energy on impact and - `grav` — gravity strength (higher = faster fall, snappier bounce). - `numBalls` — balls per column (1–16). -Origin: WLED · by Andrew Tuline (WLED-SR) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) · source [BouncingBallsEffect.h](../../../../src/light/effects/BouncingBallsEffect.h) +Origin: WLED · by Andrew Tuline (WLED-SR) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) + +Detail: [technical](../moxygen/BouncingBallsEffect.md) [Tests](../../../tests/unit-tests.md#bouncingballseffect) @@ -462,7 +518,9 @@ A 1D scrolling frequency display: each frame shifts the strip and injects a new - `sensitivity` — input gain (10–100). - `audioSpeed` — let the volume modulate the scroll speed. -Origin: WLED (audio) · by Andrew Tuline (WLED-SR) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) · source [FreqMatrixEffect.h](../../../../src/light/effects/FreqMatrixEffect.h) +Origin: WLED (audio) · by Andrew Tuline (WLED-SR) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) + +Detail: [technical](../moxygen/FreqMatrixEffect.md) [Tests](../../../tests/unit-tests.md#freqmatrixeffect) @@ -478,7 +536,9 @@ A Lissajous curve traced across the grid from two phase-shifted `sin8`/`cos8` sw - `fadeRate` — trail fade per frame. - `speed` — how fast the curve's phase advances. -Origin: WLED · by Andrew Tuline (WLED-SR) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) · source [LissajousEffect.h](../../../../src/light/effects/LissajousEffect.h) +Origin: WLED · by Andrew Tuline (WLED-SR) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) + +Detail: [technical](../moxygen/LissajousEffect.md) [Tests](../../../tests/unit-tests.md#lissajouseffect) @@ -493,7 +553,9 @@ An audio VU meter rendered as a noise bar: the volume sets how many rows light f - `fadeRate` — trail decay per frame (200–254). - `width` — how strongly the volume drives the bar height. -Origin: WLED (audio) · by Andrew Tuline (WLED-SR) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) · source [NoiseMeterEffect.h](../../../../src/light/effects/NoiseMeterEffect.h) +Origin: WLED (audio) · by Andrew Tuline (WLED-SR) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) + +Detail: [technical](../moxygen/NoiseMeterEffect.md) [Tests](../../../tests/unit-tests.md#noisemetereffect) @@ -507,7 +569,9 @@ An oscilloscope waveform scrolls across the grid with a fading trail; six select - `fade` — trail fade per frame (0 = instant clear, 255 = long tail). - `type` — waveform shape (`Sawtooth`, `Triangle`, `Sine`, `Square`, `Sin3`, `Noise`). -Origin: MoonLight · by Ewoud Wijma · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) · source [WaveEffect.h](../../../../src/light/effects/WaveEffect.h) +Origin: MoonLight · by Ewoud Wijma · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) + +Detail: [technical](../moxygen/WaveEffect.md) [Tests](../../../tests/unit-tests.md#waveeffect) @@ -526,7 +590,9 @@ Fire2012-style heat field — sparks at the base rise and cool through the activ The flame colour comes from the **active palette**. For the classic fire look pick the **Lava** palette (black→red→orange→yellow→white — the recommended default); any palette works, so an Ocean or Forest palette turns the flame blue or green. -Origin: FastLED / MoonLight · Mark Kriegsman's Fire2012; MoonLight adapts [MatrixFireFast](https://github.com/toggledbits/MatrixFireFast) (toggledbits) · source [FireEffect.h](../../../../src/light/effects/FireEffect.h) +Origin: FastLED / MoonLight · Mark Kriegsman's Fire2012; MoonLight adapts [MatrixFireFast](https://github.com/toggledbits/MatrixFireFast) (toggledbits) + +Detail: [technical](../moxygen/FireEffect.md) [Tests](../../../tests/unit-tests.md#fireeffect) @@ -541,7 +607,9 @@ Smooth animated value noise; true 3D field on volumetric layouts. - `scale` — spatial frequency of the field (1–32, higher = finer detail). - `bpm` — scroll speed (8 noise cells per beat). -Origin: FastLED · inoise field (Mark Kriegsman) · source [NoiseEffect.h](../../../../src/light/effects/NoiseEffect.h) +Origin: FastLED · inoise field (Mark Kriegsman) + +Detail: [technical](../moxygen/NoiseEffect.md) [Tests](../../../tests/unit-tests.md#noiseeffect) @@ -555,7 +623,9 @@ The 16 mic frequency bands spread across X, each column lit bottom-up by its mag - `colorMode` — bar colouring: `height` (green base → red top, the VU look) or `per-band` (each column its own hue, the rainbow analyser look). -Origin: projectMM original, on the WLED-SR GEQ / spectrum concept (Andrew Tuline) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) · source [AudioSpectrumEffect.h](../../../../src/light/effects/AudioSpectrumEffect.h) +Origin: projectMM original, on the WLED-SR GEQ / spectrum concept (Andrew Tuline) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_WLED.h) + +Detail: [technical](../moxygen/AudioSpectrumEffect.md) [Tests](../../../tests/unit-tests.md#audiomodule) @@ -567,7 +637,9 @@ A whole-grid VU meter: every light pulses with the mic level, colour indexing th - `brightness` — overall brightness ceiling for the VU pulse (1–255). -Origin: projectMM original (VU meter) · source [AudioVolumeEffect.h](../../../../src/light/effects/AudioVolumeEffect.h) +Origin: projectMM original (VU meter) + +Detail: [technical](../moxygen/AudioVolumeEffect.md) [Tests](../../../tests/unit-tests.md#audiomodule) @@ -582,7 +654,9 @@ A demo reel: plays every other registered effect in turn, auto-advancing on a ti - `randomPalette` — pick a random palette on each cycle (showcases the palette set); default on. - `showName` — overlay the playing effect's name in a small font; default on. -Origin: FastLED · Mark Kriegsman's [DemoReel100](https://github.com/FastLED/FastLED/blob/master/examples/DemoReel100/DemoReel100.ino); projectMM reel · source [DemoReelEffect.h](../../../../src/light/effects/DemoReelEffect.h) +Origin: FastLED · Mark Kriegsman's [DemoReel100](https://github.com/FastLED/FastLED/blob/master/examples/DemoReel100/DemoReel100.ino); projectMM reel + +Detail: [technical](../moxygen/DemoReelEffect.md) [Tests](../../../tests/unit-tests.md#demoreeleffect) @@ -595,11 +669,13 @@ Receives lights-over-UDP (Art-Net, E1.31/sACN, DDP) and writes it into the layer - `universe_start` — the first incoming universe to map onto the layer (mirrors the sender). - `channels_per_universe` — bytes each universe maps to (510 = whole RGB lights per universe, the xLights/Falcon convention; 512 for Madrix-style senders that pack pixels across universe boundaries). -Origin: projectMM original (E1.31 / Art-Net receive) · source [NetworkReceiveEffect.h](../../../../src/light/effects/NetworkReceiveEffect.h) +Origin: projectMM original (E1.31 / Art-Net receive) + +Detail: [technical](../moxygen/NetworkReceiveEffect.md) [Tests](../../../tests/unit-tests.md#networkreceiveeffect) -**Wire contract:** listens for [Art-Net](https://art-net.org.uk/downloads/art-net.pdf), [E1.31 / sACN](https://tsp.esta.org/tsp/documents/docs/ANSI_E1-31-2018.pdf), and [DDP](http://www.3waylabs.com/ddp/) simultaneously; `universe_start` + `channels_per_universe` map incoming universes onto the layer buffer. The end-to-end pair with [NetworkSendDriver](../drivers/NetworkSendDriver.md). +**Wire contract:** listens for [Art-Net](https://art-net.org.uk/downloads/art-net.pdf), [E1.31 / sACN](https://tsp.esta.org/tsp/documents/docs/ANSI_E1-31-2018.pdf), and [DDP](http://www.3waylabs.com/ddp/) simultaneously; `universe_start` + `channels_per_universe` map incoming universes onto the layer buffer. The end-to-end pair with [NetworkSendDriver](../moxygen/NetworkSendDriver.md). @@ -611,7 +687,9 @@ R/G/B each follow a sine along one axis at 120° phase offset — a glowing, scr - `amplitude` — peak brightness (0–255, 255 = full). - `bpm` — scroll speed. -Origin: MoonLight (Sinus, AI-generated) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) · source [SineEffect.h](../../../../src/light/effects/SineEffect.h) +Origin: MoonLight (Sinus, AI-generated) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Effects/E_MoonLight.h) + +Detail: [technical](../moxygen/SineEffect.md) [Tests](../../../tests/unit-tests.md#sineeffect) diff --git a/docs/moonmodules/light/layouts/layouts.md b/docs/moonmodules/light/layouts/layouts.md index a38ff5e4..dd9c339e 100644 --- a/docs/moonmodules/light/layouts/layouts.md +++ b/docs/moonmodules/light/layouts/layouts.md @@ -14,7 +14,9 @@ A pair of concentric-ring "headlight" clusters (nested rings of 1/8/12/16/24 LED - `scale` — overall size scale (1–10). -Origin: projectMM / custom fixture · source [CarLightsLayout.h](../../../../src/light/layouts/CarLightsLayout.h) +Origin: projectMM / custom fixture + +Detail: [technical](../moxygen/CarLightsLayout.md) @@ -27,7 +29,9 @@ A 3D cube volume, `width`×`height`×`depth`, wired in a configurable axis order - `X++` / `Y++` / `Z++` — count up (vs down) along that axis. - `snakeX` / `snakeY` / `snakeZ` — serpentine (alternate rows/columns reverse) on that axis. -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) · source [CubeLayout.h](../../../../src/light/layouts/CubeLayout.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) + +Detail: [technical](../moxygen/CubeLayout.md) @@ -37,7 +41,9 @@ A hollow walk-in cube built from five LED-curtain faces (front, back, top, left, - `width` / `height` / `depth` — cube extent per axis (1–20). -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) · source [HumanSizedCubeLayout.h](../../../../src/light/layouts/HumanSizedCubeLayout.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) + +Detail: [technical](../moxygen/HumanSizedCubeLayout.md) @@ -50,7 +56,9 @@ A 2D matrix panel with full wiring control: choose the axis order, per-axis dire - `X++` / `Y++` — count up vs down along that axis. - `snake` — serpentine wiring (alternate lines reverse). -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) · source [PanelLayout.h](../../../../src/light/layouts/PanelLayout.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) + +Detail: [technical](../moxygen/PanelLayout.md) @@ -63,7 +71,9 @@ Tiles an M×N grid of full matrix panels into one large display: an outer walk o - `panelWidth` / `panelHeight` — each panel's size (1–512). - `wiringOrder` / `X++` / `Y++` / `snake` — the per-panel light wiring. -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) · source [PanelsLayout.h](../../../../src/light/layouts/PanelsLayout.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) + +Detail: [technical](../moxygen/PanelsLayout.md) @@ -77,7 +87,9 @@ A single ring of LEDs evenly spaced around a circle — `nrOfLEDs` points, start - `clockwise` — direction of travel. - `scale` — spacing/radius scale. -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) · source [RingLayout.h](../../../../src/light/layouts/RingLayout.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) + +Detail: [technical](../moxygen/RingLayout.md) @@ -87,7 +99,9 @@ The classic 241-LED concentric-ring disc: nested rings of 1, 8, 12, 16, 24, 32, - `scale` — overall radius scale (1–10). -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) · source [Rings241Layout.h](../../../../src/light/layouts/Rings241Layout.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) + +Detail: [technical](../moxygen/Rings241Layout.md) @@ -100,7 +114,9 @@ A vertical line of LEDs at a fixed X — the 1D column primitive. - `X position` — the column's x. - `reversed order` — wire top-to-bottom instead of bottom-to-top. -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) · source [SingleColumnLayout.h](../../../../src/light/layouts/SingleColumnLayout.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) + +Detail: [technical](../moxygen/SingleColumnLayout.md) @@ -113,7 +129,9 @@ A horizontal line of LEDs at a fixed Y — the 1D row primitive. - `Y position` — the row's y. - `reversed order` — wire right-to-left instead of left-to-right. -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) · source [SingleRowLayout.h](../../../../src/light/layouts/SingleRowLayout.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) + +Detail: [technical](../moxygen/SingleRowLayout.md) @@ -125,7 +143,9 @@ A conical spiral: `ledCount` LEDs winding up a cone from `bottomRadius` to a poi - `bottomRadius` — radius at the base. - `height` — spiral height. -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) · source [SpiralLayout.h](../../../../src/light/layouts/SpiralLayout.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) + +Detail: [technical](../moxygen/SpiralLayout.md) @@ -138,7 +158,9 @@ Maps a set of decorative "gourd" objects (a specific bar installation), each ren - `granularity` — `One Gourd One Light`, `One Side One Light`, or `One LED One Light`. - `nrOfLightsPerGourd` — LEDs per gourd in the coarsest mode (1–128). -Origin: projectMM / custom fixture · source [TorontoBarGourdsLayout.h](../../../../src/light/layouts/TorontoBarGourdsLayout.h) +Origin: projectMM / custom fixture + +Detail: [technical](../moxygen/TorontoBarGourdsLayout.md) @@ -151,7 +173,9 @@ Parallel vertical tubes: `nrOfTubes` columns of `ledsPerTube` LEDs, spaced `tube - `tubeDistance` — spacing between tubes. - `reversed` — reverse the wiring order. -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) · source [TubesLayout.h](../../../../src/light/layouts/TubesLayout.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) + +Detail: [technical](../moxygen/TubesLayout.md) ## projectMM-native layouts @@ -164,7 +188,9 @@ A dense 3D grid, row-major (x fastest, then y, then z); every position maps to a - `width` / `height` / `depth` — grid extent on each axis in lights (1–512). - `serpentine` — boustrophedon-wire alternate rows (every other row runs in reverse, matching a snaked strip). -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) · source [GridLayout.h](../../../../src/light/layouts/GridLayout.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) + +Detail: [technical](../moxygen/GridLayout.md) [Tests](../../../tests/unit-tests.md#gridlayout) @@ -176,7 +202,9 @@ Lights on the surface of a hollow sphere — a one-light-thick shell inside a `( - `radius` — surface radius in light-units (1–64); the shell is every cell whose distance from the centre rounds to `radius`. -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) · source [SphereLayout.h](../../../../src/light/layouts/SphereLayout.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) + +Detail: [technical](../moxygen/SphereLayout.md) [Tests](../../../tests/unit-tests.md#spherelayout) @@ -189,7 +217,9 @@ A bicycle-wheel: `spokes` straight rows radiate from a centre hub, each carrying - `spokes` — number of spokes radiating from the hub (2–64). - `ledsPerSpoke` — LEDs along each spoke, spaced one unit apart from the centre outward. -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) · source [WheelLayout.h](../../../../src/light/layouts/WheelLayout.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Layouts/L_MoonLight.h) + +Detail: [technical](../moxygen/WheelLayout.md) [Tests](../../../tests/unit-tests.md#wheellayout) diff --git a/docs/moonmodules/light/modifiers/modifiers.md b/docs/moonmodules/light/modifiers/modifiers.md index 5de50e1f..1e045b48 100644 --- a/docs/moonmodules/light/modifiers/modifiers.md +++ b/docs/moonmodules/light/modifiers/modifiers.md @@ -10,7 +10,9 @@ Every modifier, one block each: its preview, what it does, and what each control Expands a 1D effect into concentric **square rings** (Chebyshev distance from the centre): the effect's linear position becomes the ring index, so a gradient effect draws nested squares. -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) · source [BlockModifier.h](../../../../src/light/modifiers/BlockModifier.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) + +Detail: [technical](../moxygen/BlockModifier.md) [Tests](../../../tests/unit-tests.md#blockmodifier) @@ -25,7 +27,9 @@ Masks the layer in a checkerboard: "off" squares are dropped, "on" squares pass - `size` — checker square edge in lights (≥1). - `invert` — flip which squares pass through vs are masked. -Origin: MoonLight · by WildCats08 / [@Brandon502](https://github.com/Brandon502) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) · source [CheckerboardModifier.h](../../../../src/light/modifiers/CheckerboardModifier.h) +Origin: MoonLight · by WildCats08 / [@Brandon502](https://github.com/Brandon502) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) + +Detail: [technical](../moxygen/CheckerboardModifier.md) [Tests](../../../tests/unit-tests.md#checkerboardmodifier) @@ -35,7 +39,9 @@ Origin: MoonLight · by WildCats08 / [@Brandon502](https://github.com/Brandon502 Expands a 1D effect into concentric **circular rings** (Euclidean distance from the centre): the effect's linear position becomes the radius, so a gradient effect draws nested circles. The circular counterpart to [Block](#block). -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) · source [CircleModifier.h](../../../../src/light/modifiers/CircleModifier.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) + +Detail: [technical](../moxygen/CircleModifier.md) [Tests](../../../tests/unit-tests.md#circlemodifier) @@ -47,7 +53,9 @@ Folds the far half of the box back onto the near half per axis, mirroring the im - `mirrorX` / `mirrorY` / `mirrorZ` — mirror across the centre on that axis (each default on; enabling an axis the layout doesn't use is a no-op). -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) · source [MirrorModifier.h](../../../../src/light/modifiers/MirrorModifier.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) + +Detail: [technical](../moxygen/MirrorModifier.md) [Tests](../../../tests/unit-tests.md#mirrormodifier) @@ -62,7 +70,9 @@ Tiles the logical image across the box `multiply` times per axis, optionally mir - `multiplyX` / `multiplyY` / `multiplyZ` — tile count per axis (1–64; 1 = no tiling). - `mirrorX` / `mirrorY` / `mirrorZ` — reflect alternate tiles on that axis (with a count of 2, folds the axis in half — the kaleidoscope mirror). -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) · source [MultiplyModifier.h](../../../../src/light/modifiers/MultiplyModifier.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) + +Detail: [technical](../moxygen/MultiplyModifier.md) [Tests](../../../tests/unit-tests.md#multiplymodifier) @@ -78,7 +88,9 @@ Remaps the grid into radial **petals** around the centre — the angle to each p - `symmetry` — fold the petals into a factor-of-360 symmetry. - `zTwist` — twist the petals along z (3D). -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) · source [PinwheelModifier.h](../../../../src/light/modifiers/PinwheelModifier.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) + +Detail: [technical](../moxygen/PinwheelModifier.md) [Tests](../../../tests/unit-tests.md#pinwheelmodifier) @@ -91,7 +103,9 @@ Collapses an axis to a single plane so a higher-dimensional effect ripples along - `shrink` — collapse the selected axis (on = collapse). - `towardsX` / `towardsZ` — which axis collapses to a single line. -Origin: MoonLight · by @Troy (WLEDMM Art-Net) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) · source [RippleXZModifier.h](../../../../src/light/modifiers/RippleXZModifier.h) +Origin: MoonLight · by @Troy (WLEDMM Art-Net) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) + +Detail: [technical](../moxygen/RippleXZModifier.md) [Tests](../../../tests/unit-tests.md#ripplexzmodifier) @@ -104,7 +118,9 @@ Swaps a pair of box axes (and every coordinate through them), then optionally in - `XY` / `XZ` / `YZ` — swap that pair of axes. - `inverse X` / `inverse Y` / `inverse Z` — flip that axis after the swap. -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) · source [TransposeModifier.h](../../../../src/light/modifiers/TransposeModifier.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) + +Detail: [technical](../moxygen/TransposeModifier.md) [Tests](../../../tests/unit-tests.md#transposemodifier) @@ -118,7 +134,9 @@ Remaps every light to another via a true 1:1 permutation, reshuffling to a fresh - `bpm` — reshuffles per minute (0–60; 6 ≈ a fresh permutation every 10 s; 0 = frozen). -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) · source [RandomMapModifier.h](../../../../src/light/modifiers/RandomMapModifier.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) + +Detail: [technical](../moxygen/RandomMapModifier.md) [Tests](../../../tests/unit-tests.md#randommapmodifier) @@ -130,7 +148,9 @@ Carves the layer to a sub-rectangle given as percentages of the physical extent - `startX` / `startY` / `startZ` and `endX` / `endY` / `endZ` — the sub-rectangle bounds as **percentages** of each axis's physical extent (0 = start of axis, 100 = end), so the region survives a resize; values may go negative or past 100 to push the window off-screen. -Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) · source [RegionModifier.h](../../../../src/light/modifiers/RegionModifier.h) +Origin: MoonLight · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) + +Detail: [technical](../moxygen/RegionModifier.md) [Tests](../../../tests/unit-tests.md#regionmodifier) @@ -142,7 +162,9 @@ Rotates the 2D image around its centre, turning continuously over time (the code - `speed` — rotation speed (1–255; turns faster as it rises). -Origin: MoonLight · by WildCats08 / [@Brandon502](https://github.com/Brandon502) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) · source [RotateModifier.h](../../../../src/light/modifiers/RotateModifier.h) +Origin: MoonLight · by WildCats08 / [@Brandon502](https://github.com/Brandon502) · via [MoonLight](https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h) + +Detail: [technical](../moxygen/RotateModifier.md) [Tests](../../../tests/unit-tests.md#rotatemodifier) diff --git a/docs/moonmodules/light/moonlive/MoonLiveEffect.md b/docs/moonmodules/light/moonlive/MoonLiveEffect.md index 2d932383..e0733d5e 100644 --- a/docs/moonmodules/light/moonlive/MoonLiveEffect.md +++ b/docs/moonmodules/light/moonlive/MoonLiveEffect.md @@ -58,4 +58,4 @@ The grammar + bounds guard are verified live on the S3/Olimex (Xtensa) by editin ## Source -[MoonLive.h](../../../../src/core/moonlive/MoonLive.h) · [MoonLiveBuiltins.h](../../../../src/core/moonlive/MoonLiveBuiltins.h) · [MoonLiveCompiler.h](../../../../src/core/moonlive/MoonLiveCompiler.h) · [MoonLiveIr.h](../../../../src/core/moonlive/MoonLiveIr.h) · [MoonLiveBuiltins_light.h](../../../../src/light/moonlive/MoonLiveBuiltins_light.h) · [MoonLiveEffect.h](../../../../src/light/moonlive/MoonLiveEffect.h) +[MoonLive.md](../../core/moxygen/MoonLive.md) · [MoonLiveBuiltins.md](../../core/moxygen/MoonLiveBuiltins.md) · [MoonLiveCompiler.md](../../core/moxygen/MoonLiveCompiler.md) · [MoonLiveIr.md](../../core/moxygen/MoonLiveIr.md) · [MoonLiveEffect.md](../moxygen/MoonLiveEffect.md) diff --git a/docs/moonmodules/light/supporting/supporting.md b/docs/moonmodules/light/supporting/supporting.md index c5afcb7f..59db398b 100644 --- a/docs/moonmodules/light/supporting/supporting.md +++ b/docs/moonmodules/light/supporting/supporting.md @@ -76,3 +76,21 @@ Detail: [technical](../moxygen/EffectBase.md) The `ModifierBase` class every modifier derives from — transforms the coordinate mapping (mirror, rotate, multiply, …) a layer applies before rendering. Detail: [technical](../moxygen/ModifierBase.md) + +### Driver base + +The `DriverBase` class every driver derives from — the shared surface (the driver window, the source buffer, the output correction) a driver reads before sending its slice. It plays the same zero-state role for drivers that Effect base does for effects. + +Detail: [technical](../moxygen/DriverBase.md) + +### Layout base + +The `LayoutBase` class every layout derives from — the shared surface a layout implements to walk its coordinates into the physical light set the mapping consumes. + +Detail: [technical](../moxygen/LayoutBase.md) + +### Parallel LED driver base + +The `ParallelLedDriver` CRTP base shared by the two parallel WS2812 drivers (the S3's LCD_CAM and the P4's Parlio) — the one copy of the common body they were ~250 lines of byte-for-byte identical over: pin slicing, the fused correct+encode, the latch pad, and the single-shot autonomous-DMA transfer. Each derived driver supplies only its peripheral-specific pieces. + +Detail: [technical](../moxygen/ParallelLedDriver.md) diff --git a/docs/usecases/home-automation.md b/docs/usecases/home-automation.md index 2a72e03a..b3bb9934 100644 --- a/docs/usecases/home-automation.md +++ b/docs/usecases/home-automation.md @@ -67,7 +67,7 @@ Mosquitto 2.x binds only to `localhost` by default, so open the LAN listener wit ```bash brew install mosquitto printf 'listener 1883 0.0.0.0\nallow_anonymous true\n' > test.conf -/opt/homebrew/sbin/mosquitto -v -c test.conf +"$(brew --prefix)/sbin/mosquitto" -v -c test.conf ``` Now the device reaches the broker at your Mac's LAN IP while Homebridge reaches it on loopback. (Allow `mosquitto` through the macOS firewall on `1883` if prompted.) diff --git a/docs/usecases/led-signal-integrity.md b/docs/usecases/led-signal-integrity.md new file mode 100644 index 00000000..ba96e78b --- /dev/null +++ b/docs/usecases/led-signal-integrity.md @@ -0,0 +1,17 @@ +# LED signal integrity — flicker on LEDs that should be off + +Random wrong colours on LEDs the effect leaves black — most often a few stray pixels flickering — is, on a 3.3 V ESP32 driving WS2812 **directly**, almost always a **data-line signal-integrity** problem, not a firmware bug. WS2812 wants a logic-high near 0.7 × VDD (≈ 3.5 V on a 5 V strip), but the ESP32 drives only 3.3 V, so individual bits sit at the margin and noise tips them. + +Confirm the firmware is innocent **before** reaching for the soldering iron. These checks were the actual diagnosis path on the bench (recorded in [decisions.md](../history/decisions.md)): + +1. **Is the data clean?** The preview/source buffer is the logical RGB the effect produced — if it shows no stray colour, the effect is innocent (the corruption is downstream of the buffer). +2. **Is the firmware/peripheral clean?** Run the [`loopbackFrame` self-test](../moonmodules/light/drivers/drivers.md#led-output-drivers) through a short jumper on the data pin. A `PASS` means the RMT encode + transmit emit bit-perfect WS2812 — the GPIO is fine. +3. **Is it WiFi RF?** Lower `Network.txPowerSetting` from 20 dBm down toward 2 and watch. If the flicker shrinks with TX power, it's radio coupling into the data wire (mitigate with the level shifter below). If it's **unchanged across the whole sweep, it is not the radio** — it's the physical data path. + +When 1–3 all come back clean, the fix is electrical, in rough order of effectiveness: + +- **Add a 3.3 → 5 V level shifter** on the data line (e.g. 74HCT125 / 74AHCT125) — the single most effective fix; it restores the logic-high margin the LEDs expect. +- **Add a ~330 Ω series resistor** at the GPIO, close to the board, to damp reflections. +- **Shorten / shield the data wire**, and keep it away from the power leads and the antenna. +- **Share a solid, thick common ground** between the strip's supply and the board. +- If RF coupling was implicated by step 3, set a per-board `Network.txPowerSetting` cap (the same `deviceModels.json` mechanism the ESP32-S3 N16R8 Dev uses). diff --git a/mkdocs.yml b/mkdocs.yml index f150ac19..b6f9ca11 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -124,6 +124,7 @@ nav: - Web installer: https://moonmodules.org/projectMM/install/ - Use cases: - Home automation: usecases/home-automation.md + - LED signal integrity: usecases/led-signal-integrity.md - Effects & building shows: - Effects: moonmodules/light/effects/effects.md - Layouts: moonmodules/light/layouts/layouts.md diff --git a/moondeck/check/check_devices.py b/moondeck/check/check_devices.py index 8f50d470..8d1374fd 100644 --- a/moondeck/check/check_devices.py +++ b/moondeck/check/check_devices.py @@ -11,7 +11,7 @@ Invariants checked per entry: - required fields present (name, chip, firmwares, modules) - firmwares is a non-empty list of non-empty strings (entry[0] is the default) - - image (if set) is a local assets/boards/ path that resolves on disk + - image (if set) is a local assets/deviceModels/ path that resolves on disk - url (if set) is an absolute http(s) link - the System module's `deviceModel` control value equals the entry `name` - every module `type` is factory-registered (or a known boot-wired singleton) @@ -135,8 +135,8 @@ def main(): # --- image resolves on disk + is a local path --- img = e.get("image") if img is not None: - if not isinstance(img, str) or not img.startswith("assets/boards/"): - errors.append(f"{where}: image must be a local 'assets/boards/...' path, got {img!r}") + if not isinstance(img, str) or not img.startswith("assets/deviceModels/"): + errors.append(f"{where}: image must be a local 'assets/deviceModels/...' path, got {img!r}") elif not (DOCS / img).exists(): errors.append(f"{where}: image '{img}' does not exist on disk") diff --git a/moondeck/check/check_specs.py b/moondeck/check/check_specs.py index d2cc3603..194bce08 100644 --- a/moondeck/check/check_specs.py +++ b/moondeck/check/check_specs.py @@ -147,9 +147,11 @@ def _module_block(source_path, spec): lines = spec.splitlines() # Find the line tying this module to its block. Two link shapes across catalog # pages: a direct `source [.h]` (effects/modifiers/layouts) or a detail-page - # reference `[.md]` / `alt=" controls"` (drivers link to detail pages). + # reference `[.md]` / `alt=" controls"` (drivers link to detail pages), + # or a `Detail: [technical](../moxygen/.md)` line (the consistent card link). def _match(ln): return (f"[{stem}]" in ln or f"[{base}.md]" in ln + or f"moxygen/{base}.md" in ln or f'alt="{base} ' in ln or f'alt="A {base} ' in ln) link_i = next((i for i, ln in enumerate(lines) if _match(ln)), None) if link_i is None: @@ -261,6 +263,10 @@ def check_source_links(): # \b before `source` so it matches the `source [Foo.h](…)` link marker, # not the tail of a word like "resource [". src_links = re.findall(r'\bsource \[[^\]]+\]\(([^)]+)\)', text) + if not src_links: + # Consolidated catalog pages now link each block to its generated + # technical page: `Detail: [technical](../moxygen/.md)`. + src_links = re.findall(r'\]\(([^)]*moxygen/[^)]+\.md)\)', text) if not src_links: # index page: the per-entry links to detail pages (…Driver.md), # same-dir (no ../) — e.g. `](RmtLedDriver.md)`. diff --git a/moondeck/docs/gen_api.py b/moondeck/docs/gen_api.py index 285b8821..8e4ee857 100644 --- a/moondeck/docs/gen_api.py +++ b/moondeck/docs/gen_api.py @@ -206,6 +206,49 @@ def repl(m: re.Match) -> str: return _CARD_RE.sub(repl, md) +# A member signature line moxygen emits as its own paragraph: a backtick-delimited +# code span alone on a line — an attribute (`uint8_t protocol = 0`) or a method +# (`virtual inline void onBuildControls() override`). The template wraps each in +# backticks; nothing else on the site opens a line with a bare code span, so this +# anchors the match to member signatures only. +_SIG_LINE_RE = re.compile(r'^`(?P[^`\n]+)`[ \t]*$', re.MULTILINE) +# A METHOD name is the identifier immediately before the FIRST argument-list `(` +# (`… onBuildControls(…) override` → `onBuildControls`) — trailing `const`/`override` +# come after and must NOT win. An ATTRIBUTE name is the identifier before ` =` or at +# the end of the declarator (`uint8_t protocol = 0` → `protocol`; `char pins[24] = ""` +# → `pins`, skipping the `[N]` array bound). Two anchored patterns, method tried first. +_SIG_METHOD_NAME_RE = re.compile(r'(?P[A-Za-z_]\w*)\s*\(') +_SIG_ATTR_NAME_RE = re.compile(r'(?P[A-Za-z_]\w*)\s*(?:\[[^\]]*\])?\s*(?:=|$)') + + +def _highlight_signature_names(md: str) -> str: + """Wrap the declared member NAME in each generated signature so the theme can + highlight it while the type/args stay muted (CSS: `.mm-sig-name`). moxygen emits + a flat `` string with no internal markup, so 'colour only the name' can't + be done in CSS alone — we split the code span here into + `name` (raw HTML the markdown + passes through). The signature reads as one code chip; only the identifier pops.""" + def repl(m: re.Match) -> str: + sig = m.group("sig") + # Method (has an arg list) → the id before the FIRST `(`; else attribute → + # the id before `=` / end. Falls through to the whole span if neither matches. + h = _SIG_METHOD_NAME_RE.search(sig) if "(" in sig else _SIG_ATTR_NAME_RE.search(sig) + if not h: + return m.group(0) + start, end = h.start("name"), h.end("name") + wrapped = (_html_escape(sig[:start]) + + f'{_html_escape(sig[start:end])}' + + _html_escape(sig[end:])) + return f'{wrapped}' + return _SIG_LINE_RE.sub(repl, md) + + +def _html_escape(s: str) -> str: + # Signatures carry `<`, `>`, `&` (templates, refs) — escape so the raw-HTML + # we emit renders them as text, not markup. + return s.replace("&", "&").replace("<", "<").replace(">", ">") + + def _class_to_header(xml_dir: Path) -> dict[str, str]: """Map each moxygen class-file key → its source header (repo-relative), read from the Doxygen XML `` of every class/struct compound. The key is @@ -305,6 +348,7 @@ def generate() -> dict[str, str]: body = _rewrite_cls_links("".join(blocks), domain, cls_to_page) body = _strip_bad_anchor_links(body) body = _render_card_directives(body, domain, stem) + body = _highlight_signature_names(body) md = _migration_crosscheck_header(header, domain, stem) + body uri = f"moonmodules/{domain}/moxygen/{stem}.md" dst = DOCS_MOONMODULES / domain / "moxygen" / f"{stem}.md" diff --git a/moondeck/docs/mkdocs_hooks.py b/moondeck/docs/mkdocs_hooks.py index 275e3e62..a63a3fdd 100644 --- a/moondeck/docs/mkdocs_hooks.py +++ b/moondeck/docs/mkdocs_hooks.py @@ -200,12 +200,18 @@ def _emit_row(b: dict, details_names: set) -> str: col3 = "".join(col3_parts) if col3_parts else "—" # Col 4: everything a reader clicks OUT to — so the description column is pure - # prose. Tests + detail-page link(s) + source/attribution + a ⌄ details anchor. + # prose. Tests + technical page + source/attribution + a ⌄ details anchor. Each + # link is prefixed with a Material icon (rendered as SVG by pymdownx.emoji, same as + # the tag emoji in the Name column) so the link TYPE is scannable, not a wall of + # small text — the recognizable docs-site convention. Labels are Title Case. links = [] if b["tests"]: - links.append(f"[Tests]({b['tests']})") + links.append(f":material-test-tube: [Tests]({b['tests']})") if b["detail"]: - links.append(b["detail"]) # the `Detail: [Foo.md](..) · …` line + # Title-case a lone `[technical]` label so it reads "Technical"; leave a named + # multi-link group (e.g. the LED-output `[RMT] · [LCD] · [Parlio]`) as authored. + detail = re.sub(r'^\[technical\]', '[Technical]', b["detail"]) + links.append(f":material-file-document-outline: {detail}") if b["origin"]: links.append(b["origin"]) # carries `source [Foo.h](...)` + attribution # The module's display name without the trailing ` 💫 · dim` decoration, e.g. diff --git a/moondeck/run/preview_installer.py b/moondeck/run/preview_installer.py index ec59a317..237abec0 100644 --- a/moondeck/run/preview_installer.py +++ b/moondeck/run/preview_installer.py @@ -51,8 +51,8 @@ PICKER_BOARDS_JS = ROOT / "src" / "ui" / "install-picker-boards.js" STAGE_DIR = ROOT / "build" / "install-preview" # The preview mirrors the GitHub Pages layout: the installer at /install/, -# board images under /install/assets/boards/, and the releases tree under -# /install/releases/ — so an "image": "assets/boards/.jpg" path and the +# board images under /install/assets/deviceModels/, and the releases tree under +# /install/releases/ — so an "image": "assets/deviceModels/.jpg" path and the # "./releases//" firmware path resolve identically here and on Pages, no # per-context special casing. A root redirect (/ → /install/) keeps the old # entry point working. @@ -87,7 +87,7 @@ def _stage_runtime_files(src_dir: Path, dst_dir: Path): def _stage_referenced_board_images(dst_dir: Path): """Stage only the board images a deviceModels.json entry references (mirrors the - deploy's filtered copy), under /assets/boards/.""" + deploy's filtered copy), under /assets/deviceModels/.""" boards_json = INSTALL_DIR / "deviceModels.json" if not boards_json.exists(): return @@ -96,10 +96,10 @@ def _stage_referenced_board_images(dst_dir: Path): except (ValueError, OSError): return for b in boards: - rel = b.get("image") # e.g. "assets/boards/.jpg" + rel = b.get("image") # e.g. "assets/deviceModels/.jpg" if not rel: continue - src = ROOT / "docs" / rel # source lives in docs/assets/boards/ + src = ROOT / "docs" / rel # source lives in docs/assets/deviceModels/ if src.is_file(): out = dst_dir / rel out.parent.mkdir(parents=True, exist_ok=True) @@ -115,7 +115,7 @@ def stage_install_page(): query parameter the picker honours). Layout matches Pages exactly: the installer under /install/, board images - under /install/assets/boards/, the releases tree under /install/releases/. + under /install/assets/deviceModels/, the releases tree under /install/releases/. A root index.html redirects / → /install/ so the historical `localhost:8421/` entry point still lands on the installer. The shared install-picker.js (under src/ui/, shared with the on-device UI) is copied in. diff --git a/src/light/drivers/DriverBase.h b/src/light/drivers/DriverBase.h new file mode 100644 index 00000000..1e9ac4ef --- /dev/null +++ b/src/light/drivers/DriverBase.h @@ -0,0 +1,174 @@ +#pragma once + +#include "core/MoonModule.h" +#include "light/layers/Buffer.h" +#include "light/layers/Layer.h" +#include "light/drivers/Correction.h" +#include "platform/platform.h" + +#include + +namespace mm { + +/// Base class for one driver — a consumer that reads the shared source buffer and +/// emits it to a destination (a physical LED output, a network sink, or the preview). +/// +/// A driver optionally reads dimensions from an active Layer, optionally applies the +/// shared output correction, and optionally restricts its output to a contiguous +/// *window* of the source buffer (see `addWindowControls`). It plays the same +/// zero-state role for drivers that EffectBase does for effects. +class DriverBase : public MoonModule { +public: + ModuleRole role() const override { return ModuleRole::Driver; } + virtual void setSourceBuffer(Buffer* buf) = 0; + /// Set the active Layer this driver reads dimensions from. Optional: drivers that + /// need dimensions (such as PreviewDriver describing the LED grid in the WebSocket + /// frame) call `layer_` for current physical width/height/depth; ArtNet doesn't need + /// it — it just streams bytes. + /// + /// This is the *active* layer for dimension queries, not a 1:1 wiring constraint: + /// each driver outputs to a single physical fixture, and the Drivers container hands + /// it one Layer for dimensions regardless of how many layers feed the output buffer. + void setLayer(Layer* layer) { layer_ = layer; } + + /// First light of the configured window. Public for tests pinning the slice + /// arithmetic; production reads via `windowSlice()`. See `start_`/`count_` below. + uint16_t windowStart() const { return start_; } + /// Number of lights in the configured window (0 = to end of buffer). + uint16_t windowCount() const { return count_; } + /// Set the window directly (the UI sets it via the start/count controls; this is + /// for code-wiring a driver's slice and for tests). Takes effect on the next config + /// parse / loop, like a control edit. + void setWindow(uint16_t start, uint16_t count) { start_ = start; count_ = count; } + /// The active Layer this driver reads dimensions from — null when no Layer is wired + /// (such as after the last Layer was deleted). Drivers must tolerate null here. + Layer* layer() const { return layer_; } + + /// Hand this driver the shared output correction (brightness LUT + channel order + + /// white) owned by the Drivers container. Default no-op so Preview (which shows the + /// raw logical buffer) and any preview-style driver opt out for free; only physical + /// drivers (ArtNet, LED) override to apply it. + virtual void setCorrection(const Correction* /*c*/) {} + + /// Notified by Drivers when the shared Correction's outChannels may have changed (a + /// lightPreset switch RGB↔RGBW). Default no-op; physical drivers that own an + /// intermediate correction-applied buffer override to resize it OFF the hot path. + /// Topology changes (light count, channels per light) already flow through + /// onBuildState — this hook is just for the preset-driven channel-count change that + /// doesn't trigger a structural rebuild. + virtual void onCorrectionChanged() {} + + /// Clear every shared status string on teardown — fail buffer, config error, and config + /// warning — so a stopped driver leaves nothing behind (frees the owned `failBuf_`; retracts + /// the warning the same "clear only MY status" way as the error). A driver that overrides + /// teardown() for its own peripheral cleanup chains to this afterwards: + /// `deinit(); DriverBase::teardown();`. + void teardown() override { clearFailBuf(); clearConfigErr(); setConfigWarn(nullptr); } + +protected: + Layer* layer_ = nullptr; + + // --- Shared source-buffer window (start, count) --------------------------- + /// Every driver reads the SAME shared source buffer (Drivers hands the one + /// `Buffer*` to each child) and outputs a contiguous slice of it: lights + /// `[start_, start_+count_)`. This is how light distribution is made *explicit* + /// and order-independent — a second driver on a different slice (such as an + /// onboard status LED at index 0, the main strip from index 1) just sets its + /// own window, rather than the buffer being split by driver order. `count_`==0 + /// means "the rest of the buffer from start_" (the common whole-buffer case). + /// NetworkSendDriver's universe maps onto the same window; the LED drivers' + /// pins/ledsPerPin distribute lights *within* the window. It is the alternative + /// to a "split the buffer by sibling order" model some controllers use — here the + /// user (or catalog) says which slice goes where. + uint16_t start_ = 0; ///< First source-buffer light this driver outputs (default 0). + uint16_t count_ = 0; ///< Lights to output from `start_`; 0 = to end of buffer. + + /// Add the two window controls — call from a driver's onBuildControls(). Kept a + /// helper (not auto-added) so a driver opts in by calling it where its other + /// controls go, keeping control *order* in the driver's hands. + void addWindowControls() { + controls_.addUint16("start", start_); + controls_.addUint16("count", count_); + } + + /// True if `name` is one of the window controls — a driver folds this into its + /// controlChangeTriggersBuildState() so editing the slice re-runs its config. + static bool isWindowControl(const char* name) { + return std::strcmp(name, "start") == 0 || std::strcmp(name, "count") == 0; + } + + /// Resolve the window against a buffer of `bufN` lights: writes the clamped first + /// light to `outStart` and the slice length to `outLen` (0 if the window starts + /// past the end — the driver then idles, no out-of-bounds read). The textbook + /// `[start, start+count)` clamp — every driver calls this instead of reading from + /// light 0. + void windowSlice(nrOfLightsType bufN, nrOfLightsType& outStart, + nrOfLightsType& outLen) const { + outStart = start_ < bufN ? start_ : bufN; + const nrOfLightsType avail = static_cast(bufN - outStart); + outLen = (count_ == 0 || count_ > avail) ? avail + : static_cast(count_); + } + + // --- Shared status-string lifecycle for the physical LED drivers (RMT / LCD / + // Parlio). They report two kinds of transient status that must clear cleanly + // without stomping an unrelated status set by something else: + // configErr_ — a borrowed string literal (a parse-error message); + // failBuf_ — an owned, on-demand char buffer (a formatted loopback/init + // failure with numbers in it). + // Both follow the same "clear only MY status" rule: only call clearStatus() if + // the status currently shown is the one this driver set. This was triplicated + // verbatim across the three drivers; it lives here once (the No-duplication + // rule). Preview-style drivers never touch these, so the cost is a couple of + // null pointers they ignore. + const char* configErr_ = nullptr; + const char* configWarn_ = nullptr; + char* failBuf_ = nullptr; + static constexpr size_t kFailBufLen = 48; + + // Record a parse/config error: set the status and remember it so clearConfigErr + // can later retract exactly this one. + void setConfigErr(const char* err) { + configErr_ = err; + setStatus(err, Severity::Error); + } + void clearConfigErr() { + if (configErr_) { + if (status() == configErr_) clearStatus(); + configErr_ = nullptr; + } + } + + // A non-fatal config warning (a borrowed literal, like configErr_): the driver keeps + // running but flags something the user should see (e.g. a per-pin count clamped to the + // WS2812 ceiling). `warn` non-null sets it; null retracts a stale one — so a driver calls + // setConfigWarn(warn) unconditionally each parse and the warning tracks the live state. + // Same "clear only MY status" rule as configErr_. Factored here so the WS2812 drivers + // (Rmt / LCD / Parlio) don't each inline it — the No-duplication rule this block records. + void setConfigWarn(const char* warn) { + if (warn) { + configWarn_ = warn; + setStatus(warn, Severity::Warning); + } else if (configWarn_) { + if (status() == configWarn_) clearStatus(); + configWarn_ = nullptr; + } + } + + // Lazily allocate the owned fail-message buffer (caller snprintf's into it then + // setStatus(failBuf_)). Returns null if the allocation fails, in which case the + // caller falls back to a literal status. + char* failBufEnsure() { + if (!failBuf_) failBuf_ = static_cast(platform::alloc(kFailBufLen)); + return failBuf_; + } + void clearFailBuf() { + if (failBuf_) { + if (status() == failBuf_) clearStatus(); + platform::free(failBuf_); + failBuf_ = nullptr; + } + } +}; + +} // namespace mm diff --git a/src/light/drivers/Drivers.h b/src/light/drivers/Drivers.h index 858cb216..c7c093e4 100644 --- a/src/light/drivers/Drivers.h +++ b/src/light/drivers/Drivers.h @@ -1,5 +1,6 @@ #pragma once +#include "light/drivers/DriverBase.h" // DriverBase (split out; a driver subclass includes this header for both) #include "core/MoonModule.h" #include "light/layers/Buffer.h" #include "light/layers/Layer.h" @@ -13,167 +14,6 @@ namespace mm { -/// Base class for one driver — a consumer that reads the shared source buffer and -/// emits it to a destination (a physical LED output, a network sink, or the preview). -/// -/// A driver optionally reads dimensions from an active Layer, optionally applies the -/// shared output correction, and optionally restricts its output to a contiguous -/// *window* of the source buffer (see `addWindowControls`). It plays the same -/// zero-state role for drivers that EffectBase does for effects. -class DriverBase : public MoonModule { -public: - ModuleRole role() const override { return ModuleRole::Driver; } - virtual void setSourceBuffer(Buffer* buf) = 0; - /// Set the active Layer this driver reads dimensions from. Optional: drivers that - /// need dimensions (such as PreviewDriver describing the LED grid in the WebSocket - /// frame) call `layer_` for current physical width/height/depth; ArtNet doesn't need - /// it — it just streams bytes. - /// - /// This is the *active* layer for dimension queries, not a 1:1 wiring constraint: - /// each driver outputs to a single physical fixture, and the Drivers container hands - /// it one Layer for dimensions regardless of how many layers feed the output buffer. - void setLayer(Layer* layer) { layer_ = layer; } - - /// First light of the configured window. Public for tests pinning the slice - /// arithmetic; production reads via `windowSlice()`. See `start_`/`count_` below. - uint16_t windowStart() const { return start_; } - /// Number of lights in the configured window (0 = to end of buffer). - uint16_t windowCount() const { return count_; } - /// Set the window directly (the UI sets it via the start/count controls; this is - /// for code-wiring a driver's slice and for tests). Takes effect on the next config - /// parse / loop, like a control edit. - void setWindow(uint16_t start, uint16_t count) { start_ = start; count_ = count; } - /// The active Layer this driver reads dimensions from — null when no Layer is wired - /// (such as after the last Layer was deleted). Drivers must tolerate null here. - Layer* layer() const { return layer_; } - - /// Hand this driver the shared output correction (brightness LUT + channel order + - /// white) owned by the Drivers container. Default no-op so Preview (which shows the - /// raw logical buffer) and any preview-style driver opt out for free; only physical - /// drivers (ArtNet, LED) override to apply it. - virtual void setCorrection(const Correction* /*c*/) {} - - /// Notified by Drivers when the shared Correction's outChannels may have changed (a - /// lightPreset switch RGB↔RGBW). Default no-op; physical drivers that own an - /// intermediate correction-applied buffer override to resize it OFF the hot path. - /// Topology changes (light count, channels per light) already flow through - /// onBuildState — this hook is just for the preset-driven channel-count change that - /// doesn't trigger a structural rebuild. - virtual void onCorrectionChanged() {} - - /// Clear every shared status string on teardown — fail buffer, config error, and config - /// warning — so a stopped driver leaves nothing behind (frees the owned `failBuf_`; retracts - /// the warning the same "clear only MY status" way as the error). A driver that overrides - /// teardown() for its own peripheral cleanup chains to this afterwards: - /// `deinit(); DriverBase::teardown();`. - void teardown() override { clearFailBuf(); clearConfigErr(); setConfigWarn(nullptr); } - -protected: - Layer* layer_ = nullptr; - - // --- Shared source-buffer window (start, count) --------------------------- - /// Every driver reads the SAME shared source buffer (Drivers hands the one - /// `Buffer*` to each child) and outputs a contiguous slice of it: lights - /// `[start_, start_+count_)`. This is how light distribution is made *explicit* - /// and order-independent — a second driver on a different slice (such as an - /// onboard status LED at index 0, the main strip from index 1) just sets its - /// own window, rather than the buffer being split by driver order. `count_`==0 - /// means "the rest of the buffer from start_" (the common whole-buffer case). - /// NetworkSendDriver's universe maps onto the same window; the LED drivers' - /// pins/ledsPerPin distribute lights *within* the window. It is the alternative - /// to a "split the buffer by sibling order" model some controllers use — here the - /// user (or catalog) says which slice goes where. - uint16_t start_ = 0; ///< First source-buffer light this driver outputs (default 0). - uint16_t count_ = 0; ///< Lights to output from `start_`; 0 = to end of buffer. - - /// Add the two window controls — call from a driver's onBuildControls(). Kept a - /// helper (not auto-added) so a driver opts in by calling it where its other - /// controls go, keeping control *order* in the driver's hands. - void addWindowControls() { - controls_.addUint16("start", start_); - controls_.addUint16("count", count_); - } - - /// True if `name` is one of the window controls — a driver folds this into its - /// controlChangeTriggersBuildState() so editing the slice re-runs its config. - static bool isWindowControl(const char* name) { - return std::strcmp(name, "start") == 0 || std::strcmp(name, "count") == 0; - } - - /// Resolve the window against a buffer of `bufN` lights: writes the clamped first - /// light to `outStart` and the slice length to `outLen` (0 if the window starts - /// past the end — the driver then idles, no out-of-bounds read). The textbook - /// `[start, start+count)` clamp — every driver calls this instead of reading from - /// light 0. - void windowSlice(nrOfLightsType bufN, nrOfLightsType& outStart, - nrOfLightsType& outLen) const { - outStart = start_ < bufN ? start_ : bufN; - const nrOfLightsType avail = static_cast(bufN - outStart); - outLen = (count_ == 0 || count_ > avail) ? avail - : static_cast(count_); - } - - // --- Shared status-string lifecycle for the physical LED drivers (RMT / LCD / - // Parlio). They report two kinds of transient status that must clear cleanly - // without stomping an unrelated status set by something else: - // configErr_ — a borrowed string literal (a parse-error message); - // failBuf_ — an owned, on-demand char buffer (a formatted loopback/init - // failure with numbers in it). - // Both follow the same "clear only MY status" rule: only call clearStatus() if - // the status currently shown is the one this driver set. This was triplicated - // verbatim across the three drivers; it lives here once (the No-duplication - // rule). Preview-style drivers never touch these, so the cost is a couple of - // null pointers they ignore. - const char* configErr_ = nullptr; - const char* configWarn_ = nullptr; - char* failBuf_ = nullptr; - static constexpr size_t kFailBufLen = 48; - - // Record a parse/config error: set the status and remember it so clearConfigErr - // can later retract exactly this one. - void setConfigErr(const char* err) { - configErr_ = err; - setStatus(err, Severity::Error); - } - void clearConfigErr() { - if (configErr_) { - if (status() == configErr_) clearStatus(); - configErr_ = nullptr; - } - } - - // A non-fatal config warning (a borrowed literal, like configErr_): the driver keeps - // running but flags something the user should see (e.g. a per-pin count clamped to the - // WS2812 ceiling). `warn` non-null sets it; null retracts a stale one — so a driver calls - // setConfigWarn(warn) unconditionally each parse and the warning tracks the live state. - // Same "clear only MY status" rule as configErr_. Factored here so the WS2812 drivers - // (Rmt / LCD / Parlio) don't each inline it — the No-duplication rule this block records. - void setConfigWarn(const char* warn) { - if (warn) { - configWarn_ = warn; - setStatus(warn, Severity::Warning); - } else if (configWarn_) { - if (status() == configWarn_) clearStatus(); - configWarn_ = nullptr; - } - } - - // Lazily allocate the owned fail-message buffer (caller snprintf's into it then - // setStatus(failBuf_)). Returns null if the allocation fails, in which case the - // caller falls back to a literal status. - char* failBufEnsure() { - if (!failBuf_) failBuf_ = static_cast(platform::alloc(kFailBufLen)); - return failBuf_; - } - void clearFailBuf() { - if (failBuf_) { - if (status() == failBuf_) clearStatus(); - platform::free(failBuf_); - failBuf_ = nullptr; - } - } -}; - /// Top-level container for one or more drivers — the consumer side of the pipeline. /// Owns the shared output buffer (when memory allows) and performs blend+map from /// every layer's buffer into it each frame. diff --git a/src/light/drivers/HueDriver.h b/src/light/drivers/HueDriver.h index 984ae663..7ffc2201 100644 --- a/src/light/drivers/HueDriver.h +++ b/src/light/drivers/HueDriver.h @@ -1,6 +1,6 @@ #pragma once -#include "light/drivers/Drivers.h" +#include "light/drivers/DriverBase.h" #include "core/JsonUtil.h" // parse the bridge's JSON responses #include "core/FilesystemModule.h" // noteDirty — persist the app key after pairing #include "core/DevicesModule.h" // DevicesModule::active() — list the bridge as a device @@ -12,42 +12,40 @@ namespace mm { -// Philips Hue lights as a projectMM OUTPUT — a driver, not a listed device. The bulbs are -// pixels of an effect: make a small grid (e.g. 4×1×1), run any effect, and this driver reads -// its window of the shared buffer and pushes each light's colour to the bridge. Same shape as -// NetworkSendDriver (read a window, send it out), but over the Hue v1 HTTP API instead of UDP. -// -// What makes Hue different from a strip and shapes the design: -// - It's HTTP, not a wire protocol: GET /api//lights, PUT .../lights//state. -// - Connection churn, not just Hue's ~10/s command budget, bounds the rate: each PUT opens a -// fresh TCP connection (the bridge speaks Connection: close), so loop() does AT MOST ONE PUT -// every kPutIntervalMs — a millis() gate, never work-every-tick — so a synchronous round-trip -// can't stall the single-thread render loop AND the TIME_WAIT sockets don't pile up. Smooth -// ambient colour, not real-time (that's the Entertainment API, a separate future). -// - Only colour-capable, reachable lights are driven (parseLights filters them); each PUT sends -// hue/sat/bri from a textbook RGB→HSV plus a cadence-matched transitiontime so the bulb glides. -// - It needs an app key: press the bridge's link button once, then POST /api to claim a key. -// Pairing is a short bounded poll across a few loop1s ticks (never blocking the loop). -// -// Room / light selection. Two dropdowns ("room", "light") let the user aim the effect at a -// subset of the bridge's colour bulbs without touching the window controls. fetchGroups reads -// GET /api//groups and keeps the bridge's Rooms (name + member light ids); fetchLights keeps -// each colour light's name. Option index 0 is "All" in BOTH dropdowns, so the common "drive -// everything" case never shifts index and persists as 0 for free (the Select stores its uint8 -// index). Picking a room narrows the light dropdown to that room's colour lights AND filters the -// driven set to that room; picking a specific light drives just that one. The filter builds -// drivenIdx_[] — the colour-light subset pushOneChangedLight actually walks — so room=All & -// light=All leaves the original behaviour (drive every colour bulb) untouched. -// -// Plain HTTP, no TLS — the Hue v1 API allows it (bench-confirmed on a BSB002 bridge). Prior -// art: the Hue v1 CLIP API (public docs); the effect-as-output mapping is projectMM's own. -/// Output driver: sends the buffer to Philips Hue bulbs as pixels. +/// Output driver: sends the buffer to Philips Hue bulbs as pixels — a driver, not a listed device. +/// The bulbs are pixels of an effect: make a small grid (e.g. 4×1×1), run any effect, and this +/// driver reads its window of the shared buffer and pushes each light's colour to the bridge. Same +/// shape as NetworkSendDriver (read a window, send it out), but over the Hue v1 HTTP API not UDP. +/// +/// It's HTTP, not a wire protocol (`GET /api//lights`, `PUT .../lights//state`), so the +/// rate is bounded by connection churn — each PUT opens a fresh TCP connection (the bridge speaks +/// `Connection: close`), and loop() does at most one PUT every `kPutIntervalMs` (see there) — giving +/// smooth ambient colour, not real-time. The shared output Correction applies as on the LED/network +/// drivers, so the brightness slider and colour-order preset reach the Hue lights too (brightness +/// 0 → light off). Only colour-capable, reachable lights are driven (see `parseLights`); the `room` +/// and `light` dropdowns aim the effect at a subset (see `rebuildDriven`). +/// +/// **Wire contract (Hue v1 API, plain HTTP, no TLS — bench-confirmed on a BSB002 bridge, API 1.77):** +/// - Pair — `POST http:///api` `{"devicetype":"projectMM#device"}`; before the link +/// button, the bridge returns `link button not pressed`; after, `[{"success":{"username":""}}]`. +/// - List lights — `GET http:///api//lights` → `{"1":{…},"2":{…}}` (window index → light id). +/// - List rooms — `GET http:///api//groups` → `{"1":{"name":…,"lights":["1","2"],"type":"Room"},…}`. +/// - Set a light — `PUT http:///api//lights//state` +/// `{"on":true,"bri":0-254,"hue":0-65535,"sat":0-254,"transitiontime":N}` (or `{"on":false}` for a black pixel). +/// +/// Prior art: the [Hue v1 CLIP API](https://developers.meethue.com/develop/hue-api/) (public docs); +/// the effect-as-output mapping is projectMM's own. /// @card HueDriver.png class HueDriver : public DriverBase { public: - uint8_t bridgeIp[4] = {}; // the bridge's LAN IP (from the UI) - char appKey[48] = {}; // the Hue username/app key (filled by Pair, persisted) - + /// The bridge's LAN IP, entered in the UI (4 octets). + uint8_t bridgeIp[4] = {}; + /// The Hue username/app key — filled by the Pair button, then persisted. + char appKey[48] = {}; + + /// Register the controls: bridge IP, the persisted app key, the Pair link-button, the room + + /// light filter dropdowns (both default to index 0 = "All", rebuilt in place from the parsed + /// bridge data on every control change), the shared window, then refresh the status line. void onBuildControls() override { controls_.addIPv4("bridgeIp", bridgeIp); controls_.addText("appKey", appKey, sizeof(appKey)); // persisted credential @@ -65,17 +63,18 @@ class HueDriver : public DriverBase { refreshStatus(); } + /// Take the shared source buffer this driver reads its window from. void setSourceBuffer(Buffer* buf) override { sourceBuffer_ = buf; } - // The shared output Correction (global brightness LUT + channel order), same as the physical - // LED / network drivers — so the brightness slider and a swapped colour order reach the Hue - // lights too. Applied per pixel before RGB→HSV; the RGBW/white part is irrelevant here (Hue - // takes hue/sat), we use the RGB result. + /// Take the shared output Correction (global brightness LUT + channel order), same as the + /// physical LED / network drivers — so the brightness slider and a swapped colour order reach + /// the Hue lights too. Applied per pixel before RGB→HSV; the RGBW/white part is irrelevant here + /// (Hue takes hue/sat), we use the RGB result. void setCorrection(const Correction* c) override { correction_ = c; } - // A control click. "pair" starts the link-button pairing poll. Changing the bridge IP or app - // key points the driver at a (possibly) different bridge, so the learned light list + push - // cache are stale — drop them and let loop1s re-fetch against the new config. + /// A control click. "pair" starts the link-button pairing poll; changing the bridge IP or app + /// key points the driver at a (possibly) different bridge, so the learned light list + push + /// cache are dropped and re-fetched; a room/light change re-derives the driven subset. void onUpdate(const char* controlName) override { if (controlName && std::strcmp(controlName, "pair") == 0) { pairTicksLeft_ = kPairWindowTicks; // begin: poll the bridge for ~30 s on loop1s @@ -100,11 +99,11 @@ class HueDriver : public DriverBase { DriverBase::onUpdate(controlName); } - // loop() runs every render tick. It must NEVER do more than ONE bounded bridge call, and - // only when the rate-limit interval has elapsed (a millis() gate, NOT work-every-tick) — - // otherwise a synchronous HTTP round-trip stalls the whole single-thread render loop (the - // "never block the loop" rule, decisions.md). So: at most one PUT every kPutIntervalMs, - // round-robined across the lights. Pairing + the bridge announce ride the slow 1 Hz tick. + /// Runs every render tick, but does at most ONE bounded PUT and only when the rate-limit + /// interval has elapsed (a millis() gate, NOT work-every-tick) — otherwise a synchronous HTTP + /// round-trip would stall the single-thread render loop (the "never block the loop" rule, + /// decisions.md). One PUT every kPutIntervalMs, round-robined across the lights; pairing + the + /// bridge announce ride the slow 1 Hz tick. void loop() override { if (pairTicksLeft_ > 0) return; // pairing owns the bridge during its window if (!appKey[0] || !haveBridge() || lightCount_ == 0) return; @@ -114,9 +113,9 @@ class HueDriver : public DriverBase { pushOneChangedLight(); // exactly one bounded PUT this tick } - // The 1 Hz tick handles the non-render-critical, slower bridge work: pairing poll, the - // one-shot light fetch, and the periodic DevicesModule announce. Each is at most one bridge - // call per second — acceptable on a 1 Hz tick, and never in the per-frame loop(). + /// The 1 Hz tick handles the non-render-critical, slower bridge work: the pairing poll, the + /// one-shot light + group fetch, and the periodic DevicesModule announce. Each is at most one + /// bridge call per second — acceptable on a 1 Hz tick, and never in the per-frame loop(). void loop1s() override { if (pairTicksLeft_ > 0) { pollPairing(); DriverBase::loop1s(); return; } if (!appKey[0] || !haveBridge()) { DriverBase::loop1s(); return; } @@ -126,6 +125,8 @@ class HueDriver : public DriverBase { DriverBase::loop1s(); } + /// Stop any in-flight pairing and release the dropdown-name heap (a re-add re-fetches and + /// re-allocs), then chain to DriverBase::teardown to clear status. void teardown() override { pairTicksLeft_ = 0; freeNameBuffers(); // release the dropdown-name heap; a re-add re-fetches and re-allocs diff --git a/src/light/drivers/LcdLedDriver.h b/src/light/drivers/LcdLedDriver.h index 177aa9bc..a8c9a9ac 100644 --- a/src/light/drivers/LcdLedDriver.h +++ b/src/light/drivers/LcdLedDriver.h @@ -8,26 +8,25 @@ namespace mm { -// WS2812B output over the ESP32-S3 LCD_CAM i80 bus: up to 8 strands clock out -// SIMULTANEOUSLY, one GPIO lane each, fed consecutive slices of the source -// buffer. The S3's scale path — RMT gives it 4 channels, this gives 8 lanes for -// the wall time of one. -// -// The whole body — pins/ledsPerPin controls, the per-ROW fused correct+encode -// (LcdSlots.h), the fused reinit (the i80 bus owns the DMA buffer and its max -// transfer size is fixed at creation, so re-creating the bus IS the buffer -// resize), the latch pad, the loopback self-test — lives in ParallelLedDriver, -// shared with ParlioLedDriver. This class supplies only the i80-specific pieces: -// the sacrificial WR (pixel clock) + DC GPIOs the peripheral mandates even though -// WS2812 ignores both, the "exactly 8 pins" rule (the i80 layer rejects a partial -// bus), and the platform::lcdWs2812* calls. -// -// The whole frame (plus a >=300 µs zeroed latch pad) is pre-encoded off any ISR -// path, then one autonomous GDMA transfer ships it — no refill deadlines, so the -// WiFi-induced bit-slip of refill-based drivers can't occur. Prior art: Adafruit's -// LCD_CAM discovery, hpwit's I2SClockless lineage, FastLED's S3 driver — -// architecture studied, never copied (see LcdLedDriver.md). -/// Output driver: parallel WS2812 LEDs over the S3 LCD_CAM bus. +/// Output driver: parallel WS2812B over the ESP32-S3 [LCD_CAM i80 bus](https://docs.espressif.com/projects/esp-idf/en/stable/esp32s3/api-reference/peripherals/lcd/index.html). +/// The S3's scale path — RMT gives it 4 channels, this gives 8 lanes for the wall time of one. The +/// shared body (slicing, the single-shot DMA transfer, the fused encode, the loopback self-test) +/// lives in ParallelLedDriver; this class adds only the i80-specific pieces: +/// - The sacrificial WR (pixel clock) + DC GPIOs the peripheral mandates even though WS2812 ignores +/// both, and the "exactly 8 pins" rule (the i80 layer rejects a partial bus). +/// - **The 3-slot-per-bit wire contract:** each WS2812 bit becomes three bus slots at 2.67 MHz +/// (slot = 375 ns): all-active-lanes HIGH, the data bits, then all LOW — so a `1` is HIGH 750 ns +/// and a `0` 375 ns, approximating RMT's 700/350. The slot is deliberately NOT the lineage's +/// ~416 ns: newer WS2812B revisions spec T0H max ≈ 380 ns, and a longer `0` on a direct 3.3 V line +/// gets misread as `1` (the strip washes white). One 8-bit bus word per slot (bus bit L = the +/// L-th pin); unequal strands idle LOW once exhausted. Slot layout: LcdSlots.h. +/// - **Memory:** one internal-RAM DMA frame buffer (PSRAM deliberately unused — the peripheral +/// streams from internal SRAM): `longest lane × channels × 24 + latch` bytes, ~72 B/RGB light +/// (1000 lights across 8 lanes ≈ 9 KB; the boundary is ~1500+ lights on a SINGLE lane ≈ 110 KB). +/// - The platform::lcdWs2812* calls (ESP-IDF's esp_lcd i80 bus + GDMA). +/// +/// Prior art: Adafruit's LCD_CAM discovery, hpwit's I2SClockless lineage, FastLED's S3 driver — +/// architecture studied, never copied. class LcdLedDriver : public ParallelLedDriver { public: // Data pins + loopback pin default to UNSET: they are user-soldered (the strand @@ -39,44 +38,57 @@ class LcdLedDriver : public ParallelLedDriver { // strapping pins) — set those again to reproduce the bench. (Base declares // pins="" and loopbackRxPin=0, so the empty default needs no code here.) - // WR (pixel clock) and DC are different: the IDF i80 bus *requires* both on real - // GPIOs (esp_lcd_panel_io_i80.c: `wr_gpio_num >= 0 && dc_gpio_num >= 0`), yet the - // WS2812 strands ignore both — they are peripheral-fixed, not user-strand wiring, - // so a sensible overridable default cannot do harm (same class as the chip-fixed - // Ethernet pins). The data pins above gate startup, so the bus stays idle until - // the user sets them regardless. (Dropping WR/DC entirely needs a direct-LCD_CAM - // driver that bypasses esp_lcd, hpwit-style — backlogged, not this increment.) + /// WR (pixel clock) and DC: the IDF i80 bus *requires* both on real GPIOs + /// (esp_lcd_panel_io_i80.c: `wr_gpio_num >= 0 && dc_gpio_num >= 0`), yet the WS2812 strands + /// ignore both — they are peripheral-fixed, not user-strand wiring, so a sensible overridable + /// default cannot do harm (same class as the chip-fixed Ethernet pins). The data pins gate + /// startup, so the bus stays idle until the user sets them regardless. (Dropping WR/DC entirely + /// needs a direct-LCD_CAM driver that bypasses esp_lcd, hpwit-style — backlogged, not this + /// increment.) int8_t clockPin = 10; int8_t dcPin = 11; // --- CRTP hooks the base calls (all non-virtual; no vtable) --- + /// The number of i80 lanes this chip provides (0 = not this chip); the base's + /// inert-on-wrong-chip guards key off it. static constexpr uint8_t lanesAvailable() { return platform::lcdLanes; } static constexpr bool kExactLaneCount = true; // i80 needs all 8 data lanes static constexpr const char* kInitFailMsg = "LCD init failed — check pins / memory"; + /// Bind the i80-specific bus controls: the sacrificial WR (clockPin) and DC pins + /// the peripheral mandates. void addBusControls() { controls_.addPin("clockPin", clockPin); controls_.addPin("dcPin", dcPin); } + /// A clockPin or dcPin change triggers a bus rebuild via the onBuildState sweep. bool busControlTriggersBuild(const char* name) const { return std::strcmp(name, "clockPin") == 0 || std::strcmp(name, "dcPin") == 0; } + /// Create the i80 bus + its DMA buffer sized for `frameBytes` on the current data + /// lanes plus the WR/DC pins; returns whether init succeeded. bool busInit(size_t frameBytes) { return platform::lcdWs2812Init(lcd_, laneList_, laneCount_, static_cast(clockPin), static_cast(dcPin), frameBytes); } + /// The bus's DMA buffer the base encodes into. uint8_t* busBuffer() { return platform::lcdWs2812Buffer(lcd_); } + /// The DMA buffer's byte capacity (fixed at bus creation). size_t busCapacity() const { return platform::lcdWs2812BufferCapacity(lcd_); } + /// Kick off the autonomous transfer of the first `bytes` of the DMA buffer; + /// returns whether it started. bool busTransmit(size_t bytes) { return platform::lcdWs2812Transmit(lcd_, bytes); } + /// Block up to `ms` for the in-flight transfer to complete. void busWait(uint32_t ms) { platform::lcdWs2812Wait(lcd_, ms); } + /// Tear down the i80 bus and its DMA buffer. void busDeinit() { platform::lcdWs2812Deinit(lcd_); } - // The i80 layer requires all 8 data GPIOs valid, so a 1-lane private bus is - // impossible; the loopback builds the full-width bus and carries the pattern - // on lane 0. Passes the WR/DC pins the init needs. + /// Run the loopback self-test. The i80 layer requires all 8 data GPIOs valid, so + /// a 1-lane private bus is impossible; the loopback builds the full-width bus and + /// carries the pattern on lane 0. Passes the WR/DC pins the init needs. platform::RmtLoopbackResult busLoopback(const uint8_t* frame, size_t frameBytes, size_t dataBytes, uint8_t rowBits) { return platform::lcdWs2812Loopback(laneList_, laneCount_, @@ -86,9 +98,11 @@ class LcdLedDriver : public ParallelLedDriver { frame, frameBytes, dataBytes, rowBits); } - // Store WR/DC alongside the data pins, so a clockPin/dcPin edit rebuilds the - // bus too (not just a data-pin change). + /// Store WR/DC alongside the data pins, so a clockPin/dcPin edit rebuilds the + /// bus too (not just a data-pin change). void recordBusPins() { lastClockPin_ = clockPin; lastDcPin_ = dcPin; } + /// Whether the live bus's WR/DC pins still match the current clockPin/dcPin (so + /// the base can skip a rebuild). bool extraBusPinsCurrent() const { return lastClockPin_ == clockPin && lastDcPin_ == dcPin; } diff --git a/src/light/drivers/NetworkSendDriver.h b/src/light/drivers/NetworkSendDriver.h index 91d4f213..9a3a0089 100644 --- a/src/light/drivers/NetworkSendDriver.h +++ b/src/light/drivers/NetworkSendDriver.h @@ -3,7 +3,7 @@ #include "light/ArtNetPacket.h" // shared ArtNet wire formats (build + parse) #include "light/DdpPacket.h" // shared DDP wire format #include "light/E131Packet.h" // shared E1.31/sACN wire format -#include "light/drivers/Drivers.h" +#include "light/drivers/DriverBase.h" #include "platform/platform.h" #include // std::min in the chunk loop @@ -12,39 +12,52 @@ namespace mm { -// Lights-over-UDP output: one driver, three industry protocols selected by a -// control — ArtNet (510-channel universes), E1.31/sACN (the same universe -// split, ACN framing), and DDP (1440-byte byte-offset packets — the fast path: -// 480 RGB lights per packet vs 170, and per-packet cost is what dominates the -// wire time). The single-node-multiple-protocols shape follows MoonLight's -// D_NetworkOut (architecture studied, not copied). -/// Output driver: streams the buffer over Art-Net/E1.31/DDP. +/// Output driver: streams the buffer over UDP — one driver, three industry protocols selected by a +/// control. The single-node-multiple-protocols shape follows MoonLight's D_NetworkOut (architecture +/// studied, not copied). Byte layouts live in ArtNetPacket.h / E131Packet.h / DdpPacket.h, shared +/// with the receiver so the two sides cannot drift. +/// +/// **Interop:** unicast or limited-broadcast `255.255.255.255` (default, `SO_BROADCAST`) — NOT +/// multicast (no IGMP join; MoonLight ships without it too). E1.31 framing: CID stable per device +/// (from the MAC), source name `projectMM`, priority 100, one frame-level sequence per frame. +/// +/// **Synchronous send:** the whole frame goes out inline in loop() (~35 ms Ethernet / ~90 ms WiFi at +/// 128×128 ArtNet; DDP less). A decoupling send task is a PSRAM-gated backlog item. Added per board +/// via the catalog like the LED drivers; applies the same shared Correction, so network and wired +/// outputs show identical colours. /// @card NetworkSendDriver.png class NetworkSendDriver : public DriverBase { public: - // Index-aligned with the protocol constants used in loop()'s switch: - // 0 = ArtNet, 1 = E1.31, 2 = DDP. The destination port follows the - // protocol (6454 / 5568 / 4048) — see connectIfDestChanged(). + /// Protocol names, index-aligned with the constants used in loop()'s switch (0 = ArtNet, + /// 1 = E1.31, 2 = DDP). The destination port follows the protocol (6454 / 5568 / 4048) — see + /// connectIfDestChanged(). static constexpr const char* kProtocolOptions[] = {"ArtNet", "E1.31", "DDP"}; static constexpr uint8_t kProtocolCount = 3; - // Destination address as 4 octets (not a dotted-quad string) — 4 bytes - // vs char[16], per docs/coding-standards.md § Prefer integers, store - // values in their native shape. The platform UdpSocket::connect() takes - // a string, so connectIfDestChanged() formats on a stack buffer at the - // boundary — the long-lived storage stays integer. - // Default to the limited-broadcast address so a fresh sender reaches every - // receiver on the LAN with no IP to type — set a unicast IP in the UI to target - // one device. Broadcast needs SO_BROADCAST, which platform UdpSocket::open sets. + /// Destination address as 4 octets — defaults to limited-broadcast so a fresh sender reaches + /// every receiver on the LAN with no IP to type; set a unicast IP in the UI to target one + /// device. Broadcast needs SO_BROADCAST, which platform UdpSocket::open sets. Stored as 4 bytes + /// (not a dotted-quad string), per docs/coding-standards.md § store values in their native + /// shape; UdpSocket::connect() takes a string, so connectIfDestChanged() formats on a stack + /// buffer at the boundary. uint8_t ip[4] = {255, 255, 255, 255}; - uint8_t protocol = 0; // index into kProtocolOptions - uint16_t universeStart = 0; // first universe (ArtNet/E1.31; DDP is byte-addressed) + /// Wire protocol (index into kProtocolOptions). Selects both the packet layout and the chunking: + /// ArtNet / E1.31 split at 510 channels per universe (whole RGB lights, the xLights/Falcon + /// convention; 170 lights/packet), consecutive universes from `universeStart`; DDP uses + /// 1440-byte byte-offset chunks (480 lights/packet) and is the fast path — per-packet cost + /// dominates wire time, so a 128×128 WiFi frame drops from ~110 ms (ArtNet) to ~40 ms. + uint8_t protocol = 0; + /// First universe the slice maps onto (ArtNet / E1.31; DDP is byte-addressed). Emitted verbatim, + /// no hidden 1-based adjust: buffer offset = `(universe − universeStart) × 510`. Strict sACN + /// reserves universe 0, so set ≥ 1 on BOTH ends for it; our own receiver defaults to 0 so + /// device↔device pairs align out of the box. Orthogonal to the DriverBase window (start/count), + /// which picks WHICH buffer slice is sent — this picks which universe it lands on. + uint16_t universeStart = 0; + /// Send-rate ceiling (Hz); loop() rate-limits to this so a fast render tick doesn't flood the LAN. uint8_t fps = 50; - // The buffer slice this sink sends is the shared DriverBase window: start_ + - // count_ ("count" 0 = the whole buffer from start). `universe_start` is the - // separate *protocol* offset (which DMX universe the slice maps onto), not a - // buffer offset — the two are orthogonal. + /// Register the controls in UI order: protocol, destination IP, universe offset, the shared + /// window (start/count), then the rate cap. void onBuildControls() override { controls_.addSelect("protocol", protocol, kProtocolOptions, kProtocolCount); controls_.addIPv4("ip", ip); @@ -53,58 +66,59 @@ class NetworkSendDriver : public DriverBase { controls_.addUint8("fps", fps, 1, 120); } - // A start/count change resizes the window this sink sends; route it through the - // onBuildState sweep so resizeCorrected() re-sizes corrected_ for the new slice — - // otherwise growing the window past the old corrected_ silently drops to passthrough. + /// A start/count change resizes the window this sink sends; route it through the onBuildState + /// sweep so resizeCorrected() re-sizes corrected_ for the new slice — otherwise growing the + /// window past the old corrected_ silently drops to passthrough. bool controlChangeTriggersBuildState(const char* name) const override { return isWindowControl(name); } + /// Open the socket and derive the stable E1.31 component id (CID) from the MAC once — no UUID + /// machinery needed for a deterministic, unique-enough id — then bind the destination so each + /// per-packet send skips the address parse + route lookup (re-bound in loop() on an ip/protocol + /// change; see connectIfDestChanged). void setup() override { socket_.open(); - // E1.31 wants a stable per-device component id; derive it from the MAC - // once — no UUID machinery needed for a deterministic, unique-enough CID. std::memcpy(cid_, "projectMM\0", 10); platform::getMacAddress(cid_ + 10); - // Bind the destination so each per-packet send skips the per-packet - // address parse + route lookup. Re-bound in loop() if the ip or - // protocol control changes (see connectIfDestChanged). connectIfDestChanged(); } + /// Close the socket on teardown; DriverBase::teardown (via the base) clears any status. void teardown() override { socket_.close(); } + /// Take the shared source buffer and (re)size the corrected_ buffer for it. Called from + /// Drivers::passBufferToDrivers inside onBuildState (and once at setup); resizeCorrected() is a + /// no-op while correction_ is still null on the first call, and the second call (after + /// setCorrection) lands the actual allocation. All off the hot path. void setSourceBuffer(Buffer* buf) override { sourceBuffer_ = buf; - // setSourceBuffer / setCorrection / setLayer are all called from - // Drivers::passBufferToDrivers, which runs inside Drivers::onBuildState - // (and once at setup). resizeCorrected() is a no-op while correction_ - // is still null on the first call; the second call (after setCorrection) - // lands the actual allocation. All off the hot path. resizeCorrected(); } + /// Take the shared output correction and re-size corrected_ to its channel count. void setCorrection(const Correction* c) override { correction_ = c; resizeCorrected(); } - // Topology change (light count, channels per light, or LUT path swap) — the - // framework calls onBuildState after Layer/Drivers reshape. Resize off the - // hot path so loop() never allocates. + /// Topology change (light count, channels per light, or LUT path swap) — the framework calls + /// this after Layer/Drivers reshape. Resize off the hot path so loop() never allocates. void onBuildState() override { resizeCorrected(); MoonModule::onBuildState(); } - // Preset toggle (RGB↔RGBW) changes correction_->outChannels without - // triggering a structural rebuild. Drivers::onUpdate forwards this hook. + /// Preset toggle (RGB↔RGBW) changes correction_->outChannels without a structural rebuild; + /// Drivers::onUpdate forwards this hook so corrected_ tracks the new channel count. void onCorrectionChanged() override { resizeCorrected(); } + /// Rate-limit to `fps`, apply the shared correction into corrected_ (passthrough if unwired), + /// then chunk the window slice into protocol packets and send the whole frame inline. void loop() override { if (!sourceBuffer_ || !sourceBuffer_->data()) return; diff --git a/src/light/drivers/ParallelLedDriver.h b/src/light/drivers/ParallelLedDriver.h index d87c97d1..2ca77c18 100644 --- a/src/light/drivers/ParallelLedDriver.h +++ b/src/light/drivers/ParallelLedDriver.h @@ -1,6 +1,6 @@ #pragma once -#include "light/drivers/Drivers.h" // DriverBase, Correction +#include "light/drivers/DriverBase.h" // DriverBase, Correction #include "light/drivers/LcdSlots.h" // encodeWs2812LcdSlots (shared encoder) #include "light/drivers/LedDriverConfig.h" #include "light/drivers/PinList.h" // parsePinList / assignCounts (shared) @@ -12,61 +12,69 @@ namespace mm { -// Shared body for the parallel WS2812 LED drivers: the S3's LCD_CAM i80 bus -// (LcdLedDriver) and the P4's Parlio peripheral (ParlioLedDriver). Both drive up -// to 8 strands that clock out simultaneously, one GPIO lane each, fed consecutive -// slices of the source buffer; both pre-encode the whole frame (a per-ROW fused -// correct+transpose, the SAME LcdSlots.h encoder — a Parlio bus byte and an i80 -// bus byte are identical) plus a zeroed >=300 µs latch pad into a platform-owned -// DMA buffer, then ship it as one autonomous transfer. The two were ~250 of ~370 -// lines byte-for-byte identical; this is the one copy (the No-duplication rule). -// -// Binding is CRTP (static polymorphism), NOT a virtual second hierarchy: the base -// calls back into the derived through `static_cast(this)->busX()` with -// no vtable and no runtime indirection, so it stays inside the hot-path / data- -// over-objects rules and the "one deliberate class hierarchy is the module tree" -// rule (the only virtual boundary remains MoonModule -> DriverBase). The derived -// supplies just the handful of peripheral-specific pieces: -// - bus* methods: thin wrappers over its platform::{lcd,parlio}Ws2812* calls -// (they own the handle, so the base never names the handle type); -// - static lanesAvailable() -> the platform::{lcd,parlio}Lanes constant the -// `if constexpr (... == 0)` inert-on-wrong-chip guards key off; -// - static kExactLaneCount -> true for i80 (its layer rejects a partial bus, -// so the pin list must name exactly 8); false for Parlio (1..8 lanes); -// - static kInitFailMsg, kClockHz (the slot rate), recordBusPins/extraBusPins- -// Current() for any extra pins the i80 driver tracks (WR/DC) that Parlio -// doesn't. -// configErr_/failBuf_ and their clear/ensure helpers come from DriverBase (shared -// with RmtLedDriver too). template -/// Base for parallel WS2812 LED-output drivers. +/// Base for the parallel WS2812B LED-output drivers — the S3's LCD_CAM i80 bus (LcdLedDriver) and +/// the P4's Parlio peripheral (ParlioLedDriver). Both drive up to 8 strands that clock out +/// SIMULTANEOUSLY, one GPIO lane each, fed consecutive slices of the source buffer. +/// +/// **Single-shot autonomous DMA:** both pre-encode the whole frame (a per-ROW fused +/// correct+transpose, the SAME LcdSlots.h encoder — a Parlio bus byte and an i80 bus byte are +/// identical: one word per slot, bit L = data line L) plus a zeroed ≥300 µs latch pad into a +/// platform-owned DMA buffer, then ship it as one autonomous transfer. So there's NO CPU deadline +/// during transmission — the WiFi-induced bit-slip of refill-based drivers cannot occur by +/// construction. (The i80 bus owns the DMA buffer and its max transfer size is fixed at creation, so +/// re-creating the bus IS the buffer resize.) The two drivers were ~250 of ~370 lines byte-for-byte +/// identical; this is the one copy (the No-duplication rule). +/// +/// **Buffer slicing across pins:** consecutive slices in `pins` order, sizes from `ledsPerPin`, +/// even-split remainder — identical semantics to RmtLedDriver, parsers shared (PinList.h). +/// +/// **CRTP, not a virtual hierarchy:** the base calls back into the derived through +/// `static_cast(this)->busX()` — no vtable, no runtime indirection — so it stays inside +/// the hot-path / data-over-objects rules and keeps the module tree as the one deliberate class +/// hierarchy (the only virtual boundary remains MoonModule → DriverBase). The derived supplies just +/// the peripheral-specific pieces: the bus* platform wrappers, `lanesAvailable()` (the inert-on- +/// wrong-chip `if constexpr` guard), `kExactLaneCount` (i80 needs exactly 8; Parlio runs 1..8), the +/// slot rate `kClockHz`, and any extra pins the i80 driver tracks (WR/DC) that Parlio doesn't. +/// configErr_/failBuf_ come from DriverBase (shared with RmtLedDriver too). class ParallelLedDriver : public DriverBase { public: - // Bus width this increment: 8 of the peripheral's 16 lanes (matches the - // platform's lane constant; widening to 16 is a later constant change). + /// Bus width this increment: 8 of the peripheral's 16 lanes (matches the platform's lane + /// constant; widening to 16 is a later constant change). static constexpr uint8_t kMaxLanes = 8; - // Comma-separated controls — shared shape with RmtLedDriver (parsers in - // PinList.h). Defaults live on the derived (chip-specific safe pins), so the - // derived sets them after construction; the base just declares them. + /// Comma-separated GPIO list, one parallel lane per pin — up to kMaxLanes strands clocked out + /// SIMULTANEOUSLY, fed consecutive slices of this driver's window. Shared control shape with + /// RmtLedDriver (parsers in PinList.h). Defaults live on the derived (chip-specific safe pins), + /// so the derived sets them after construction; the base just declares them. i80 needs exactly + /// kMaxLanes pins (a partial bus is rejected); Parlio runs on 1..8. char pins[24] = ""; + /// Comma-separated lights-per-lane, matched to `pins` by position; the unassigned remainder + /// splits evenly over the remaining lanes. Each lane is clamped to the WS2812 per-pin ceiling + /// (`kMaxWs2812LedsPerPin`) with a Warning status — it drives that many rather than choking a + /// whole grid onto one line. Empty default splits this driver's window evenly. char ledsPerPin[48] = ""; + /// On-device loopback self-test — jumper a lane's TX to `loopbackRxPin`, tick to transmit a + /// known WS2812 pattern and bit-verify the capture, proving the peripheral emits correct bytes + /// on real silicon. A persistent on/off mode (see onUpdate): while on it re-runs on every + /// relevant change; off clears the verdict. The verdict lands in the status slot. bool loopbackTest = false; - int8_t loopbackTxPin = -1; // optional TX override for the self-test: when - // set (>= 0), the loopback transmits on THIS - // pin in place of lane 0 (laneList_[0]); other - // lanes are unchanged. Lets the bench loopback run - // on a dedicated jumper pin without re-typing the - // operational `pins`. Falls back to laneList_[0] - // when unset (-1). The loopback only drives lane 0 - // with the test pattern, so a single override pin is - // all it needs. Test-only — normal output always uses - // the real `pins`. int8_t + addPin (not uint16): the - // standard single-GPIO control, and -1 = unset keeps - // GPIO 0 usable as a loopback pin. + /// Optional TX override for the self-test: when set (>= 0), the loopback transmits on THIS pin + /// in place of lane 0 (laneList_[0]); other lanes are unchanged. Lets the bench loopback run on + /// a dedicated jumper pin without re-typing the operational `pins`. Falls back to laneList_[0] + /// when unset (-1). The loopback only drives lane 0 with the test pattern, so a single override + /// pin is all it needs. Test-only — normal output always uses the real `pins`. int8_t + addPin + /// (not uint16): the standard single-GPIO control, and -1 = unset keeps GPIO 0 usable as a + /// loopback pin. + int8_t loopbackTxPin = -1; + /// Jumper this to the TX lane for the self-test (unset = -1 by default). int8_t loopbackRxPin = -1; + /// Bind the driver's controls: the window (start/count), the `pins` and + /// `ledsPerPin` text lists, any derived-supplied bus controls (i80 adds + /// clockPin/dcPin, Parlio none), and the loopback self-test controls (TX/RX pin + /// overrides always bound but shown only in test mode). void onBuildControls() override { addWindowControls(); // start / count — the slice of the shared buffer this driver outputs controls_.addText("pins", pins, sizeof(pins)); @@ -80,12 +88,19 @@ class ParallelLedDriver : public DriverBase { controls_.setHidden(controls_.count() - 1, !loopbackTest); } + /// A change to the pins, per-lane counts, the window, or a derived bus control + /// (clockPin/dcPin on i80) re-parses and re-inits the bus live via the + /// onBuildState sweep. bool controlChangeTriggersBuildState(const char* name) const override { return std::strcmp(name, "pins") == 0 || std::strcmp(name, "ledsPerPin") == 0 || isWindowControl(name) || derived()->busControlTriggersBuild(name); // clockPin/dcPin on i80 } + /// React to a control change off the render loop. loopbackTest is a persistent + /// on/off mode: while ON, the self-test re-runs on every relevant change (with a + /// lane-config refresh first, since onUpdate precedes the onBuildState sweep); + /// turning it OFF clears the verdict and re-derives the real driver status. void onUpdate(const char* name) override { const bool isTestControl = std::strcmp(name, "loopbackTest") == 0; const bool isPinControl = std::strcmp(name, "pins") == 0 @@ -109,24 +124,36 @@ class ParallelLedDriver : public DriverBase { } } + /// Parse the config and (re)init the bus. void setup() override { parseConfig(); reinit(); } + /// Deinit the bus, then clear the shared fail/config-error state + /// (DriverBase::teardown()). void teardown() override { deinit(); DriverBase::teardown(); // clears failBuf_ + configErr_ } + /// Topology or the pins/ledsPerPin controls changed — re-parse the lanes and + /// (re)init the bus off the hot path. void onBuildState() override { parseConfig(); reinit(); MoonModule::onBuildState(); } - // RGB<->RGBW changes the bytes-per-light and therefore the frame size. + /// RGB<->RGBW changes the bytes-per-light and therefore the frame size, so + /// re-parse and re-init the bus. void onCorrectionChanged() override { parseConfig(); reinit(); } + /// Point the driver at the source frame buffer and re-parse the lane config. void setSourceBuffer(Buffer* buf) override { sourceBuffer_ = buf; parseConfig(); } + /// Point the driver at the shared correction and re-parse the lane config. void setCorrection(const Correction* c) override { correction_ = c; parseConfig(); } + /// Per-tick output: a fused per-ROW pass corrects the same light index of every + /// active lane and transposes it into 3-slot bus bytes in the platform-owned DMA + /// buffer, then ships the frame as one autonomous transfer. Inert off this chip + /// and idle until inited with a source buffer + correction. void loop() override { if constexpr (Derived::lanesAvailable() == 0) return; // inert off this chip if (!inited_ || !dmaBuf_ || !sourceBuffer_ || !sourceBuffer_->data() @@ -163,12 +190,16 @@ class ParallelLedDriver : public DriverBase { derived()->busWait(1000 /* ms */); } - // Test-only accessors — pin the lane slicing and frame-size arithmetic on the - // host (unit_{Lcd,Parlio}LedDriver.cpp); the hardware half is proven on device. + /// Test-only accessors — pin the lane slicing and frame-size arithmetic on the + /// host (unit_{Lcd,Parlio}LedDriver.cpp); the hardware half is proven on device. uint8_t laneCount() const { return laneCount_; } + /// Lights on lane `i` (0 if out of range). Test-only. nrOfLightsType laneLightCount(uint8_t i) const { return i < laneCount_ ? laneCounts_[i] : 0; } + /// First light index of lane `i`'s slice (0 if out of range). Test-only. nrOfLightsType laneStart(uint8_t i) const { return i < laneCount_ ? laneStart_[i] : 0; } + /// Length of the longest lane — the frame's row count. Test-only. nrOfLightsType maxLaneLights() const { return maxLaneLights_; } + /// Total DMA frame size in bytes (rows + latch pad). Test-only. size_t frameBytes() const { return frameBytes_; } protected: diff --git a/src/light/drivers/ParlioLedDriver.h b/src/light/drivers/ParlioLedDriver.h index 06eb592d..3b77de40 100644 --- a/src/light/drivers/ParlioLedDriver.h +++ b/src/light/drivers/ParlioLedDriver.h @@ -7,24 +7,17 @@ namespace mm { -// WS2812B output over the ESP32-P4 Parlio (Parallel IO) TX peripheral: up to 8 -// strands clock out SIMULTANEOUSLY, one GPIO lane each, fed consecutive slices of -// the source buffer. The P4's scale path, sibling of LcdLedDriver. -// -// The whole body lives in ParallelLedDriver (shared with the i80 driver) — same -// pins/ledsPerPin controls, the SAME per-ROW encoder (a Parlio bus byte and an -// i80 bus byte are identical: one word per slot, bit L = data line L), the same -// fused lifecycle, latch pad, and single-shot autonomous-DMA transfer. This class -// supplies only the Parlio-specific pieces, and Parlio is the SIMPLER peripheral, -// so it supplies less than the i80 driver: -// - NO clockPin/dcPin: Parlio generates the pixel clock itself (kClockHz), -// so there are no sacrificial WR/DC lines (addBusControls is empty, the extra- -// pin tracking is a no-op). -// - kExactLaneCount = false: i80 rejects a partial bus, Parlio runs on 1..8 -// lanes — whatever `pins` names. -// Prior art: the ESP32-P4 Parlio peripheral, the hpwit/FastLED parallel-WS2812 -// lineage — architecture studied, never copied (see ParlioLedDriver.md). -/// Output driver: parallel WS2812 LEDs over the P4 Parlio engine. +/// Output driver: parallel WS2812B over the ESP32-P4 Parlio (Parallel IO) TX peripheral — the P4's +/// scale path, sibling of LcdLedDriver. The shared body (slicing, encode, single-shot DMA, loopback) +/// lives in ParallelLedDriver; Parlio is the SIMPLER peripheral, so this class adds LESS than the +/// i80 driver: +/// - NO clockPin/dcPin: Parlio generates the pixel clock itself (kClockHz), so there are no +/// sacrificial WR/DC lines (addBusControls is empty). +/// - kExactLaneCount = false: i80 rejects a partial bus; Parlio runs on 1..8 lanes — whatever +/// `pins` names. +/// +/// Prior art: the ESP32-P4 Parlio peripheral, the hpwit/FastLED parallel-WS2812 lineage — +/// architecture studied, never copied. class ParlioLedDriver : public ParallelLedDriver { public: // All controls default to UNSET — pins="", ledsPerPin="" (= all lights on the @@ -38,6 +31,8 @@ class ParlioLedDriver : public ParallelLedDriver { // --- CRTP hooks the base calls (all non-virtual; no vtable) --- + /// The number of Parlio lanes this chip provides (0 = not this chip); the base's + /// inert-on-wrong-chip guards key off it. static constexpr uint8_t lanesAvailable() { return platform::parlioLanes; } static constexpr bool kExactLaneCount = false; // 1..8 lanes all valid static constexpr const char* kInitFailMsg = "Parlio init failed — check pins / memory"; @@ -46,25 +41,37 @@ class ParlioLedDriver : public ParallelLedDriver { // the P4 Parlio's 160 MHz PLL clock divides to it exactly (/60). static constexpr uint32_t kClockHz = 2'666'666; - // Parlio has no sacrificial clock/DC pins, so no extra controls and no extra - // pin tracking (the bus rebuilds on a data-pin change alone). + /// No bus controls: Parlio has no sacrificial clock/DC pins (the bus rebuilds on + /// a data-pin change alone). void addBusControls() {} + /// No extra bus controls, so none can trigger a rebuild. bool busControlTriggersBuild(const char*) const { return false; } + /// No extra pins to record (Parlio has no WR/DC). void recordBusPins() {} + /// No extra pins to track, so they are always current. bool extraBusPinsCurrent() const { return true; } + /// Create the Parlio bus + its DMA buffer sized for `frameBytes` on the current + /// lanes, driving the pixel clock at kClockHz; returns whether init succeeded. bool busInit(size_t frameBytes) { return platform::parlioWs2812Init(parlio_, laneList_, laneCount_, kClockHz, frameBytes); } + /// The bus's DMA buffer the base encodes into. uint8_t* busBuffer() { return platform::parlioWs2812Buffer(parlio_); } + /// The DMA buffer's byte capacity (fixed at bus creation). size_t busCapacity() const { return platform::parlioWs2812BufferCapacity(parlio_); } + /// Kick off the autonomous transfer of the first `bytes` of the DMA buffer; + /// returns whether it started. bool busTransmit(size_t bytes) { return platform::parlioWs2812Transmit(parlio_, bytes); } + /// Block up to `ms` for the in-flight transfer to complete. void busWait(uint32_t ms) { platform::parlioWs2812Wait(parlio_, ms); } + /// Tear down the Parlio bus and its DMA buffer. void busDeinit() { platform::parlioWs2812Deinit(parlio_); } - // Parlio runs on a single lane, so the loopback builds its own private 1-lane - // unit on lane 0 (no i80 full-bus workaround needed; no WR/DC to pass). + /// Run the loopback self-test. Parlio runs on a single lane, so the loopback + /// builds its own private 1-lane unit on lane 0 (no i80 full-bus workaround + /// needed; no WR/DC to pass). platform::RmtLoopbackResult busLoopback(const uint8_t* frame, size_t frameBytes, size_t dataBytes, uint8_t rowBits) { return platform::parlioWs2812Loopback(laneList_, laneCount_, diff --git a/src/light/drivers/PreviewDriver.h b/src/light/drivers/PreviewDriver.h index f3f56b5b..1989bc5b 100644 --- a/src/light/drivers/PreviewDriver.h +++ b/src/light/drivers/PreviewDriver.h @@ -1,6 +1,6 @@ #pragma once -#include "light/drivers/Drivers.h" +#include "light/drivers/DriverBase.h" #include "light/light_types.h" // lengthType, nrOfLightsType #include "core/BinaryBroadcaster.h" #include "platform/platform.h" diff --git a/src/light/drivers/RmtLedDriver.h b/src/light/drivers/RmtLedDriver.h index 9bc7a052..1876c764 100644 --- a/src/light/drivers/RmtLedDriver.h +++ b/src/light/drivers/RmtLedDriver.h @@ -1,6 +1,6 @@ #pragma once -#include "light/drivers/Drivers.h" // DriverBase, Correction +#include "light/drivers/DriverBase.h" // DriverBase, Correction #include "light/drivers/LedDriverConfig.h" #include "light/drivers/PinList.h" // parsePinList / assignCounts (shared with LcdLedDriver) #include "light/drivers/RmtSymbol.h" // encodeWs2812Symbols (host-testable) @@ -12,80 +12,84 @@ namespace mm { -// WS2812B output over the ESP32 RMT peripheral. One or more strands — one GPIO -// and one RMT TX channel per strand — fed consecutive slices of the source -// buffer, 8-bit, GRB. -// -// This is the readable EXAMPLE future LED drivers copy. It reads as a sibling of -// NetworkSendDriver: same DriverBase hooks, same per-light `correction_->apply()` -// guard pattern, same once-allocated owned buffer sized off the hot path. The -// only thing that differs is the emit — ArtNet packs corrected bytes into UDP -// universes; this fuses the correction and the WS2812 symbol-encode into one -// pass over the lights, then hands per-pin slices of the symbols to the -// platform. All channels are started before any is waited on, so a multi-pin -// frame costs the longest strand, not the sum. -// -// Domain code only: the symbol encode lives in RmtSymbol.h; the platform owns -// just the peripheral (platform::rmtWs2812*). On targets without RMT every -// platform call is an inert stub and the driver does nothing — guarded by -// `if constexpr (platform::rmtTxChannels == 0)` so it compiles everywhere. -// The pin/count parsing and buffer slicing run on every platform, which is what -// lets the host unit tests (unit_RmtLedDriver_pins.cpp) pin them. -/// Output driver: WS2812 LEDs over the RMT peripheral. +/// Output driver: WS2812B-class addressable LEDs over the ESP32 [RMT (Remote Control +/// Transceiver)](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/rmt.html) +/// peripheral — one GPIO and one RMT TX channel per strand, fed consecutive slices of the source +/// buffer (8-bit, GRB). The default LED driver for classic-ESP32 and S3 board entries, and the +/// readable EXAMPLE future LED drivers copy: a sibling of NetworkSendDriver (same DriverBase hooks, +/// same per-light `correction_->apply()` guard, same once-allocated owned buffer sized off the hot +/// path); only the emit differs — this fuses the correction + WS2812 symbol-encode into one pass +/// (the encode is `RmtSymbol.h`, host-tested) then hands per-pin slices to the platform. +/// +/// **Wire contract — [WS2812B](https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf):** 1-wire NRZ +/// at 800 kHz, no clock line. Each bit is a 1.25 µs cell that starts HIGH then drops LOW; the HIGH +/// duration encodes the bit (`0` = 350 ns high, `1` = 700 ns high), MSB-first per byte. Channel +/// order (GRB, GRBW, …) is applied by `Correction` before the encode, so the encoder is +/// order-agnostic. Frames latch on ≥300 µs idle-LOW. Timings live in `LedDriverConfig`, converted to +/// RMT ticks from the granted resolution (~40 MHz), never hard-coded to one clock. The platform owns +/// only the peripheral (`platform::rmtWs2812*`); on a chip without RMT TX channels those calls are +/// inert stubs, so it compiles everywhere. The peripheral half uses the modern RMT driver (ESP-IDF +/// 5.x "RMT v2": `rmt_new_tx_channel` / a copy encoder / `rmt_transmit`), not the legacy +/// channel-numbered API — not a preference: the legacy driver was removed entirely in ESP-IDF v6 +/// (the build IDF), so v2 is the only API that exists. On chips whose RMT has a DMA backend +/// (`SOC_RMT_SUPPORT_DMA` — the P4; the classic ESP32 has none) the whole-frame loopback capture +/// uses it. +/// +/// **Flicker on LEDs that should be off** is almost always a data-line signal-integrity problem +/// (3.3 V drive into a 5 V strip), not firmware — the "LED signal integrity" use-case guide has the +/// confirm-firmware-innocent playbook (`loopbackFrame`, the TX-power sweep) and the electrical fixes. /// @card RmtLedDriver.png class RmtLedDriver : public DriverBase { public: - // Hard cap on the pin arrays: the largest RMT TX group of any supported - // chip (8 on classic ESP32; the S3 has 4 — enforced per target via - // maxPinsForTarget()). A fixed array bounded by a hardware constant, not a - // dynamic list: the bound can't grow at runtime. + /// Hard cap on the pin arrays: the largest RMT TX group of any supported chip (8 on + /// classic ESP32; the S3 has 4 — enforced per target via maxPinsForTarget()). A fixed + /// array bounded by a hardware constant, not a dynamic list: the bound can't grow at runtime. static constexpr uint8_t kMaxPins = 8; - // Comma-separated GPIO list, one RMT TX channel per pin ("18,17,16"). Text - // control so one field holds N pins — per-output (pin, count) rows are the - // WLED LED-settings pattern. The peripheral validates each pin at init; a - // parse error or failing pin lands in the status field and the driver idles. - // 24 bytes fit kMaxPins 2-digit GPIOs plus separators. The loopback - // self-test transmits on the FIRST pin, so it validates the actual output. - // Defaults to UNSET: the strand is user-soldered to whatever GPIO the user - // wired, so a hard-coded pin would be a guess that could drive a pin committed - // elsewhere — empty until set, idle meanwhile (the "default only when it cannot - // do harm" rule; see decisions.md). Bench wiring was pin "18". + /// Comma-separated GPIO list, one RMT TX channel per pin ("18,17,16"). Text control so one + /// field holds N pins — per-output (pin, count) rows are the WLED LED-settings pattern. The + /// peripheral validates each pin at init; a parse error or failing pin lands in the status + /// field and the driver idles. 24 bytes fit kMaxPins 2-digit GPIOs plus separators. Defaults + /// to UNSET: the strand is user-soldered to whatever GPIO the user wired, so a hard-coded pin + /// would be a guess that could drive a pin committed elsewhere — empty until set, idle + /// meanwhile (the "default only when it cannot do harm" rule; see decisions.md). Bench pin "18". char pins[24] = ""; - // Comma-separated lights-per-pin ("100,100,50"), matched to `pins` by - // position — each pin takes the next consecutive slice of the source - // buffer. May be empty or shorter than `pins`: the unassigned remainder - // splits evenly over the remaining pins (last pin takes the rounding - // remainder), so the empty default just splits the whole buffer evenly. + /// Comma-separated lights-per-pin ("100,100,50"), matched to `pins` by position — each pin + /// takes the next consecutive slice of the source buffer, in list order (pin 1 = `[0,n₁)`, + /// pin 2 = `[n₁,n₁+n₂)`, …). May be empty or shorter than `pins`: the unassigned remainder + /// splits evenly over the remaining pins (last takes the rounding remainder), so the empty + /// default splits the whole buffer evenly. Each pin is capped at a WS2812 per-pin ceiling + /// (2048 lights — a 1-wire line clocks ~30 µs/light, so 2048 is already ~16 FPS): a pin over + /// the ceiling is clamped (output stays lit) with a Warning status, guarding the common + /// misconfig of a whole grid on one pin. Use the start/count window to drive fewer lights, + /// not this safety cap. char ledsPerPin[48] = ""; - // Loopback self-test (replaces the old standalone test firmware): tick the - // checkbox to run a one-shot RMT TX→RX round-trip — jumper the FIRST pin in - // `pins` to `loopbackRxPin`, the test transmits a known WS2812 pattern and - // captures it back, proving the GPIO emits correct bytes on real silicon. - // The outcome goes to the MoonModule status slot (setStatus) with the right - // severity. loopbackTest is a persistent on/off mode (see onUpdate): while on, - // the test re-runs on every relevant change; turning it off clears the verdict. + /// On-device loopback self-test — RMT is a transceiver, so the driver verifies its own output + /// on real silicon (replaces the old standalone test firmware). Tick to run a one-shot RMT + /// TX→RX round-trip: jumper the first pin (TX) to `loopbackRxPin`, it transmits a known WS2812 + /// pattern, captures it back, decodes, compares → `loopback PASS` / `FAIL: …` / `jumper not + /// detected` in the status field. A persistent on/off mode (see onUpdate): while on the test + /// re-runs on every relevant change; turning it off clears the verdict. Hardware lives in + /// `platform::rmtWs2812Loopback*`. bool loopbackTest = false; // checkbox: on = run + keep re-running on change - int8_t loopbackTxPin = -1; // optional TX override for the test: when set - // (>= 0), the loopback transmits on THIS pin in - // place of pins[0], so the test can run on a - // dedicated jumper without re-typing the - // operational `pins`. Falls back to pins[0] when - // unset (-1). Test-only — normal output uses `pins`. - // int8_t + addPin (not uint16): single-GPIO controls - // use the standard Pin control, and -1 = unset lets - // GPIO 0 be a valid loopback pin (0-as-unset wouldn't). - int8_t loopbackRxPin = -1; // jumper this to the TX pin for the test - // (unset = -1 by default; bench used pin 5) - - // Whole-frame stress variant: instead of a 24-bit burst, transmit a real - // frame the size of the first pin's slice, back to back, and bit-verify the - // WHOLE capture. This is the one that catches frame-rate corruption and RF - // interference on the data line (the flicker class of bug) — a 24-bit burst - // passes through a wire that mangles a sustained frame. Shown only in test - // mode; the status names the first corrupted light on failure. + /// Optional TX override for the test: when set (>= 0), the loopback transmits on THIS pin in + /// place of pins[0], so the test can run on a dedicated jumper without re-typing the + /// operational `pins`. Falls back to pins[0] when unset (-1). Test-only — normal output uses + /// `pins`. int8_t + addPin (not uint16): single-GPIO controls use the standard Pin control, + /// and -1 = unset lets GPIO 0 be a valid loopback pin (0-as-unset wouldn't). + int8_t loopbackTxPin = -1; + /// Jumper this to the TX pin for the test (unset = -1 by default; bench used pin 5). + int8_t loopbackRxPin = -1; + + /// Whole-frame stress variant: instead of a 24-bit burst, transmit a real frame the size of + /// the first pin's slice, back to back, and bit-verify the WHOLE capture. This is the one that + /// catches frame-rate corruption and RF interference on the data line (the flicker class of + /// bug) — a 24-bit burst passes through a wire that mangles a sustained frame. Shown only in + /// test mode; the status names the first corrupted light on failure. On the classic ESP32, + /// which has no RMT DMA, the capture is capped to one channel's worth of symbols (~2 RGB lights) + /// and still clocked back to back; the S3/P4 capture the full frame via DMA. bool loopbackFrame = false; // 40 MHz RMT tick clock = 25 ns/tick: t0h 350ns→14, t1h 700ns→28, period @@ -97,6 +101,9 @@ class RmtLedDriver : public DriverBase { // PinList.h, shared with LcdLedDriver — both drivers slice the source // buffer from the same two text controls. + /// Bind the driver's controls: the window (start/count), the `pins` and + /// `ledsPerPin` text lists, and the loopback self-test controls (the TX/RX pin + /// overrides and frame-stress flag are always bound but shown only in test mode). void onBuildControls() override { addWindowControls(); // start / count — the slice of the shared buffer this driver outputs controls_.addText("pins", pins, sizeof(pins)); @@ -116,20 +123,20 @@ class RmtLedDriver : public DriverBase { controls_.setHidden(controls_.count() - 1, !loopbackTest); } - // Changing the pin list or the per-pin counts re-parses and re-inits the RMT - // channels (live, not reboot-to-apply), so the pipeline-wide onBuildState - // sweep runs and parseConfig()/reinit() pick up the new lists. + /// Changing the pin list or the per-pin counts re-parses and re-inits the RMT + /// channels (live, not reboot-to-apply), so the pipeline-wide onBuildState + /// sweep runs and parseConfig()/reinit() pick up the new lists. bool controlChangeTriggersBuildState(const char* name) const override { return std::strcmp(name, "pins") == 0 || std::strcmp(name, "ledsPerPin") == 0 || isWindowControl(name); } - // React to a control change (runs off the render loop, in the HTTP/API - // handler context — a blocking self-test here is fine). loopbackTest is a - // persistent on/off mode. While it's ON, the test (re-)runs on every relevant - // change — turning it on, OR editing pins / loopbackRxPin — so the pins can be - // set in any order and the result always reflects the current pins. Turning it - // OFF clears the result. + /// React to a control change (runs off the render loop, in the HTTP/API + /// handler context — a blocking self-test here is fine). loopbackTest is a + /// persistent on/off mode. While it's ON, the test (re-)runs on every relevant + /// change — turning it on, OR editing pins / loopbackRxPin — so the pins can be + /// set in any order and the result always reflects the current pins. Turning it + /// OFF clears the result. void onUpdate(const char* name) override { const bool isTestControl = std::strcmp(name, "loopbackTest") == 0; const bool isPinControl = std::strcmp(name, "pins") == 0 @@ -155,26 +162,29 @@ class RmtLedDriver : public DriverBase { } } - // Lifecycle has two deliberately-separate concerns, so the buffer half stays - // host-testable and a hardware-only guard can never strand it: - // - SYMBOL BUFFER (plain heap): resizeSymbols() / freeSymbols(), run on - // every platform. - // - RMT CHANNELS (hardware): reinit() / deinitAll(), RMT-targets-only - // (if constexpr). - // The original bug put the buffer free inside the hardware deinit(), which - // reinit() (a rebuild) calls — so a rebuild freed the buffer loop() needs. - // Keeping the two apart makes that mistake impossible here and lets the host - // unit test (unit_RmtLedDriver_lifecycle.cpp) pin it. + /// Parse the config and (re)init the RMT channels. Lifecycle has two + /// deliberately-separate concerns, so the buffer half stays host-testable and a + /// hardware-only guard can never strand it: + /// - SYMBOL BUFFER (plain heap): resizeSymbols() / freeSymbols(), run on + /// every platform. + /// - RMT CHANNELS (hardware): reinit() / deinitAll(), RMT-targets-only + /// (if constexpr). + /// The original bug put the buffer free inside the hardware deinit(), which + /// reinit() (a rebuild) calls — so a rebuild freed the buffer loop() needs. + /// Keeping the two apart makes that mistake impossible here and lets the host + /// unit test (unit_RmtLedDriver_lifecycle.cpp) pin it. void setup() override { parseConfig(); reinit(); } + /// Release the RMT channels and free the symbol buffer, then clear the shared + /// fail/config-error state (DriverBase::teardown()). void teardown() override { deinitAll(); freeSymbols(); DriverBase::teardown(); // clears failBuf_ + configErr_ } - // Topology (light count / channels) or the pins/ledsPerPin controls changed — - // re-parse the lists, resize the symbol buffer, and (re)init the channels off - // the hot path. loop() never allocates. + /// Topology (light count / channels) or the pins/ledsPerPin controls changed — + /// re-parse the lists, resize the symbol buffer, and (re)init the channels off + /// the hot path. loop() never allocates. void onBuildState() override { parseConfig(); resizeSymbols(); @@ -182,21 +192,29 @@ class RmtLedDriver : public DriverBase { MoonModule::onBuildState(); } - // Preset toggle (RGB↔RGBW) changes outChannels without a structural rebuild — - // the per-pin symbol offsets scale with outChannels, so re-derive them too. + /// Preset toggle (RGB↔RGBW) changes outChannels without a structural rebuild — + /// the per-pin symbol offsets scale with outChannels, so re-derive them too. void onCorrectionChanged() override { parseConfig(); resizeSymbols(); } + /// Point the driver at the source frame buffer; re-parse (counts derive from + /// its light count) and resize the symbol buffer to match. void setSourceBuffer(Buffer* buf) override { sourceBuffer_ = buf; parseConfig(); // counts derive from the buffer's light count resizeSymbols(); } + /// Point the driver at the shared correction; re-parse (per-pin symbol offsets + /// derive from outChannels) and resize the symbol buffer to match. void setCorrection(const Correction* c) override { correction_ = c; parseConfig(); // offsets derive from outChannels resizeSymbols(); } + /// Per-tick output: fuse the correction and WS2812 symbol-encode in one pass + /// over this driver's window, then start every pin's transmit before waiting on + /// any, so the tick costs the longest strand rather than the sum. Inert off RMT + /// chips and idle until inited with a source buffer + correction. void loop() override { if constexpr (platform::rmtTxChannels == 0) return; // inert off RMT chips if (!inited_ || !sourceBuffer_ || !sourceBuffer_->data() || !correction_) return; @@ -260,15 +278,19 @@ class RmtLedDriver : public DriverBase { if (cfg_.reset_us) platform::delayUs(cfg_.reset_us); } - // Test-only accessors. symbolBuffer/symbolCapacity mirror ArtNet's - // correctedBuffer() and let unit tests pin the buffer-lifecycle invariants a - // hardware bug already taught us; pinCount/pinLightCount/pinSymbolOffsetWords - // pin the multi-pin slice arithmetic (unit_RmtLedDriver_pins.cpp). Not part - // of any runtime API. + /// Test-only accessors. symbolBuffer/symbolCapacity mirror ArtNet's + /// correctedBuffer() and let unit tests pin the buffer-lifecycle invariants a + /// hardware bug already taught us; pinCount/pinLightCount/pinSymbolOffsetWords + /// pin the multi-pin slice arithmetic (unit_RmtLedDriver_pins.cpp). Not part + /// of any runtime API. const uint32_t* symbolBuffer() const { return symbols_; } + /// Words allocated in the symbol buffer. Test-only. size_t symbolCapacity() const { return symbolCap_; } + /// Number of parsed output pins (0 = idle). Test-only. uint8_t pinCount() const { return pinCount_; } + /// Lights on pin `i` (0 if out of range). Test-only. nrOfLightsType pinLightCount(uint8_t i) const { return i < pinCount_ ? pinCounts_[i] : 0; } + /// Word offset of pin `i`'s slice in the symbol buffer (0 if out of range). Test-only. size_t pinSymbolOffsetWords(uint8_t i) const { return i < pinCount_ ? pinOffsets_[i] : 0; } private: diff --git a/src/light/layouts/CarLightsLayout.h b/src/light/layouts/CarLightsLayout.h index 88fc7382..eedd4d48 100644 --- a/src/light/layouts/CarLightsLayout.h +++ b/src/light/layouts/CarLightsLayout.h @@ -3,7 +3,7 @@ #include // sinf, cosf, fmodf #include #include // std::numbers::pi_v — portable pi -#include "light/layouts/Layouts.h" +#include "light/layouts/LayoutBase.h" #include "light/light_types.h" // lengthType, nrOfLightsType namespace mm { diff --git a/src/light/layouts/CubeLayout.h b/src/light/layouts/CubeLayout.h index cc548a37..59768ac0 100644 --- a/src/light/layouts/CubeLayout.h +++ b/src/light/layouts/CubeLayout.h @@ -2,7 +2,7 @@ #include #include -#include "light/layouts/Layouts.h" +#include "light/layouts/LayoutBase.h" #include "light/light_types.h" // lengthType, nrOfLightsType namespace mm { diff --git a/src/light/layouts/GridLayout.h b/src/light/layouts/GridLayout.h index ab8153c3..3a430710 100644 --- a/src/light/layouts/GridLayout.h +++ b/src/light/layouts/GridLayout.h @@ -2,7 +2,7 @@ #include #include -#include "light/layouts/Layouts.h" +#include "light/layouts/LayoutBase.h" #include "light/light_types.h" // lengthType, nrOfLightsType namespace mm { diff --git a/src/light/layouts/HumanSizedCubeLayout.h b/src/light/layouts/HumanSizedCubeLayout.h index 14059e5b..662b8c8b 100644 --- a/src/light/layouts/HumanSizedCubeLayout.h +++ b/src/light/layouts/HumanSizedCubeLayout.h @@ -2,7 +2,7 @@ #include #include -#include "light/layouts/Layouts.h" +#include "light/layouts/LayoutBase.h" #include "light/light_types.h" // lengthType, nrOfLightsType namespace mm { diff --git a/src/light/layouts/LayoutBase.h b/src/light/layouts/LayoutBase.h new file mode 100644 index 00000000..59cb0abe --- /dev/null +++ b/src/light/layouts/LayoutBase.h @@ -0,0 +1,28 @@ +#pragma once + +#include "core/MoonModule.h" +#include "light/light_types.h" // lengthType, nrOfLightsType + +namespace mm { + +/// Callback for layout coordinate iteration — a layout walks its positions and +/// invokes this per light with the physical index and (x,y,z). Owned by +/// LayoutBase: it's the signature of forEachCoord, which every layout overrides. +using CoordCallback = void(*)(void* ctx, nrOfLightsType idx, lengthType x, lengthType y, lengthType z); + +/// Base for one layout child of the `Layouts` container. A concrete layout +/// (grid, sphere shell, …) implements `lightCount` and `forEachCoord` directly — +/// no wrapper. Every layout control changes the physical light count, so any +/// control change triggers the pipeline-wide rebuild. +class LayoutBase : public MoonModule { +public: + ModuleRole role() const override { return ModuleRole::Layout; } + virtual nrOfLightsType lightCount() const = 0; + virtual void forEachCoord(CoordCallback cb, void* ctx) const = 0; + + /// Every layout control (grid width/height/depth, …) changes the physical light + /// count and therefore needs the pipeline-wide rebuild. See MoonModule::onUpdate. + bool controlChangeTriggersBuildState(const char* /*controlName*/) const override { return true; } +}; + +} // namespace mm diff --git a/src/light/layouts/Layouts.h b/src/light/layouts/Layouts.h index 2c869335..0e38544e 100644 --- a/src/light/layouts/Layouts.h +++ b/src/light/layouts/Layouts.h @@ -1,5 +1,6 @@ #pragma once +#include "light/layouts/LayoutBase.h" // LayoutBase + CoordCallback (split out; reachable via this header) #include "core/MoonModule.h" #include "light/light_types.h" // lengthType, nrOfLightsType @@ -7,25 +8,6 @@ namespace mm { -/// Callback for layout coordinate iteration — a layout walks its positions and -/// invokes this per light with the physical index and (x,y,z). Owned by -/// LayoutBase: it's the signature of forEachCoord, which every layout overrides. -using CoordCallback = void(*)(void* ctx, nrOfLightsType idx, lengthType x, lengthType y, lengthType z); - -/// Base for one layout child of the `Layouts` container. A concrete layout -/// (grid, sphere shell, …) implements `lightCount` and `forEachCoord` directly — -/// no wrapper. Every layout control changes the physical light count, so any -/// control change triggers the pipeline-wide rebuild. -class LayoutBase : public MoonModule { -public: - ModuleRole role() const override { return ModuleRole::Layout; } - virtual nrOfLightsType lightCount() const = 0; - virtual void forEachCoord(CoordCallback cb, void* ctx) const = 0; - - /// Every layout control (grid width/height/depth, …) changes the physical light - /// count and therefore needs the pipeline-wide rebuild. See MoonModule::onUpdate. - bool controlChangeTriggersBuildState(const char* /*controlName*/) const override { return true; } -}; /// Top-level container for one or more `LayoutBase` children — it defines the physical light topology of the installation and is shared by every Layer in the `Layers` container (one Layouts describing the physical setup, multiple Layers render into it). /// diff --git a/src/light/layouts/PanelLayout.h b/src/light/layouts/PanelLayout.h index fdc7b3d7..be9a3a4c 100644 --- a/src/light/layouts/PanelLayout.h +++ b/src/light/layouts/PanelLayout.h @@ -2,7 +2,7 @@ #include #include -#include "light/layouts/Layouts.h" +#include "light/layouts/LayoutBase.h" #include "light/light_types.h" // lengthType, nrOfLightsType namespace mm { diff --git a/src/light/layouts/PanelsLayout.h b/src/light/layouts/PanelsLayout.h index 17ae5268..3e4b6b37 100644 --- a/src/light/layouts/PanelsLayout.h +++ b/src/light/layouts/PanelsLayout.h @@ -2,7 +2,7 @@ #include #include -#include "light/layouts/Layouts.h" +#include "light/layouts/LayoutBase.h" #include "light/light_types.h" // lengthType, nrOfLightsType namespace mm { diff --git a/src/light/layouts/RingLayout.h b/src/light/layouts/RingLayout.h index 4af4e0d7..63606ee0 100644 --- a/src/light/layouts/RingLayout.h +++ b/src/light/layouts/RingLayout.h @@ -3,7 +3,7 @@ #include // sinf, cosf, fmodf #include #include // std::numbers::pi_v — portable pi (M_PI is a non-standard extension) -#include "light/layouts/Layouts.h" +#include "light/layouts/LayoutBase.h" #include "light/light_types.h" // lengthType, nrOfLightsType namespace mm { diff --git a/src/light/layouts/Rings241Layout.h b/src/light/layouts/Rings241Layout.h index 97220e20..882299ca 100644 --- a/src/light/layouts/Rings241Layout.h +++ b/src/light/layouts/Rings241Layout.h @@ -2,7 +2,7 @@ #include #include // std::sin, std::cos on float — cold build-path ring trig -#include "light/layouts/Layouts.h" +#include "light/layouts/LayoutBase.h" #include "light/light_types.h" // lengthType, nrOfLightsType namespace mm { diff --git a/src/light/layouts/SingleColumnLayout.h b/src/light/layouts/SingleColumnLayout.h index b0bbad52..37b910f8 100644 --- a/src/light/layouts/SingleColumnLayout.h +++ b/src/light/layouts/SingleColumnLayout.h @@ -2,7 +2,7 @@ #include #include -#include "light/layouts/Layouts.h" +#include "light/layouts/LayoutBase.h" #include "light/light_types.h" // lengthType, nrOfLightsType // Prior art: MoonLight SingleColumnLayout (MoonModules/MoonLight, layout nodes). diff --git a/src/light/layouts/SingleRowLayout.h b/src/light/layouts/SingleRowLayout.h index 744a2aea..d66d6ac1 100644 --- a/src/light/layouts/SingleRowLayout.h +++ b/src/light/layouts/SingleRowLayout.h @@ -1,7 +1,7 @@ #pragma once #include -#include "light/layouts/Layouts.h" +#include "light/layouts/LayoutBase.h" #include "light/light_types.h" // lengthType, nrOfLightsType namespace mm { diff --git a/src/light/layouts/SphereLayout.h b/src/light/layouts/SphereLayout.h index 0c85552e..971c7603 100644 --- a/src/light/layouts/SphereLayout.h +++ b/src/light/layouts/SphereLayout.h @@ -1,7 +1,7 @@ #pragma once #include -#include "light/layouts/Layouts.h" +#include "light/layouts/LayoutBase.h" #include "light/light_types.h" // lengthType, nrOfLightsType namespace mm { diff --git a/src/light/layouts/SpiralLayout.h b/src/light/layouts/SpiralLayout.h index e574bee9..5052de9a 100644 --- a/src/light/layouts/SpiralLayout.h +++ b/src/light/layouts/SpiralLayout.h @@ -3,7 +3,7 @@ #include // sinf, cosf #include #include // std::numeric_limits (lightCount clamp, matches GridLayout) -#include "light/layouts/Layouts.h" +#include "light/layouts/LayoutBase.h" #include "light/light_types.h" // lengthType, nrOfLightsType namespace mm { diff --git a/src/light/layouts/TorontoBarGourdsLayout.h b/src/light/layouts/TorontoBarGourdsLayout.h index 0ab604d1..098bcac4 100644 --- a/src/light/layouts/TorontoBarGourdsLayout.h +++ b/src/light/layouts/TorontoBarGourdsLayout.h @@ -1,7 +1,7 @@ #pragma once #include -#include "light/layouts/Layouts.h" +#include "light/layouts/LayoutBase.h" #include "light/light_types.h" // lengthType, nrOfLightsType, Coord3D namespace mm { diff --git a/src/light/layouts/TubesLayout.h b/src/light/layouts/TubesLayout.h index fe476f94..e6c43434 100644 --- a/src/light/layouts/TubesLayout.h +++ b/src/light/layouts/TubesLayout.h @@ -2,7 +2,7 @@ #include #include -#include "light/layouts/Layouts.h" +#include "light/layouts/LayoutBase.h" #include "light/light_types.h" // lengthType, nrOfLightsType namespace mm { diff --git a/src/light/layouts/WheelLayout.h b/src/light/layouts/WheelLayout.h index 90c2c598..da89e814 100644 --- a/src/light/layouts/WheelLayout.h +++ b/src/light/layouts/WheelLayout.h @@ -1,7 +1,7 @@ #pragma once #include -#include "light/layouts/Layouts.h" +#include "light/layouts/LayoutBase.h" #include "light/light_types.h" // lengthType, nrOfLightsType #include "core/math8.h" // sin8, cos8 — integer trig LUT diff --git a/src/light/modifiers/RippleXZModifier.h b/src/light/modifiers/RippleXZModifier.h index d9348652..69740e9b 100644 --- a/src/light/modifiers/RippleXZModifier.h +++ b/src/light/modifiers/RippleXZModifier.h @@ -22,7 +22,8 @@ namespace mm { // propagation is dropped here (the geometry — the axis collapse — is preserved // exactly). Defaults match MoonLight: shrink=true, towardsX=true, towardsZ=false. // Author: @Troy (WLEDMM Art-Net) — https://github.com/MoonModules/MoonLight/blob/main/src/MoonLight/Nodes/Modifiers/M_MoonLight.h -/// Modifier collapsing an axis so an effect ripples along the rest. +/// Modifier that collapses one axis of the box to a single plane, folding every coordinate on that +/// axis to 0 (the static geometry of MoonLight's RippleXZ; its buffer-shift ripple wave is omitted). class RippleXZModifier : public ModifierBase { public: const char* tags() const override { return "💫"; } // MoonLight origin diff --git a/src/main.cpp b/src/main.cpp index 11410757..8120d690 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -66,6 +66,7 @@ #include "light/modifiers/BlockModifier.h" #include "light/modifiers/PinwheelModifier.h" #include "light/modifiers/RippleXZModifier.h" +#include "light/drivers/Drivers.h" // the Drivers container (registered + wired below); each driver header now pulls only DriverBase #include "light/drivers/HueDriver.h" #include "light/drivers/NetworkSendDriver.h" #include "light/drivers/PreviewDriver.h" diff --git a/test/unit/light/unit_BlurzEffect.cpp b/test/unit/light/unit_BlurzEffect.cpp index ffb0f437..51877205 100644 --- a/test/unit/light/unit_BlurzEffect.cpp +++ b/test/unit/light/unit_BlurzEffect.cpp @@ -2,6 +2,7 @@ // @also AudioModule #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/BlurzEffect.h" #include "light/layouts/GridLayout.h" #include "core/AudioModule.h" diff --git a/test/unit/light/unit_BouncingBallsEffect.cpp b/test/unit/light/unit_BouncingBallsEffect.cpp index 07c89cdc..a4fdf22e 100644 --- a/test/unit/light/unit_BouncingBallsEffect.cpp +++ b/test/unit/light/unit_BouncingBallsEffect.cpp @@ -1,6 +1,7 @@ // @module BouncingBallsEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/BouncingBallsEffect.h" #include "light/layouts/GridLayout.h" #include "platform/platform.h" // setTestNowMs — freeze millis() for a deterministic first frame diff --git a/test/unit/light/unit_DistortionWavesEffect.cpp b/test/unit/light/unit_DistortionWavesEffect.cpp index 2b618b48..865cf692 100644 --- a/test/unit/light/unit_DistortionWavesEffect.cpp +++ b/test/unit/light/unit_DistortionWavesEffect.cpp @@ -1,6 +1,7 @@ // @module DistortionWavesEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/DistortionWavesEffect.h" #include "light/layouts/GridLayout.h" diff --git a/test/unit/light/unit_FireEffect.cpp b/test/unit/light/unit_FireEffect.cpp index 3eaff016..9c2549f0 100644 --- a/test/unit/light/unit_FireEffect.cpp +++ b/test/unit/light/unit_FireEffect.cpp @@ -1,6 +1,7 @@ // @module FireEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/FireEffect.h" #include "light/layouts/GridLayout.h" diff --git a/test/unit/light/unit_FixedRectangleEffect.cpp b/test/unit/light/unit_FixedRectangleEffect.cpp index 05171467..2c912a03 100644 --- a/test/unit/light/unit_FixedRectangleEffect.cpp +++ b/test/unit/light/unit_FixedRectangleEffect.cpp @@ -1,6 +1,7 @@ // @module FixedRectangleEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/FixedRectangleEffect.h" #include "light/layouts/GridLayout.h" diff --git a/test/unit/light/unit_FreqMatrixEffect.cpp b/test/unit/light/unit_FreqMatrixEffect.cpp index 4dfbe4af..533efdbe 100644 --- a/test/unit/light/unit_FreqMatrixEffect.cpp +++ b/test/unit/light/unit_FreqMatrixEffect.cpp @@ -2,6 +2,7 @@ // @also AudioModule #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/FreqMatrixEffect.h" #include "light/layouts/GridLayout.h" #include "core/AudioModule.h" diff --git a/test/unit/light/unit_FreqSawsEffect.cpp b/test/unit/light/unit_FreqSawsEffect.cpp index e491d909..28515e70 100644 --- a/test/unit/light/unit_FreqSawsEffect.cpp +++ b/test/unit/light/unit_FreqSawsEffect.cpp @@ -2,6 +2,7 @@ // @also AudioModule #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/FreqSawsEffect.h" #include "light/layouts/GridLayout.h" #include "core/AudioModule.h" diff --git a/test/unit/light/unit_GEQ3DEffect.cpp b/test/unit/light/unit_GEQ3DEffect.cpp index e6b5b87a..83167d35 100644 --- a/test/unit/light/unit_GEQ3DEffect.cpp +++ b/test/unit/light/unit_GEQ3DEffect.cpp @@ -2,6 +2,7 @@ // @also AudioModule #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/GEQ3DEffect.h" #include "light/layouts/GridLayout.h" #include "core/AudioModule.h" diff --git a/test/unit/light/unit_GEQEffect.cpp b/test/unit/light/unit_GEQEffect.cpp index 842732c0..b5004dbd 100644 --- a/test/unit/light/unit_GEQEffect.cpp +++ b/test/unit/light/unit_GEQEffect.cpp @@ -2,6 +2,7 @@ // @also AudioModule #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/GEQEffect.h" #include "light/layouts/GridLayout.h" #include "core/AudioModule.h" diff --git a/test/unit/light/unit_GridLayout.cpp b/test/unit/light/unit_GridLayout.cpp index 243ad50b..c21ea438 100644 --- a/test/unit/light/unit_GridLayout.cpp +++ b/test/unit/light/unit_GridLayout.cpp @@ -2,6 +2,7 @@ // @also Layouts #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/layouts/GridLayout.h" #include diff --git a/test/unit/light/unit_Layer_extrude.cpp b/test/unit/light/unit_Layer_extrude.cpp index 7f45c269..77075dfd 100644 --- a/test/unit/light/unit_Layer_extrude.cpp +++ b/test/unit/light/unit_Layer_extrude.cpp @@ -2,6 +2,7 @@ // @also RainbowEffect, NoiseEffect, PlasmaEffect, SpiralEffect, FireEffect, ParticlesEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/layers/Layer.h" #include "light/layouts/GridLayout.h" #include "light/effects/RainbowEffect.h" diff --git a/test/unit/light/unit_Layers_container.cpp b/test/unit/light/unit_Layers_container.cpp index 06e4de0a..1331c3c5 100644 --- a/test/unit/light/unit_Layers_container.cpp +++ b/test/unit/light/unit_Layers_container.cpp @@ -2,6 +2,7 @@ // @also Layer #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/layers/Layers.h" #include "light/layouts/GridLayout.h" #include "light/effects/RainbowEffect.h" diff --git a/test/unit/light/unit_LissajousEffect.cpp b/test/unit/light/unit_LissajousEffect.cpp index 426acf4f..21896347 100644 --- a/test/unit/light/unit_LissajousEffect.cpp +++ b/test/unit/light/unit_LissajousEffect.cpp @@ -1,6 +1,7 @@ // @module LissajousEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/LissajousEffect.h" #include "light/layouts/GridLayout.h" diff --git a/test/unit/light/unit_MetaballsEffect.cpp b/test/unit/light/unit_MetaballsEffect.cpp index a2db3577..1aa0df1e 100644 --- a/test/unit/light/unit_MetaballsEffect.cpp +++ b/test/unit/light/unit_MetaballsEffect.cpp @@ -1,6 +1,7 @@ // @module MetaballsEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/MetaballsEffect.h" #include "light/layouts/GridLayout.h" diff --git a/test/unit/light/unit_NetworkReceiveEffect.cpp b/test/unit/light/unit_NetworkReceiveEffect.cpp index 4fd85109..52ab2977 100644 --- a/test/unit/light/unit_NetworkReceiveEffect.cpp +++ b/test/unit/light/unit_NetworkReceiveEffect.cpp @@ -2,6 +2,7 @@ // @also NetworkSendDriver #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/ArtNetPacket.h" #include "light/effects/NetworkReceiveEffect.h" #include "light/layouts/GridLayout.h" diff --git a/test/unit/light/unit_NetworkReceiveEffect_protocols.cpp b/test/unit/light/unit_NetworkReceiveEffect_protocols.cpp index 84362993..79ca02aa 100644 --- a/test/unit/light/unit_NetworkReceiveEffect_protocols.cpp +++ b/test/unit/light/unit_NetworkReceiveEffect_protocols.cpp @@ -2,6 +2,7 @@ // @also NetworkSendDriver #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/ArtNetPacket.h" #include "light/DdpPacket.h" #include "light/E131Packet.h" diff --git a/test/unit/light/unit_Noise2DEffect.cpp b/test/unit/light/unit_Noise2DEffect.cpp index 1dfaf085..212192c5 100644 --- a/test/unit/light/unit_Noise2DEffect.cpp +++ b/test/unit/light/unit_Noise2DEffect.cpp @@ -1,6 +1,7 @@ // @module Noise2DEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/Noise2DEffect.h" #include "light/layouts/GridLayout.h" diff --git a/test/unit/light/unit_NoiseEffect.cpp b/test/unit/light/unit_NoiseEffect.cpp index 6223b73b..5fb063e4 100644 --- a/test/unit/light/unit_NoiseEffect.cpp +++ b/test/unit/light/unit_NoiseEffect.cpp @@ -2,6 +2,7 @@ // @also PlasmaEffect, RainbowEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/NoiseEffect.h" #include "light/effects/PlasmaEffect.h" #include "light/effects/RainbowEffect.h" diff --git a/test/unit/light/unit_NoiseMeterEffect.cpp b/test/unit/light/unit_NoiseMeterEffect.cpp index c1483c93..d2286d59 100644 --- a/test/unit/light/unit_NoiseMeterEffect.cpp +++ b/test/unit/light/unit_NoiseMeterEffect.cpp @@ -2,6 +2,7 @@ // @also AudioModule #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/NoiseMeterEffect.h" #include "light/layouts/GridLayout.h" #include "core/AudioModule.h" diff --git a/test/unit/light/unit_PaintBrushEffect.cpp b/test/unit/light/unit_PaintBrushEffect.cpp index 4b883cf9..ee08d15b 100644 --- a/test/unit/light/unit_PaintBrushEffect.cpp +++ b/test/unit/light/unit_PaintBrushEffect.cpp @@ -2,6 +2,7 @@ // @also AudioModule #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/PaintBrushEffect.h" #include "light/layouts/GridLayout.h" #include "core/AudioModule.h" diff --git a/test/unit/light/unit_ParticlesEffect.cpp b/test/unit/light/unit_ParticlesEffect.cpp index b368d8c6..61c3bab0 100644 --- a/test/unit/light/unit_ParticlesEffect.cpp +++ b/test/unit/light/unit_ParticlesEffect.cpp @@ -1,6 +1,7 @@ // @module ParticlesEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/ParticlesEffect.h" #include "light/layouts/GridLayout.h" diff --git a/test/unit/light/unit_PlasmaEffect.cpp b/test/unit/light/unit_PlasmaEffect.cpp index 2bae1217..9c98691d 100644 --- a/test/unit/light/unit_PlasmaEffect.cpp +++ b/test/unit/light/unit_PlasmaEffect.cpp @@ -2,6 +2,7 @@ // @also NoiseEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/PlasmaEffect.h" #include "light/effects/NoiseEffect.h" #include "light/layouts/GridLayout.h" diff --git a/test/unit/light/unit_PraxisEffect.cpp b/test/unit/light/unit_PraxisEffect.cpp index d2d4d9fe..8484c853 100644 --- a/test/unit/light/unit_PraxisEffect.cpp +++ b/test/unit/light/unit_PraxisEffect.cpp @@ -1,6 +1,7 @@ // @module PraxisEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/PraxisEffect.h" #include "light/layouts/GridLayout.h" diff --git a/test/unit/light/unit_RainbowEffect.cpp b/test/unit/light/unit_RainbowEffect.cpp index ecad8e78..52e1d690 100644 --- a/test/unit/light/unit_RainbowEffect.cpp +++ b/test/unit/light/unit_RainbowEffect.cpp @@ -1,6 +1,7 @@ // @module RainbowEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/RainbowEffect.h" #include "light/layouts/GridLayout.h" diff --git a/test/unit/light/unit_RandomEffect.cpp b/test/unit/light/unit_RandomEffect.cpp index a26f8482..43f9b69a 100644 --- a/test/unit/light/unit_RandomEffect.cpp +++ b/test/unit/light/unit_RandomEffect.cpp @@ -1,6 +1,7 @@ // @module RandomEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/RandomEffect.h" #include "light/layouts/GridLayout.h" diff --git a/test/unit/light/unit_RubiksCubeEffect.cpp b/test/unit/light/unit_RubiksCubeEffect.cpp index e759af37..ac8c564c 100644 --- a/test/unit/light/unit_RubiksCubeEffect.cpp +++ b/test/unit/light/unit_RubiksCubeEffect.cpp @@ -1,6 +1,7 @@ // @module RubiksCubeEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/RubiksCubeEffect.h" #include "light/layouts/GridLayout.h" #include "platform/platform.h" // setTestNowMs — freeze millis() so the first frame runs init() deterministically diff --git a/test/unit/light/unit_SineEffect.cpp b/test/unit/light/unit_SineEffect.cpp index 49eb9de5..48375fcc 100644 --- a/test/unit/light/unit_SineEffect.cpp +++ b/test/unit/light/unit_SineEffect.cpp @@ -1,6 +1,7 @@ // @module SineEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/SineEffect.h" #include "light/layouts/GridLayout.h" diff --git a/test/unit/light/unit_SolidEffect.cpp b/test/unit/light/unit_SolidEffect.cpp index 7816c983..889c469e 100644 --- a/test/unit/light/unit_SolidEffect.cpp +++ b/test/unit/light/unit_SolidEffect.cpp @@ -1,6 +1,7 @@ // @module SolidEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/SolidEffect.h" #include "light/layouts/GridLayout.h" diff --git a/test/unit/light/unit_SphereMoveEffect.cpp b/test/unit/light/unit_SphereMoveEffect.cpp index fa6fde03..2129ccd6 100644 --- a/test/unit/light/unit_SphereMoveEffect.cpp +++ b/test/unit/light/unit_SphereMoveEffect.cpp @@ -1,6 +1,7 @@ // @module SphereMoveEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/SphereMoveEffect.h" #include "light/layouts/GridLayout.h" diff --git a/test/unit/light/unit_StarFieldEffect.cpp b/test/unit/light/unit_StarFieldEffect.cpp index 4861a44f..10f4da03 100644 --- a/test/unit/light/unit_StarFieldEffect.cpp +++ b/test/unit/light/unit_StarFieldEffect.cpp @@ -1,6 +1,7 @@ // @module StarFieldEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/StarFieldEffect.h" #include "light/layouts/GridLayout.h" #include "platform/platform.h" // setTestNowMs — drive the throttle past its interval deterministically diff --git a/test/unit/light/unit_StarSkyEffect.cpp b/test/unit/light/unit_StarSkyEffect.cpp index 5f5530a9..900661d1 100644 --- a/test/unit/light/unit_StarSkyEffect.cpp +++ b/test/unit/light/unit_StarSkyEffect.cpp @@ -1,6 +1,7 @@ // @module StarSkyEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/StarSkyEffect.h" #include "light/layouts/GridLayout.h" diff --git a/test/unit/light/unit_TetrixEffect.cpp b/test/unit/light/unit_TetrixEffect.cpp index e96c377a..d84df020 100644 --- a/test/unit/light/unit_TetrixEffect.cpp +++ b/test/unit/light/unit_TetrixEffect.cpp @@ -1,6 +1,7 @@ // @module TetrixEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/TetrixEffect.h" #include "light/layouts/GridLayout.h" #include "platform/platform.h" // setTestNowMs — deterministic virtual time diff --git a/test/unit/light/unit_effects_render.cpp b/test/unit/light/unit_effects_render.cpp index 5f82374c..ace12a94 100644 --- a/test/unit/light/unit_effects_render.cpp +++ b/test/unit/light/unit_effects_render.cpp @@ -2,6 +2,7 @@ // @also RingsEffect, RipplesEffect, LavaLampEffect #include "doctest.h" +#include "light/layouts/Layouts.h" #include "light/effects/SpiralEffect.h" #include "light/effects/RingsEffect.h" #include "light/effects/RipplesEffect.h" diff --git a/web-installer/README.md b/web-installer/README.md index d3d5aa4b..dcff11c2 100644 --- a/web-installer/README.md +++ b/web-installer/README.md @@ -54,7 +54,7 @@ its `supported`/`planned` capability chips. It reuses the installer's flash mach shared [`install-picker.js`](../../src/ui/install-picker.js) through a hidden board `` underneath stays the source of truth) | sends immediately on change | none | -| `select` | dropdown | sends immediately; server may rebuild controls (dynamic onBuildControls) | none | -| `text` | text input | sends debounced | 500ms | -| `password` | password input | masked; hold-to-peek button reveals the stored value | 500ms | -| `display` (read-only) | static text | WS push updates value in place | n/a | -| `display-int` (read-only int + unit) | formatted text (`-58 dBm`) | WS push updates value; the unit suffix is set device-side at `addReadOnlyInt` time and carried in the descriptor's `aux` slot, not in a per-control string buffer | n/a | -| `time` (read-only seconds) | formatted text (`1d 4h 27m 13s`) | WS push updates | n/a | -| `progress` | bar + numeric `X / max` | WS push updates value | n/a | -| `ipv4` | text input (dotted-quad) | sends on change; server validates (`parseDottedQuad`) and rejects malformed values with 400. 4-byte octet storage device-side instead of a 16-char string. | n/a | -| `button` | clickable button | sends value=1 on click | none | - -**Reset-to-default button (↺).** Appears next to controls whose default is known. Defaults are captured from a fresh probe instance per type (factory's probe — no per-control boilerplate) and emitted in `/api/types`. The button is dim/inactive when value equals default, bright/clickable otherwise. Clicking sends the default value. - -**Hidden controls.** When the engine returns `hidden: true` on a control descriptor, the UI skips rendering it. Used for conditional controls like NetworkModule's static-IP fields under DHCP. - -**Password controls are obfuscated, not encrypted.** A `password` control (`ControlType::Password`) is serialized in `/api/state` as `{"type":"password","value":""}` where `` is the password XOR'd with a fixed key then base64-encoded. The UI decodes it (`decodePassword()` in `app.js`) so the input holds the real value — masked by the password field, revealed by hold-to-peek. This is a **first line of defence only**: the XOR key is a shared constant present in both the firmware and `app.js`, so the obfuscation is trivially reversible by anyone who looks. It stops the password being plainly readable in a raw `curl /api/state`; it is not real protection against a determined reader. Writes (`/api/control`) set the value like any text control. - -## Type picker - -The same picker serves two purposes: **add** (triggered by `+ add child`) and **replace** (triggered by the ✎ button on a card). Renders inline inside the card (not a modal). - -- **Role filter**: in add mode, filters to the parent's `acceptsChildRoles` (the device declares it per-type in `/api/types` — the UI hardcodes no container→role mapping). In replace mode, filters to the target module's own role. -- **Emoji tag chips**: a row of toggle chips above the list, one per distinct emoji across the role-filtered types. Each type's emoji set has three sources, in this order: a **role chip** (derived in the UI from `role`), a **dimensional chip** (derived in the UI from `dim` when the type declares one — 1/2/3 means 1D/2D/3D), and the curated **`tags`** string from `/api/types` (the module's `tags()` — a flash string literal). The UI treats `tags` as opaque: it splits the string into grapheme clusters and renders each as a chip. The domain that owns this UI assigns each emoji's meaning — see the domain's own architecture page for the assignments (e.g. [architecture.md § Web UI](../../../architecture.md#web-ui) for the role / dim / origin / creator / audio / moving-head assignments used by the light domain shipped today). Toggling chips narrows the list with **AND** logic: a type shows only if it carries every active chip. Each list row shows the type's emoji before its name. -- **Search box** with substring match on type name. Search and chips combine (both must match). -- **Keyboard nav**: type to filter, ↓ to enter list, ↑↓ to move, Enter to confirm, Esc to cancel. -- **Confirm / Cancel** action buttons at the bottom (the confirm button reads `create` or `replace` per mode). Double-click a row to confirm immediately. - -## Module hierarchy - -Each project pins a fixed top-level shape in its `main.cpp` — the side nav lists those roots in registration order, and the UI does **not** allow root reorder. System modules (Filesystem, System, Network, HttpServer) are always present; the domain modules (the actual data-flow pipeline) sit alongside them. For the light-domain shape see [architecture.md § Web UI](../../../architecture.md#web-ui). - -Child reorder *within* a parent (a child within a container) is supported via HTML5 drag-and-drop (desktop and mobile), which calls `POST /api/modules//move {to:N}`. - -## Communication - -### WebSocket (primary, for state updates) - -- URL: `ws:///ws` (same port as HTTP) -- Server pushes full state snapshot as JSON ~1/sec (same shape as `GET /api/state`). The JSON is built through a streaming sink with no fixed-size buffer — a module tree of any size serializes without truncation -- Server may push **binary frames** on the same socket. The first byte selects the frame type and dispatches to a domain renderer; the rest of the frame is the domain's choice. The UI ignores types it doesn't recognise. See [Domain preview channel](#domain-preview-channel) for the dispatching contract and the domain's own architecture page for the payload (e.g. [architecture.md § Web UI](../../../architecture.md#web-ui)) -- Client sends `"ping"` every 25s as keepalive (Safari kills idle sockets otherwise) -- Auto-reconnect on close with exponential backoff (500ms → 5s ceiling) -- Pause on `document.visibilityState === 'hidden'`; resume on `pageshow` (Safari bfcache survival) - -### REST API (for mutations and initial state) - -The full endpoint list, request/response shapes, and field-level notes (including the `/api/types` fields the type picker reads and the `userEditable` flag the card actions read) live in **[HttpServerModule § REST API](HttpServerModule.md#rest-api)** — the server owns that contract. The UI consumes it as documented there; `/api/control` is `{module, control, value}`. `/api/state` streams with no fixed-size buffer, so a tree of any size serializes without truncation — the property the no-rebuild contract below relies on. - -### Static assets - -- `GET /` → `index.html` -- `GET /app.js`, `GET /style.css` -- `GET /moonlight-logo.png` → the MoonLight logo (`image/png`), used in the header and as the favicon -- `Cache-Control: no-cache` on all UI responses (live development) -- ESP32: served from C arrays in `ui_embedded.h` regenerated at build time -- Desktop: served from disk (`uiPath_`) - -## Styling - -- **Dark theme (default)**: background `#1a1a2e`, foreground `#e0e0e0`, accent `#a78bfa` (purple) -- **Light theme**: `[data-theme="light"]` on `` swaps a curated set of overrides -- **System UI font stack** — `system-ui, sans-serif` — not monospace. Numbers use `font-variant-numeric: tabular-nums` so digits don't dance. -- **Module nesting** by progressively lighter card backgrounds (depth 0 / 1 / 2 each one step lighter) -- **Responsive breakpoint** at 820px (padding adjusts) -- **Color semantics** consistent across the app: - - Green (`#22c55e`/`#6ee7b7`) — connected, ok, pass, success - - Red (`#f87171`) — error, fail, crashed, delete - - Purple (`#a78bfa`/`#c4b5fd`) — accent, brand, active, value - - Gray (`#6b7280`/`#9ca3af`/`#4b5563`) — secondary text, muted - -## Domain preview channel - -The UI dedicates a binary slot on its WebSocket — separate from the JSON state updates — for a domain-specific preview frame. The engine pushes one frame per render; the UI hands it to a domain renderer. - -Generic shape: `[type-byte] [domain-specific header] [payload]`. The first byte identifies the frame type and selects the renderer the UI dispatches to; everything after is the domain's choice. - -- The canvas is sticky just below the status bar and scroll-shrinks 0→50% over 300px of page scroll -- `width: 100%` + `aspect-ratio: 1 / 1` derives the height from the column width; `max-height: 50vh` caps it so the canvas never dominates the viewport -- The last received frame is cached so camera gestures (orbit, pan, zoom) redraw instantly without waiting for a new frame -- `touch-action: none` so single- and multi-finger gestures don't trigger native page scroll or pinch-zoom -- WebGL clear color is `(0, 0, 0, 0)` — transparent canvas blends into either theme without per-frame color work - -For the light-domain renderer (WebGL point cloud, frame format, orbit camera, downsampling) see [architecture.md § Web UI](../../../architecture.md#web-ui). - -## State updates — the no-rebuild contract - -When a WS state-snapshot arrives: - -1. For each module in the payload: - - If `controls.deviceName` exists, update the status-bar device name and `document.title` - - For each `controls[key]`: - - Look up the matching ``/``/``/`` is the source of truth) | sends on change | none | +| `select` | dropdown | sends immediately; server may rebuild controls (dynamic `onBuildControls`) | none | +| `text` | text input | sends debounced | 500 ms | +| `password` | password input | masked; hold-to-peek reveals the stored value | 500 ms | +| `display` (read-only) | static text | WS push updates in place | n/a | +| `display-int` (read-only int + unit) | formatted text (`-58 dBm`) | unit suffix set device-side at `addReadOnlyInt` time, carried in the descriptor's `aux` slot | n/a | +| `time` (read-only seconds) | formatted text (`1d 4h 27m 13s`) | WS push updates | n/a | +| `progress` | bar + numeric `X / max` | WS push updates | n/a | +| `ipv4` | text input (dotted-quad) | server validates (`parseDottedQuad`), 400 on malformed; stored as 4 octets device-side | n/a | +| `button` | clickable button | sends value = 1 on click | none | + +- **Reset-to-default (↺)** appears next to controls whose default is known (captured from a fresh + probe instance per type, emitted in `/api/types`); dim when value == default, clicking sends the + default. +- **Hidden controls.** `hidden: true` on a descriptor → the UI skips rendering it (conditional + controls like NetworkModule's static-IP fields under DHCP). +- **Password controls are obfuscated, not encrypted.** A `password` control serializes in `/api/state` + as `{"type":"password","value":""}` where `` is the password XOR'd with a fixed key + then base64-encoded; the UI decodes it (`decodePassword()`) so the input holds the real value (masked, + hold-to-peek). A **first line of defence only**: the XOR key is a shared constant in both the firmware + and `app.js`, so it's trivially reversible — it stops the password being plainly readable in a raw + `curl /api/state`, not a determined reader. + +## Type picker + +One picker serves **add** (`+ add child`) and **replace** (the ✎ button), rendered inline in the card +(not a modal). + +- **Role filter.** Add mode filters to the parent's `acceptsChildRoles` (declared per-type in + `/api/types` — the UI hardcodes no container→role map); replace mode filters to the target's own role. +- **Emoji tag chips.** A row of toggle chips above the list, one per distinct emoji across the filtered + types (sources + meanings: [architecture.md § Tag emoji legend](../../architecture.md#tag-emoji-legend)). + The UI treats `tags` as opaque — splits it into grapheme clusters, one chip each. Toggling narrows + with **AND** logic (a type shows only if it carries every active chip). +- **Search box** — substring match on type name; combines with chips (both must match). +- **Keyboard nav** — type to filter, ↓ to enter list, ↑↓ to move, Enter to confirm, Esc to cancel. +- **Confirm / Cancel** at the bottom (confirm reads `create` or `replace`); double-click a row to + confirm immediately. + +## Styling + +- **Dark theme (default):** background `#1a1a2e`, foreground `#e0e0e0`, accent `#a78bfa` (purple). +- **Light theme:** `[data-theme="light"]` on `` swaps a curated set of overrides. +- **System UI font stack** (`system-ui, sans-serif`, not monospace); numbers use + `font-variant-numeric: tabular-nums` so digits don't dance. +- **Module nesting** by progressively lighter card backgrounds (depth 0 / 1 / 2). +- **Responsive breakpoint** at 820 px. +- **Colour semantics** consistent across the app: green (`#22c55e`/`#6ee7b7`) = connected/ok/pass; red + (`#f87171`) = error/fail/crashed/delete; purple (`#a78bfa`/`#c4b5fd`) = accent/brand/active/value; + gray (`#6b7280`/`#9ca3af`/`#4b5563`) = secondary/muted. + +## Domain preview channel + +The UI dedicates a binary slot on its WebSocket — separate from the JSON state updates — for a +domain-specific preview frame; the engine pushes one per render and the UI hands it to a domain +renderer. Generic shape: `[type-byte] [domain header] [payload]` — the first byte selects the +renderer, everything after is the domain's choice; the UI ignores types it doesn't recognise. + +- The canvas is sticky just below the status bar, scroll-shrinks 0→50 % over 300 px. +- `width: 100%` + `aspect-ratio: 1 / 1` derives the height from the column width; `max-height: 50vh` + caps it. +- The last received frame is cached so camera gestures (orbit/pan/zoom) redraw instantly without a new + frame; `touch-action: none` keeps gestures off native scroll/zoom. +- WebGL clear color `(0, 0, 0, 0)` — a transparent canvas blends into either theme with no per-frame + color work. + +The light-domain renderer (WebGL point cloud, the `0x03`/`0x02` frame format, orbit camera, +downsampling) is [architecture.md § Web UI](../../architecture.md#web-ui) / +[PreviewDriver](../light/moxygen/PreviewDriver.md). + +## State updates — the no-rebuild contract + +When a WS state snapshot arrives, for each module in the payload: +- If `controls.deviceName` exists, update the status-bar device name and `document.title`. +- For each `controls[key]`: look up the matching ``/``/``/`

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 literal 0 HcmV?d00001 diff --git a/docs/assets/light/drivers/NetworkSendDriver.png b/docs/assets/light/drivers/NetworkSendDriver.png index 8e7a2fa80ef89fac1c775864fb5ac5390e5061bc..364e9da1d466c2104b75c1e6dc4080bbe897e4c9 100644 GIT binary patch literal 16549 zcmbWfbyS;Ox9*J;cXtV1BuLR>MT%1>65Or06pDLrEz;mp+^x8~OK~ag?rtZ~^U8kD zKKmQr8Rs8HSma);B1P?Ksw_SSg?#cY1LuE|Kbl9B%T~p9il*h@AxeCW;$Z?r#@1+ ze#NF!>qY}=IC7}X!T_PEsyPwGuU~oZMkyHuUKufFwHKWh!MyXkkAsYv@$p|j#qsV! zcD+~Q$usPGKB!1gtAx@~3blm}Z{vWmtyW7xDZFIpO>*&KW|?0FNtW@&$bn{g7#{H{ z9H0Pf@ndpR8VJ@$I)k-*b%IWGU}Jis?qY78W@J(#GQhN36M#D^MF825CGh76WWgR< zN3@;924jo6`l;X!DTqks$sAbbMZE!lm1#=}b2JYIgQ_SZW)!f+k$JkTcqG&=Y&O^C z4Z^U+qfCfdBtC z-`UPinX^r8F`cw}COkgh^C3bnn}d5xjqj<=DizokS2dY?Pc20)X-F$IFHWoFa7wxD zEuW?PsPR6ik=@nP{H#;INOmBCP#W=lJ3%U_Ddky!E2 zU5L~2TDoyH(-*IjGdkAVKcj(AL&2p}DrIlF+4WynGyxHCT=T`dmf?EDKOgf|5C==x zQ1Fc$2l4B+{*KLQOtc%+z+v>7rvZ}&I`01zA|8}+Uj@iM!wEjB2w`@AFy!hHXVpdf zBd_&VTujZ0pWHY*dBZx-Qz`9_!Lv015*}W*C&D98Pt8?-It%Dc`yT1MOvswYsF*}* zl!Ku}qXi$xVbrWO+M!qZ!EHCosLH$P+yq&CtYh0r7@x~2b93|)%r@^b%kX^KA<&+MU7s4QDuWJ!|vtnaseSoSJcOr(K6qMv#8s1MAP#wzI5YP zGmxAfljyu>TcgCXBxqd+CB&^yev8xibnL{TB1ocy>x#hgeHV6g^6;igrGxb60i02U z08O+rXDpQgIAI}VlecpR%rlFn8!BjxSZ~}vh9lT5^b!pUPjGUXid((P<#~)}s|NL& zZHa6#5R4{s_6jfM`_Q$FZ-5S9OVwd)(byb+LSQv7r*u&FTH znHlXnJFiWS>FQjeg&2PV`GwK5fNP@CV*1jqzx0_MxJ#5jwmD-0Z(fQTK#sYa|-{sJa|UkyDfnJnVaOoq)Vd^CVakCNH9q z#l~s*C4M3VHF6okC3U0kef)3r`aG+`KHg*ncT zrhwCOKX~F{$NH$|wziiYmimo?9@F}pi@?{j)s^M5Uu`>ca{yH9@>Gvn{1CZl3VEG9 zPaH^8vYlrReP%<#%`sEYJOAjMsumb?n{s>8Df|DMirlkID1G6YqXn zYZ?sn5H#zv6_2!jy+6f#e%C>JWd0E|HA;t-ur;Ob3rWPl!Hn4Y)WY)-(E^bO6Y-T1 zW5exP#Qri-2%Qjx9s|g{P#$BOP;SUy9l41G)4~}NT@gi2h)rn9K`MzO2FeLj`mBpa z%b8*xt$=cM<8fY6yG?3)Oo|VA+!}F&ZOh=Wy)@#SuRI5+u^WH_Y2>!m_*oY`f& z_FbO%{je&irQOme5TleZ%Mxum5jSiL)pzmBCl!F2CqbQ%uoov#7MRK{FkBu$L>sVK>-cR#m0YT{*W^0|`MmN4 z|A3Pz&*M5e!w*Fhv_{Ao+X`O0HsHMUO21w@myZ@*86w{?$R^t&8X(U zkVHQ_81WuD$sT#SC!64^zRHo1g9=09mHb}X`@&m$iwf?`Ny&!kf*_XrRFkxKQ9=kgu;Z06@Ylaa~JF7F|D)Q_1LKp z`p)1siv*qss$YKF+qhVoK86s-SZBnVa=Z6e$Na{IbLSjY4-+9C@w56Cqg0pryKDMF zat<^m-mxai)i~Rcp zTk{sK!c`=tsR0hdnz{M!Oi~aBq8(QXNfl3Jh4elB40}cH_A#4c8r9~M*2$D?#+`z~ zNrp-iifboaB{3^{3AQs|w|Kxdp)nKl_CeH-3#)Jj|hp!2l zzOQGoi|VD3JeMAT1ZKuDeg6a8Mc14Am5lK6bQ*xvp`B=*1aSf{QcR{njl1X@V`K57 z<0#EC#&Nx6->Z?@BRFI0MZV@;x~}@Eu#)DJG+!DM*CZvz4IyPU@ju8xUamo8nd5=y zaVzJamPESOy~=SS1kiOwG$N39DZ$&PJ0kA^6RTt*$!k*){1P=K!{e^)H-GM8f?YE) zT~wFvi-ak`zkijrKVwy+kRtnLKA4^EW$XAnI^Ey&%3D0cM4iXfi(o}Gh6(rGy0i8a zz$-{2IS1Zim(Fk&7G&qUV0rsa5Rn{A!TvC)TYq(CxDKU!mvuq9;w@zxVwu-;)jf*F zHbT`ZP66-vA-t1$xW4_1eVmPGtCR66BlRp5g?Wii1dIKV&}DjSzk`E@PQf_il0K6L zff%ajkBi%cySEx>pBDHK2v%QyQ3)b`%Y5e*CYih3PbrOmAp z#k|t)VhPw@&J(#2!2UyJr=?s}6~*I%xo?}9{NwR(I@f|a05G)9pwMAlJKh=1tMis> zav#U{^pg{2CS4282BwK9TxVF`{+Z<;d)dgJ5!mL;?;~1%ZlzORw%_RC=mocj`?_X> zv~xgOmJ#zdv->VXLvl)36~)DJjkD@p94RCZZ};y;r0I@BxRFKOhon; z_d>~_L9bYWN>nXphC;~4$Z*x|k$msZ*0~!3PdDvEagfz?zp7n3+RCnKA7=0Y7xw_; zv0R;yRUK2 z;ThO!w_BM)7b`0BVFUiv+kAwpI2gj3wQ_)MF|n`wio z?tA+suv=10i_nx_fm~@7ey%M%YmqH&?7cD{i+}6JlJmwTs!Nskm_3Q7$o$pOV5Ij= z8tNIkw^vUIj!$~_Es|7;;aFM%{h1Ksl{Z|z_koQN+o?vwSn<9X(S@x+6zWZQ`NEq1 zBjn7t_2Hc*`L6>Qg}tcyepFPJ>f`ZjV9AUzyGt|pDj?z*Ct~uzdywjfQK&jAp(=jN zIMKkCQ-*11y;ge7+mQ5jel`}_;pk?t z*gBb+mdbbZgEmoKwRcCVMZnKi!|QOiH)(Mt808tN@%Zq~pTMU6n1V9#Os~N2Jg0&3 ze4kL5bkcseXWEV$S7E$M_wxNNjo6q>kH#AMQ$~qqZ}bZ?fJRNtM=OK`6P3 zsC<()KARCT{j1=Bt>cW?HgA6<{ODrjpzEEPsOVR&!wE&1X@LA@NDE27W>RT)5J%0K zGYKn9L}ynes+em{fn1`xro&E`dzB>a-X;~UDcM2QN7KX$bA8I*O)UXQtwSI& zngp>Klv;~1HXXMhH&?%-z!+oAxcTaeBCPSK_HyE64pjz_!m+6D^Kaj7iE&x?T3uE2 zO}5^dBdLZ-oG-M9Q0tw?8TMvDrmR?VbVTEr~f^->ua95<((b-pOS*`{nG5adjtt$yfZvCAk0_aetsB~^0zxRQYGl=+-DFPiX9qMn49 zVAk2oCciMNsb`=D$(1?A%P{jCbSEa(mULu|(yB^#6g*a`5($0`AssdUQmEhbWAo7V zuxHE3UD^D=&`%{NFcsmW84lp3ilVza;5o|(Gh%@cu0&!-JcJsZymK^M4unKEgJ2Rz z5!m!Kx_)8&^eF{Rosqj>Kp4h14Xb^Af~7o1k_OXZa*eA+I&pSMJ;in- z!$nUnYm^=r@xdK$*V0H=T;BcoyYD#Zh4^vW=6-WNM$+rq8qwG;`S%E6;{Z?M(cocg zsyvc+YC1IjZk_X3KC+MJ7g6zZs5b7Xfn*#97^4Tn_w8c3U4EV(>sm=zv>aA?i3%I% z^|HhA%$G)zWab$%_6N(#YKgbkZS_Qvj}|cluo@S>fpo^m@Du^;N?MMscU;`}-On~3 zSMLu))=4v9BzMv9UcEU_`LAF)lyTKM70Hp^MRu9cX@c(iI+!^YH+S{hH@UjlZyLj> zO=Orv__{E+NVFlZhmrsD?688>;9TzvI)nFkQg?M5_abdNdrGdjZ8diRS92A7a%F z+1lJyO^nMM9(6&_=YYj}3nEXd;oQ%IxjQmhu0JY*JINngIi8wK*Go&1?@8utP538Z zyv%RF`fWMZWNrwK zmowa=E;jw7#y^BIbPOSE|{>y)jam+G%#$tY_i-@%--fCm4zRS=z?r{AXH$t>9$DL8?A;VXkPwKyk&B?5-}7i5WBvspzQnNE%>?+&Co zbKg+k*Ot5e>3T1G{|vh}Wp|3khU;>wjE{+po?~T!pGKfowe@l{9-1=kpRZSROVCMT zG4O1%o%y40%5b#a4D?U1uK+kiiY}QNP+Cz}Dcvf<*oZW?Z3WI}_Vi;qF8zQr~Xr3T^FWS&iF1GZ(I^CVzamsK${EvN_r=Rdz55wqGu^sNNe;dI&+d?vuZ}=e^ z_M!Qfl`U$e4qF%ioB=qY?qcpdSIj!>rQ5Gh*-ABasu$&1Wo0~S_1XxxFnj{y_`OE_ zLYx|f*vdk7&T@ty*vDfj>wvidmu9^d%r(AmtCPz5tnkX}6Mr@aAEuUmx;qdT+!8}a zv4az>qMqwWo7Enjtvf>aF%+0qE6-b1+@%(?4p(Ng7S4FWAfT+h1kJkSp? zH>crE#Bv4FuFFt}z@IQN>xdZj)i!T^ z&({VC#)>5>!4ECSVzingR*5JDwVac0Kv-z!mVJyDf3TBkPh7FH!TGbg- zUvmDOj<=%_Lx8B0RdIzeTI{iig7T+c@rHW$8e*x}9Cr4+#bG9HLY#_+IXdCoTXxJn_06{ea=Oq4vb48hLj;4$PLH^ULcAgFJmO&SJoht1mh0PzoPaD2YEyPy12$*OCp9` zWj>qO9W9{?4}y+8uvB40E7x=YH{Vk{YwFQ}u~~>A$bcTyK6-KFDksriddTqcLK$t0 z^!FR1#b4+4t+kp=HorCzPcE*UL&9X^rCMJez6z~S3I84(3}bH>%H)2_F%d%z*0hdl zAmTa zVm-!%Cke|C|Egwfx>>nJV1~BorYwQSj!q?)I!GG}iC41m3v8kZz5os8Bm26(u}c z>60U)?y2avZ>!&HXtLLSThf-Or_7Mu68uO|q!R7XJ3+h^;q^`sXMj5KjtUDPJ!79s zD7u}^;5RrqQMdl1Wly)Me7#t2C6W7BZ;_T{Ly?5E{+LYn&8Qf|v2r~mUb{cAc!Uw# z>8?K{7=U^Y#>myL};4KA*6yXhX0v znSgBw_LiYCOw8-X<3j-fKTY~S;V`0L+(aQ`_{sZK@Hr}6l5VDcqa1C}ci6i_C}i4v zFTG$v`TqO26DN?CnTr>suv%_AquZkT(ysi)vLaQD1|l0S$84B9SOtxrz~USYY-D97-PCKU)N%H2wV1PbuBJ;*=++wN5toH)T3m^7}gl@QyqvL z{XTS@V&n8wkPrsb`CAA6epB?3e5$2^wMpGBlZmb3;-Y1lLaVIJ`-i@$eN1(@)uVIX zXc!Lm>^kEgKMx+W84M4FfNdRQC+*NF7OBczPjsIT zD|E62aW77a3d|Qz1CmOfYyMcCZ`1>@SKW8%!<)RH{My@X@5pvaHLK8pXS{K8dfO~! z$caBdLXSsrKY!}@`};Wfm!^rnp56pE(s~IIOtdQLu->Fvl~IzGp6xJ3TdqK;je4X? zYFv^Vhs`Eb%3bY)RF0n?W1~~mByEa39%+9vtjfBZ@d)iMZs*~C)(Wbw9{N!U-dVC&_V<13p zlwj|puf@d)%CXUu!Zl5cH?X{J4!F)?xM1DBGM(+qoz|ybBB~E_G^X@#m>h|nPb4Ba zB5j)*eg)*SaTRIOtx431kx#T7IEf#?d@<;k41(sT<~#Va&3w?*sAHT3$csB^doT}R zz|$-Gb(|b~o^D0D+=%coHg!|_Dx@kMAS>KM1F-2a%}-=LhPuSc?Y*-sgc#8Y08K+D zz3k)J0Ie!Dp6LCSuXIetFN1GK^X%V4RaN2+f#&0*4Gm*A*%{hMSx9#yy^AIs^)?F_ zz57U1Etpix69q3P&FolY=1b8FHo*cDHL}=N*4W=CU_v5PtK+7*y9_%PR?z3j6pX)@ zc?2S|K<|*^;UQ)o^q_7@kllJ%jmE*Ur+_dY>wvwn71u|{Ys4JySfn(?;l1V7_=1p) zB`R0@KaOv>_yFa!rh8-XjK@5i#n*zFZeJq3he_t_bsOR^@LYi?*|IMOS*5ILv*cXW{y=UNM#Tq#&~` zz^q(<^l7f$M*U!+hA7+k`C`~Nn)sYrtgx&zHJKlaTgl8WF0|5*IgiwXW0` z;U&|(5TQ>*dV3j-QxGs&U0mF>@?F9;0PY<#GkS2>;fp)KV*Ryn<^Wk7I3nx?lNwo! zbU`;Uj;6h>Okc?J5LX@kp5UW=$IH?Ym4iwA1O{Pit(L6KcGdT7ZQtb57U`iOO&dQHISs)tJPS{tT{`ZRRe;S(a=b+wohqrPAcrxc7Xuyj^bWjy zpocCPUh6IPkfmNw9WxP@s&t|4f7ljQJiNcGjUI}YrE*;bUOw$sN|vdA`sV?T1ZAnI z(jlUwW*gxNL_W)5WbpyBB$w?L=5qLZV!a zQTL5UDk}Pw=UJz0yRiTf4617Fr(I50~~~)4q^s`{b1EfN_of{G|k{J+A@hztPoy04notQ<_QRd&+xEf zP=zGaOy&EeZeq=*dFG~|pmto7XW68$TkRW#F-C`6`?k(eOIhuq zFQkMRX?!|@6o-fiP2gfyhw602dt!Xt;&P{AcO?1zez&CAXDE?t8n1tN{7(LxP8hiVAINeZ7;uY?Mvqp*d_kt$20$dU-t`nG=>}?`KXoUv zhz47JsR!ym5rWm6of~B67VB&Yo&>3}+waYn=L{;!mepis_e(0;>@%aIj)@5g(evmP zparNaUR)ir`*)sA>4L77FHiI?ne)|VnTw3nHPjX*B{OnnE`io!!pKuGqAywA46HY6 zftSUHX*P{o6;++dPzN#7_5EB?FveV$o!|LM+{n>Vcb6$3&Gg~we8R%@-l=bAv^iHr z*4>>T!2}*j<>OmYXMUpvJ6@1@*U0+UoYI8084b4Hn~zInqk4SCf-XXx+$n zuB*>F)Yz=rR}c4>kVD(zs@iYI4=cu1(G-uNn}5BX$N~|bcQCvp$dC4DCGzZ8_s7z4 z!^P^P0pvHcI=+GA{(zlD^8I;E+~7EO;Q5#Mz78GX5iMA9qn*jR*a%Z zy%-Z@UvAOja=(bL)mm87u4t{>d%m?7O;gxGoSQ2*n_X6Oa~r@CeS-XKfPS!Ewjkby z*@U+yv!(a=!NbRw+4yYCO*7SV$j^uvZ4Lp-sa8h1pJXVgA+p9l#c8_X-hD+yaY9G` zlADV@GRy+KKPTs_y4P{3R_R$-=Elblujew+FfsiQZES2pR11I|T_BcAsP(|Z-N423 z6uFw9`vNDy(YZJJSC%FZAr2KUB*#G9#1gfk6!D_ALFHYU*Y54j8yxh`S0p1MCB0hl zl+RN7+8vx3cFdpMSV^P6YVg8Kx5l?xdOBSc_#7t2XdY+{-M|7gG|u~z5HIgms01QE z=aTWAQ1d9BT4cDFLicMGQMB@sm63_irH4^}pESI~Yh|hi;NK)aMJ`W#>h5W-$pKl>x@O)o$wzbpmpT4?{aX3VC_m|_V z75m%?5~Q=s_>p2*q*osTtvfrG!wF7Z_9t-|vb=QKo>HlN{~)4~3smnP%#=b?mV;D# zk>Xo5=+;U|PoG=U_I+IX!)X#MriU_xghgpky(O&jwKOj##zJoB%DlA?(E=BI0(%qX z2-Q`zlyz*#>60gqf(}V={<*w}&2sH&HRsDqn|2wfY<4!iNO>SDAP_(_Nehk3Wasr$__jYgleIq zqeBd{R-O4Ww102R+C=kyvpkjOK@CwO5HvEULVFvo4mFI}am5RtJE!0|A348-^ZtraSuSor$ z-C_Um64HG-1R>pdOaLY7UidIKJSt;_KYocOsMpE&ea~NBHGt zTz?Lf1VBYyY;?LnDaQ9{^FD+sqi55I5k(x>fA2`LcF1G(O#Z1>=EP? znEFNin#l68p0%MA_L$x1wMRmHfW{*RWPpbFJ@|^3?DWN?%l}0mZAU@C zG4`$ zAOj)sX~YG;57rwoj>z~f{c+w7qAWK%%Z#_dD!Dy?vr(4ciwg*4De?LHt=3yu6iL1r zF3=m~O&RGadL!;`f}{sc!%AIGPtXWktg1B8P{Xr?f$_4pM*@=AR=1KT**09ooVu8h z@sPE3-00(x$lN@`S2G&r{!`e-H#oXi1T>z*qOW~yS;Fq27iZN1BS`q6HvNc{HZK%( zHB^K3e4hI@yiW7Pi(%ZTxo ziM`@yq38>dcy?B0WhgaRyQg1O47q@pKFg9NJ{%yS7=2w?6+N87+b+WdCRH41Iumd? zSuA}^i@Wjuhq{{eFU0t;;N*!3V2Sc95I%>~MZ=%-Csw=WDbST{v0eILZDoJqUf}*C zYVwt@wd>0D`k3AjSU$G>w&y#1mf&^zcFEz&QoV(ZOx7vi;kQo1=}@uOO%qzOKQg1z zpRI?-*|#p;MMU(?%m^l8puq1_8WRI@Hlcs(pegT?AhXc~6g^-=XhJsQY*)=J8_U!M zbA4T5Gx?lksD4;)6XJKze^jXe?gA~k6yuXYMK1BuSYTs3L|?-3^xv)W&aLVh$-h^L@oU@5d)kk(OW2e9v1PSg6AwfJ|WW68mLG$@zI0(vCsVO~z}( z_}9`k@lo$?%=sfJBRxT+@-7X0@h8Pm$s4pq`bM}JM z6L@sm>FZ7&V^ECZ;7{XqIhK>lu$^5QwDWorSdhh+rQy}Tn~{R5)23dYAp6nPZmVm% z6t=aQ&BJMk(ZJTPpT6v41s~L>jCKXZROsGUEhtpzKdXX3Kr!T6Wc0j&KXf=ouoLRY zn@uOE$&_7_3V8hv#_>Cr>U>&2jAh>m`#m?AZZ}LiQni67wlxLnpllN#)^ zODW>#Ej1Gmi*j`t0209eW);;2t%~>uhT0gu+O8;LfkRcDw#xlIEkLvBgPJ766cWM; zqn$}-1x1j=+#SogPls0+HjQE1I(T4yb9(VlumJdDjSaQiZP)m5y|DmjexD5jx643# zzDxgt0%*2d7rk!)J)}omm7Caee$dGJC0>g98USVRcewV8x%B0*z8Y26nyd`|^Qr?J z=6V7dL2%jmP!psz2yshRV0-n(*zJNs33QVnUm^Mgd9xR{3`cN^x#&3m5tm!W`M3X9 zumGJRcEFf(!(Z|k$29K)Q-KS?VzI7}0!4QIe^7=0DuxX8jipCm7o*9c&TE0uB~Z+` zk8!sVZuIIXzXYcKD)Ww(1)o?$*MG#{!(-?Ibr9{iOKZqHXh&S-Q@>+o{wje4I6_<7 zOASr_1YPYd zlJ6CI=|$Jn6k3G5pcLZn79{ke7duvCNEaIe^IbQ)4_#q&n>XIt12ne`Io#|YCq@tc zPK$K9@D(bC}KUYey^8BGn$sr+d zBKKDI;&$PZcX>`=Z5isd5QO_3f`lYXG)T9<0AkKyXDJ=jPFEIQ9p#PS1bRe~PZkvB zK83Kg7xMVN4-}tE3Oz4+2J~igezIAO*_q$fDAC(ywJR@eX$k-Na%X@X6wuX00|j(A zR7wb7Y}-b?fWlgjWHodW?Il0!WOMXuo2ARcrOZx&oT+iqutOiDZ%UM)6-&jjL~4y zucIl7p0|`xr(1}+EU{p!rY9A@(5;srD-U4bw!@`jcZHhJBIiA??aEiDe~N8+$L42_ zBvtlYBL>B#2jr|md=v!i97TKZh7%h|O?W)0X`k;6mlE$fDyQ=G3Qr8fUzGZ9 z;Z)Zf!(haMSyQrso^ttDq15cKYC;NV06h^?+WBvE8p3P&MujQ>+c=8-JYTW=LY?TT z70Pa_lHM3A0lJ|i(~S@noPy{=Z%S{lVa6rk3=@lI^uG~Vp>ck3#hOeD@^2(U<8Fco zuWl)`ok7TW%Zza>fczZGl$p;T)FZY3KI4fyoXTD2QB4s;4C8Ph7_^AA67kgHXw z6Q-I_ZPkI4`O(T#4PI3r4rpWDk|UXkWEK7*wb135nY3d^{(nlQ88j}WXlY>n1&B4F zGP+mM!^Sjl|*cJgq&WSR0;8Z+7FC}8I{S)~do zF4o(=JzAWoHmg7c?_FS2fLr?F;D8v zTlJK!o`z4q0S09Yu(#i$G06m5PLWte;JU|aRSoo90{yX$scGS$ zX>i1I{{NT{1lzihP;QKGJ86`yBA}#y&1rD;iu}+Kaf+)BD*E&F4xP2~p`aBlGYMMC zBwd2Dt+H8h!Don0{}Dwzjm7{iZmu=`Dn+$YnQU`+V_J)^_z&Oy1`e7k+3SmiCD%C! zkSD?0Zgg#^Y!KJYKp{4f5Tz-7Rl1nJfD1q`hv&}SGeKQ#iKtL*G1waJnRL`Xu+!Od zkU8-gAxnFETOI$pUmBv!R9IR{19gJu=W5tp{&4ppgLHVk2p3JZfmOWW|D zyf*Wnu*KQnmbExuZ0vgv{t`>jh}dHi^d+q3fh_zw4`pfNH=8B9qg!_;ETcfa|E+qq zw__!xZ)yBAf)tFWQ?Ah@d&0_*yjWCYNz&TvdU2)f^|)y_8NGiUygl5m)o^wW1;o6m z`!glJLqkLK(D&|bMd^=5S(+}m;sh&^7$=PZ>MR9w>Gp@tFvXMt^<~p`IJM~at=TII zh1`eqd?Wrt-}BjQ>IS!+N+1jkf%`XrE5X|{*wG;-!O*O~B~juw zOFM`CZHXcIF!8)^>T_9!U`-si+BR>=i7l4aAY#HX^x&WXf~4~Qn-*$ske=NFbz*vr zaYKcJ&`o9&H?^3stw^U6V-vl?AcI@XqG$i&NpAnnUV@U0ea&xmpELMcowkcLfw%Ha!Sqfq zUJPapBs*kyc+>Bi@2XdF0m!vD{>m#Y2i2<1g?|*C4#eM!4Y)I5+V`z}^rtk6V#7Y7 z5coQP2JPtAyygD6S7CJihlJ*Phe-N&y|c}mKpzpxseY{Mi`YYqJ{KLVErJB>xrxXI za)DeWAo49a5oW@WiNWfWz}VYtWoWM z=nj=CTM6{I=i+`(RckrykWK8Hl_*my$`(E!NSKz(vpW7^pc3afn!;tg;5%C>RB+Tf z8`%(vjM9>pQSZ2G6hJ;zA`#=$+SQ|Lz{jlBan5i|){Xt+F>`*>_PCs{vcm??&dv@N z7WOUt`=<+QP-35D7zyc~MU^JIZX+e`UOJQtndS#RwE{l0YhTu=z6FL1Z!TcMR)2V{@6FB}GbMv4jg#-595v%@_10)QVs1! zR<~kn;eAZ|3aK8`9|5DVE4i;`R6*g)!ly!N!VC6--L4?&EgK;r%YK95Hd>1{I6Ts_ zbp>rHs8cIo&y~p2YKD=_Xq~hngxXgxY>7sz_M+JXGZoIiA`S!QmwQJ@Z(cpx#m_iY zPi4w`HZ~e=!<{XhvoJ><7T>9{ZV=12cRW3NIqT+b7mJ=1+qURSef&%s=6KWJo}Qo4 zBFM{rACSJ!Dv&A>b$KDJ@+MSKmItXXb^V^w!^{z$2;Dh%BT%2oO}_KW7_>3B+CYj! zCB6O|YE*9<1c2vEGX2hdOh)7V4%ypRF}pR-9DnDTXs&{RZ+Nz*^H@Br^%J)>@Kir3 zkAA@-n~-8D>1(hdCtDbt_X)U=~-s*peb)A`CsS}kt&aI#eZ@jSn^rG1BIH&<@IOYJq|u=sOEM?9l_ zy?FwKpKsyuN(nUtd{avV;$0~F_HZ}ptbX$d#Ui_XmLO2;(j!uRx2r0hk3CIjgM>@4 zyy(k1+=zrr@%}p@C2r+e*dVk4qsi&EQwDj^+_aXT=}0z6ZLM`*Kt_)4Ut-x?WQgIk&yPWYzxNK0IW78_JiDLF zW$&RqtK_~ug~D08iJJzVta2(Jq-KZ815rwx=9Q&S73$PUK9aWx37KWYvA znEvi&;7F;H%3|Njr`mLxKeqbov>)8mJjM92Ycd6jiV#E=2gP?U}Jd2q&> zrBMj>AHOT*&Vd|8r4oC^FW+!M&)4r^V#g3Je&H>)ZT+!$K+`988H5^+>r_dF2LM|= zumErY#ASpvAa(SwcC`%h(7pf|=D)r#AhSeTRgVsP=%b1f>}vY3?K+AVbS`%IzHd+p w@mC+l;_j0u^vSQU*(1!=&Px# literal 12379 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 diff --git a/docs/assets/light/drivers/PreviewDriver.png b/docs/assets/light/drivers/PreviewDriver.png index 45329947b393aee211de82e10b381a8752308cd0..ab0ba973653a758c78c707f929091f4b614575cf 100644 GIT binary patch literal 6235 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 RPtYeYin6L7tAHlK{|!+kIa>e# diff --git a/docs/assets/light/drivers/RmtLedDriver.png b/docs/assets/light/drivers/RmtLedDriver.png new file mode 100644 index 0000000000000000000000000000000000000000..62d3058e93455064aa9d3896503be29705e2be23 GIT binary patch literal 13675 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