]> sigrok.org Git - libsigrok.git/commitdiff
Simplify single device list handling
authorLars-Peter Clausen <redacted>
Mon, 16 May 2016 09:37:23 +0000 (11:37 +0200)
committerUwe Hermann <redacted>
Fri, 27 May 2016 12:44:24 +0000 (14:44 +0200)
Some driver scan() functions only ever return a single device. For those it
is possible to slightly simplify the handling of the device list by
creating it on demand when the function returns.

Some drivers also have the following expression:
devices = g_slist_append(devices, sdi);
...
if (!devices)
...

This check will never evaluate to false so it is dropped as well.

Signed-off-by: Lars-Peter Clausen <redacted>
17 files changed:
src/hardware/arachnid-labs-re-load-pro/api.c
src/hardware/asix-sigma/api.c
src/hardware/atten-pps3xxx/api.c
src/hardware/baylibre-acme/api.c
src/hardware/beaglelogic/api.c
src/hardware/center-3xx/api.c
src/hardware/colead-slm/api.c
src/hardware/conrad-digi-35-cpu/api.c
src/hardware/demo/demo.c
src/hardware/ikalogic-scanaplus/api.c
src/hardware/korad-kaxxxxp/api.c
src/hardware/manson-hcs-3xxx/api.c
src/hardware/mic-985xx/api.c
src/hardware/motech-lps-30x/api.c
src/hardware/openbench-logic-sniffer/api.c
src/hardware/pce-322a/api.c
src/hardware/tondaj-sl-814/api.c

index 923f6b01e68bff16c095e6c38430520ed32fed7d..79fa4242319cbc38be860cc9db219df7729e2224 100644 (file)
@@ -65,14 +65,13 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        struct sr_serial_dev_inst *serial;
        struct sr_channel_group *cg;
        struct sr_channel *ch;
-       GSList *l, *devices;
+       GSList *l;
        int ret, len;
        const char *conn, *serialcomm;
        char buf[100];
        char *bufptr;
        double version;
 
-       devices = NULL;
        drvc = di->context;
 
        conn = serialcomm = NULL;
@@ -145,13 +144,10 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
 
        devc = g_malloc0(sizeof(struct dev_context));
        sdi->priv = devc;
-       devices = g_slist_append(devices, sdi);
 
        serial_close(serial);
-       if (!devices)
-               sr_serial_dev_inst_free(serial);
 
-       return std_scan_complete(di, devices);
+       return std_scan_complete(di, g_slist_append(NULL, sdi));
 }
 
 static int config_list(uint32_t key, GVariant **data,
index 8f04809e070d7ad39f93f10e3975dbe8f3aa97e9..a102b03b32d6ef672175eda65ede82cebef43c11 100644 (file)
@@ -65,7 +65,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
 {
        struct sr_dev_inst *sdi;
        struct dev_context *devc;
-       GSList *devices;
        struct ftdi_device_list *devlist;
        char serial_txt[10];
        uint32_t serial;
@@ -74,8 +73,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
 
        (void)options;
 
-       devices = NULL;
-
        devc = g_malloc0(sizeof(struct dev_context));
 
        ftdi_init(&devc->ftdic);
@@ -120,13 +117,12 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        for (i = 0; i < ARRAY_SIZE(channel_names); i++)
                sr_channel_new(sdi, i, SR_CHANNEL_LOGIC, TRUE, channel_names[i]);
 
-       devices = g_slist_append(devices, sdi);
        sdi->priv = devc;
 
        /* We will open the device again when we need it. */
        ftdi_list_free(&devlist);
 
-       return std_scan_complete(di, devices);
+       return std_scan_complete(di, g_slist_append(NULL, sdi));
 
 free:
        ftdi_deinit(&devc->ftdic);
index 3b9f11333e55b086003db45b568a928ab6877f8e..34a31cea1f8e1d6f7eb260a116cc90ff1846a3c2 100644 (file)
@@ -84,7 +84,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options, int modelid)
        struct sr_channel *ch;
        struct sr_channel_group *cg;
        struct sr_serial_dev_inst *serial;
-       GSList *l, *devices;
+       GSList *l;
        const struct pps_model *model;
        uint8_t packet[PACKET_SIZE];
        unsigned int i;
@@ -92,7 +92,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options, int modelid)
        const char *conn, *serialcomm;
        char channel[10];
 
