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_AHRS
119# include "dawn/prog/ahrs.hxx"
122#ifdef CONFIG_DAWN_PROG_ONETOMANY
123# include "dawn/prog/onetomany.hxx"
126#ifdef CONFIG_DAWN_PROG_IOMUX
127# include "dawn/prog/iomux.hxx"
130#ifdef CONFIG_DAWN_PROG_IODEMUX
131# include "dawn/prog/iodemux.hxx"
134#ifdef CONFIG_DAWN_PROG_CONFIGWRITER
135# include "dawn/prog/configwriter.hxx"
146#ifdef CONFIG_DAWN_PROG_ADJUST
151#ifdef CONFIG_DAWN_PROG_DUMMY
156#ifdef CONFIG_DAWN_PROG_SAMPLING
161#ifdef CONFIG_DAWN_PROG_SEQUENCER
166#ifdef CONFIG_DAWN_PROG_GATEWAY
171#ifdef CONFIG_DAWN_PROG_LATEST
176#ifdef CONFIG_DAWN_PROG_REDIRECT
181#ifdef CONFIG_DAWN_PROG_BUFFER
186#ifdef CONFIG_DAWN_PROG_MOVING_AVG
191#ifdef CONFIG_DAWN_PROG_IIR_FILTER
196#ifdef CONFIG_DAWN_PROG_THRESHOLD
201#ifdef CONFIG_DAWN_PROG_THRESHOLD_VALUE
206#ifdef CONFIG_DAWN_PROG_STATS_MIN
211#ifdef CONFIG_DAWN_PROG_STATS_MAX
216#ifdef CONFIG_DAWN_PROG_STATS_AVG
221#ifdef CONFIG_DAWN_PROG_STATS_SUM
226#ifdef CONFIG_DAWN_PROG_STATS_COUNT
231#ifdef CONFIG_DAWN_PROG_STATS_RMS
236#ifdef CONFIG_DAWN_PROG_BITSPLIT
237 case CProgCommon::PROG_CLASS_BITSPLIT:
241#ifdef CONFIG_DAWN_PROG_TOGGLE
242 case CProgCommon::PROG_CLASS_TOGGLE:
246#ifdef CONFIG_DAWN_PROG_COUNTER
247 case CProgCommon::PROG_CLASS_COUNTER:
251#ifdef CONFIG_DAWN_PROG_SWITCH
252 case CProgCommon::PROG_CLASS_SWITCH:
256#ifdef CONFIG_DAWN_PROG_EXPRESSION
257 case CProgCommon::PROG_CLASS_EXPRESSION:
261#ifdef CONFIG_DAWN_PROG_SELECTOR
262 case CProgCommon::PROG_CLASS_SELECTOR:
266#ifdef CONFIG_DAWN_PROG_BITPACK
267 case CProgCommon::PROG_CLASS_BITPACK:
271#ifdef CONFIG_DAWN_PROG_VECPACK
272 case CProgCommon::PROG_CLASS_VECPACK:
276#ifdef CONFIG_DAWN_PROG_VECSPLIT
277 case CProgCommon::PROG_CLASS_VECSPLIT:
281#ifdef CONFIG_DAWN_PROG_MANYTOONE
282 case CProgCommon::PROG_CLASS_MANYTOONE:
286#ifdef CONFIG_DAWN_PROG_AHRS
287 case CProgCommon::PROG_CLASS_AHRS:
291#ifdef CONFIG_DAWN_PROG_ONETOMANY
292 case CProgCommon::PROG_CLASS_ONETOMANY:
296#ifdef CONFIG_DAWN_PROG_IOMUX
297 case CProgCommon::PROG_CLASS_IOMUX:
301#ifdef CONFIG_DAWN_PROG_IODEMUX
302 case CProgCommon::PROG_CLASS_IODEMUX:
306#ifdef CONFIG_DAWN_PROG_CONFIGWRITER
307 case CProgCommon::PROG_CLASS_CONFIGWRITER:
308 return new CProgConfigWriter(desc);
313 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.
AHRS sensor fusion (x-io Fusion): accel + gyro IOs in, world-frame linear acceleration (gravity remov...
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.