The select_channel_group() name was misleading, the routine did not
actively select a channel group, instead returned the lookup result
and left the activity to the caller. Rename the routine to improve
readability of call sites.
Address minor style nits in the routine body while we are here.
-struct sr_channel_group *select_channel_group(struct sr_dev_inst *sdi)
+/**
+ * Lookup a channel group from its name.
+ *
+ * Uses the previously stored option value to lookup a channel group.
+ * Returns a reference to the channel group when the lookup succeeded,
+ * or #NULL after lookup failure, or #NULL for the global channel group
+ * (the device's global parameters). Emits an error message when the
+ * lookup failed while a channel group's name was specified.
+ *
+ * @param[in] sdi Device instance.
+ *
+ * @returns The channel group, or #NULL for failed lookup.
+ */
+struct sr_channel_group *lookup_channel_group(struct sr_dev_inst *sdi)
{
struct sr_channel_group *cg;
GSList *l, *channel_groups;
{
struct sr_channel_group *cg;
GSList *l, *channel_groups;
return NULL;
channel_groups = sr_dev_inst_channel_groups_get(sdi);
return NULL;
channel_groups = sr_dev_inst_channel_groups_get(sdi);
if (!channel_groups) {
g_critical("This device does not have any channel groups.");
return NULL;
if (!channel_groups) {
g_critical("This device does not have any channel groups.");
return NULL;
for (l = channel_groups; l; l = l->next) {
cg = l->data;
for (l = channel_groups; l; l = l->next) {
cg = l->data;
- if (!g_ascii_strcasecmp(opt_channel_group, cg->name)) {
- return cg;
- }
+ if (g_ascii_strcasecmp(opt_channel_group, cg->name) != 0)
+ continue;
+ return cg;
}
g_critical("Invalid channel group '%s'", opt_channel_group);
}
g_critical("Invalid channel group '%s'", opt_channel_group);
- cg = select_channel_group(sdi);
+ cg = lookup_channel_group(sdi);
if (!(ci = sr_key_info_name_get(SR_KEY_CONFIG, opt_get)))
g_critical("Unknown option '%s'", opt_get);
if (!(ci = sr_key_info_name_get(SR_KEY_CONFIG, opt_get)))
g_critical("Unknown option '%s'", opt_get);
while (g_hash_table_iter_next(&iter, &key, &value)) {
if ((ret = opt_to_gvar(key, value, &src)) != 0)
return ret;
while (g_hash_table_iter_next(&iter, &key, &value)) {
if ((ret = opt_to_gvar(key, value, &src)) != 0)
return ret;
- cg = select_channel_group(sdi);
+ cg = lookup_channel_group(sdi);
if ((ret = maybe_config_set(sr_dev_inst_driver_get(sdi), sdi, cg,
src.key, src.data)) != SR_OK) {
g_critical("Failed to set device option '%s': %s.",
if ((ret = maybe_config_set(sr_dev_inst_driver_get(sdi), sdi, cg,
src.key, src.data)) != SR_OK) {
g_critical("Failed to set device option '%s': %s.",
* returned, or which values for them.
*/
select_channels(sdi);
* returned, or which values for them.
*/
select_channels(sdi);
- channel_group = select_channel_group(sdi);
+ channel_group = lookup_channel_group(sdi);
if (!(opts = sr_dev_options(driver, sdi, channel_group)))
/* Driver supports no device instance options. */
if (!(opts = sr_dev_options(driver, sdi, channel_group)))
/* Driver supports no device instance options. */
/* device.c */
GSList *device_scan(void);
/* device.c */
GSList *device_scan(void);
-struct sr_channel_group *select_channel_group(struct sr_dev_inst *sdi);
+struct sr_channel_group *lookup_channel_group(struct sr_dev_inst *sdi);
/* session.c */
struct df_arg_desc {
/* session.c */
struct df_arg_desc {