From d4a8f2eb40ecde00c8c771130ceed40de957817a Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Tue, 16 Apr 2013 12:32:03 +0200 Subject: [PATCH] Add support for retrieving the transport type. With the new interface, an application can easily retrieve the underlying transport type from the device descriptors and present a custom user interface element to the end-user for supplying transport specific parameters. For example the serial port for devices using serial communcication. For devices using a usb-serial chipset or the bluetooth Serial Port Profile (SPP/rfcomm), the transport type is DC_TRANSPORT_SERIAL, because internally the serial emulation layer is used for the communication. --- include/libdivecomputer/descriptor.h | 10 ++++++++++ src/descriptor.c | 14 ++++++++++++++ src/libdivecomputer.symbols | 1 + 3 files changed, 25 insertions(+) diff --git a/include/libdivecomputer/descriptor.h b/include/libdivecomputer/descriptor.h index 82e643f..6f9735d 100644 --- a/include/libdivecomputer/descriptor.h +++ b/include/libdivecomputer/descriptor.h @@ -29,6 +29,13 @@ extern "C" { #endif /* __cplusplus */ +typedef enum dc_transport_t { + DC_TRANSPORT_NONE, + DC_TRANSPORT_SERIAL, + DC_TRANSPORT_USB, + DC_TRANSPORT_IRDA +} dc_transport_t; + typedef struct dc_descriptor_t dc_descriptor_t; dc_status_t @@ -49,6 +56,9 @@ dc_descriptor_get_type (dc_descriptor_t *descriptor); unsigned int dc_descriptor_get_model (dc_descriptor_t *descriptor); +dc_transport_t +dc_descriptor_get_transport (dc_descriptor_t *descriptor); + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/src/descriptor.c b/src/descriptor.c index b550624..0154dd9 100644 --- a/src/descriptor.c +++ b/src/descriptor.c @@ -280,3 +280,17 @@ dc_descriptor_get_model (dc_descriptor_t *descriptor) return descriptor->model; } + +dc_transport_t +dc_descriptor_get_transport (dc_descriptor_t *descriptor) +{ + if (descriptor == NULL) + return DC_TRANSPORT_NONE; + + if (descriptor->type == DC_FAMILY_ATOMICS_COBALT) + return DC_TRANSPORT_USB; + else if (descriptor->type == DC_FAMILY_UWATEC_SMART) + return DC_TRANSPORT_IRDA; + else + return DC_TRANSPORT_SERIAL; +} diff --git a/src/libdivecomputer.symbols b/src/libdivecomputer.symbols index 07b0a08..9748695 100644 --- a/src/libdivecomputer.symbols +++ b/src/libdivecomputer.symbols @@ -31,6 +31,7 @@ dc_descriptor_get_vendor dc_descriptor_get_product dc_descriptor_get_type dc_descriptor_get_model +dc_descriptor_get_transport dc_parser_new dc_parser_get_type