From e2c020d4c722cf23494713c109ba9c125d8b36c2 Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Fri, 24 Mar 2017 23:10:16 +0100 Subject: [PATCH] Report errors from the close function --- src/cressi_edy.c | 5 ++++- src/diverite_nitekq.c | 5 ++++- src/oceanic_atom2.c | 5 ++++- src/oceanic_veo250.c | 5 ++++- src/oceanic_vtpro.c | 5 ++++- src/reefnet_sensus.c | 9 ++++++--- src/shearwater_petrel.c | 14 ++++++++++++-- 7 files changed, 38 insertions(+), 10 deletions(-) diff --git a/src/cressi_edy.c b/src/cressi_edy.c index b28b423..9270b92 100644 --- a/src/cressi_edy.c +++ b/src/cressi_edy.c @@ -320,7 +320,10 @@ cressi_edy_device_close (dc_device_t *abstract) dc_status_t rc = DC_STATUS_SUCCESS; // Send the quit command. - cressi_edy_quit (device); + rc = cressi_edy_quit (device); + if (rc != DC_STATUS_SUCCESS) { + dc_status_set_error(&status, rc); + } // Close the device. rc = dc_serial_close (device->port); diff --git a/src/diverite_nitekq.c b/src/diverite_nitekq.c index 30060cd..1565779 100644 --- a/src/diverite_nitekq.c +++ b/src/diverite_nitekq.c @@ -217,7 +217,10 @@ diverite_nitekq_device_close (dc_device_t *abstract) dc_status_t rc = DC_STATUS_SUCCESS; // Disconnect. - diverite_nitekq_send (device, DISCONNECT); + rc = diverite_nitekq_send (device, DISCONNECT); + if (rc != DC_STATUS_SUCCESS) { + dc_status_set_error(&status, rc); + } // Close the device. rc = dc_serial_close (device->port); diff --git a/src/oceanic_atom2.c b/src/oceanic_atom2.c index 01e4fd4..34cc592 100644 --- a/src/oceanic_atom2.c +++ b/src/oceanic_atom2.c @@ -714,7 +714,10 @@ oceanic_atom2_device_close (dc_device_t *abstract) dc_status_t rc = DC_STATUS_SUCCESS; // Send the quit command. - oceanic_atom2_quit (device); + rc = oceanic_atom2_quit (device); + if (rc != DC_STATUS_SUCCESS) { + dc_status_set_error(&status, rc); + } // Close the device. rc = dc_serial_close (device->port); diff --git a/src/oceanic_veo250.c b/src/oceanic_veo250.c index 9db215c..033081d 100644 --- a/src/oceanic_veo250.c +++ b/src/oceanic_veo250.c @@ -337,7 +337,10 @@ oceanic_veo250_device_close (dc_device_t *abstract) dc_status_t rc = DC_STATUS_SUCCESS; // Switch the device back to surface mode. - oceanic_veo250_quit (device); + rc = oceanic_veo250_quit (device); + if (rc != DC_STATUS_SUCCESS) { + dc_status_set_error(&status, rc); + } // Close the device. rc = dc_serial_close (device->port); diff --git a/src/oceanic_vtpro.c b/src/oceanic_vtpro.c index 22d042b..3128079 100644 --- a/src/oceanic_vtpro.c +++ b/src/oceanic_vtpro.c @@ -517,7 +517,10 @@ oceanic_vtpro_device_close (dc_device_t *abstract) dc_status_t rc = DC_STATUS_SUCCESS; // Switch the device back to surface mode. - oceanic_vtpro_quit (device); + rc = oceanic_vtpro_quit (device); + if (rc != DC_STATUS_SUCCESS) { + dc_status_set_error(&status, rc); + } // Close the device. rc = dc_serial_close (device->port); diff --git a/src/reefnet_sensus.c b/src/reefnet_sensus.c index 51e9a7f..09c5266 100644 --- a/src/reefnet_sensus.c +++ b/src/reefnet_sensus.c @@ -152,9 +152,12 @@ reefnet_sensus_device_close (dc_device_t *abstract) // Safely close the connection if the last handshake was // successful, but no data transfer was ever initiated. - if (device->waiting) - reefnet_sensus_cancel (device); - + if (device->waiting) { + rc = reefnet_sensus_cancel (device); + if (rc != DC_STATUS_SUCCESS) { + dc_status_set_error(&status, rc); + } + } // Close the device. rc = dc_serial_close (device->port); diff --git a/src/shearwater_petrel.c b/src/shearwater_petrel.c index b791388..13e1496 100644 --- a/src/shearwater_petrel.c +++ b/src/shearwater_petrel.c @@ -115,14 +115,24 @@ error_free: static dc_status_t shearwater_petrel_device_close (dc_device_t *abstract) { + dc_status_t status = DC_STATUS_SUCCESS; shearwater_common_device_t *device = (shearwater_common_device_t *) abstract; + dc_status_t rc = DC_STATUS_SUCCESS; // Shutdown the device. unsigned char request[] = {0x2E, 0x90, 0x20, 0x00}; - shearwater_common_transfer (device, request, sizeof (request), NULL, 0, NULL); + rc = shearwater_common_transfer (device, request, sizeof (request), NULL, 0, NULL); + if (rc != DC_STATUS_SUCCESS) { + dc_status_set_error(&status, rc); + } // Close the device. - return shearwater_common_close (device); + rc = shearwater_common_close (device); + if (rc != DC_STATUS_SUCCESS) { + dc_status_set_error(&status, rc); + } + + return status; }