X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fkorad-kaxxxxp%2Fprotocol.c;h=bcda463379f4d2030ba9a9e5c05f68ab2c77da45;hb=8da30037cf8cf0fedb8e87cba9ca56189ed7df5f;hp=da5abe73e47a6765d6031a8c175aafdbd200c913;hpb=a7e48f3c0665c18d901f7491823bbefda2c8555e;p=libsigrok.git diff --git a/src/hardware/korad-kaxxxxp/protocol.c b/src/hardware/korad-kaxxxxp/protocol.c index da5abe73..bcda4633 100644 --- a/src/hardware/korad-kaxxxxp/protocol.c +++ b/src/hardware/korad-kaxxxxp/protocol.c @@ -96,29 +96,35 @@ SR_PRIV int korad_kaxxxxp_set_value(struct sr_serial_dev_inst *serial, sr_err("Can't set measurable parameter %d.", target); g_mutex_unlock(&devc->rw_mutex); return SR_ERR; - case KAXXXXP_CURRENT_MAX: + case KAXXXXP_CURRENT_LIMIT: cmd = "ISET1:%05.3f"; - value = devc->current_max; + value = devc->set_current_limit; break; - case KAXXXXP_VOLTAGE_MAX: + case KAXXXXP_VOLTAGE_TARGET: cmd = "VSET1:%05.2f"; - value = devc->voltage_max; + value = devc->set_voltage_target; break; case KAXXXXP_OUTPUT: cmd = "OUT%01.0f"; - value = (devc->output_enabled) ? 1 : 0; + value = (devc->set_output_enabled) ? 1 : 0; + /* Set value back to recognize changes */ + devc->output_enabled = devc->set_output_enabled; break; case KAXXXXP_BEEP: cmd = "BEEP%01.0f"; - value = (devc->beep_enabled) ? 1 : 0; + value = (devc->set_beep_enabled) ? 1 : 0; break; case KAXXXXP_OCP: cmd = "OCP%01.0f"; - value = (devc->ocp_enabled) ? 1 : 0; + value = (devc->set_ocp_enabled) ? 1 : 0; + /* Set value back to recognize changes */ + devc->ocp_enabled = devc->set_ocp_enabled; break; case KAXXXXP_OVP: cmd = "OVP%01.0f"; - value = (devc->ovp_enabled) ? 1 : 0; + value = (devc->set_ovp_enabled) ? 1 : 0; + /* Set value back to recognize changes */ + devc->ovp_enabled = devc->set_ovp_enabled; break; case KAXXXXP_SAVE: cmd = "SAV%01.0f"; @@ -179,20 +185,20 @@ SR_PRIV int korad_kaxxxxp_get_value(struct sr_serial_dev_inst *serial, ret = korad_kaxxxxp_send_cmd(serial, "IOUT1?"); value = &(devc->current); break; - case KAXXXXP_CURRENT_MAX: + case KAXXXXP_CURRENT_LIMIT: /* Read set current from device. */ ret = korad_kaxxxxp_send_cmd(serial, "ISET1?"); - value = &(devc->current_max); + value = &(devc->current_limit); break; case KAXXXXP_VOLTAGE: /* Read voltage from device. */ ret = korad_kaxxxxp_send_cmd(serial, "VOUT1?"); value = &(devc->voltage); break; - case KAXXXXP_VOLTAGE_MAX: + case KAXXXXP_VOLTAGE_TARGET: /* Read set voltage from device. */ ret = korad_kaxxxxp_send_cmd(serial, "VSET1?"); - value = &(devc->voltage_max); + value = &(devc->voltage_target); break; case KAXXXXP_STATUS: case KAXXXXP_OUTPUT: @@ -241,7 +247,7 @@ SR_PRIV int korad_kaxxxxp_get_value(struct sr_serial_dev_inst *serial, 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.", + "and extra bit is %s.", (status_byte & (1 << 0)) ? "voltage" : "current", (status_byte & (1 << 1)) ? "voltage" : "current", (status_byte & (1 << 2)) ? "parallel" : "series", @@ -253,7 +259,7 @@ SR_PRIV int korad_kaxxxxp_get_value(struct sr_serial_dev_inst *serial, } /* Read the sixth byte from ISET? BUG workaround. */ - if (target == KAXXXXP_CURRENT_MAX) + if (target == KAXXXXP_CURRENT_LIMIT) serial_read_blocking(serial, &status_byte, 1, 10); g_mutex_unlock(&devc->rw_mutex); @@ -332,7 +338,7 @@ SR_PRIV int korad_kaxxxxp_receive_data(int fd, int revents, void *cb_data) analog.meaning->channels = l; analog.meaning->mq = SR_MQ_CURRENT; analog.meaning->unit = SR_UNIT_AMPERE; - analog.meaning->mqflags = 0; + analog.meaning->mqflags = SR_MQFLAG_DC; analog.encoding->digits = 3; analog.spec->spec_digits = 3; analog.data = &devc->current;