|
ProtoCore v1.0.16
Deterministic, zero-heap network stack for embedded targets
|
User-configurable strings the firmware serves (HTML pages, the Prometheus exposition, future CSS/JSON/XML) live here as editable source files instead of being buried in .c. A single generator turns them into C string literals in the application layer so they ship in flash with no filesystem or heap.
| Path | What |
|---|---|
input/ | One source document per symbol, named by the C identifier it backs. |
themes/ | Reusable CSS themes a document can pull in with a #theme directive. |
wizard/build_assets.py | The generator. |
../network_drivers/application/web_assets.{h,c} | Generated output (committed; do not hand-edit). |
A file's base name is the C symbol: PROTOCORE_PROV_FORM.html becomes extern const char PROTOCORE_PROV_FORM[];. Every document is emitted into the single application/web_assets.{h,c} translation unit - all generated assets are one machine-produced artifact, so they live in one clearly-named unit rather than per -content-type files (which would conflate source format with output module and collide with real modules, e.g. the JSON codec at presentation/json/json.h). The extension only selects lint and transforms (.html/.svg/.xml tag checks, .json validation, etc.), not the output file.
The generated files are committed (Arduino-IDE users do not run Python) and are formatted to match clang-format, so re-running the generator produces no spurious diff. Run the generator (and clang-format) after editing any source document.
HTML/XML/SVG/text use <!--#cmd arg-->; CSS/JS use /*#cmd arg*/.
| Directive | Effect |
|---|---|
#brief TEXT | becomes the Doxygen @brief on the generated declaration. |
#theme NAME | injects themes/NAME.css (minified) before </head> (HTML only). |
#minify | collapses markup whitespace (<script>/<style> preserved). |
By default a document is emitted byte-for-byte, so the existing assets are served exactly as before; the transforms above are opt-in.
Drop-in CSS palettes under themes/, pulled into a page with <!--#theme NAME--> (they share the same selectors, so they are interchangeable). Bundled: crt-green, ssh-terminal, bubbly, cute, rainbow, nyancat, keroppi. The built-in assets ship with their own inline styles and do not use a theme; these are for pages you add. Drop a new .css in themes/ to add one.
A document may contain {{name}} placeholders rendered at request time by send_template() (the value comes from a resolver in the C code, so there is no printf-format coupling). The Prometheus exposition (PROTOCORE_METRICS_PROM.txt) works this way: it lists every available metric, and you disable one by commenting its value line out with a leading # (Prometheus ignores # lines).