]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/gmc-mh-1x-2x/api.c
Add helper function for scan completion
[libsigrok.git] / src / hardware / gmc-mh-1x-2x / api.c
index 3abbd16cbf0e3646d17a8e8827fa814151c82d18..3d18ebdab81858057d0ec04311b46638a35631a8 100644 (file)
@@ -32,9 +32,6 @@
 #define SERIALCOMM_2X "9600/8n1/dtr=1/rts=1/flow=0"
 #define VENDOR_GMC "Gossen Metrawatt"
 
-SR_PRIV struct sr_dev_driver gmc_mh_1x_2x_rs232_driver_info;
-SR_PRIV struct sr_dev_driver gmc_mh_2x_bd232_driver_info;
-
 static const uint32_t scanopts[] = {
        SR_CONF_CONN,
        SR_CONF_SERIALCOMM,
@@ -158,7 +155,6 @@ static GSList *scan_1x_2x_rs232(struct sr_dev_driver *di, GSList *options)
 
        devices = NULL;
        drvc = di->context;
-       drvc->instances = NULL;
        conn = serialcomm = NULL;
        serialcomm_given = FALSE;
 
@@ -221,13 +217,11 @@ static GSList *scan_1x_2x_rs232(struct sr_dev_driver *di, GSList *options)
                devc->settings_ok = FALSE;
                sdi->conn = serial;
                sdi->priv = devc;
-               sdi->driver = di;
                sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "P1");
-               drvc->instances = g_slist_append(drvc->instances, sdi);
                devices = g_slist_append(devices, sdi);
        }
 
-       return devices;
+       return std_scan_complete(di, devices);
 }
 
 /**
@@ -252,7 +246,6 @@ static GSList *scan_2x_bd232(struct sr_dev_driver *di, GSList *options)
        devices = NULL;
 
        drvc = di->context;
-       drvc->instances = NULL;
 
        sr_spew("scan_2x_bd232() called!");
 
@@ -315,9 +308,7 @@ static GSList *scan_2x_bd232(struct sr_dev_driver *di, GSList *options)
                        sdi->version = g_strdup_printf("Firmware %d.%d", devc->fw_ver_maj, devc->fw_ver_min);
                        sdi->conn = serial;
                        sdi->priv = devc;
-                       sdi->driver = di;
                        sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "P1");
-                       drvc->instances = g_slist_append(drvc->instances, sdi);
                        devices = g_slist_append(devices, sdi);
                        devc = g_malloc0(sizeof(struct dev_context));
                        sdi = g_malloc0(sizeof(struct sr_dev_inst));
@@ -332,7 +323,7 @@ static GSList *scan_2x_bd232(struct sr_dev_driver *di, GSList *options)
                sr_dev_inst_free(sdi);
        }
 
-       return devices;
+       return std_scan_complete(di, devices);
 
 exit_err:
        sr_info("scan_2x_bd232(): Error!");
@@ -372,9 +363,11 @@ static int config_get(uint32_t key, GVariant **data, const struct sr_dev_inst *s
 
        (void)cg;
 
-       if (!sdi || !(devc = sdi->priv))
+       if (!sdi)
                return SR_ERR_ARG;
 
+       devc = sdi->priv;
+
        ret = SR_OK;
        switch (key) {
        case SR_CONF_LIMIT_SAMPLES:
@@ -509,7 +502,7 @@ static int dev_acquisition_stop(struct sr_dev_inst *sdi)
                        sdi->conn, LOG_PREFIX);
 }
 
-SR_PRIV struct sr_dev_driver gmc_mh_1x_2x_rs232_driver_info = {
+static struct sr_dev_driver gmc_mh_1x_2x_rs232_driver_info = {
        .name = "gmc-mh-1x-2x-rs232",
        .longname = "Gossen Metrawatt Metrahit 1x/2x, RS232 interface",
        .api_version = 1,
@@ -527,8 +520,9 @@ SR_PRIV struct sr_dev_driver gmc_mh_1x_2x_rs232_driver_info = {
        .dev_acquisition_stop = dev_acquisition_stop,
        .context = NULL,
 };
+SR_REGISTER_DEV_DRIVER(gmc_mh_1x_2x_rs232_driver_info);
 
-SR_PRIV struct sr_dev_driver gmc_mh_2x_bd232_driver_info = {
+static struct sr_dev_driver gmc_mh_2x_bd232_driver_info = {
        .name = "gmc-mh-2x-bd232",
        .longname = "Gossen Metrawatt Metrahit 2x, BD232/SI232-II interface",
        .api_version = 1,
@@ -546,3 +540,4 @@ SR_PRIV struct sr_dev_driver gmc_mh_2x_bd232_driver_info = {
        .dev_acquisition_stop = dev_acquisition_stop,
        .context = NULL,
 };
+SR_REGISTER_DEV_DRIVER(gmc_mh_2x_bd232_driver_info);