- ret = SR_OK;
- if (!cg) {
- switch (key) {
- /* No channel group: global options. */
- case SR_CONF_OVER_TEMPERATURE_PROTECTION:
- s = g_variant_get_boolean(data) ? "ON" : "OFF";
- if (scpi_cmd(sdi, SCPI_CMD_SET_OVER_TEMPERATURE_PROTECTION, s) < 0)
- ret = SR_ERR;
- break;
- case SR_CONF_OUTPUT_CHANNEL_CONFIG:
- s = g_variant_get_string(data, NULL);
- if (scpi_cmd(sdi, SCPI_CMD_SET_OUTPUT_CHANNEL_CONFIG, s) < 0)
- ret = SR_ERR;
- break;
- default:
- ret = SR_ERR_NA;
- }
- } else {
- /* Channel group specified. */
- if (!sdi)
- return SR_ERR_ARG;
- if (g_slist_length(cg->channels) > 1)
- return SR_ERR_NA;
- ch = cg->channels->data;
- switch (key) {
- case SR_CONF_OUTPUT_VOLTAGE_MAX:
- d = g_variant_get_double(data);
- if (scpi_cmd(sdi, SCPI_CMD_SET_VOLTAGE_MAX, ch->name, d) < 0)
- ret = SR_ERR;
- break;
- case SR_CONF_OUTPUT_CURRENT_MAX:
- d = g_variant_get_double(data);
- if (scpi_cmd(sdi, SCPI_CMD_SET_CURRENT_MAX, ch->name, d) < 0)
- ret = SR_ERR;
- break;
- case SR_CONF_OUTPUT_ENABLED:
- s = g_variant_get_boolean(data) ? "ON" : "OFF";
- if (scpi_cmd(sdi, SCPI_CMD_SET_OUTPUT_ENABLED, ch->name, s) < 0)
- ret = SR_ERR;
- break;
- case SR_CONF_OVER_VOLTAGE_PROTECTION_ENABLED:
- s = g_variant_get_boolean(data) ? "ON" : "OFF";
- if (scpi_cmd(sdi, SCPI_CMD_SET_OVER_VOLTAGE_PROTECTION_ENABLED,
- ch->name, s) < 0)
- ret = SR_ERR;
- break;
- case SR_CONF_OVER_VOLTAGE_PROTECTION_THRESHOLD:
- d = g_variant_get_double(data);
- if (scpi_cmd(sdi, SCPI_CMD_SET_OVER_VOLTAGE_PROTECTION_THRESHOLD,
- ch->name, d) < 0)
- ret = SR_ERR;
- break;
- case SR_CONF_OVER_CURRENT_PROTECTION_ENABLED:
- s = g_variant_get_boolean(data) ? "ON" : "OFF";
- if (scpi_cmd(sdi, SCPI_CMD_SET_OVER_CURRENT_PROTECTION_ENABLED,
- ch->name, s) < 0)
- ret = SR_ERR;
- break;
- case SR_CONF_OVER_CURRENT_PROTECTION_THRESHOLD:
- d = g_variant_get_double(data);
- if (scpi_cmd(sdi, SCPI_CMD_SET_OVER_CURRENT_PROTECTION_THRESHOLD,
- ch->name, d) < 0)
- ret = SR_ERR;
- break;
- default:
- ret = SR_ERR_NA;
- }
+ devc = sdi->priv;
+
+ switch (key) {
+ case SR_CONF_ENABLED:
+ if (g_variant_get_boolean(data))
+ ret = sr_scpi_cmd(sdi, devc->device->commands,
+ channel_group_cmd, channel_group_name,
+ SCPI_CMD_SET_OUTPUT_ENABLE);
+ else
+ ret = sr_scpi_cmd(sdi, devc->device->commands,
+ channel_group_cmd, channel_group_name,
+ SCPI_CMD_SET_OUTPUT_DISABLE);
+ break;
+ case SR_CONF_VOLTAGE_TARGET:
+ d = g_variant_get_double(data);
+ ret = sr_scpi_cmd(sdi, devc->device->commands,
+ channel_group_cmd, channel_group_name,
+ SCPI_CMD_SET_VOLTAGE_TARGET, d);
+ break;
+ case SR_CONF_OUTPUT_FREQUENCY_TARGET:
+ d = g_variant_get_double(data);
+ ret = sr_scpi_cmd(sdi, devc->device->commands,
+ channel_group_cmd, channel_group_name,
+ SCPI_CMD_SET_FREQUENCY_TARGET, d);
+ break;
+ case SR_CONF_CURRENT_LIMIT:
+ d = g_variant_get_double(data);
+ ret = sr_scpi_cmd(sdi, devc->device->commands,
+ channel_group_cmd, channel_group_name,
+ SCPI_CMD_SET_CURRENT_LIMIT, d);
+ break;
+ case SR_CONF_OVER_VOLTAGE_PROTECTION_ENABLED:
+ if (g_variant_get_boolean(data))
+ ret = sr_scpi_cmd(sdi, devc->device->commands,
+ channel_group_cmd, channel_group_name,
+ SCPI_CMD_SET_OVER_VOLTAGE_PROTECTION_ENABLE);
+ else
+ ret = sr_scpi_cmd(sdi, devc->device->commands,
+ channel_group_cmd, channel_group_name,
+ SCPI_CMD_SET_OVER_VOLTAGE_PROTECTION_DISABLE);
+ break;
+ case SR_CONF_OVER_VOLTAGE_PROTECTION_THRESHOLD:
+ d = g_variant_get_double(data);
+ ret = sr_scpi_cmd(sdi, devc->device->commands,
+ channel_group_cmd, channel_group_name,
+ SCPI_CMD_SET_OVER_VOLTAGE_PROTECTION_THRESHOLD, d);
+ break;
+ case SR_CONF_OVER_CURRENT_PROTECTION_ENABLED:
+ if (g_variant_get_boolean(data))
+ ret = sr_scpi_cmd(sdi, devc->device->commands,
+ channel_group_cmd, channel_group_name,
+ SCPI_CMD_SET_OVER_CURRENT_PROTECTION_ENABLE);
+ else
+ ret = sr_scpi_cmd(sdi, devc->device->commands,
+ channel_group_cmd, channel_group_name,
+ SCPI_CMD_SET_OVER_CURRENT_PROTECTION_DISABLE);
+ break;
+ case SR_CONF_OVER_CURRENT_PROTECTION_THRESHOLD:
+ d = g_variant_get_double(data);
+ ret = sr_scpi_cmd(sdi, devc->device->commands,
+ channel_group_cmd, channel_group_name,
+ SCPI_CMD_SET_OVER_CURRENT_PROTECTION_THRESHOLD, d);
+ break;
+ case SR_CONF_OVER_TEMPERATURE_PROTECTION:
+ if (g_variant_get_boolean(data))
+ ret = sr_scpi_cmd(sdi, devc->device->commands,
+ channel_group_cmd, channel_group_name,
+ SCPI_CMD_SET_OVER_TEMPERATURE_PROTECTION_ENABLE);
+ else
+ ret = sr_scpi_cmd(sdi, devc->device->commands,
+ channel_group_cmd, channel_group_name,
+ SCPI_CMD_SET_OVER_TEMPERATURE_PROTECTION_DISABLE);
+ break;
+ default:
+ ret = SR_ERR_NA;