-       devices = NULL;
        drvc = di->context;
 
        conn = serialcomm = NULL;
@@ -175,13 +174,10 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options, int modelid)
        devc->config = g_malloc0(sizeof(struct per_channel_config) * model->num_channels);
        devc->delay_ms = delay_ms;
        sdi->priv = devc;
-       devices = g_slist_append(devices, sdi);
 
        serial_close(serial);
-       if (!devices)
-               sr_serial_dev_inst_free(serial);
 
-       return std_scan_complete(di, devices);
+       return std_scan_complete(di, g_slist_append(NULL, sdi));
 }
 
 static GSList *scan_3203(struct sr_dev_driver *di, GSList *options)
index 2072ccbd858664d73798dde913e1a307838e3228..ed21b921eae0f264ecb02806ba78bba93c94c0ae 100644 (file)
@@ -55,14 +55,11 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
 {
        struct dev_context *devc;
        struct sr_dev_inst *sdi;
-       GSList *devices;
        gboolean status;
        int i;
 
        (void)options;
 
-       devices = NULL;
-
        devc = g_malloc0(sizeof(struct dev_context));
        devc->samplerate = SR_HZ(10);
 
@@ -120,9 +117,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        if (!sdi->channel_groups)
                goto err_out;
 
-       devices = g_slist_append(devices, sdi);
-
-       return std_scan_complete(di, devices);
+       return std_scan_complete(di, g_slist_append(NULL, sdi));
 
 err_out:
        g_free(devc);
index a94a917ad811b8fc0bf153a345adfed4145ddf17..f945c3aa1d142aa1f85464078f8eab8376218ef5 100644 (file)
@@ -73,14 +73,12 @@ static struct dev_context *beaglelogic_devc_alloc(void)
 
 static GSList *scan(struct sr_dev_driver *di, GSList *options)
 {
-       GSList *devices, *l;
+       GSList *l;
        struct sr_config *src;
        struct sr_dev_inst *sdi;
        struct dev_context *devc;
        int i, maxch;
 
-       devices = NULL;
-
        /* Probe for /dev/beaglelogic */
        if (!g_file_test(BEAGLELOGIC_DEV_NODE, G_FILE_TEST_EXISTS))
                return NULL;
@@ -128,9 +126,8 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
                                channel_names[i]);
 
        sdi->priv = devc;
-       devices = g_slist_append(devices, sdi);
 
-       return std_scan_complete(di, devices);
+       return std_scan_complete(di, g_slist_append(NULL, sdi));
 }
 
 static int dev_open(struct sr_dev_inst *sdi)
index 6b9c0e3981caba693e5de4187dd0a24b1bd73a25..468093c42a7f920386627a2f80dcddd90e816810 100644 (file)
@@ -62,14 +62,12 @@ static GSList *center_scan(const char *conn, const char *serialcomm, int idx)
        struct sr_dev_inst *sdi;
        struct dev_context *devc;
        struct sr_serial_dev_inst *serial;
-       GSList *devices;
 
        serial = sr_serial_dev_inst_new(conn, serialcomm);
 
        if (serial_open(serial, SERIAL_RDWR) != SR_OK)
                return NULL;
 
-       devices = NULL;
        serial_flush(serial);
 
        sr_info("Found device on port %s.", conn);
@@ -86,11 +84,9 @@ static GSList *center_scan(const char *conn, const char *serialcomm, int idx)
        for (i = 0; i < center_devs[idx].num_channels; i++)
                sr_channel_new(sdi, i, SR_CHANNEL_ANALOG, TRUE, channel_names[i]);
 
-       devices = g_slist_append(devices, sdi);
-
        serial_close(serial);
 
