Slice 3b.2 of S08.03 (parent: #268). Builds on #295.
Scope
Replace slice 3b.1's smoke main.c body with a real SolidSyslog-driven UDP example: SolidSyslogConfig wired with the slice-1 SolidSyslogFreeRtosDatagram and slice-3a SolidSyslogFreeRtosStaticResolver, all behind a single FreeRTOS task running Example/Common/ExampleInteractive.
What lands
Example/FreeRtos/SingleTask/main.c rewritten:
- Hardcoded
struct ExampleOptions (no getopt — the FreeRTOS port deliberately skips Example/Common/ExampleCommandLine.c; configuration injection is a slice-4 concern via the interactive command grammar).
SolidSyslogFreeRtosStaticResolver_Create({10, 0, 2, 2}), SolidSyslogFreeRtosDatagram_Create(), SolidSyslogUdpSender_Create(…).
SolidSyslogConfig.sender wired directly to the UDP sender — no NullSender, no SwitchingSender.
NullBuffer + single FreeRTOS task running ExampleInteractive (no separate ExampleServiceThread while the buffer is NullBuffer and Service is a no-op).
Example/FreeRtos/SingleTask/UartRx.{c,h} — minimal CMSDK UART0 RX driver wired into Syscalls.c::_read so ExampleInteractive's send N / quit commands arrive over qemu -serial stdio.
Test strategy
Same shape as 3b.1 — functional smoke. New logic is glue (calls into SolidSyslogConfig, into the slice-1 adapter, into the slice-3a resolver, all already host-TDD'd). If a real branch appears (e.g. config-injection grammar), test it.
Acceptance
Out of scope (deferred to slice 4+)
- BDD harness pointed at the FreeRTOS target.
- Configuration injection over the interactive command channel.
- Service-thread / non-NullBuffer FreeRTOS-side work.
Slice 3b.2 of S08.03 (parent: #268). Builds on #295.
Scope
Replace slice 3b.1's smoke
main.cbody with a realSolidSyslog-driven UDP example:SolidSyslogConfigwired with the slice-1SolidSyslogFreeRtosDatagramand slice-3aSolidSyslogFreeRtosStaticResolver, all behind a single FreeRTOS task runningExample/Common/ExampleInteractive.What lands
Example/FreeRtos/SingleTask/main.crewritten:struct ExampleOptions(nogetopt— the FreeRTOS port deliberately skipsExample/Common/ExampleCommandLine.c; configuration injection is a slice-4 concern via the interactive command grammar).SolidSyslogFreeRtosStaticResolver_Create({10, 0, 2, 2}),SolidSyslogFreeRtosDatagram_Create(),SolidSyslogUdpSender_Create(…).SolidSyslogConfig.senderwired directly to the UDP sender — noNullSender, noSwitchingSender.NullBuffer+ single FreeRTOS task runningExampleInteractive(no separateExampleServiceThreadwhile the buffer isNullBufferandServiceis a no-op).Example/FreeRtos/SingleTask/UartRx.{c,h}— minimal CMSDK UART0 RX driver wired intoSyscalls.c::_readsoExampleInteractive'ssend N/quitcommands arrive overqemu -serial stdio.Test strategy
Same shape as 3b.1 — functional smoke. New logic is glue (calls into
SolidSyslogConfig, into the slice-1 adapter, into the slice-3a resolver, all already host-TDD'd). If a real branch appears (e.g. config-injection grammar), test it.Acceptance
send 1over UART, the hostnc -ul 5514receives an RFC 5424 syslog frame.quitcleanly exits the example.Core/,Platform/Posix/,Platform/Windows/, orTests/.Out of scope (deferred to slice 4+)