+ case SR_CONF_LIMIT_SAMPLES:
+ case SR_CONF_LIMIT_MSEC:
+ ret = sr_sw_limits_config_get(&devc->limits, key, data);
+ break;
+ case SR_CONF_ENABLED:
+ ret = rdtech_dps_get_state(sdi, &state);
+ if (ret != SR_OK)
+ return ret;
+ if (!(state.mask & STATE_OUTPUT_ENABLED))
+ return SR_ERR_DATA;
+ *data = g_variant_new_boolean(state.output_enabled);
+ break;
+ case SR_CONF_REGULATION:
+ ret = rdtech_dps_get_state(sdi, &state);
+ if (ret != SR_OK)
+ return ret;
+ if (!(state.mask & STATE_REGULATION_CC))
+ return SR_ERR_DATA;
+ cc_text = state.regulation_cc ? "CC" : "CV";
+ *data = g_variant_new_string(cc_text);
+ break;
+ case SR_CONF_VOLTAGE:
+ ret = rdtech_dps_get_state(sdi, &state);
+ if (ret != SR_OK)
+ return ret;
+ if (!(state.mask & STATE_VOLTAGE))
+ return SR_ERR_DATA;
+ *data = g_variant_new_double(state.voltage);
+ break;
+ case SR_CONF_VOLTAGE_TARGET:
+ ret = rdtech_dps_get_state(sdi, &state);
+ if (ret != SR_OK)
+ return ret;
+ if (!(state.mask & STATE_VOLTAGE_TARGET))
+ return SR_ERR_DATA;
+ *data = g_variant_new_double(state.voltage_target);
+ break;
+ case SR_CONF_CURRENT:
+ ret = rdtech_dps_get_state(sdi, &state);
+ if (ret != SR_OK)
+ return ret;
+ if (!(state.mask & STATE_CURRENT))
+ return SR_ERR_DATA;
+ *data = g_variant_new_double(state.current);
+ break;
+ case SR_CONF_CURRENT_LIMIT:
+ ret = rdtech_dps_get_state(sdi, &state);
+ if (ret != SR_OK)
+ return ret;
+ if (!(state.mask & STATE_CURRENT_LIMIT))
+ return SR_ERR_DATA;
+ *data = g_variant_new_double(state.current_limit);
+ break;
+ case SR_CONF_OVER_VOLTAGE_PROTECTION_ENABLED:
+ ret = rdtech_dps_get_state(sdi, &state);
+ if (ret != SR_OK)
+ return ret;
+ if (!(state.mask & STATE_PROTECT_ENABLED))
+ return SR_ERR_DATA;
+ *data = g_variant_new_boolean(state.protect_enabled);
+ break;
+ case SR_CONF_OVER_VOLTAGE_PROTECTION_ACTIVE:
+ ret = rdtech_dps_get_state(sdi, &state);
+ if (ret != SR_OK)
+ return ret;
+ if (!(state.mask & STATE_PROTECT_OVP))
+ return SR_ERR_DATA;
+ *data = g_variant_new_boolean(state.protect_ovp);
+ break;
+ case SR_CONF_OVER_VOLTAGE_PROTECTION_THRESHOLD:
+ ret = rdtech_dps_get_state(sdi, &state);
+ if (ret != SR_OK)
+ return ret;
+ if (!(state.mask & STATE_OUTPUT_ENABLED))
+ return SR_ERR_DATA;
+ *data = g_variant_new_double(state.ovp_threshold);
+ break;
+ case SR_CONF_OVER_CURRENT_PROTECTION_ENABLED:
+ ret = rdtech_dps_get_state(sdi, &state);
+ if (ret != SR_OK)
+ return ret;
+ if (!(state.mask & STATE_PROTECT_ENABLED))
+ return SR_ERR_DATA;
+ *data = g_variant_new_boolean(state.protect_enabled);
+ break;
+ case SR_CONF_OVER_CURRENT_PROTECTION_ACTIVE:
+ ret = rdtech_dps_get_state(sdi, &state);
+ if (ret != SR_OK)
+ return ret;
+ if (!(state.mask & STATE_PROTECT_OCP))
+ return SR_ERR_DATA;
+ *data = g_variant_new_boolean(state.protect_ocp);
+ break;
+ case SR_CONF_OVER_CURRENT_PROTECTION_THRESHOLD:
+ ret = rdtech_dps_get_state(sdi, &state);
+ if (ret != SR_OK)
+ return ret;
+ if (!(state.mask & STATE_OCP_THRESHOLD))
+ return SR_ERR_DATA;
+ *data = g_variant_new_double(state.ocp_threshold);
+ break;