-       return devices;
+       return g_slist_append(NULL, sdi);
 }
 
 static GSList *scan(GSList *options, int idx)
index ded82dd09b6642bb99633b0b51ba65d53ba1e44b..85ccd86c2cea194a660691c157566d7766b7c165 100644 (file)
@@ -47,11 +47,9 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        struct dev_context *devc;
        struct sr_dev_inst *sdi;
        struct sr_config *src;
-       GSList *devices, *l;
+       GSList *l;
        const char *conn, *serialcomm;
 
-       devices = NULL;
-
        conn = serialcomm = NULL;
        for (l = options; l; l = l->next) {
                src = l->data;
@@ -79,9 +77,8 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        sdi->inst_type = SR_INST_SERIAL;
        sdi->priv = devc;
        sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "P1");
-       devices = g_slist_append(devices, sdi);
 
-       return std_scan_complete(di, devices);
+       return std_scan_complete(di, g_slist_append(NULL, sdi));
 }
 
 static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sdi,
index 442f6c78b6fc4f5d85746afdd4541ff62d852726..04b50bd37a07a2cfbf059c50fdc272e3755f6d16 100644 (file)
@@ -45,10 +45,9 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        struct drv_context *drvc;
        struct sr_config *src;
        struct sr_serial_dev_inst *serial;
-       GSList *l, *devices;
+       GSList *l;
        const char *conn, *serialcomm;
 
-       devices = NULL;
        drvc = di->context;
        conn = serialcomm = NULL;
 
@@ -91,9 +90,8 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        sdi->conn = serial;
        sdi->priv = NULL;
        sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "CH1");
-       devices = g_slist_append(devices, sdi);
 
-       return std_scan_complete(di, devices);
+       return std_scan_complete(di, g_slist_append(NULL, sdi));
 }
 
 static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sdi,
index 083527c8368bf425822110a751adb3ff7dbe70d3..fec9065a986504af681c660f4074c8196e5d9c17 100644 (file)
@@ -259,7 +259,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        struct sr_channel_group *cg, *acg;
        struct sr_config *src;
        struct analog_gen *ag;
-       GSList *devices, *l;
+       GSList *l;
        int num_logic_channels, num_analog_channels, pattern, i;
        char channel_name[16];
 
@@ -279,8 +279,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
                }
        }
 
-       devices = NULL;
-
        sdi = g_malloc0(sizeof(struct sr_dev_inst));
        sdi->status = SR_ST_INACTIVE;
        sdi->model = g_strdup("Demo device");
@@ -344,9 +342,8 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        }
 
        sdi->priv = devc;
-       devices = g_slist_append(devices, sdi);
 
-       return std_scan_complete(di, devices);
+       return std_scan_complete(di, g_slist_append(NULL, sdi));
 }
 
 static int dev_open(struct sr_dev_inst *sdi)
index 30b62e3ca82fce1109639fe6cfe0cb91049b90de..520bf6fe94da19b3f29010a23ef555401daf88fa 100644 (file)
@@ -68,7 +68,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        struct sr_dev_inst *sdi;
        struct drv_context *drvc;
        struct dev_context *devc;
-       GSList *devices;
        unsigned int i;
        int ret;
 
@@ -76,8 +75,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
 
        drvc = di->context;
 
-       devices = NULL;
-
        /* Allocate memory for our private device context. */
        devc = g_malloc0(sizeof(struct dev_context));
 
@@ -120,12 +117,10 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        for (i = 0; i < ARRAY_SIZE(channel_names); i++)
                sr_channel_new(sdi, i, SR_CHANNEL_LOGIC, TRUE, channel_names[i]);
 
-       devices = g_slist_append(devices, sdi);
-
        /* Close device. We'll reopen it again when we need it. */
        scanaplus_close(devc);
 
-       return std_scan_complete(di, devices);
+       return std_scan_complete(di, g_slist_append(NULL, sdi));
 
        scanaplus_close(devc);
 err_free_ftdic:
