Sampling
Component Type: Program
Status: Implemented
Overview
CProgSampling is a sampling program that periodically reads N source
IOs and writes results to N corresponding output IOs.
synchronized multi-IO fetch at fixed interval
fetch-to-notify bridge: fetch-only IOs can publish through notify-capable outputs
Implementation
CProgSampling runs a background thread that wakes on a fixed interval
(PROG_SAMPLING_CFG_INTERVAL, microseconds) and, for each configured
binding, calls src->getData() and forwards the result to the bound
target via setData(). Bindings are declared as pairs in
PROG_SAMPLING_CFG_IOBIND (first half: source IDs, second half: output
IDs). Each binding gets a per-source data buffer allocated during
init().
Configuration
Kconfig
CONFIG_DAWN_PROG_SAMPLING: enables the Sampling program.CONFIG_DAWN_PROG_SAMPLING_INTERVAL: default polling interval when the descriptor does not set one.
YAML
programs:
- id: sampling1
type: sampling
config:
iobind:
- src1
- output1
interval: 100000
External Control
ControlIO: supported.
CProgSampling supports runtime start/stop control through CIOControl.
When stopped, the sampling thread is stopped and outputs are not updated.
When started again, periodic sampling resumes.
TriggerIO: not supported.
Brainstorming & Future Ideas
Configurable thread priority.
Hardware timer trigger instead of
usleepfor tighter timing.