Dawn Prog
Dawn Prog - edge processing objects that transform IO data.
Programs read source IOs, process data, and publish results through bound IO
objects. Most data-transform programs use the generic CIOCommon contract:
readable sources, writable outputs, and optional notifications.
Overview
In Dawn architecture, PROG objects sit between data producers and
consumers:
Source side: read one or more bound IOs.
Compute side: run a focused algorithm per program class (stats/filter/threshold/routing/buffer/sequencer).
Sink side: publish results to writable output IOs. Some programs also own software register surfaces implemented with Virtual IO.
Programs are designed as small reusable processing units that can be composed into larger pipelines.
Binding Model
Program-to-object association is descriptor-driven:
IO objects are declared in the descriptor.
Program configuration defines source and destination object IDs.
CProgHandler::initAll()performsconfigure()and bind resolution.Program
init()allocates runtime buffers/state after binds are known.
Visibility is explicit: programs can access only objects referenced by their bind configuration.
Lifecycle
Program lifecycle is managed by dawn::CProgHandler:
init(): create program objects from descriptor and store handler dependencies.initAll(): runconfigure()for every program, resolve binds, then callinit().startAll()/stopAll(): activate/deactivate runtime behavior for each program.deinitAll(): release program-owned resources.
Execution Model
Program behavior depends on how bound IOs are accessed:
Notify-driven: source IO notifies when new data arrive; program processes immediately.
Fetch-driven: data are read periodically, on start, or when a program-owned virtual surface is read, depending on the program contract.
Hybrid: notify path refreshes internal cache; fetch path serves cached data.
The selected model is defined per program class and descriptor bind setup.
IO Binding
Program chaining is implemented by binding downstream program inputs to
upstream program outputs. The output may be any compatible writable IO object.
type: virt remains useful for software-owned pipeline values and protocol
surfaces, while physical or application-specific IOs can be used directly when
their capabilities match the program contract.
Some programs intentionally remain virtual-specific:
bufferowns selected-sample, selector, and status register surfaces.gatewaymirrors get/set callbacks between pairs of Virtual IO endpoints.
Doxygen
Program Helpers
Supported Programs
- Statistics: Min
- Statistics: Max
- Statistics: Avg
- Statistics: Sum
- Statistics: Count
- Statistics: RMS
- Dummy
- Adjustment
- Sampling
- Gateway
- Latest
- Redirect
- Sequencer
- Buffer
- Moving Average Filter
- IIR Filter
- Threshold Program (Bool Output)
- Threshold Value Program (Gated Output)
- Bit Splitter
- Toggle
- Counter
- Switch
- Expression
- Selector
- Bit Pack
- Vector Pack
- Vector Split
- Many To One
- One To Many
- IO Multiplexer
- IO Demultiplexer