aboutsummaryrefslogtreecommitdiffstats
path: root/core/libdivecomputer.c
diff options
context:
space:
mode:
authorGravatar Anton Lundin <glance@acc.umu.se>2016-12-28 20:55:52 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2016-12-28 22:40:18 -0800
commitdb8e786f85a821441166a237a76f576f11cf4bd0 (patch)
tree796e6b188855549d8c12836cb05a66918706c554 /core/libdivecomputer.c
parentce959fb757287bd77e2a13453f5d86602d0fa2b5 (diff)
downloadsubsurface-db8e786f85a821441166a237a76f576f11cf4bd0.tar.gz
Lift ostc_get_data_descriptor out from ostctools.c
This is for later reuse of that function in other source files. Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'core/libdivecomputer.c')
-rw-r--r--core/libdivecomputer.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/core/libdivecomputer.c b/core/libdivecomputer.c
index 4a50acf90..89d9702ce 100644
--- a/core/libdivecomputer.c
+++ b/core/libdivecomputer.c
@@ -1135,3 +1135,32 @@ dc_status_t libdc_buffer_parser(struct dive *dive, device_data_t *data, unsigned
dc_parser_destroy(parser);
return(DC_STATUS_SUCCESS);
}
+
+/*
+ * Returns a dc_descriptor_t structure based on dc model's number and family.
+ */
+
+dc_descriptor_t *ostc_get_data_descriptor(int data_model, dc_family_t data_fam)
+{
+ dc_descriptor_t *descriptor = NULL, *current = NULL;
+ ;
+ dc_iterator_t *iterator = NULL;
+ dc_status_t rc;
+
+ rc = dc_descriptor_iterator(&iterator);
+ if (rc != DC_STATUS_SUCCESS) {
+ fprintf(stderr, "Error creating the device descriptor iterator.\n");
+ return current;
+ }
+ while ((dc_iterator_next(iterator, &descriptor)) == DC_STATUS_SUCCESS) {
+ int desc_model = dc_descriptor_get_model(descriptor);
+ dc_family_t desc_fam = dc_descriptor_get_type(descriptor);
+ if (data_model == desc_model && data_fam == desc_fam) {
+ current = descriptor;
+ break;
+ }
+ dc_descriptor_free(descriptor);
+ }
+ dc_iterator_free(iterator);
+ return current;
+}