]> sigrok.org Git - libsigrok.git/commitdiff
device: sr_dev_clear() now always works.
authorBert Vermeulen <redacted>
Wed, 26 Feb 2014 20:25:07 +0000 (21:25 +0100)
committerBert Vermeulen <redacted>
Wed, 26 Feb 2014 20:34:58 +0000 (21:34 +0100)
If the driver does not provide a dev_clear() function, the wrapper
now calls std_dev_clear() instead.

backend.c
device.c

index 0ed16a58f47fc894cf126dc73180055f3e41f520..7f1fef889f68b5994c637b4de3f6ca99d145404e 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -166,10 +166,6 @@ static int sanity_check_all_drivers(void)
                        sr_err("No dev_list in driver %d ('%s').", i, d);
                        errors++;
                }
-               if (!drivers[i]->dev_clear) {
-                       sr_err("No dev_clear in driver %d ('%s').", i, d);
-                       errors++;
-               }
                /* Note: config_get() is optional. */
                if (!drivers[i]->config_set) {
                        sr_err("No config_set in driver %d ('%s').", i, d);
index c0df1ecc4b4ee48e7f6bd641ab6b4f107e5761eb..212ddb7dc91c1f6289f4f09cc2753dd520fb8efa 100644 (file)
--- a/device.c
+++ b/device.c
@@ -456,20 +456,31 @@ SR_API GSList *sr_dev_list(const struct sr_dev_driver *driver)
 }
 
 /**
- * Clear all devices/instances of the specified driver.
+ * Clear the list of device instances a driver knows about.
  *
- * @param driver The driver to use. Must not be NULL.
+ * @param driver The driver to use. This must be a pointer to one of
+ *               the entries returned by sr_driver_list(). Must not be NULL.
  *
- * @return SR_OK upon success, a negative error code upon errors.
+ * @retval SR_OK Success
+ * @retval SR_ERR_ARG Invalid driver
  *
  * @since 0.2.0
  */
 SR_API int sr_dev_clear(const struct sr_dev_driver *driver)
 {
-       if (driver && driver->dev_clear)
-               return driver->dev_clear();
+       int ret;
+
+       if (!driver) {
+               sr_err("Invalid driver.");
+               return SR_ERR_ARG;
+       }
+
+       if (driver->dev_clear)
+               ret = driver->dev_clear();
        else
-               return SR_OK;
+               ret = std_dev_clear(driver, NULL);
+
+       return ret;
 }
 
 /**