diff options
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; +} |