Support for regulation status and fix for mysterious M
Added support for SR_CONF_REGULATION which returns value for CH1 Also VELLEMAN LABPS3005D (only device currently supported) sends single 'M' character in beginning of return value, which is specially discarded.
This commit is contained in:
parent
865de99391
commit
b16d975a5c
|
@ -43,6 +43,7 @@ static const uint32_t devopts[] = {
|
|||
SR_CONF_CURRENT | SR_CONF_GET,
|
||||
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,
|
||||
};
|
||||
|
||||
static const struct korad_kdxxxxp_model models[] = {
|
||||
|
@ -217,6 +218,13 @@ static int config_get(uint32_t key, GVariant **data,
|
|||
case SR_CONF_ENABLED:
|
||||
*data = g_variant_new_boolean(devc->output_enabled);
|
||||
break;
|
||||
case SR_CONF_REGULATION:
|
||||
/* Dual channel not supported. */
|
||||
if (devc->cc_mode[0])
|
||||
*data = g_variant_new_string("CC");
|
||||
else
|
||||
*data = g_variant_new_string("CV");
|
||||
break;
|
||||
default:
|
||||
return SR_ERR_NA;
|
||||
}
|
||||
|
|
|
@ -202,7 +202,7 @@ SR_PRIV int korad_kdxxxxp_get_reply(struct sr_serial_dev_inst *serial,
|
|||
struct dev_context *devc)
|
||||
{
|
||||
double value;
|
||||
int count, ret;
|
||||
int count, ret, i;
|
||||
float *target;
|
||||
char status_byte;
|
||||
|
||||
|
@ -241,6 +241,16 @@ SR_PRIV int korad_kdxxxxp_get_reply(struct sr_serial_dev_inst *serial,
|
|||
devc->reply[count] = 0;
|
||||
|
||||
if (target) {
|
||||
/* Handle the strange 'M' */
|
||||
if (devc->reply[0] == 'M') {
|
||||
for (i = 1; i < count; ++i) {
|
||||
devc->reply[i - 1] = devc->reply[i];
|
||||
}
|
||||
/* Get the last character */
|
||||
if (( i = korad_kdxxxxp_read_chars(serial, 1,
|
||||
&(devc->reply[count]))) < 0)
|
||||
return i;
|
||||
}
|
||||
value = g_ascii_strtod(devc->reply, NULL);
|
||||
*target = (float)value;
|
||||
sr_dbg("value: %f",value);
|
||||
|
|
Loading…
Reference in New Issue