Dawn Framework 1.0
Universal data acquisition framework for embedded systems
common.hxx
1// dawn/include/dawn/io/common.hxx
2//
3// SPDX-License-Identifier: Apache-2.0
4//
5
6#pragma once
7
8#include <cstdlib>
9
10#include "dawn/common/object.hxx"
11#include "dawn/debug.hxx"
12#include "dawn/io/ddata.hxx"
13#include "dawn/io/inotifier.hxx"
14#include "dawn/io/limits.hxx"
15#include "dawn/porting/config.hxx"
16
17namespace dawn
18{
26class CIOCommon : public CObject
27{
28public:
29#ifdef CONFIG_DAWN_IO_HAS_STATS
36 struct SIOStats
37 {
38 uint32_t read_count;
39 uint32_t write_count;
40 uint32_t error_count;
41 } typedef IOStats;
42
49 const IOStats &getStats() const
50 {
51 return stats;
52 }
53
58 void resetStats()
59 {
60 stats.read_count = 0;
61 stats.write_count = 0;
62 stats.error_count = 0;
63 }
64#endif // CONFIG_DAWN_IO_HAS_STATS
65
73 enum
74 {
76 IO_FLAGS_TS = (1 << 0),
77
80 } typedef EIOFlags;
81
84 enum
85 {
87
88 // Special purpose IOs
89
96
97 // Dummy
98
100
101 // Number generators
102
106
107 // File I/O
108
110
111 // Sensors
112
126
127 // Sensor producers
128
143
144 // GNSS sensor (uORB sensor_gnss). Read-only, so it has no producer
145 // counterpart and lives outside the aligned sensor/producer ranges above.
146
151
152 // there is 59 sensor types in Nuttx now, most likely it grows later
153 // we still have many free slots, but in the future, it there are no free IO slots
154 // we can thing about combining sensor and sensor producer
155
156 // System information
157
166
167 // Slots 49-59 reserved for future system classes (serial number,
168 // firmware version, firmware update, etc.).
169
170 // GPIO
171
177
178 // PWM / pulse output
179
182
183 // ADC/DAC
184
189
190 // Ecnoder input
191
194
195 // Battery (fuel gauge)
196
200
201 // Cellular modem
202
204
205 // Virtual IO
206
208
209 // User defined
210
213
215 } typedef EIOClass;
216
217 static_assert(IO_CLASS_LAST - 1 <= SObjectId::CLS_MAX);
218
227 enum
228 {
235 IO_CFG_LAST = 31
236 };
237
240 enum
241 {
244 } typedef EIONotifyType;
245
253 template<uint16_t CLASS_ID, uint8_t DEFAULT_DTYPE>
255 {
256 public:
265 constexpr static SObjectId::ObjectId create(bool ts, uint16_t inst)
266 {
267 uint8_t flags = 0;
268
269#ifdef CONFIG_DAWN_IO_TIMESTAMP
270 if (ts)
271 {
272 flags |= CIOCommon::IO_FLAGS_TS;
273 }
274#else
275 DAWNASSERT(ts == false, "ts not supported");
276#endif
277
278 return SObjectId::objectId(SObjectId::OBJTYPE_IO, CLASS_ID, DEFAULT_DTYPE, flags, inst);
279 }
280
291 bool ts,
292 uint16_t inst)
293 {
294 uint8_t flags = 0;
295
296#ifdef CONFIG_DAWN_IO_TIMESTAMP
297 if (ts)
298 {
299 flags |= CIOCommon::IO_FLAGS_TS;
300 }
301#else
302 DAWNASSERT(ts == false, "ts not supported");
303#endif
304
305 return SObjectId::objectId(SObjectId::OBJTYPE_IO, CLASS_ID, dtype, flags, inst);
306 }
307 };
308
320 template<uint16_t CLASS_ID, uint8_t DEFAULT_DTYPE>
322 {
323 public:
331 constexpr static SObjectId::ObjectId create(uint16_t inst)
332 {
334 }
335
344 constexpr static SObjectId::ObjectId create(SObjectId::EObjectDataType dtype, uint16_t inst)
345 {
346 return IOObjectIdHelper<CLASS_ID, DEFAULT_DTYPE>::create(dtype, false, inst);
347 }
348 };
349
356 explicit CIOCommon(CDescObject &desc);
357
372 int getData(IODataCmn &data, size_t len, size_t offset = 0)
373 {
374 int ret;
375
376#ifdef CONFIG_DAWN_IO_SEEKABLE
377 ret = isSeekable() ? getDataAtImpl(data, len, offset)
378 : (offset == 0 ? getDataImpl(data, len) : -ENOTSUP);
379#else
380 ret = (offset == 0) ? getDataImpl(data, len) : -ENOTSUP;
381#endif
382#ifdef CONFIG_DAWN_IO_HAS_STATS
383 if (ret == OK)
384 {
385 if (offset == 0)
386 {
387 stats.read_count++;
388 }
389 }
390 else if (ret != -ENOTSUP)
391 {
392 stats.error_count++;
393 }
394#endif
395 return ret;
396 }
397
411 int setData(IODataCmn &data, size_t offset = 0)
412 {
413 int ret;
414
415#ifdef CONFIG_DAWN_IO_SEEKABLE
416 ret = isSeekable() ? setDataAtImpl(data, offset) : (offset == 0 ? setDataImpl(data) : -ENOTSUP);
417#else
418 ret = (offset == 0) ? setDataImpl(data) : -ENOTSUP;
419#endif
420#ifdef CONFIG_DAWN_IO_HAS_STATS
421 if (ret == OK)
422 {
423 if (offset == 0)
424 {
425 stats.write_count++;
426 }
427 }
428 else if (ret != -ENOTSUP)
429 {
430 stats.error_count++;
431 }
432#endif
433 return ret;
434 }
435
444 virtual int getFd() const
445 {
446 return -ENOTSUP;
447 };
448
457 virtual size_t getDataSize() const = 0;
458
468 virtual size_t getDataDim() const = 0;
469
476 virtual bool isRead() const = 0;
477
484 virtual bool isWrite() const = 0;
485
492 virtual bool isNotify() const = 0;
493
500 virtual bool isBatch() const = 0;
501
510 bool isTimestamp() const;
511
521 virtual bool isSeekable() const
522 {
523 return false;
524 }
525
526#ifdef CONFIG_DAWN_IO_NOTIFY
536 void bindNotifier(IIONotifier *n);
537
550 int setNotifier(IIONotifier::notifier_cb_t cb, int prio, void *priv);
551#endif
552
573 io_ddata_t *ddata_alloc(size_t batch, size_t chunk_size = 0);
574
586 int getConfig(uint32_t cfgid, uint32_t *data, size_t len)
587 {
588 return this->getObjConfig(cfgid, data, len);
589 };
590
602 int setConfig(uint32_t cfgid, uint32_t *data, size_t len)
603 {
604 return this->setObjConfig(cfgid, data, len);
605 };
606
619 constexpr static SObjectCfg::ObjectCfgId cfgIdCmn(bool rw,
620 uint8_t dtype,
621 uint8_t size,
622 uint8_t id)
623 {
625 SObjectId::OBJTYPE_IO, CIOCommon::IO_CLASS_ANY, dtype, rw, size, id);
626 }
627
635 constexpr static SObjectCfg::ObjectCfgId cfgIdDevno(bool rw = false)
636 {
638 }
639
648 constexpr static SObjectCfg::ObjectCfgId cfgIdLimitMin(uint8_t dtype, uint16_t size)
649 {
650 return CIOCommon::cfgIdCmn(false, dtype, size, IO_CFG_LIMIT_MIN);
651 }
652
661 constexpr static SObjectCfg::ObjectCfgId cfgIdLimitMax(uint8_t dtype, uint16_t size)
662 {
663 return CIOCommon::cfgIdCmn(false, dtype, size, IO_CFG_LIMIT_MAX);
664 }
665
674 constexpr static SObjectCfg::ObjectCfgId cfgIdLimitStep(uint8_t dtype, uint16_t size)
675 {
676 return CIOCommon::cfgIdCmn(false, dtype, size, IO_CFG_LIMIT_STEP);
677 }
678
686 constexpr static SObjectCfg::ObjectCfgId cfgIdNotify(bool rw = false)
687 {
689 }
690
691#ifdef CONFIG_DAWN_IO_NOTIFY
698 uint8_t getNotifyType() const
699 {
700 return notifyType;
701 }
702
709 int getNotifyPrio() const
710 {
711 return notifyPrio;
712 }
713
720 size_t getNotifyBatch() const
721 {
722 return notifyBatch;
723 }
724#endif
725
726protected:
727#ifdef CONFIG_DAWN_IO_NOTIFY
730 IIONotifier *notifier;
731#endif
732
741 virtual int getDataImpl(IODataCmn &data, size_t len)
742 {
743 (void)data;
744 (void)len;
745 return -ENOTSUP;
746 }
747
755 virtual int setDataImpl(IODataCmn &data)
756 {
757 (void)data;
758 return -ENOTSUP;
759 }
760
774 virtual int getDataAtImpl(IODataCmn &data, size_t len, size_t offset)
775 {
776 (void)data;
777 (void)len;
778 (void)offset;
779 return -ENOTSUP;
780 }
781
793 virtual int setDataAtImpl(IODataCmn &data, size_t offset)
794 {
795 (void)data;
796 (void)offset;
797 return -ENOTSUP;
798 }
799
800#ifdef CONFIG_DAWN_IO_NOTIFY
808 int notifyData(io_ddata_t *data);
809#endif
810
817 int getCmnDevno() const
818 {
819 return this->devno;
820 }
821
826 const uint32_t *getCmnLimitMin()
827 {
828 return this->limits.getMin();
829 }
830
835 const uint32_t *getCmnLimitMax()
836 {
837 return this->limits.getMax();
838 }
839
844 const uint32_t *getCmnLimitStep()
845 {
846 return this->limits.getStep();
847 }
848
854 {
855 return this->limits.getWords();
856 }
857
862 const CIOLimits &getCmnLimits() const
863 {
864 return this->limits;
865 }
866
874 size_t cfgCmnOffset(const SObjectCfg::SObjectCfgItem *cfg);
875
882 uint64_t getTimestamp();
883
884private:
885 int devno;
886 CIOLimits limits;
887#ifdef CONFIG_DAWN_IO_NOTIFY
888 uint8_t notifyType;
889 int notifyPrio;
890 size_t notifyBatch;
891#endif
892#ifdef CONFIG_DAWN_IO_HAS_STATS
893 IOStats stats;
894#endif
895
905 int configureDesc(const CDescObject &desc);
906};
907} // Namespace dawn
Descriptor wrapper for individual object configuration.
Template helper for creating ObjectIDs for I/O types without timestamp support.
Definition common.hxx:322
static SObjectId::ObjectId create(SObjectId::EObjectDataType dtype, uint16_t inst)
Create ObjectID with custom data type and no timestamp.
Definition common.hxx:344
static SObjectId::ObjectId create(uint16_t inst)
Create ObjectID with fixed data type and no timestamp.
Definition common.hxx:331
Template helper for creating ObjectIDs for I/O types.
Definition common.hxx:255
static SObjectId::ObjectId create(bool ts, uint16_t inst)
Create ObjectID with default data type.
Definition common.hxx:265
static SObjectId::ObjectId create(SObjectId::EObjectDataType dtype, bool ts, uint16_t inst)
Create ObjectID with custom data type.
Definition common.hxx:290
Base class for all I/O objects.
Definition common.hxx:27
virtual bool isWrite() const =0
Check if IO supports write operations.
static SObjectCfg::ObjectCfgId cfgIdLimitMax(uint8_t dtype, uint16_t size)
Create ConfigID for maximum I/O limits.
Definition common.hxx:661
int getConfig(uint32_t cfgid, uint32_t *data, size_t len)
Get I/O configuration item.
Definition common.hxx:586
int setData(IODataCmn &data, size_t offset=0)
Set data for I/O (public interface with stats tracking).
Definition common.hxx:411
virtual bool isBatch() const =0
Check if IO supports batch operations.
size_t getCmnLimitWords()
Get number of 32-bit words in I/O limit arrays.
Definition common.hxx:853
virtual int getDataAtImpl(IODataCmn &data, size_t len, size_t offset)
Get data at byte offset (override in seekable IOs).
Definition common.hxx:774
int getData(IODataCmn &data, size_t len, size_t offset=0)
Get data from I/O (public interface with stats tracking).
Definition common.hxx:372
const CIOLimits & getCmnLimits() const
Get common IO limits container.
Definition common.hxx:862
static SObjectCfg::ObjectCfgId cfgIdLimitStep(uint8_t dtype, uint16_t size)
Create ConfigID for step I/O limits.
Definition common.hxx:674
const uint32_t * getCmnLimitMin()
Get minimum I/O limit words.
Definition common.hxx:826
static SObjectCfg::ObjectCfgId cfgIdCmn(bool rw, uint8_t dtype, uint8_t size, uint8_t id)
Create ConfigID for I/O common configuration.
Definition common.hxx:619
@ IO_CFG_LIMIT_STEP
Step limit words.
Definition common.hxx:233
@ IO_CFG_NOTIFY
Notifier configuration (type + priority)
Definition common.hxx:234
@ IO_CFG_FIRST
First config ID.
Definition common.hxx:229
@ IO_CFG_LIMIT_MIN
Minimum limit words.
Definition common.hxx:231
@ IO_CFG_LAST
Last config ID.
Definition common.hxx:235
@ IO_CFG_LIMIT_MAX
Maximum limit words.
Definition common.hxx:232
@ IO_CFG_DEVNO
Device number configuration.
Definition common.hxx:230
const uint32_t * getCmnLimitMax()
Get maximum I/O limit words.
Definition common.hxx:835
static SObjectCfg::ObjectCfgId cfgIdDevno(bool rw=false)
Create ConfigID for device number configuration.
Definition common.hxx:635
virtual bool isNotify() const =0
Check if IO supports notifications.
virtual int getFd() const
Get file descriptor for notifications.
Definition common.hxx:444
uint64_t getTimestamp()
Get current timestamp.
Definition common.cxx:194
virtual bool isSeekable() const
Check if IO supports partial (seekable) access.
Definition common.hxx:521
bool isTimestamp() const
Check if I/O supports timestamp.
Definition common.cxx:189
virtual int setDataAtImpl(IODataCmn &data, size_t offset)
Set data at byte offset (override in seekable IOs).
Definition common.hxx:793
EIONotifyType
Notifier type enumeration.
Definition common.hxx:241
@ IO_NOTIFY_POLL
Poll-based notifier (default)
Definition common.hxx:242
@ IO_NOTIFY_STREAM
Stream notifier (blocking read, one per IO)
Definition common.hxx:243
int getCmnDevno() const
Get device number for this I/O.
Definition common.hxx:817
virtual int setDataImpl(IODataCmn &data)
Set data implementation (override in derived classes).
Definition common.hxx:755
virtual size_t getDataDim() const =0
Get data vector dimension.
io_ddata_t * ddata_alloc(size_t batch, size_t chunk_size=0)
Allocate data buffer for this I/O.
Definition common.cxx:247
virtual size_t getDataSize() const =0
Get data size in bytes.
EIOFlags
I/O common flags.
Definition common.hxx:74
@ IO_FLAGS_TS
Timestamp support flag.
Definition common.hxx:76
@ IO_FLAGS_NONE
No flags.
Definition common.hxx:75
virtual int getDataImpl(IODataCmn &data, size_t len)
Get data implementation (override in derived classes).
Definition common.hxx:741
virtual bool isRead() const =0
Check if IO supports read operations.
int setConfig(uint32_t cfgid, uint32_t *data, size_t len)
Set I/O configuration item.
Definition common.hxx:602
size_t cfgCmnOffset(const SObjectCfg::SObjectCfgItem *cfg)
Get offset of configuration item in descriptor.
Definition common.cxx:144
EIOClass
I/O object class types.
Definition common.hxx:85
@ IO_CLASS_SENSOR_PRODUCER_MAGNETICFIELD
Magnetic field publisher.
Definition common.hxx:130
@ IO_CLASS_SENSOR_MAGNETICFIELD
Magnetic field sensor.
Definition common.hxx:114
@ IO_CLASS_SENSOR_PRODUCER_ACCELEROMETER
Accelerometer publisher.
Definition common.hxx:129
@ IO_CLASS_DAC
Digital-to-analog converter.
Definition common.hxx:185
@ IO_CLASS_TRIGGER
Trigger I/O.
Definition common.hxx:91
@ IO_CLASS_PWM
PWM output.
Definition common.hxx:180
@ IO_CLASS_SYSTEM_RESETCAUSE
Reset cause.
Definition common.hxx:161
@ IO_CLASS_ADC_STREAM
ADC stream (batch/high-throughput)
Definition common.hxx:188
@ IO_CLASS_VIRT
Virtual I/O.
Definition common.hxx:207
@ IO_CLASS_SYSTEM_UPTIME
System uptime.
Definition common.hxx:158
@ IO_CLASS_BATTERY_VOLTAGE
Battery voltage (fuel gauge)
Definition common.hxx:197
@ IO_CLASS_SYSTEM_POWEROFF
Power off control.
Definition common.hxx:162
@ IO_CLASS_USER_START
User-defined types start here.
Definition common.hxx:211
@ IO_CLASS_BATTERY_STATE
Battery charge state.
Definition common.hxx:199
@ IO_CLASS_GPI_SINGLE
Single GPIO input.
Definition common.hxx:172
@ IO_CLASS_SENSOR_PRODUCER_LIGHT
Light publisher.
Definition common.hxx:132
@ IO_CLASS_SENSOR_PRODUCER_CONFIG
Sensor producer configuration IDs.
Definition common.hxx:142
@ IO_CLASS_SENSOR_PRODUCER_ATEMPERATURE
Ambient temperature publisher.
Definition common.hxx:137
@ IO_CLASS_ANY
Any I/O class.
Definition common.hxx:86
@ IO_CLASS_SYSTEM_SYSTEMTIME
System time.
Definition common.hxx:165
@ IO_CLASS_SENSOR_PRODUCER_HUMIDITY
Humidity publisher.
Definition common.hxx:135
@ IO_CLASS_ENCODER_INDEX
Quadrature encoder (position+index)
Definition common.hxx:193
@ IO_CLASS_SENSOR_PRODUCER_IR
Infrared publisher.
Definition common.hxx:139
@ IO_CLASS_ADC_FETCH
ADC fetch (on-demand)
Definition common.hxx:186
@ IO_CLASS_CAPABILITIES
Capabilities bitmask I/O.
Definition common.hxx:94
@ IO_CLASS_PULSECOUNT
Finite pulse-train output.
Definition common.hxx:181
@ IO_CLASS_SENSOR_LIGHT
Light sensor.
Definition common.hxx:116
@ IO_CLASS_SENSOR_BAROMETER
Barometer sensor.
Definition common.hxx:117
@ IO_CLASS_SENSOR_PRODUCER_UV
Ultraviolet publisher.
Definition common.hxx:140
@ IO_CLASS_SENSOR_HUMIDITY
Humidity sensor.
Definition common.hxx:119
@ IO_CLASS_SENSOR_PROXIMITY
Proximity sensor.
Definition common.hxx:118
@ IO_CLASS_SENSOR_GNSS_TIME
GNSS UTC time (seconds since epoch)
Definition common.hxx:148
@ IO_CLASS_SENSOR_PRODUCER_GAS
Gas publisher.
Definition common.hxx:141
@ IO_CLASS_SENSOR_TEMPERATURE
Temperature sensor.
Definition common.hxx:120
@ IO_CLASS_LAST
Last I/O class marker.
Definition common.hxx:214
@ IO_CLASS_FILE
File system I/O.
Definition common.hxx:109
@ IO_CLASS_SENSOR_PRODUCER_GYROSCOPE
Gyroscope publisher.
Definition common.hxx:131
@ IO_CLASS_CONTROL
Control I/O.
Definition common.hxx:93
@ IO_CLASS_BUTTONS
Button input.
Definition common.hxx:174
@ IO_CLASS_SYSTEM_HOSTNAME
System hostname.
Definition common.hxx:163
@ IO_CLASS_SENSOR_GNSS_INFO
GNSS accuracy + DOP (eph/epv/hdop/pdop/vdop)
Definition common.hxx:149
@ IO_CLASS_SENSOR_PRODUCER_RGB
RGB color publisher.
Definition common.hxx:138
@ IO_CLASS_SENSOR_PRODUCER_TEMPERATURE
Temperature publisher.
Definition common.hxx:136
@ IO_CLASS_SENSOR_UV
Ultraviolet sensor.
Definition common.hxx:124
@ IO_CLASS_CONFIG
Configuration I/O.
Definition common.hxx:90
@ IO_CLASS_DESC_SELECTOR
Descriptor slot selector I/O.
Definition common.hxx:95
@ IO_CLASS_SENSOR_GNSS
GNSS position+velocity (lat/lon/alt/speed/course)
Definition common.hxx:147
@ IO_CLASS_DUMMY
Dummy I/O (for testing)
Definition common.hxx:99
@ IO_CLASS_SENSOR_ACCELEROMETER
Accelerometer sensor.
Definition common.hxx:113
@ IO_CLASS_SENSOR_RGB
RGB color sensor.
Definition common.hxx:122
@ IO_CLASS_USER
User-defined I/O.
Definition common.hxx:212
@ IO_CLASS_TIMESTAMP
Timestamp generator.
Definition common.hxx:103
@ IO_CLASS_SENSOR_GYROSCOPE
Gyroscope sensor.
Definition common.hxx:115
@ IO_CLASS_SYSTEM_UUID
UUID.
Definition common.hxx:164
@ IO_CLASS_SENSOR_GNSS_SATELLITES
GNSS satellites used in fix.
Definition common.hxx:150
@ IO_CLASS_ADC_SYNC
ADC sync (HW-triggered control loop)
Definition common.hxx:187
@ IO_CLASS_ENCODER
Quadrature encoder (position)
Definition common.hxx:192
@ IO_CLASS_GPO_SINGLE
Single GPIO output.
Definition common.hxx:173
@ IO_CLASS_SENSOR_IR
Infrared sensor.
Definition common.hxx:123
@ IO_CLASS_SYSTEM_CPULOAD
CPU load.
Definition common.hxx:159
@ IO_CLASS_SENSOR_PRODUCER_PROXIMITY
Proximity publisher.
Definition common.hxx:134
@ IO_CLASS_SENSOR_ATEMPERATURE
Ambient temperature sensor.
Definition common.hxx:121
@ IO_CLASS_BATTERY_SOC
Battery state of charge (%)
Definition common.hxx:198
@ IO_CLASS_DUMMY_NOTIFY
Timer-driven dummy IO.
Definition common.hxx:105
@ IO_CLASS_LEDS
LED output.
Definition common.hxx:175
@ IO_CLASS_RGBLED
RGB LED output.
Definition common.hxx:176
@ IO_CLASS_RAND
Random number generator.
Definition common.hxx:104
@ IO_CLASS_SENSOR_GAS
Gas sensor.
Definition common.hxx:125
@ IO_CLASS_LTE_SIGNAL
LTE signal quality (RSRP/RSRQ/SINR/RSSI)
Definition common.hxx:203
@ IO_CLASS_SENSOR_PRODUCER_BAROMETER
Barometer publisher.
Definition common.hxx:133
@ IO_CLASS_DESCRIPTOR
Descriptor I/O.
Definition common.hxx:92
@ IO_CLASS_SYSTEM_RESET
System reset control.
Definition common.hxx:160
static SObjectCfg::ObjectCfgId cfgIdLimitMin(uint8_t dtype, uint16_t size)
Create ConfigID for minimum I/O limits.
Definition common.hxx:648
const uint32_t * getCmnLimitStep()
Get step I/O limit words.
Definition common.hxx:844
static SObjectCfg::ObjectCfgId cfgIdNotify(bool rw=false)
Create ConfigID for notifier configuration.
Definition common.hxx:686
Common IO runtime limits container and validator.
Definition limits.hxx:24
size_t getWords() const
Get configured limit array size in words.
Definition limits.hxx:140
const uint32_t * getMax() const
Get maximum limit words pointer.
Definition limits.hxx:114
const uint32_t * getStep() const
Get step limit words pointer.
Definition limits.hxx:127
const uint32_t * getMin() const
Get minimum limit words pointer.
Definition limits.hxx:101
Base class for all Dawn objects (IOs, Programs, Protocols).
Definition object.hxx:28
int getObjConfig(SObjectCfg::ObjectCfgId objcfg, uint32_t *data, size_t len)
Get object configuration item.
Definition object.cxx:240
int setObjConfig(SObjectCfg::ObjectCfgId objcfg, uint32_t *data, size_t len)
Set object configuration item.
Definition object.cxx:200
Abstract interface for registering asynchronous I/O notification.
Definition inotifier.hxx:25
int(* notifier_cb_t)(void *priv, io_ddata_t *data)
Notifier callback function type.
Definition inotifier.hxx:37
static ObjectCfgId objectCfg(uint8_t type, uint16_t cls, uint8_t dtype, bool rw, uint16_t size, uint8_t id)
Construct 32-bit ConfigID from component fields.
uint32_t ObjectCfgId
ConfigID type - single 32-bit value.
Definition objectcfg.hxx:60
Out-of-tree user-extension hooks for Dawn.
Definition bindable.hxx:13
Base interface for I/O data buffers (static and dynamic).
Definition idata.hxx:21
Single configuration item within object.
@ OBJTYPE_IO
Input/Output object type.
Definition objectid.hxx:184
EObjectDataType
Data types supported by Dawn framework.
Definition objectid.hxx:61
@ DTYPE_UINT32
Unsigned 32-bit integer (0 to 4294967295).
Definition objectid.hxx:96
uint32_t ObjectId
ObjectID type - single 32-bit value.
Definition objectid.hxx:44
static ObjectId objectId(uint8_t type, uint16_t cls, uint8_t dtype, uint8_t flags, uint16_t priv)
Construct 32-bit ObjectID from component fields.
Definition objectid.hxx:290
Heap-allocated dynamic I/O data buffer.
Definition ddata.hxx:21