129 lines
3.0 KiB
Cython
129 lines
3.0 KiB
Cython
# -*- coding: utf-8 -*-
|
|
"""!
|
|
Author: J.A. de Jong - ASCEE
|
|
|
|
Description:
|
|
|
|
DeviceInfo C++ object wrapper
|
|
|
|
"""
|
|
__all__ = ['DeviceInfo']
|
|
|
|
def pickle(dat):
|
|
dev = DeviceInfo()
|
|
# print('DESERIALIZE****')
|
|
dev.devinfo = dev.devinfo.deserialize(dat)
|
|
return dev
|
|
|
|
cdef class DeviceInfo:
|
|
def __cinit__(self):
|
|
pass
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
def __reduce__(self):
|
|
serialized = self.devinfo.serialize()
|
|
# print('SERIALIZE****')
|
|
return (pickle, (serialized,))
|
|
|
|
@property
|
|
def api(self): return self.devinfo.api.apiname.decode('utf-8')
|
|
|
|
@property
|
|
def name(self): return self.devinfo.device_name.decode('utf-8')
|
|
|
|
def __repr__(self):
|
|
return self.api + ': ' + self.name
|
|
|
|
@property
|
|
def ninchannels(self): return self.devinfo.ninchannels
|
|
|
|
@property
|
|
def noutchannels(self): return self.devinfo.noutchannels
|
|
|
|
@property
|
|
def availableSampleRates(self): return self.devinfo.availableSampleRates
|
|
|
|
@property
|
|
def availableFramesPerBlock(self):
|
|
return self.devinfo.availableFramesPerBlock
|
|
|
|
@property
|
|
def availableDataTypes(self):
|
|
pydtypes = []
|
|
for datatype in self.devinfo.availableDataTypes:
|
|
pydtypes.append(datatype.name.decode('utf-8'))
|
|
return pydtypes
|
|
|
|
@property
|
|
def prefSampleRateIndex(self):
|
|
return self.devinfo.prefSampleRateIndex
|
|
|
|
@property
|
|
def prefSampleRate(self):
|
|
return self.availableSampleRates[
|
|
self.prefSampleRateIndex]
|
|
|
|
@property
|
|
def prefFramesPerBlockIndex(self):
|
|
return self.devinfo.prefFramesPerBlockIndex
|
|
|
|
@property
|
|
def prefFramesPerBlock(self):
|
|
return self.availableFramesPerBlock[
|
|
self.prefFramesPerBlockIndex]
|
|
|
|
@property
|
|
def prefDataTypeIndex(self):
|
|
return self.devinfo.prefDataTypeIndex
|
|
|
|
@property
|
|
def prefDataType(self):
|
|
return self.availableDataTypes[
|
|
self.prefDataTypeIndex]
|
|
@property
|
|
def hasInputIEPE(self):
|
|
return self.devinfo.hasInputIEPE
|
|
|
|
@property
|
|
def hasInputACCouplingSwitch(self):
|
|
return self.devinfo.hasInputACCouplingSwitch
|
|
|
|
@property
|
|
def hasInputTrigger(self):
|
|
return self.devinfo.hasInputTrigger
|
|
|
|
@property
|
|
def inputRanges(self):
|
|
return self.devinfo.availableInputRanges
|
|
|
|
@staticmethod
|
|
def getDeviceInfo():
|
|
"""
|
|
Returns device information objects (DeviceInfo) for all available
|
|
devices
|
|
"""
|
|
cdef:
|
|
vector[cppDeviceInfo] devinfos
|
|
us numdevs, devno
|
|
cppDeviceInfo* devinfo
|
|
|
|
devinfos = cppDaq.getDeviceInfo()
|
|
numdevs = devinfos.size()
|
|
|
|
pydevinfos = []
|
|
for devno in range(numdevs):
|
|
devinfo = &(devinfos[devno])
|
|
|
|
d = DeviceInfo()
|
|
d.devinfo = devinfo[0]
|
|
|
|
pydevinfos.append(d)
|
|
return pydevinfos
|
|
|
|
@property
|
|
def availableInputRanges(self):
|
|
return self.devinfo.availableInputRanges
|
|
|