summaryrefslogtreecommitdiffstats
path: root/core/device.cpp
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-10-05 20:55:57 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-10-16 14:26:37 -0700
commitc4bfecce1bcd9a7b5f2fc85b1466adf9a1d2336a (patch)
tree1d7e7def04354b5cdb9735adb0370aac773d07e4 /core/device.cpp
parent4a50badb57efd7725fa540ea7bb13f1e334cb83c (diff)
downloadsubsurface-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.cpp37
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;
+}