From a2b9d887a896a79ae0ed6592090de637c4b1a483 Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Fri, 3 Dec 2010 23:15:47 +0100 Subject: [PATCH] Add a devinfo event for the Cressi Edy. --- src/cressi_edy.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/cressi_edy.c b/src/cressi_edy.c index 0ee7404..fdefd23 100644 --- a/src/cressi_edy.c +++ b/src/cressi_edy.c @@ -51,6 +51,7 @@ typedef struct cressi_edy_device_t { device_t base; serial_t *port; unsigned char fingerprint[PAGESIZE / 2]; + unsigned int model; } cressi_edy_device_t; static device_status_t cressi_edy_device_set_fingerprint (device_t *abstract, const unsigned char data[], unsigned int size); @@ -138,7 +139,13 @@ cressi_edy_init2 (cressi_edy_device_t *device) unsigned char command[1] = {0x44}; unsigned char answer[2] = {0}; - return cressi_edy_transfer (device, command, sizeof (command), answer, sizeof (answer), 0); + device_status_t rc = cressi_edy_transfer (device, command, sizeof (command), answer, sizeof (answer), 0); + if (rc != DEVICE_STATUS_SUCCESS) + return rc; + + device->model = answer[1]; + + return DEVICE_STATUS_SUCCESS; } @@ -180,6 +187,7 @@ cressi_edy_device_open (device_t **out, const char* name) // Set the default values. device->port = NULL; + device->model = 0; // Open the device. int rc = serial_open (&device->port, name); @@ -342,6 +350,13 @@ cressi_edy_device_foreach (device_t *abstract, dive_callback_t callback, void *u (RB_PROFILE_END - RB_PROFILE_BEGIN); device_event_emit (abstract, DEVICE_EVENT_PROGRESS, &progress); + // Emit a device info event. + device_devinfo_t devinfo; + devinfo.model = device->model; + devinfo.firmware = 0; + devinfo.serial = 0; + device_event_emit (abstract, DEVICE_EVENT_DEVINFO, &devinfo); + // Read the configuration data. unsigned char config[CRESSI_EDY_PACKET_SIZE] = {0}; device_status_t rc = cressi_edy_device_read (abstract, 0x7F80, config, sizeof (config));