|
Dawn Framework 1.0
Universal data acquisition framework for embedded systems
|
Policy-based template for sample processing implementations. More...
#include <process_template.hxx>
Public Types | |
| enum | { CMD_RESET = 0 , CMD_TRIGGER1 = 1 , CMD_TRIGGER2 = 2 , CMD_TRIGGER3 = 3 } |
| Control command identifiers for control() More... | |
| enum | |
| Default descriptor validation failure codes. More... | |
| enum | |
| Common configuration IDs. | |
| enum | { PROG_STATS_CFG_FIRST = 0 , PROG_STATS_CFG_IOBIND = 1 , PROG_STATS_CFG_LAST = 31 } |
| Configuration IDs. More... | |
| enum | EObjectState { STATE_STOPPED = 0 , STATE_RUNNING = 1 } |
| Object operational state returned by getState() More... | |
| enum | EProgClass { PROG_CLASS_ANY = 0 , PROG_CLASS_STATS_MIN = 1 , PROG_CLASS_STATS_MAX = 2 , PROG_CLASS_STATS_AVG = 3 , PROG_CLASS_STATS_SUM = 4 , PROG_CLASS_STATS_COUNT = 5 , PROG_CLASS_STATS_RMS = 8 , PROG_CLASS_SAMPLING = 6 , PROG_CLASS_DUMMY = 7 , PROG_CLASS_ADJUST = 10 , PROG_CLASS_GATEWAY = 11 , PROG_CLASS_LATEST = 12 , PROG_CLASS_REDIRECT = 13 , PROG_CLASS_MOVING_AVG = 14 , PROG_CLASS_IIR_FILTER = 15 , PROG_CLASS_THRESHOLD = 16 , PROG_CLASS_THRESHOLD_VALUE = 17 , PROG_CLASS_BUFFER = 18 , PROG_CLASS_SEQUENCER = 19 , PROG_CLASS_BITSPLIT = 20 , PROG_CLASS_TOGGLE = 21 , PROG_CLASS_COUNTER = 22 , PROG_CLASS_SWITCH = 23 , PROG_CLASS_EXPRESSION = 24 , PROG_CLASS_SELECTOR = 25 , PROG_CLASS_BITPACK = 26 , PROG_CLASS_CONFIGWRITER = 27 , PROG_CLASS_VECPACK = 28 , PROG_CLASS_VECSPLIT = 29 , PROG_CLASS_MANYTOONE = 30 , PROG_CLASS_ONETOMANY = 31 , PROG_CLASS_IOMUX = 32 , PROG_CLASS_IODEMUX = 33 , PROG_CLASS_USER = 511 , PROG_CLASS_LAST } |
| Program object class types. More... | |
Public Member Functions | |
| CProgProcessTemplate (CDescObject &desc) | |
| Construct the template-based processing Program. | |
| int | configure () |
| Configure Program from descriptor. | |
| int | deinit () |
| Deinitialize Program. | |
| int | doStart () |
| Start the Program. | |
| int | doStop () |
| Stop the Program. | |
| bool | getCfgFlag () const |
| Check if configuration flag is set. | |
| uint16_t | getCls () const |
| Get object class field. | |
| CDescObject & | getDesc () |
| Get descriptor object for this object. | |
| uint8_t | getDtype () const |
| Get data type field. | |
| size_t | getDtypeSize () const |
| Get size of this object's data type. | |
| uint8_t | getFlags () const |
| Get type-specific flags field. | |
| SObjectId::UObjectId | getId () const |
| Get object identifier as union structure. | |
| SObjectId::ObjectId | getIdV () const |
| Get object identifier as raw 32-bit value. | |
| CIOCommon * | getIO (SObjectId::ObjectId id) |
| Get an I/O object by ID. | |
| const std::map< SObjectId::ObjectId, CIOCommon * > & | getIOMap () const |
| Get the I/O map for this object. | |
| int | getObjConfig (SObjectCfg::ObjectCfgId objcfg, uint32_t *data, size_t len) |
| Get object configuration item. | |
| CObject * | getObject (SObjectId::ObjectId id) |
| Get an object by ID. | |
| uint16_t | getPriv () const |
| Get instance/private data field. | |
| virtual EObjectState | getState () const |
| Get current operational state. | |
| uint8_t | getType () const |
| Get object type field. | |
| bool | hasThread () const |
| Check if a background thread is active. | |
| int | init () |
| One-time initialize Program after bindings are resolved. | |
| int | setObjConfig (SObjectCfg::ObjectCfgId objcfg, uint32_t *data, size_t len) |
| Set object configuration item. | |
| void | setObjectMapItem (SObjectId::ObjectId id, CObject *obj) |
| Set an item in the object map. | |
| int | start () |
| Start object. | |
| int | stop () |
| Stop object. | |
| int | trigger (uint8_t cmd) |
| Execute a trigger command. | |
Static Public Member Functions | |
| static int | descValidDefault (const uint32_t *data, size_t len) |
| Default descriptor validation method. | |
| static int | validateDesc (const uint32_t *desc, size_t len) |
| Validate entire descriptor. | |
Protected Member Functions | |
| virtual int | bindStateAlloc (CIOCommon *src, CIOCommon *output, io_ddata_t *ioData, io_ddata_t *outputData, SBindState **state) |
| Allocate optional per-binding derived state. | |
| virtual int | configureExtraCfgItem (const CDescObject &desc, const SObjectCfg::SObjectCfgItem *item, size_t &offset) |
| Parse program-specific config item (optional extension hook). | |
| CIOCommon * | getOutputIO () const |
| Get the output IO for the first bind. | |
| CIOCommon * | getSourceIO () const |
| Get the source IO for the first bind. | |
| void | handle (CIOCommon *output, io_ddata_t *data, io_ddata_t *ioData, io_ddata_t *outputData, bool &initsample) |
| Process incoming sample. | |
| void | handleCmn (SProcessBind *bind, io_ddata_t *data) |
| Common callback wrapper. | |
| virtual void | handleWithState (CIOCommon *output, io_ddata_t *data, io_ddata_t *ioData, io_ddata_t *outputData, bool &initsample, void *state) |
| Process incoming sample with optional per-binding state. | |
| virtual int | onSetObjConfig (SObjectCfg::ObjectCfgId objcfg, uint32_t *data, size_t len) |
| Pre-update hook for runtime configuration writes. | |
Policy-based template for sample processing implementations.
Generic template that consolidates common sample-processing logic with a pluggable per-element policy.
Definition at line 21 of file process_template.hxx.
|
inherited |
Control command identifiers for control()
| Enumerator | |
|---|---|
| CMD_RESET | Reset object internal state. |
| CMD_TRIGGER1 | Object-specific trigger slot 1. |
| CMD_TRIGGER2 | Object-specific trigger slot 2. |
| CMD_TRIGGER3 | Object-specific trigger slot 3. |
Definition at line 40 of file object.hxx.
|
inherited |
Default descriptor validation failure codes.
Negative values identify which length check failed in descValidDefault().
Definition at line 314 of file object.hxx.
|
inherited |
Configuration IDs.
| Enumerator | |
|---|---|
| PROG_STATS_CFG_FIRST | First config ID. |
| PROG_STATS_CFG_IOBIND | I/O binding configuration. |
| PROG_STATS_CFG_LAST | Last config ID. |
Definition at line 32 of file process.hxx.
|
inherited |
Object operational state returned by getState()
| Enumerator | |
|---|---|
| STATE_STOPPED | Object is stopped. |
| STATE_RUNNING | Object is running. |
Definition at line 32 of file object.hxx.
|
inherited |
Program object class types.
Definition at line 31 of file common.hxx.
|
inlineexplicit |
Construct the template-based processing Program.
| [in] | desc | Descriptor with process configuration. |
Definition at line 183 of file process_template.hxx.
|
protectedvirtualinherited |
Allocate optional per-binding derived state.
Called once during init() after source/output buffers are allocated. Derived classes that do not need extra state can use the default null state.
Reimplemented in dawn::CProgMovingAverage, and dawn::CProgStatsRms.
Definition at line 95 of file process.cxx.
|
virtualinherited |
Configure Program from descriptor.
Reimplemented from dawn::CObject.
Definition at line 189 of file process.cxx.
References dawn::CObject::getDesc().
|
protectedvirtualinherited |
Parse program-specific config item (optional extension hook).
Reimplemented in dawn::CProgIIRFilter, dawn::CProgMovingAverage, and dawn::CProgThresholdBase.
Definition at line 85 of file process.cxx.
|
virtualinherited |
Deinitialize Program.
Reimplemented from dawn::CObject.
Definition at line 259 of file process.cxx.
|
staticinherited |
Default descriptor validation method.
Provides basic validation that only checks if descriptor lengths are correct.
| data | Descriptor data pointer. |
| len | Length of descriptor data in 32-bit words. |
Definition at line 42 of file object.cxx.
References dawn::SObjectCfg::UObjectCfgId::s, dawn::SObjectCfg::UObjectCfgId::size, and dawn::SObjectCfg::UObjectCfgId::v.
|
virtualinherited |
Start the Program.
Reimplemented from dawn::CObject.
Definition at line 282 of file process.cxx.
|
virtualinherited |
Stop the Program.
Reimplemented from dawn::CObject.
Definition at line 295 of file process.cxx.
|
inherited |
Check if configuration flag is set.
Definition at line 160 of file object.cxx.
References dawn::CDescObject::getSize().
|
inherited |
Get object class field.
Definition at line 170 of file object.cxx.
References dawn::SObjectId::UObjectId::cls, and dawn::SObjectId::UObjectId::s.
|
inherited |
Get descriptor object for this object.
Definition at line 190 of file object.cxx.
|
inherited |
Get data type field.
Definition at line 175 of file object.cxx.
References dawn::SObjectId::UObjectId::dtype, and dawn::SObjectId::UObjectId::s.
|
inherited |
Get size of this object's data type.
Definition at line 195 of file object.cxx.
References dawn::SObjectId::getDtypeSize_(), and dawn::CDescObject::getObjectDtype().
|
inherited |
Get type-specific flags field.
Definition at line 180 of file object.cxx.
References dawn::SObjectId::UObjectId::flags, and dawn::SObjectId::UObjectId::s.
|
inherited |
Get object identifier as union structure.
Definition at line 150 of file object.cxx.
|
inherited |
Get object identifier as raw 32-bit value.
Definition at line 155 of file object.cxx.
References dawn::SObjectId::UObjectId::v.
|
inherited |
Get an I/O object by ID.
| id | Object ID to retrieve. |
Definition at line 41 of file bindable.cxx.
|
inherited |
Get the I/O map for this object.
Definition at line 18 of file bindable.cxx.
|
inherited |
Get object configuration item.
Retrieves configuration data for this object.
| objcfg | Configuration ID specifying which config item to retrieve. |
| data | Pointer to buffer for configuration data. |
| len | Length of buffer in 32-bit words. |
Definition at line 240 of file object.cxx.
References dawn::SObjectCfg::SObjectCfgItem::data, dawn::SObjectCfg::objectCfgGetSize(), and dawn::CDescObject::objectCfgItemId().
|
inherited |
Get an object by ID.
| id | Object ID to retrieve. |
Definition at line 52 of file bindable.cxx.
References dawn::CBindableObject::getIO(), dawn::SObjectId::objectIdGetType(), and dawn::SObjectId::OBJTYPE_IO.
|
inlineprotectedinherited |
Get the output IO for the first bind.
Convenience for sub-classes that need to emit an initial value during doStart() without iterating the internal bind vector.
Definition at line 251 of file process.hxx.
|
inherited |
Get instance/private data field.
Definition at line 185 of file object.cxx.
References dawn::SObjectId::UObjectId::priv, and dawn::SObjectId::UObjectId::s.
|
inlineprotectedinherited |
Get the source IO for the first bind.
Convenience for sub-classes that need to read the current source value during doStart().
Definition at line 268 of file process.hxx.
|
inlinevirtualinherited |
Get current operational state.
Default returns STATE_RUNNING after successful start(), STATE_STOPPED otherwise. Objects with richer states (e.g. paused) should override.
Definition at line 183 of file object.hxx.
References dawn::CObject::STATE_RUNNING, and dawn::CObject::STATE_STOPPED.
|
inherited |
Get object type field.
Definition at line 165 of file object.cxx.
References dawn::SObjectId::UObjectId::s, and dawn::SObjectId::UObjectId::type.
|
inlineprotectedvirtual |
Process incoming sample.
| [in] | output | Result output I/O object. |
| [in] | data | Sample data from source I/O. |
| [in] | ioData | Per-binding input data buffer. |
| [in] | outputData | Per-binding output data buffer. |
| [in,out] | initsample | Per-binding initial sample flag. |
Implements dawn::CProgProcess.
Definition at line 81 of file process_template.hxx.
References dawn::SObjectId::DTYPE_DOUBLE, dawn::SObjectId::DTYPE_FLOAT, dawn::SObjectId::DTYPE_INT16, dawn::SObjectId::DTYPE_INT32, dawn::SObjectId::DTYPE_INT64, dawn::SObjectId::DTYPE_INT8, dawn::SObjectId::DTYPE_UINT16, dawn::SObjectId::DTYPE_UINT32, dawn::SObjectId::DTYPE_UINT64, dawn::SObjectId::DTYPE_UINT8, and dawn::io_ddata_t::getDtype().
|
inlineprotectedinherited |
Common callback wrapper.
| [in] | bind | Per-binding state. |
| [in] | data | Sample data. |
Definition at line 284 of file process.hxx.
References dawn::CProgProcess::handleWithState().
|
protectedvirtualinherited |
Process incoming sample with optional per-binding state.
The default implementation preserves the original handle() contract.
Reimplemented in dawn::CProgMovingAverage, and dawn::CProgStatsRms.
Definition at line 110 of file process.cxx.
References dawn::CProgProcess::handle().
|
virtualinherited |
Check if a background thread is active.
Reimplemented from dawn::CObject.
Definition at line 305 of file process.cxx.
|
virtualinherited |
One-time initialize Program after bindings are resolved.
Reimplemented from dawn::CObject.
Definition at line 207 of file process.cxx.
References dawn::CProgProcess::bindStateAlloc(), and dawn::CBindableObject::getIO().
|
inlineprotectedvirtualinherited |
Pre-update hook for runtime configuration writes.
Called by setObjConfig() before descriptor-backed storage is updated. Derived classes may validate incoming data and prepare/apply runtime side effects. Returning a negative error rejects the update.
| objcfg | Configuration ID that will be updated. |
| data | Pointer to new config words. |
| len | Number of config words. |
Reimplemented in dawn::CIOAdcStream, dawn::CIOAdcSync, and dawn::CIOPwm.
Definition at line 386 of file object.hxx.
|
inherited |
Set object configuration item.
Updates a configuration item for this object.
| objcfg | Configuration ID specifying which config item to update. |
| data | Pointer to configuration data. |
| len | Length of configuration data in 32-bit words. |
Definition at line 200 of file object.cxx.
References dawn::SObjectCfg::SObjectCfgItem::data, dawn::SObjectCfg::objectCfgGetRw(), dawn::SObjectCfg::objectCfgGetSize(), dawn::CDescObject::objectCfgItemId(), and dawn::CObject::onSetObjConfig().
|
inherited |
Set an item in the object map.
| id | Object ID to set. |
| obj | Object pointer to associate with the ID. |
Definition at line 23 of file bindable.cxx.
References dawn::SObjectId::objectIdGetType(), and dawn::SObjectId::OBJTYPE_IO.
|
inlineinherited |
Start object.
Tracks operational state and calls doStart(). This phase may run many times during an object's lifetime and should not perform one-time allocation. Sets started on successful doStart() return.
Definition at line 116 of file object.hxx.
References dawn::CObject::doStart().
|
inlineinherited |
Stop object.
Tracks operational state and calls doStop(). This phase may run many times during an object's lifetime and should not perform one-time deallocation. Always clears started regardless of doStop() return value.
Definition at line 145 of file object.hxx.
References dawn::CObject::doStop().
|
virtualinherited |
Execute a trigger command.
| [in] | cmd | Command identifier (EObjectCmd value). |
Reimplemented from dawn::CObject.
Reimplemented in dawn::CProgThresholdBase.
Definition at line 310 of file process.cxx.
References dawn::CObject::CMD_RESET.
|
staticinherited |
Validate entire descriptor.
Validates a descriptor binary object-by-object using default checks.
| desc | Descriptor binary pointer. |
| len | Descriptor length in 32-bit words. |
Definition at line 123 of file object.cxx.
References dawn::CObject::descValidDefault().