X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Frdtech-dps%2Fprotocol.h;h=72b7be7c72130a4746ac693d2b828b1dec157d0f;hb=02a4f485de76b401eca7d3b82aac1808a12df4fe;hp=456e20419bf6f785de425588111ccaa195ebe920;hpb=48385ca229bee3e267108b7cc8ab3c99edaf77a4;p=libsigrok.git diff --git a/src/hardware/rdtech-dps/protocol.h b/src/hardware/rdtech-dps/protocol.h index 456e2041..72b7be7c 100644 --- a/src/hardware/rdtech-dps/protocol.h +++ b/src/hardware/rdtech-dps/protocol.h @@ -38,10 +38,8 @@ enum rdtech_dps_model_type { MODEL_RD, }; -struct rdtech_dps_model { - enum rdtech_dps_model_type model_type; - unsigned int id; - const char *name; +struct rdtech_dps_range { + const char *range_str; unsigned int max_current; unsigned int max_voltage; unsigned int max_power; @@ -49,6 +47,14 @@ struct rdtech_dps_model { unsigned int voltage_digits; }; +struct rdtech_dps_model { + enum rdtech_dps_model_type model_type; + unsigned int id; + const char *name; + struct rdtech_dps_range *ranges; + unsigned int n_ranges; +}; + struct dev_context { const struct rdtech_dps_model *model; double current_multiplier; @@ -59,6 +65,8 @@ struct dev_context { gboolean curr_ocp_state; gboolean curr_cc_state; gboolean curr_out_state; + unsigned int curr_range; + gboolean acquisition_started; }; /* Container to get and set parameter values. */ @@ -77,6 +85,7 @@ struct rdtech_dps_state { STATE_VOLTAGE = 1 << 10, STATE_CURRENT = 1 << 11, STATE_POWER = 1 << 12, + STATE_RANGE = 1 << 13, } mask; gboolean lock; gboolean output_enabled, regulation_cc; @@ -84,6 +93,7 @@ struct rdtech_dps_state { float voltage_target, current_limit; float ovp_threshold, ocp_threshold; float voltage, current, power; + unsigned int range; }; enum rdtech_dps_state_context { @@ -100,6 +110,8 @@ SR_PRIV int rdtech_dps_set_state(const struct sr_dev_inst *sdi, SR_PRIV int rdtech_dps_get_model_version(struct sr_modbus_dev_inst *modbus, enum rdtech_dps_model_type model_type, uint16_t *model, uint16_t *version, uint32_t *serno); +SR_PRIV void rdtech_dps_update_multipliers(const struct sr_dev_inst *sdi); +SR_PRIV int rdtech_dps_update_range(const struct sr_dev_inst *sdi); SR_PRIV int rdtech_dps_seed_receive(const struct sr_dev_inst *sdi); SR_PRIV int rdtech_dps_receive_data(int fd, int revents, void *cb_data);