112 lines
4.4 KiB
C++
112 lines
4.4 KiB
C++
#include <algorithm>
|
|
#include <assert.h>
|
|
#include <pybind11/numpy.h>
|
|
#include <stdint.h>
|
|
#include <iostream>
|
|
#include "lasp_daqconfig.h"
|
|
#include "lasp_deviceinfo.h"
|
|
|
|
using std::cerr;
|
|
namespace py = pybind11;
|
|
|
|
PYBIND11_MODULE(lasp_device, m) {
|
|
|
|
m.doc() = "Lasp device interface";
|
|
|
|
/// DataType
|
|
py::class_<DataTypeDescriptor> dtype_desc(m, "DataTypeDescriptor");
|
|
dtype_desc.def_readonly("name", &DataTypeDescriptor::name);
|
|
dtype_desc.def_readonly("sw", &DataTypeDescriptor::sw);
|
|
dtype_desc.def_readonly("is_floating", &DataTypeDescriptor::is_floating);
|
|
|
|
py::enum_<DataTypeDescriptor::DataType>(dtype_desc, "DataType")
|
|
.value("dtype_fl32", DataTypeDescriptor::DataType::dtype_fl32)
|
|
.value("dtype_fl64", DataTypeDescriptor::DataType::dtype_fl64)
|
|
.value("dtype_int8", DataTypeDescriptor::DataType::dtype_int8)
|
|
.value("dtype_int16", DataTypeDescriptor::DataType::dtype_int16)
|
|
.value("dtype_int32", DataTypeDescriptor::DataType::dtype_int32).export_values();
|
|
|
|
dtype_desc.def_readonly("dtype", &DataTypeDescriptor::dtype);
|
|
|
|
|
|
/// DaqApi
|
|
py::class_<DaqApi> daqapi(m, "DaqApi");
|
|
daqapi.def_readonly("apiname", &DaqApi::apiname);
|
|
daqapi.def_readonly("apicode", &DaqApi::apicode);
|
|
daqapi.def_readonly("api_specific_subcode", &DaqApi::api_specific_subcode);
|
|
daqapi.def("__str__", [](const DaqApi &d) { return std::string(d); });
|
|
|
|
/// DeviceInfo
|
|
py::class_<DeviceInfo> devinfo(m, "DeviceInfo");
|
|
devinfo.def_readonly("api", &DeviceInfo::api);
|
|
devinfo.def_readonly("device_name", &DeviceInfo::device_name);
|
|
|
|
devinfo.def_readonly("availableDataTypes", &DeviceInfo::availableDataTypes);
|
|
devinfo.def_readonly("prefDataTypeIndex", &DeviceInfo::prefDataTypeIndex);
|
|
|
|
devinfo.def_readonly("availableSampleRates",
|
|
&DeviceInfo::availableSampleRates);
|
|
devinfo.def_readonly("prefSampleRateIndex", &DeviceInfo::prefSampleRateIndex);
|
|
|
|
devinfo.def_readonly("availableFramesPerBlock",
|
|
&DeviceInfo::availableFramesPerBlock);
|
|
devinfo.def_readonly("prefFramesPerBlockIndex",
|
|
&DeviceInfo::prefFramesPerBlockIndex);
|
|
|
|
devinfo.def_readonly("availableInputRanges",
|
|
&DeviceInfo::availableInputRanges);
|
|
devinfo.def_readonly("prefInputRangeIndex", &DeviceInfo::prefInputRangeIndex);
|
|
|
|
devinfo.def_readonly("ninchannels", &DeviceInfo::ninchannels);
|
|
devinfo.def_readonly("noutchannels", &DeviceInfo::noutchannels);
|
|
devinfo.def_readonly("hasInputIEPE", &DeviceInfo::hasInputIEPE);
|
|
devinfo.def_readonly("hasInputACCouplingSwitch",
|
|
&DeviceInfo::hasInputACCouplingSwitch);
|
|
|
|
devinfo.def("serialize", &DeviceInfo::serialize);
|
|
|
|
devinfo.def_static("deserialize", &DeviceInfo::deserialize);
|
|
|
|
/// DaqConfiguration
|
|
py::class_<DaqConfiguration> daqconfig(m, "DaqConfiguration");
|
|
daqconfig.def(py::init<>());
|
|
daqconfig.def_readwrite("eninchannels", &DaqConfiguration::eninchannels);
|
|
daqconfig.def_readwrite("enoutchannels", &DaqConfiguration::enoutchannels);
|
|
|
|
daqconfig.def_readwrite("inchannel_sensitivities",
|
|
&DaqConfiguration::inchannel_sensitivities);
|
|
daqconfig.def_readwrite("inchannel_metadata",
|
|
&DaqConfiguration::inchannel_metadata);
|
|
daqconfig.def_readwrite("inchannel_names",
|
|
&DaqConfiguration::inchannel_names);
|
|
|
|
daqconfig.def_readwrite("outchannel_sensitivities",
|
|
&DaqConfiguration::outchannel_sensitivities);
|
|
daqconfig.def_readwrite("outchannel_names",
|
|
&DaqConfiguration::outchannel_names);
|
|
daqconfig.def_readwrite("inchannel_metadata",
|
|
&DaqConfiguration::inchannel_metadata);
|
|
|
|
daqconfig.def_readwrite("sampleRateIndex",
|
|
&DaqConfiguration::sampleRateIndex);
|
|
daqconfig.def_readwrite("dataTypeIndex",
|
|
&DaqConfiguration::dataTypeIndex);
|
|
|
|
daqconfig.def_readwrite("framesPerBlockIndex",
|
|
&DaqConfiguration::framesPerBlockIndex);
|
|
daqconfig.def_readwrite("monitorOutput",
|
|
&DaqConfiguration::monitorOutput);
|
|
|
|
daqconfig.def_readwrite("inputIEPEEnabled",
|
|
&DaqConfiguration::inputIEPEEnabled);
|
|
daqconfig.def_readwrite("inputACCouplingMode",
|
|
&DaqConfiguration::inputACCouplingMode);
|
|
|
|
daqconfig.def_readwrite("inputRangeIndices",
|
|
&DaqConfiguration::inputRangeIndices);
|
|
|
|
daqconfig.def("match", &DaqConfiguration::match);
|
|
|
|
}
|
|
|