livoxGen1: add n-dgrams-per-frame param
This commit is contained in:
@@ -40,6 +40,11 @@ Each stim-buff-api is designed to work with specific stim-iface libraries that u
|
|||||||
+edev | avia0 | pcloud(format=xyz) | livoxGen1-pcloud(data-rate-hz=10) | livoxProto1(command-timeout-ms=1000,retry-delay-ms=3000,smo-ip=192.168.1.50,smo-subnet-nbits=24) | 3JEDK380010Z39
|
+edev | avia0 | pcloud(format=xyz) | livoxGen1-pcloud(data-rate-hz=10) | livoxProto1(command-timeout-ms=1000,retry-delay-ms=3000,smo-ip=192.168.1.50,smo-subnet-nbits=24) | 3JEDK380010Z39
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Example with n-dgrams-per-frame parameter**:
|
||||||
|
```
|
||||||
|
+edev | avia0 | pcloud(format=xyz) | livoxGen1-pcloud(data-rate-hz=10,n-dgrams-per-frame=30) | livoxProto1(command-timeout-ms=1000,retry-delay-ms=3000,smo-ip=192.168.1.50,smo-subnet-nbits=24) | 3JEDK380010Z39
|
||||||
|
```
|
||||||
|
|
||||||
**Alternative Format Examples**:
|
**Alternative Format Examples**:
|
||||||
```
|
```
|
||||||
+edev | avia0 | pcloud(format=spherical) | livoxGen1-pcloud(data-rate-hz=10) | livoxProto1(command-timeout-ms=1000,retry-delay-ms=3000,smo-ip=192.168.1.50,smo-subnet-nbits=24) | 3JEDK380010Z39
|
+edev | avia0 | pcloud(format=spherical) | livoxGen1-pcloud(data-rate-hz=10) | livoxProto1(command-timeout-ms=1000,retry-delay-ms=3000,smo-ip=192.168.1.50,smo-subnet-nbits=24) | 3JEDK380010Z39
|
||||||
@@ -142,9 +147,10 @@ The `livoxProto1` provider accepts the following parameters:
|
|||||||
|
|
||||||
Each stim-buff-api accepts device-specific parameters:
|
Each stim-buff-api accepts device-specific parameters:
|
||||||
|
|
||||||
| Parameter | Description | Example |
|
| Parameter | Description | Default | Example |
|
||||||
|-----------|-------------|---------|
|
|-----------|-------------|---------|---------|
|
||||||
| `data-rate-hz` | Data sampling rate in Hz | `data-rate-hz=10` |
|
| `data-rate-hz` | Data sampling rate in Hz | - | `data-rate-hz=10` |
|
||||||
|
| `n-dgrams-per-frame` / `num-dgrams-per-frame` | Number of UDP datagrams per staging buffer frame | 30 | `n-dgrams-per-frame=30` or `num-dgrams-per-frame=30` |
|
||||||
|
|
||||||
### Quale-Iface-API Parameters
|
### Quale-Iface-API Parameters
|
||||||
|
|
||||||
|
|||||||
@@ -109,6 +109,35 @@ static int parseHistbuffMs(
|
|||||||
return histbuffMs;
|
return histbuffMs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Helper function to parse n-dgrams-per-frame from stim-buff-api params
|
||||||
|
static size_t parseNDgramsPerFrame(
|
||||||
|
const std::shared_ptr<smo::device::DeviceAttachmentSpec>& spec)
|
||||||
|
{
|
||||||
|
size_t nDgramsPerFrame = 30; // Default: 30 datagrams per frame
|
||||||
|
const std::vector<std::string> nDgramsPerFrameParamNames = {
|
||||||
|
"n-dgrams-per-frame",
|
||||||
|
"num-dgrams-per-frame"
|
||||||
|
};
|
||||||
|
|
||||||
|
// Loop through synonyms in reverse order; lattermost synonym wins.
|
||||||
|
for (auto synIt = nDgramsPerFrameParamNames.rbegin();
|
||||||
|
synIt != nDgramsPerFrameParamNames.rend(); ++synIt)
|
||||||
|
{
|
||||||
|
const auto& paramName = *synIt;
|
||||||
|
try {
|
||||||
|
nDgramsPerFrame = static_cast<size_t>(
|
||||||
|
smo::device::DeviceAttachmentSpec::parseRequiredParamAsInt(
|
||||||
|
spec->stimBuffApiParams, paramName));
|
||||||
|
break; // Found and parsed successfully
|
||||||
|
} catch (const std::exception&) {
|
||||||
|
// Parameter not found or parse error, continue to next synonym
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nDgramsPerFrame;
|
||||||
|
}
|
||||||
|
|
||||||
// LivoxProto1DllState constructor implementation
|
// LivoxProto1DllState constructor implementation
|
||||||
LivoxProto1DllState::LivoxProto1DllState()
|
LivoxProto1DllState::LivoxProto1DllState()
|
||||||
: dlopenHandle(nullptr, DlCloser),
|
: dlopenHandle(nullptr, DlCloser),
|
||||||
@@ -282,8 +311,11 @@ public:
|
|||||||
formatDesc.format = PcloudStimulusProducer::PcloudFormatDesc::Format
|
formatDesc.format = PcloudStimulusProducer::PcloudFormatDesc::Format
|
||||||
::XYZI;
|
::XYZI;
|
||||||
|
|
||||||
|
// Parse n-dgrams-per-frame from stim-buff-api params (default: 30)
|
||||||
|
size_t nDgramsPerFrame = parseNDgramsPerFrame(context->spec);
|
||||||
|
|
||||||
auto pcloudDataProducer = std::make_shared<PcloudStimulusProducer>(
|
auto pcloudDataProducer = std::make_shared<PcloudStimulusProducer>(
|
||||||
context->spec, context->deviceTmp, formatDesc, 30);
|
context->spec, context->deviceTmp, formatDesc, nDgramsPerFrame);
|
||||||
|
|
||||||
context->stimProducer = pcloudDataProducer;
|
context->stimProducer = pcloudDataProducer;
|
||||||
context->deviceTmp->nAttachedStimulusProducers++;
|
context->deviceTmp->nAttachedStimulusProducers++;
|
||||||
|
|||||||
Reference in New Issue
Block a user