serial-dmm: Add per-driver clear_instances() wrappers.

This commit is contained in:
Uwe Hermann 2012-12-13 01:54:13 +01:00
parent 0c23677d0b
commit fd9b2b865a
1 changed files with 20 additions and 6 deletions

View File

@ -143,16 +143,15 @@ SR_PRIV struct dmm_info dmms[] = {
}; };
/* Properly close and free all devices. */ /* Properly close and free all devices. */
static int clear_instances(void) static int clear_instances(int dmm)
{ {
struct sr_dev_inst *sdi; struct sr_dev_inst *sdi;
struct drv_context *drvc; struct drv_context *drvc;
struct dev_context *devc; struct dev_context *devc;
GSList *l; GSList *l;
struct sr_dev_driver *di;
/* di is not necessarily initialized */ di = dmms[dmm].di;
if (!di)
return SR_OK;
if (!(drvc = di->priv)) if (!(drvc = di->priv))
return SR_OK; return SR_OK;
@ -172,6 +171,21 @@ static int clear_instances(void)
return SR_OK; return SR_OK;
} }
/* Driver-specific clear_instances() function wrappers */
#define CLEAR_INSTANCES(X) static int clear_instances_##X(void) \
{ return clear_instances(X); }
CLEAR_INSTANCES(DIGITEK_DT4000ZC)
CLEAR_INSTANCES(TEKPOWER_TP4000ZC)
CLEAR_INSTANCES(METEX_ME31)
CLEAR_INSTANCES(PEAKTECH_3410)
CLEAR_INSTANCES(MASTECH_MAS345)
CLEAR_INSTANCES(VA_VA18B)
CLEAR_INSTANCES(METEX_M3640D)
CLEAR_INSTANCES(PEAKTECH_4370)
CLEAR_INSTANCES(PCE_PCE_DM32)
CLEAR_INSTANCES(RADIOSHACK_22_168)
CLEAR_INSTANCES(RADIOSHACK_22_812)
static int hw_init(struct sr_context *sr_ctx, int dmm) static int hw_init(struct sr_context *sr_ctx, int dmm)
{ {
struct drv_context *drvc; struct drv_context *drvc;
@ -399,7 +413,7 @@ static int hw_dev_close(struct sr_dev_inst *sdi)
static int hw_cleanup(int dmm) static int hw_cleanup(int dmm)
{ {
clear_instances(); clear_instances(dmm);
return SR_OK; return SR_OK;
} }
@ -553,7 +567,7 @@ SR_PRIV struct sr_dev_driver ID##_driver_info = { \
.cleanup = hw_cleanup_##ID_UPPER, \ .cleanup = hw_cleanup_##ID_UPPER, \
.scan = hw_scan_##ID_UPPER, \ .scan = hw_scan_##ID_UPPER, \
.dev_list = hw_dev_list_##ID_UPPER, \ .dev_list = hw_dev_list_##ID_UPPER, \
.dev_clear = clear_instances, \ .dev_clear = clear_instances_##ID_UPPER, \
.dev_open = hw_dev_open, \ .dev_open = hw_dev_open, \
.dev_close = hw_dev_close, \ .dev_close = hw_dev_close, \
.info_get = hw_info_get, \ .info_get = hw_info_get, \