Files
DFTE/examples/HelloPlaceholder/src/main.cpp
T

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(&registry);
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.
}