6#include "dawn/prog/factory.hxx"
8#include "dawn/prog/common.hxx"
10#ifdef CONFIG_DAWN_PROG_ADJUST
11# include "dawn/prog/adjust.hxx"
14#ifdef CONFIG_DAWN_PROG_DUMMY
15# include "dawn/prog/dummy.hxx"
18#ifdef CONFIG_DAWN_PROG_SAMPLING
19# include "dawn/prog/sampling.hxx"
22#ifdef CONFIG_DAWN_PROG_SEQUENCER
23# include "dawn/prog/sequencer.hxx"
26#ifdef CONFIG_DAWN_PROG_GATEWAY
27# include "dawn/prog/gateway.hxx"
30#ifdef CONFIG_DAWN_PROG_LATEST
31# include "dawn/prog/latest.hxx"
34#ifdef CONFIG_DAWN_PROG_REDIRECT
35# include "dawn/prog/redirect.hxx"
38#ifdef CONFIG_DAWN_PROG_BUFFER
39# include "dawn/prog/buffer.hxx"
42#ifdef CONFIG_DAWN_PROG_MOVING_AVG
43# include "dawn/prog/movingavg.hxx"
46#ifdef CONFIG_DAWN_PROG_IIR_FILTER
47# include "dawn/prog/iirfilter.hxx"
50#ifdef CONFIG_DAWN_PROG_THRESHOLD_ANY
51# include "dawn/prog/threshold.hxx"
54#ifdef CONFIG_DAWN_PROG_STATS_AVG
55# include "dawn/prog/statsavg.hxx"
58#ifdef CONFIG_DAWN_PROG_STATS_COUNT
59# include "dawn/prog/statscount.hxx"
62#ifdef CONFIG_DAWN_PROG_STATS_RMS
63# include "dawn/prog/statsrms.hxx"
66#ifdef CONFIG_DAWN_PROG_STATS_MAX
67# include "dawn/prog/statsmax.hxx"
70#ifdef CONFIG_DAWN_PROG_STATS_MIN
71# include "dawn/prog/statsmin.hxx"
74#ifdef CONFIG_DAWN_PROG_STATS_SUM
75# include "dawn/prog/statssum.hxx"
78#ifdef CONFIG_DAWN_PROG_BITSPLIT
79# include "dawn/prog/bitsplit.hxx"
82#ifdef CONFIG_DAWN_PROG_TOGGLE
83# include "dawn/prog/toggle.hxx"
86#ifdef CONFIG_DAWN_PROG_COUNTER
87# include "dawn/prog/counter.hxx"
90#ifdef CONFIG_DAWN_PROG_SWITCH
91# include "dawn/prog/switch.hxx"
94#ifdef CONFIG_DAWN_PROG_EXPRESSION
95# include "dawn/prog/expression.hxx"
98#ifdef CONFIG_DAWN_PROG_SELECTOR
99# include "dawn/prog/selector.hxx"
102#ifdef CONFIG_DAWN_PROG_BITPACK
103# include "dawn/prog/bitpack.hxx"
106#ifdef CONFIG_DAWN_PROG_VECPACK
107# include "dawn/prog/vecpack.hxx"
110#ifdef CONFIG_DAWN_PROG_VECSPLIT
111# include "dawn/prog/vecsplit.hxx"
114#ifdef CONFIG_DAWN_PROG_MANYTOONE
115# include "dawn/prog/manytoone.hxx"
118#ifdef CONFIG_DAWN_PROG_ONETOMANY
119# include "dawn/prog/onetomany.hxx"
122#ifdef CONFIG_DAWN_PROG_IOMUX
123# include "dawn/prog/iomux.hxx"
126#ifdef CONFIG_DAWN_PROG_IODEMUX
127# include "dawn/prog/iodemux.hxx"
130#ifdef CONFIG_DAWN_PROG_CONFIGWRITER
131# include "dawn/prog/configwriter.hxx"
142#ifdef CONFIG_DAWN_PROG_ADJUST
147#ifdef CONFIG_DAWN_PROG_DUMMY
152#ifdef CONFIG_DAWN_PROG_SAMPLING
157#ifdef CONFIG_DAWN_PROG_SEQUENCER
162#ifdef CONFIG_DAWN_PROG_GATEWAY
167#ifdef CONFIG_DAWN_PROG_LATEST
172#ifdef CONFIG_DAWN_PROG_REDIRECT
177#ifdef CONFIG_DAWN_PROG_BUFFER
182#ifdef CONFIG_DAWN_PROG_MOVING_AVG
187#ifdef CONFIG_DAWN_PROG_IIR_FILTER
192#ifdef CONFIG_DAWN_PROG_THRESHOLD
197#ifdef CONFIG_DAWN_PROG_THRESHOLD_VALUE
202#ifdef CONFIG_DAWN_PROG_STATS_MIN
207#ifdef CONFIG_DAWN_PROG_STATS_MAX
212#ifdef CONFIG_DAWN_PROG_STATS_AVG
217#ifdef CONFIG_DAWN_PROG_STATS_SUM
222#ifdef CONFIG_DAWN_PROG_STATS_COUNT
227#ifdef CONFIG_DAWN_PROG_STATS_RMS
232#ifdef CONFIG_DAWN_PROG_BITSPLIT
233 case CProgCommon::PROG_CLASS_BITSPLIT:
237#ifdef CONFIG_DAWN_PROG_TOGGLE
238 case CProgCommon::PROG_CLASS_TOGGLE:
242#ifdef CONFIG_DAWN_PROG_COUNTER
243 case CProgCommon::PROG_CLASS_COUNTER:
247#ifdef CONFIG_DAWN_PROG_SWITCH
248 case CProgCommon::PROG_CLASS_SWITCH:
252#ifdef CONFIG_DAWN_PROG_EXPRESSION
253 case CProgCommon::PROG_CLASS_EXPRESSION:
257#ifdef CONFIG_DAWN_PROG_SELECTOR
258 case CProgCommon::PROG_CLASS_SELECTOR:
262#ifdef CONFIG_DAWN_PROG_BITPACK
263 case CProgCommon::PROG_CLASS_BITPACK:
267#ifdef CONFIG_DAWN_PROG_VECPACK
268 case CProgCommon::PROG_CLASS_VECPACK:
272#ifdef CONFIG_DAWN_PROG_VECSPLIT
273 case CProgCommon::PROG_CLASS_VECSPLIT:
277#ifdef CONFIG_DAWN_PROG_MANYTOONE
278 case CProgCommon::PROG_CLASS_MANYTOONE:
282#ifdef CONFIG_DAWN_PROG_ONETOMANY
283 case CProgCommon::PROG_CLASS_ONETOMANY:
287#ifdef CONFIG_DAWN_PROG_IOMUX
288 case CProgCommon::PROG_CLASS_IOMUX:
292#ifdef CONFIG_DAWN_PROG_IODEMUX
293 case CProgCommon::PROG_CLASS_IODEMUX:
297#ifdef CONFIG_DAWN_PROG_CONFIGWRITER
298 case CProgCommon::PROG_CLASS_CONFIGWRITER:
299 return new CProgConfigWriter(desc);
304 DAWNERR(
"Unknown PROG class %d\n", desc.
getObjectCls());
Descriptor wrapper for individual object configuration.
uint8_t getObjectType() const
Get object type field.
uint16_t getObjectCls() const
Get object class field.
SObjectId::UObjectId & getObjectId() const
Get object identifier as union structure.
Data scaling and offset transformation PROG.
Bit packer: combines multiple typed inputs into a single packed output bitstream.
Bit demultiplexer: extracts configurable bit slices from the input into separate outputs.
Notify-driven history buffer Program.
Base class for all PROG (processing) objects.
@ PROG_CLASS_LATEST
Cache latest notified sample for fetch-based readers.
@ PROG_CLASS_MOVING_AVG
Moving average filter.
@ PROG_CLASS_IIR_FILTER
First-order IIR filter.
@ PROG_CLASS_DUMMY
Dummy program (test/helper).
@ PROG_CLASS_THRESHOLD_VALUE
Threshold comparator returning gated source value.
@ PROG_CLASS_STATS_MAX
Maximum value tracker.
@ PROG_CLASS_STATS_MIN
Minimum value tracker.
@ PROG_CLASS_GATEWAY
Protocol-to-protocol IO gateway.
@ PROG_CLASS_SEQUENCER
Periodic state sequencer.
@ PROG_CLASS_STATS_SUM
Sum accumulator.
@ PROG_CLASS_BUFFER
Notify-driven history capture buffer.
@ PROG_CLASS_SAMPLING
Periodic data sampler.
@ PROG_CLASS_THRESHOLD
Threshold and hysteresis comparator.
@ PROG_CLASS_REDIRECT
Generic input-to-output routing bridge.
@ PROG_CLASS_STATS_RMS
Running RMS (root mean square) calculator.
@ PROG_CLASS_ADJUST
Scale/offset adjustment.
@ PROG_CLASS_STATS_COUNT
Sample counter.
@ PROG_CLASS_STATS_AVG
Running average calculator.
Event counter with configurable wrap-around.
Dummy Program for tests and descriptor binding placeholders.
Arithmetic expression evaluator on IO values.
CProgCommon * create(CDescObject &desc)
Create a PROG object from descriptor.
Protocol-to-protocol IO gateway Program.
First-order IIR low-pass filter.
IO demultiplexer: routes one input to the selected output.
IO multiplexer: routes selected input to one output.
Latest-sample cache Program.
Many-to-one bridge: forwards the last changed input to one output.
Notify-driven sliding window moving average filter.
One-to-many bridge: forwards one input to many outputs.
Input-to-output routing Program.
Periodic data sampling and buffering Program.
Data selector: routes one of N data inputs to a target IO based on the value of a control input.
Periodic state sequencer Program.
Running average statistics Program.
Sample counting statistics Program.
Maximum value tracking statistics Program.
Minimum value tracking statistics Program.
Running RMS statistics Program.
Sum accumulation statistics Program.
Multi-input AND-gate switch: writes on/off commands to a target IO when all control inputs match thei...
Threshold comparator returning gated source values.
Threshold comparator returning boolean alert output.
Toggle/latch: flips output between two configured values on each rising edge of the input.
Vector packer: combines multiple IO values into one vector IO.
Vector splitter: splits one vector IO into multiple outputs.
Out-of-tree user-extension hooks for Dawn.
@ OBJTYPE_PROG
Program/algorithm object type.
uint32_t cls
Object class field (bits 21-29, max 511).
struct dawn::SObjectId::UObjectId::@14 s
Bit-field structure for named member access.