6#include "dawn/io/adc_sync.hxx"
12int CIOAdcSync::configureDesc(
const CDescObject &desc)
17 for (
size_t i = 0; i < desc.
getSize(); i++)
33 case IO_ADC_SYNC_CFG_TRIGGER_FREQ:
37 DAWNERR(
"invalid adc_sync trigger freq cfg size %d\n",
42 triggerFreqHz = *
reinterpret_cast<const uint32_t *
>(&item->
data);
43 if (triggerFreqHz == 0)
45 DAWNERR(
"adc_sync trigger frequency must be > 0\n");
49 hasTriggerFreq =
true;
56 DAWNERR(
"unsupported adc_sync cfg 0x%08" PRIx32
"\n", item->
cfgid.
v);
65 DAWNERR(
"unsupported adc_sync cfg 0x%08" PRIx32
"\n", item->
cfgid.
v);
81 DAWNERR(
"adc_sync configure failed (error %d)\n", ret);
85 ret = configureDevice();
93 ret = adc_set_timer_freq(getFdInternal(), triggerFreqHz);
110 return readSamples(data, len);
120 return adc_stop(getFdInternal());
126 return adc_start(getFdInternal());
138 if (len != 1 || data[0] == 0)
143 ret = adc_set_timer_freq(getFdInternal(), data[0]);
149 triggerFreqHz = data[0];
150 hasTriggerFreq =
true;
Descriptor wrapper for individual object configuration.
size_t getSize() const
Get number of configuration items for this object.
SObjectCfg::SObjectCfgItem * objectCfgItemAtOffset(size_t offset) const
Get configuration item at specified offset.
int getDataImpl(IODataCmn &data, size_t len)
Get data implementation (override in derived classes).
int doStop()
Stop implementation hook.
int trigger(uint8_t cmd)
Execute a trigger command.
int configure()
Configure object from descriptor data.
int doStart()
Start implementation hook.
int onSetObjConfig(SObjectCfg::ObjectCfgId objcfg, uint32_t *data, size_t len)
Pre-update hook for runtime configuration writes.
size_t cfgCmnOffset(const SObjectCfg::SObjectCfgItem *cfg)
Get offset of configuration item in descriptor.
@ IO_CLASS_ANY
Any I/O class.
@ IO_CLASS_ADC_SYNC
ADC sync (HW-triggered control loop)
CDescObject & getDesc()
Get descriptor object for this object.
uint32_t ObjectCfgId
ConfigID type - single 32-bit value.
static uint8_t objectCfgGetId(const ObjectCfgId objcfg)
Extract configuration identifier from ConfigID.
Out-of-tree user-extension hooks for Dawn.
Base interface for I/O data buffers (static and dynamic).
Single configuration item within object.
ObjectCfgData_t data[]
Configuration data array (flexible, size from cfgid.s.size).
UObjectCfgId cfgid
Configuration ID header (type, class, id, size, rw, dtype).
ObjectCfgId v
Raw 32-bit ConfigID value (for storage, comparison).
uint32_t cls
Object class (bits 21-29, max 511).
uint32_t id
Configuration identifier (bits 0-4, max 31).
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.