SR_CONF_CURRENT_LIMIT | SR_CONF_GET | SR_CONF_SET | SR_CONF_LIST,
SR_CONF_ENABLED | SR_CONF_GET | SR_CONF_SET,
SR_CONF_REGULATION | SR_CONF_GET,
+ SR_CONF_OVER_CURRENT_PROTECTION_ENABLED | SR_CONF_GET | SR_CONF_SET,
+ SR_CONF_OVER_VOLTAGE_PROTECTION_ENABLED | SR_CONF_GET | SR_CONF_SET,
};
static const struct korad_kdxxxxp_model models[] = {
else
*data = g_variant_new_string("CV");
break;
+ case SR_CONF_OVER_CURRENT_PROTECTION_ENABLED:
+ *data = g_variant_new_boolean(devc->OCP_enabled);
+ break;
+ case SR_CONF_OVER_VOLTAGE_PROTECTION_ENABLED:
+ *data = g_variant_new_boolean(devc->OVP_enabled);
+ break;
default:
return SR_ERR_NA;
}
if (korad_kdxxxxp_set_value(sdi->conn, devc) < 0)
return SR_ERR;
break;
+ case SR_CONF_OVER_CURRENT_PROTECTION_ENABLED:
+ bval = g_variant_get_boolean(data);
+ devc->OCP_enabled = bval;
+ devc->target = KDXXXXP_OCP;
+ if (korad_kdxxxxp_set_value(sdi->conn, devc) < 0)
+ return SR_ERR;
+ break;
+ case SR_CONF_OVER_VOLTAGE_PROTECTION_ENABLED:
+ bval = g_variant_get_boolean(data);
+ devc->OVP_enabled = bval;
+ devc->target = KDXXXXP_OVP;
+ if (korad_kdxxxxp_set_value(sdi->conn, devc) < 0)
+ return SR_ERR;
+ break;
default:
return SR_ERR_NA;
}
cmd = "BEEP%01.0f";
value = (devc->beep_enabled) ? 1 : 0;
break;
+ case KDXXXXP_OCP:
+ cmd = "OCP%01.0f";
+ value = (devc->OCP_enabled) ? 1 : 0;
+ break;
+ case KDXXXXP_OVP:
+ cmd = "OVP%01.0f";
+ value = (devc->OVP_enabled) ? 1 : 0;
+ break;
case KDXXXXP_SAVE:
cmd = "SAV%01.0f";
if (devc->program < 1 || devc->program > 5) {
* 00 independent 01 series 11 parallel
*/
devc->beep_enabled = (1 << 4);
- /* status_byte & (1 << 5) Unlocked */
-
+ devc->OCP_enabled = (status_byte & (1 << 5));
devc->output_enabled = (status_byte & (1 << 6));
+ /* Velleman LABPS3005 quirk */
+ if (devc->output_enabled)
+ devc->OVP_enabled = (status_byte & (1 << 7));
sr_dbg("Status: 0x%02x", status_byte);
- sr_spew("Status: CH1: constant %s CH2: constant %s. Device is "
- "%s and %s. Buttons are %s. Output is %s ",
+ sr_spew("Status: CH1: constant %s CH2: constant %s. "
+ "Tracking would be %s. Device is "
+ "%s and %s. Buttons are %s. Output is %s "
+ "and extra byte is %s.",
(status_byte & (1 << 0)) ? "voltage" : "current",
(status_byte & (1 << 1)) ? "voltage" : "current",
+ (status_byte & (1 << 2)) ? "parallel" : "series",
(status_byte & (1 << 3)) ? "tracking" : "independent",
(status_byte & (1 << 4)) ? "beeping" : "silent",
(status_byte & (1 << 5)) ? "locked" : "unlocked",
- (status_byte & (1 << 6)) ? "enabled" : "disabled");
+ (status_byte & (1 << 6)) ? "enabled" : "disabled",
+ (status_byte & (1 << 7)) ? "true" : "false");
}
devc->reply_pending = FALSE;
case KDXXXXP_VOLTAGE_MAX:
devc->target = KDXXXXP_CURRENT;
break;
+ /* Read back what was set */
+ case KDXXXXP_BEEP:
+ case KDXXXXP_OCP:
+ case KDXXXXP_OVP:
case KDXXXXP_OUTPUT:
devc->target = KDXXXXP_STATUS;
break;