diff --git a/extern/limedriver b/extern/limedriver index d1e1cd6..294e31d 160000 --- a/extern/limedriver +++ b/extern/limedriver @@ -1 +1 @@ -Subproject commit d1e1cd6bba209c0ca604411d50329abaa5a824b1 +Subproject commit 294e31d9cfa3f49f4973b92dc5d93a757653057e diff --git a/pyproject.toml b/pyproject.toml index 85ff8e8..173e588 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "limedriver" -version = "0.3.0" +version = "0.4.0" description = "Python bindings for limedriver" authors = [{name = "Kumi", email = "limedriver@kumi.email"}] license = {file = "LICENSE"} diff --git a/src/limedriver/limedriver.pyx b/src/limedriver/limedriver.pyx index 4bd4a5e..039da97 100644 --- a/src/limedriver/limedriver.pyx +++ b/src/limedriver/limedriver.pyx @@ -5,13 +5,16 @@ from cpython.mem cimport PyMem_Malloc, PyMem_Free from libc.stdlib cimport malloc, free from libc.string cimport memcpy, strcpy - +from libcpp.vector cimport vector from libcpp.string cimport string +from libcpp.pair cimport pair import pathlib cdef extern from "limedriver.h": cdef struct LimeConfig_t: + string device + float srate int channel int TX_matching @@ -92,6 +95,10 @@ cdef extern from "limedriver.h": cdef LimeConfig_t initializeLimeConfig(int Npulses) cdef int run_experiment_from_LimeCfg(LimeConfig_t config) + + cdef pair[int, int] getChannelsFromInfo(string device) + + cdef vector[string] getDeviceList() cdef class PyLimeConfig: @@ -656,6 +663,14 @@ cdef class PyLimeConfig: self._config.c3_synth[i] = values[i] # String properties + @property + def device(self): + return self._config.device.decode('utf-8') + + @device.setter + def device(self, str value): + self._config.device = value.encode('utf-8') + @property def file_pattern(self): return self._config.file_pattern.decode() @@ -703,4 +718,11 @@ cdef class PyLimeConfig: path = self.save_path + self.file_stamp + '_' + self.file_pattern + '.h5' path = pathlib.Path(path).absolute() return path - \ No newline at end of file + +def get_device_list(): + cdef vector[string] devices = getDeviceList() + return [device.decode('utf-8') for device in devices] + +def get_channels_for_device(device = ""): + cdef pair[int, int] channels = getChannelsFromInfo(device.encode()) + return channels.first, channels.second