diff options
author | Anton Lundin <glance@acc.umu.se> | 2016-12-28 20:55:52 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2016-12-28 22:40:18 -0800 |
commit | db8e786f85a821441166a237a76f576f11cf4bd0 (patch) | |
tree | 796e6b188855549d8c12836cb05a66918706c554 /core/libdivecomputer.c | |
parent | ce959fb757287bd77e2a13453f5d86602d0fa2b5 (diff) | |
download | subsurface-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.c | 29 |
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; +} |