mirror of
https://github.com/alexhopeoconnor/DFTE.git
synced 2026-10-15 04:31:18 +10:00
56 lines
1.4 KiB
C++
56 lines
1.4 KiB
C++
#include <Arduino.h>
|
|
#include <TemplateEngine.h>
|
|
|
|
namespace {
|
|
|
|
static String deviceName = "DFTE Getting Started";
|
|
static String buildId = "v1.0.0";
|
|
|
|
const char SIMPLE_TEMPLATE[] = R"TPL(
|
|
Device: %DEVICE_NAME%
|
|
Build: %BUILD_ID%
|
|
|
|
DFTE lets you reuse this template across Serial, HTTP, or any other transport.
|
|
)TPL";
|
|
|
|
const char* getDeviceName() { return deviceName.c_str(); }
|
|
const char* getBuildId() { return buildId.c_str(); }
|
|
|
|
} // namespace
|
|
|
|
void setup() {
|
|
Serial.begin(115200);
|
|
while (!Serial) { /* wait for USB CDC */ }
|
|
|
|
Serial.println();
|
|
Serial.println(F("=== DFTE Hello Placeholder ==="));
|
|
|
|
PlaceholderRegistry registry;
|
|
registry.registerRamData("%DEVICE_NAME%", getDeviceName);
|
|
registry.registerRamData("%BUILD_ID%", getBuildId);
|
|
|
|
TemplateContext ctx;
|
|
ctx.setRegistry(®istry);
|
|
TemplateRenderer::initializeContext(ctx, SIMPLE_TEMPLATE, false);
|
|
|
|
uint8_t buffer[64];
|
|
while (!TemplateRenderer::isComplete(ctx) && !TemplateRenderer::hasError(ctx)) {
|
|
size_t written = TemplateRenderer::renderNextChunk(ctx, buffer, sizeof(buffer));
|
|
if (!written) {
|
|
Serial.println(F("\nRendering stalled before completion."));
|
|
break;
|
|
}
|
|
Serial.write(buffer, written);
|
|
}
|
|
|
|
if (TemplateRenderer::hasError(ctx)) {
|
|
Serial.println(F("\nRendering failed."));
|
|
} else if (TemplateRenderer::isComplete(ctx)) {
|
|
Serial.println(F("\nRendering complete."));
|
|
}
|
|
}
|
|
|
|
void loop() {
|
|
// Nothing else to do in the basic example.
|
|
}
|