diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-10-05 20:55:57 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-10-16 14:26:37 -0700 |
commit | c4bfecce1bcd9a7b5f2fc85b1466adf9a1d2336a (patch) | |
tree | 1d7e7def04354b5cdb9735adb0370aac773d07e4 /core/device.cpp | |
parent | 4a50badb57efd7725fa540ea7bb13f1e334cb83c (diff) | |
download | subsurface-c4bfecce1bcd9a7b5f2fc85b1466adf9a1d2336a.tar.gz |
core: add C struct device and struct device_table accessors
Up to now, "struct device" and "struct device_table" were C++
only, because they used C++ strings for convenience. Since we
switched from QString to std::string, we can create accessors
for these structs. For the C code, we simply declare them as
opaque structs and give the full definition only for C++.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core/device.cpp')
-rw-r--r-- | core/device.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/core/device.cpp b/core/device.cpp index 21a53e2f6..b65c8dd7f 100644 --- a/core/device.cpp +++ b/core/device.cpp @@ -358,3 +358,40 @@ const char *get_dc_nickname(const struct divecomputer *dc) else return dc->model; } + +extern "C" int nr_devices(const struct device_table *table) +{ + return (int)table->devices.size(); +} + +extern "C" const struct device *get_device(const struct device_table *table, int i) +{ + if (i < 0 || i > nr_devices(table)) + return NULL; + return &table->devices[i]; +} + +extern "C" const char *device_get_model(const struct device *dev) +{ + return dev ? dev->model.c_str() : NULL; +} + +extern "C" const uint32_t device_get_id(const struct device *dev) +{ + return dev ? dev->deviceId : -1; +} + +extern "C" const char *device_get_serial(const struct device *dev) +{ + return dev ? dev->serialNumber.c_str() : NULL; +} + +extern "C" const char *device_get_firmware(const struct device *dev) +{ + return dev ? dev->firmware.c_str() : NULL; +} + +extern "C" const char *device_get_nickname(const struct device *dev) +{ + return dev ? dev->nickName.c_str() : NULL; +} |