X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Frdtech-dps%2Fapi.c;h=fad31d629434ef5ae99f166305fd6ba1e7a5e5ec;hb=bd5f0a143eb12b9d6c341afe28b7f25feab53046;hp=50025e6de3ca3eeb27e8a8948bd53f11df9a1267;hpb=cce6a8a1b74b736fdd8ff52d3b231b59f0a2662f;p=libsigrok.git diff --git a/src/hardware/rdtech-dps/api.c b/src/hardware/rdtech-dps/api.c index 50025e6d..fad31d62 100644 --- a/src/hardware/rdtech-dps/api.c +++ b/src/hardware/rdtech-dps/api.c @@ -298,11 +298,23 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) { struct dev_context *devc; struct sr_modbus_dev_inst *modbus; + uint16_t registers[3]; int ret; modbus = sdi->conn; devc = sdi->priv; + /* Prefill actual states */ + g_mutex_lock(&devc->rw_mutex); + ret = rdtech_dps_read_holding_registers(modbus, REG_PROTECT, 3, registers); + g_mutex_unlock(&devc->rw_mutex); + if (ret != SR_OK) + return ret; + devc->actual_ovp_state = RB16(registers + 0) == STATE_OVP; + devc->actual_ocp_state = RB16(registers + 0) == STATE_OCP; + devc->actual_regulation_state = RB16(registers + 1); + devc->actual_output_state = RB16(registers + 2); + if ((ret = sr_modbus_source_add(sdi->session, modbus, G_IO_IN, 10, rdtech_dps_receive_data, (void *)sdi)) != SR_OK) return ret;