index be472568ba93ffe832707cd54c978a1632f9f946..15cc52944f25331e8b0b6f6b55815b66c4b54a42 100644 (file)
@@ -65,7 +65,7 @@ static const struct korad_kaxxxxp_model models[] = {
 static GSList *scan(struct sr_dev_driver *di, GSList *options)
 {
        struct dev_context *devc;
-       GSList *devices, *l;
+       GSList *l;
        struct sr_dev_inst *sdi;
        struct sr_config *src;
        const char *conn, *serialcomm;
@@ -74,7 +74,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        int i, model_id;
        unsigned int len;
 
-       devices = NULL;
        conn = NULL;
        serialcomm = NULL;
 
@@ -151,13 +150,10 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        /* Get current status of device. */
        if (korad_kaxxxxp_get_all_values(serial, devc) < 0)
                goto exit_err;
-       devices = g_slist_append(devices, sdi);
 
        serial_close(serial);
-       if (!devices)
-               sr_serial_dev_inst_free(serial);
 
-       return std_scan_complete(di, devices);
+       return std_scan_complete(di, g_slist_append(NULL, sdi));
 
 exit_err:
        sr_dev_inst_free(sdi);
index b6449cf6a79d9daf428384971b4b035a1cd630e5..6b6b12e4d1899c8b80b3a17f323fd7c47e931f9a 100644 (file)
@@ -79,12 +79,11 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        struct dev_context *devc;
        struct sr_dev_inst *sdi;
        struct sr_config *src;
-       GSList *devices, *l;
+       GSList *l;
        const char *conn, *serialcomm;
        struct sr_serial_dev_inst *serial;
        char reply[50], **tokens, *dummy;
 
-       devices = NULL;
        conn = NULL;
        serialcomm = NULL;
        devc = NULL;
@@ -174,13 +173,9 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        devc->voltage_max_device = g_strtod(tokens[0], &dummy) * devc->model->voltage[2];
        g_strfreev(tokens);
 
-       devices = g_slist_append(devices, sdi);
-
        serial_close(serial);
-       if (!devices)
-               sr_serial_dev_inst_free(serial);
 
-       return std_scan_complete(di, devices);
+       return std_scan_complete(di, g_slist_append(NULL, sdi));
 
 exit_err:
        sr_dev_inst_free(sdi);
index d29cc7ef6b2f675c90c69c2b7441063c735b0d9f..f12aa845a62529cd88c6cf681894f4a33cc1c0b8 100644 (file)
@@ -62,14 +62,12 @@ static GSList *mic_scan(const char *conn, const char *serialcomm, int idx)
        struct sr_dev_inst *sdi;
        struct dev_context *devc;
        struct sr_serial_dev_inst *serial;
-       GSList *devices;
 
        serial = sr_serial_dev_inst_new(conn, serialcomm);
 
        if (serial_open(serial, SERIAL_RDWR) != SR_OK)
                return NULL;
 
-       devices = NULL;
        serial_flush(serial);
 
        /* TODO: Query device type. */
@@ -93,11 +91,9 @@ static GSList *mic_scan(const char *conn, const char *serialcomm, int idx)
        if (mic_devs[idx].has_humidity)
                sr_channel_new(sdi, 1, SR_CHANNEL_ANALOG, TRUE, "Humidity");
 
-       devices = g_slist_append(devices, sdi);
-
        serial_close(serial);
 
-       return std_scan_complete(mic_devs[idx].di, devices);
+       return std_scan_complete(mic_devs[idx].di, g_slist_append(NULL, sdi));
 }
 
 static GSList *scan(GSList *options, int idx)
index ee1f4f7edf8384cce9a340b7f607db7bb4a3daa7..abc53ce3b87702f3648fe5a0c42ae5160574346a 100644 (file)
@@ -370,7 +370,6 @@ static GSList *do_scan(lps_modelid modelid, struct sr_dev_driver *drv, GSList *o
        struct sr_serial_dev_inst *serial;
        struct sr_channel *ch;
        struct sr_channel_group *cg;
-       GSList *devices;
        const char *conn, *serialcomm;
        int cnt, ret;
        gchar buf[LINELEN_MAX];
@@ -380,7 +379,6 @@ static GSList *do_scan(lps_modelid modelid, struct sr_dev_driver *drv, GSList *o
        sdi = NULL;
        devc = NULL;
        conn = serialcomm = NULL;
-       devices = NULL;
 
        sr_spew("scan() called!");
 
@@ -468,17 +466,13 @@ static GSList *do_scan(lps_modelid modelid, struct sr_dev_driver *drv, GSList *o
                sdi->channel_groups = g_slist_append(sdi->channel_groups, cg);
        }
 
-       devices = g_slist_append(devices, sdi);
-
        /* Query status */
        if (lps_query_status(sdi) != SR_OK)
                goto exit_err;
 
        serial_close(serial);
-       if (!devices)
-               sr_serial_dev_inst_free(serial);
 
-       return std_scan_complete(drv, devices);
+       return std_scan_complete(drv, g_slist_append(NULL, sdi));
 
 exit_err:
        sr_info("%s: Error!", __func__);
index ecd8a081c8418cead64ab8c262e0103d89511c1d..970d4a61dff3d6354f030c987e4b3a7da3c100d1 100644 (file)
@@ -90,14 +90,12 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        struct sr_config *src;
        struct sr_dev_inst *sdi;
        struct sr_serial_dev_inst *serial;
-       GSList *l, *devices;
+       GSList *l;
        int ret;
        unsigned int i;
        const char *conn, *serialcomm;
        char buf[8];
 
-       devices = NULL;
-
        conn = serialcomm = NULL;
        for (l = options; l; l = l->next) {
                src = l->data;
@@ -191,11 +189,9 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        sdi->inst_type = SR_INST_SERIAL;
        sdi->conn = serial;
 
-       devices = g_slist_append(devices, sdi);
-
        serial_close(serial);
 
-       return std_scan_complete(di, devices);
+       return std_scan_complete(di, g_slist_append(NULL, sdi));
 }
 
 static int config_get(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi,
index 25094470ea7e565a8fe4e1c2e88923cfa3a0d5f6..d03b34a78451fa443a47e0480bf724690a6670c2 100644 (file)
@@ -63,7 +63,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        struct sr_config *src;
        struct sr_serial_dev_inst *serial;
        struct sr_dev_inst *sdi;
-       GSList *l, *devices;
+       GSList *l;
        const char *conn;
 
        conn = NULL;
@@ -80,8 +80,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        if (serial_open(serial, SERIAL_RDONLY) != SR_OK)
                return NULL;
 
-       devices = NULL;
-
        sdi = g_malloc0(sizeof(struct sr_dev_inst));
        sdi->status = SR_ST_INACTIVE;
        sdi->vendor = g_strdup("PCE");
@@ -92,11 +90,10 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        sdi->inst_type = SR_INST_SERIAL;
        sdi->priv = devc;
        sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "SPL");
-       devices = g_slist_append(devices, sdi);
 
        serial_close(serial);
 
-       return std_scan_complete(di, devices);
+       return std_scan_complete(di, g_slist_append(NULL, sdi));
 }
 
 static int dev_clear(const struct sr_dev_driver *di)
index cdb6f18652c5e68f6d0d29f8d7061bae9c7be918..e21d1b5c72fd468c544b55df1721940f73a7da0e 100644 (file)
@@ -45,14 +45,12 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        struct dev_context *devc;
        struct sr_dev_inst *sdi;
        struct sr_config *src;
-       GSList *devices, *l;
+       GSList *l;
        const char *conn, *serialcomm;
        struct sr_serial_dev_inst *serial;
 
        drvc = di->context;
 
-       devices = NULL;
-
        conn = serialcomm = NULL;
        for (l = options; l; l = l->next) {
                if (!(src = l->data)) {
@@ -93,9 +91,8 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
 
        sdi->priv = devc;
        sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "P1");
-       devices = g_slist_append(devices, sdi);
 
-       return std_scan_complete(di, devices);
+       return std_scan_complete(di, g_slist_append(NULL, sdi));
 }
 
 static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sdi,