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:
struct sr_serial_dev_inst *serial;
struct sr_channel_group *cg;
struct sr_channel *ch;
struct sr_serial_dev_inst *serial;
struct sr_channel_group *cg;
struct sr_channel *ch;
int ret, len;
const char *conn, *serialcomm;
char buf[100];
char *bufptr;
double version;
int ret, len;
const char *conn, *serialcomm;
char buf[100];
char *bufptr;
double version;
drvc = di->context;
conn = serialcomm = NULL;
drvc = di->context;
conn = serialcomm = NULL;
devc = g_malloc0(sizeof(struct dev_context));
sdi->priv = devc;
devc = g_malloc0(sizeof(struct dev_context));
sdi->priv = devc;
- devices = g_slist_append(devices, sdi);
- 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,
}
static int config_list(uint32_t key, GVariant **data,
{
struct sr_dev_inst *sdi;
struct dev_context *devc;
{
struct sr_dev_inst *sdi;
struct dev_context *devc;
struct ftdi_device_list *devlist;
char serial_txt[10];
uint32_t serial;
struct ftdi_device_list *devlist;
char serial_txt[10];
uint32_t serial;
devc = g_malloc0(sizeof(struct dev_context));
ftdi_init(&devc->ftdic);
devc = g_malloc0(sizeof(struct dev_context));
ftdi_init(&devc->ftdic);
for (i = 0; i < ARRAY_SIZE(channel_names); i++)
sr_channel_new(sdi, i, SR_CHANNEL_LOGIC, TRUE, channel_names[i]);
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);
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);
free:
ftdi_deinit(&devc->ftdic);
struct sr_channel *ch;
struct sr_channel_group *cg;
struct sr_serial_dev_inst *serial;
struct sr_channel *ch;
struct sr_channel_group *cg;
struct sr_serial_dev_inst *serial;
const struct pps_model *model;
uint8_t packet[PACKET_SIZE];
unsigned int i;
const struct pps_model *model;
uint8_t packet[PACKET_SIZE];
unsigned int i;
const char *conn, *serialcomm;
char channel[10];
const char *conn, *serialcomm;
char channel[10];
drvc = di->context;
conn = serialcomm = NULL;
drvc = di->context;
conn = serialcomm = NULL;
devc->config = g_malloc0(sizeof(struct per_channel_config) * model->num_channels);
devc->delay_ms = delay_ms;
sdi->priv = devc;
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);
- 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)
}
static GSList *scan_3203(struct sr_dev_driver *di, GSList *options)
{
struct dev_context *devc;
struct sr_dev_inst *sdi;
{
struct dev_context *devc;
struct sr_dev_inst *sdi;
gboolean status;
int i;
(void)options;
gboolean status;
int i;
(void)options;
devc = g_malloc0(sizeof(struct dev_context));
devc->samplerate = SR_HZ(10);
devc = g_malloc0(sizeof(struct dev_context));
devc->samplerate = SR_HZ(10);
if (!sdi->channel_groups)
goto err_out;
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));
static GSList *scan(struct sr_dev_driver *di, GSList *options)
{
static GSList *scan(struct sr_dev_driver *di, GSList *options)
{
struct sr_config *src;
struct sr_dev_inst *sdi;
struct dev_context *devc;
int i, maxch;
struct sr_config *src;
struct sr_dev_inst *sdi;
struct dev_context *devc;
int i, maxch;
/* Probe for /dev/beaglelogic */
if (!g_file_test(BEAGLELOGIC_DEV_NODE, G_FILE_TEST_EXISTS))
return NULL;
/* Probe for /dev/beaglelogic */
if (!g_file_test(BEAGLELOGIC_DEV_NODE, G_FILE_TEST_EXISTS))
return NULL;
channel_names[i]);
sdi->priv = devc;
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)
}
static int dev_open(struct sr_dev_inst *sdi)
struct sr_dev_inst *sdi;
struct dev_context *devc;
struct sr_serial_dev_inst *serial;
struct sr_dev_inst *sdi;
struct dev_context *devc;
struct sr_serial_dev_inst *serial;
serial = sr_serial_dev_inst_new(conn, serialcomm);
if (serial_open(serial, SERIAL_RDWR) != SR_OK)
return NULL;
serial = sr_serial_dev_inst_new(conn, serialcomm);
if (serial_open(serial, SERIAL_RDWR) != SR_OK)
return NULL;
serial_flush(serial);
sr_info("Found device on port %s.", conn);
serial_flush(serial);
sr_info("Found device on port %s.", conn);
for (i = 0; i < center_devs[idx].num_channels; i++)
sr_channel_new(sdi, i, SR_CHANNEL_ANALOG, TRUE, channel_names[i]);
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);
-
+ return g_slist_append(NULL, sdi);
}
static GSList *scan(GSList *options, int idx)
}
static GSList *scan(GSList *options, int idx)
struct dev_context *devc;
struct sr_dev_inst *sdi;
struct sr_config *src;
struct dev_context *devc;
struct sr_dev_inst *sdi;
struct sr_config *src;
const char *conn, *serialcomm;
const char *conn, *serialcomm;
conn = serialcomm = NULL;
for (l = options; l; l = l->next) {
src = l->data;
conn = serialcomm = NULL;
for (l = options; l; l = l->next) {
src = l->data;
sdi->inst_type = SR_INST_SERIAL;
sdi->priv = devc;
sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "P1");
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,
}
static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sdi,
struct drv_context *drvc;
struct sr_config *src;
struct sr_serial_dev_inst *serial;
struct drv_context *drvc;
struct sr_config *src;
struct sr_serial_dev_inst *serial;
const char *conn, *serialcomm;
const char *conn, *serialcomm;
drvc = di->context;
conn = serialcomm = NULL;
drvc = di->context;
conn = serialcomm = NULL;
sdi->conn = serial;
sdi->priv = NULL;
sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "CH1");
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,
}
static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sdi,
struct sr_channel_group *cg, *acg;
struct sr_config *src;
struct analog_gen *ag;
struct sr_channel_group *cg, *acg;
struct sr_config *src;
struct analog_gen *ag;
int num_logic_channels, num_analog_channels, pattern, i;
char channel_name[16];
int num_logic_channels, num_analog_channels, pattern, i;
char channel_name[16];
sdi = g_malloc0(sizeof(struct sr_dev_inst));
sdi->status = SR_ST_INACTIVE;
sdi->model = g_strdup("Demo device");
sdi = g_malloc0(sizeof(struct sr_dev_inst));
sdi->status = SR_ST_INACTIVE;
sdi->model = g_strdup("Demo device");
- 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)
}
static int dev_open(struct sr_dev_inst *sdi)
struct sr_dev_inst *sdi;
struct drv_context *drvc;
struct dev_context *devc;
struct sr_dev_inst *sdi;
struct drv_context *drvc;
struct dev_context *devc;
/* Allocate memory for our private device context. */
devc = g_malloc0(sizeof(struct dev_context));
/* Allocate memory for our private device context. */
devc = g_malloc0(sizeof(struct dev_context));
for (i = 0; i < ARRAY_SIZE(channel_names); i++)
sr_channel_new(sdi, i, SR_CHANNEL_LOGIC, TRUE, channel_names[i]);
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);
/* 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:
scanaplus_close(devc);
err_free_ftdic:
static GSList *scan(struct sr_dev_driver *di, GSList *options)
{
struct dev_context *devc;
static GSList *scan(struct sr_dev_driver *di, GSList *options)
{
struct dev_context *devc;
struct sr_dev_inst *sdi;
struct sr_config *src;
const char *conn, *serialcomm;
struct sr_dev_inst *sdi;
struct sr_config *src;
const char *conn, *serialcomm;
int i, model_id;
unsigned int len;
int i, model_id;
unsigned int len;
conn = NULL;
serialcomm = NULL;
conn = NULL;
serialcomm = NULL;
/* Get current status of device. */
if (korad_kaxxxxp_get_all_values(serial, devc) < 0)
goto exit_err;
/* Get current status of device. */
if (korad_kaxxxxp_get_all_values(serial, devc) < 0)
goto exit_err;
- devices = g_slist_append(devices, sdi);
- 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);
exit_err:
sr_dev_inst_free(sdi);
struct dev_context *devc;
struct sr_dev_inst *sdi;
struct sr_config *src;
struct dev_context *devc;
struct sr_dev_inst *sdi;
struct sr_config *src;
const char *conn, *serialcomm;
struct sr_serial_dev_inst *serial;
char reply[50], **tokens, *dummy;
const char *conn, *serialcomm;
struct sr_serial_dev_inst *serial;
char reply[50], **tokens, *dummy;
conn = NULL;
serialcomm = NULL;
devc = NULL;
conn = NULL;
serialcomm = NULL;
devc = NULL;
devc->voltage_max_device = g_strtod(tokens[0], &dummy) * devc->model->voltage[2];
g_strfreev(tokens);
devc->voltage_max_device = g_strtod(tokens[0], &dummy) * devc->model->voltage[2];
g_strfreev(tokens);
- devices = g_slist_append(devices, sdi);
-
- 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);
exit_err:
sr_dev_inst_free(sdi);
struct sr_dev_inst *sdi;
struct dev_context *devc;
struct sr_serial_dev_inst *serial;
struct sr_dev_inst *sdi;
struct dev_context *devc;
struct sr_serial_dev_inst *serial;
serial = sr_serial_dev_inst_new(conn, serialcomm);
if (serial_open(serial, SERIAL_RDWR) != SR_OK)
return NULL;
serial = sr_serial_dev_inst_new(conn, serialcomm);
if (serial_open(serial, SERIAL_RDWR) != SR_OK)
return NULL;
serial_flush(serial);
/* TODO: Query device type. */
serial_flush(serial);
/* TODO: Query device type. */
if (mic_devs[idx].has_humidity)
sr_channel_new(sdi, 1, SR_CHANNEL_ANALOG, TRUE, "Humidity");
if (mic_devs[idx].has_humidity)
sr_channel_new(sdi, 1, SR_CHANNEL_ANALOG, TRUE, "Humidity");
- devices = g_slist_append(devices, sdi);
-
- 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)
}
static GSList *scan(GSList *options, int idx)
struct sr_serial_dev_inst *serial;
struct sr_channel *ch;
struct sr_channel_group *cg;
struct sr_serial_dev_inst *serial;
struct sr_channel *ch;
struct sr_channel_group *cg;
const char *conn, *serialcomm;
int cnt, ret;
gchar buf[LINELEN_MAX];
const char *conn, *serialcomm;
int cnt, ret;
gchar buf[LINELEN_MAX];
sdi = NULL;
devc = NULL;
conn = serialcomm = NULL;
sdi = NULL;
devc = NULL;
conn = serialcomm = NULL;
sr_spew("scan() called!");
sr_spew("scan() called!");
sdi->channel_groups = g_slist_append(sdi->channel_groups, cg);
}
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);
/* 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__);
exit_err:
sr_info("%s: Error!", __func__);
struct sr_config *src;
struct sr_dev_inst *sdi;
struct sr_serial_dev_inst *serial;
struct sr_config *src;
struct sr_dev_inst *sdi;
struct sr_serial_dev_inst *serial;
int ret;
unsigned int i;
const char *conn, *serialcomm;
char buf[8];
int ret;
unsigned int i;
const char *conn, *serialcomm;
char buf[8];
conn = serialcomm = NULL;
for (l = options; l; l = l->next) {
src = l->data;
conn = serialcomm = NULL;
for (l = options; l; l = l->next) {
src = l->data;
sdi->inst_type = SR_INST_SERIAL;
sdi->conn = serial;
sdi->inst_type = SR_INST_SERIAL;
sdi->conn = serial;
- 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_get(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi,
}
static int config_get(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi,
struct sr_config *src;
struct sr_serial_dev_inst *serial;
struct sr_dev_inst *sdi;
struct sr_config *src;
struct sr_serial_dev_inst *serial;
struct sr_dev_inst *sdi;
const char *conn;
conn = NULL;
const char *conn;
conn = NULL;
if (serial_open(serial, SERIAL_RDONLY) != SR_OK)
return NULL;
if (serial_open(serial, SERIAL_RDONLY) != SR_OK)
return NULL;
sdi = g_malloc0(sizeof(struct sr_dev_inst));
sdi->status = SR_ST_INACTIVE;
sdi->vendor = g_strdup("PCE");
sdi = g_malloc0(sizeof(struct sr_dev_inst));
sdi->status = SR_ST_INACTIVE;
sdi->vendor = g_strdup("PCE");
sdi->inst_type = SR_INST_SERIAL;
sdi->priv = devc;
sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "SPL");
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);
- 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)
}
static int dev_clear(const struct sr_dev_driver *di)
struct dev_context *devc;
struct sr_dev_inst *sdi;
struct sr_config *src;
struct dev_context *devc;
struct sr_dev_inst *sdi;
struct sr_config *src;
const char *conn, *serialcomm;
struct sr_serial_dev_inst *serial;
drvc = di->context;
const char *conn, *serialcomm;
struct sr_serial_dev_inst *serial;
drvc = di->context;
conn = serialcomm = NULL;
for (l = options; l; l = l->next) {
if (!(src = l->data)) {
conn = serialcomm = NULL;
for (l = options; l; l = l->next) {
if (!(src = l->data)) {
sdi->priv = devc;
sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "P1");
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,
}
static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sdi,