device: sr_dev_clear() now always works.

If the driver does not provide a dev_clear() function, the wrapper
now calls std_dev_clear() instead.
This commit is contained in:
Bert Vermeulen 2014-02-26 21:25:07 +01:00
parent 0294a409b8
commit 8102cee4d4
2 changed files with 17 additions and 10 deletions

View File

@ -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);

View File

@ -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;
}
/**