Dawn Framework 1.0
Universal data acquisition framework for embedded systems
objectcfg.cxx
1// dawn/src/common/objectcfg.cxx
2//
3// SPDX-License-Identifier: Apache-2.0
4//
5
6#include "dawn/common/objectcfg.hxx"
7
8#include "dawn/debug.hxx"
9
10using namespace dawn;
11
13 ObjectCfgId id)
14{
15 size_t offset = 0;
16
17 // Objid + size
18
19 offset += 2;
20
21 for (size_t i = 0; i < cfg.size; i++)
22 {
23 SObjectCfgItem *item = SObjectCfg::objectAtOffset(cfg, offset);
24
25 if (item->cfgid.v == id)
26 {
27 return item;
28 }
29
30 // Cfgid + data
31
32 offset += 1 + item->cfgid.s.size;
33 }
34
35 return nullptr;
36}
37
39{
40 size_t offset = 0;
41
42 // Objid + size
43
44 offset += 2;
45
46 for (size_t i = 0; i < cfg.size; i++)
47 {
48 SObjectCfgItem *item = SObjectCfg::objectAtOffset(cfg, offset);
49
50 // Cfgid + data
51
52 offset += 1 + item->cfgid.s.size;
53 }
54
55 return offset * 4;
56}
static SObjectCfgItem * objectAtOffset(const SObjectCfgData &cfg, size_t offset)
Get item from offset.
uint32_t ObjectCfgId
ConfigID type - single 32-bit value.
Definition objectcfg.hxx:60
static SObjectCfgItem * objectCfgFromCfgId(const SObjectCfgData &cfg, ObjectCfgId id)
Get item from configuration ID.
Definition objectcfg.cxx:12
static size_t getSizeBytes(const SObjectCfgData &cfg)
Get total size in bytes for this object definition.
Definition objectcfg.cxx:38
Out-of-tree user-extension hooks for Dawn.
Definition bindable.hxx:13
Object configuration data container.
uint32_t size
Number of configuration items for this object (0-32).
Single configuration item within object.
UObjectCfgId cfgid
Configuration ID header (type, class, id, size, rw, dtype).
ObjectCfgId v
Raw 32-bit ConfigID value (for storage, comparison).
Definition objectcfg.hxx:82
uint32_t size
Configuration data size in 32-bit words (bits 5-14, max 1023).
struct dawn::SObjectCfg::UObjectCfgId::@10 s
Bit-field structure for named member access.