X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fscpi-pps%2Fprotocol.h;h=7a06093fb3ad2d8079c49cb9e0f42325b89c8ccd;hb=4a471029c230a7e2e0b15528d22bf30fb7cf2472;hp=19902ccc0c40dfde72e9f1348b0c2809ebd531f6;hpb=9e45cd41fd1618238c8a3afc56d4031c984bc3c5;p=libsigrok.git diff --git a/src/hardware/scpi-pps/protocol.h b/src/hardware/scpi-pps/protocol.h index 19902ccc..7a06093f 100644 --- a/src/hardware/scpi-pps/protocol.h +++ b/src/hardware/scpi-pps/protocol.h @@ -28,31 +28,38 @@ #define LOG_PREFIX "scpi-pps" enum pps_scpi_cmds { - SCPI_CMD_KEY_UNLOCK, + SCPI_CMD_REMOTE, + SCPI_CMD_LOCAL, + SCPI_CMD_BEEPER, + SCPI_CMD_BEEPER_ENABLE, + SCPI_CMD_BEEPER_DISABLE, + SCPI_CMD_SELECT_CHANNEL, SCPI_CMD_GET_MEAS_VOLTAGE, SCPI_CMD_GET_MEAS_CURRENT, SCPI_CMD_GET_MEAS_POWER, - SCPI_CMD_GET_VOLTAGE_MAX, - SCPI_CMD_SET_VOLTAGE_MAX, - SCPI_CMD_GET_CURRENT_MAX, - SCPI_CMD_SET_CURRENT_MAX, + SCPI_CMD_GET_VOLTAGE_TARGET, + SCPI_CMD_SET_VOLTAGE_TARGET, + SCPI_CMD_GET_CURRENT_LIMIT, + SCPI_CMD_SET_CURRENT_LIMIT, SCPI_CMD_GET_OUTPUT_ENABLED, - SCPI_CMD_SET_OUTPUT_ENABLED, + SCPI_CMD_SET_OUTPUT_ENABLE, + SCPI_CMD_SET_OUTPUT_DISABLE, SCPI_CMD_GET_OUTPUT_REGULATION, SCPI_CMD_GET_OVER_TEMPERATURE_PROTECTION, - SCPI_CMD_SET_OVER_TEMPERATURE_PROTECTION, + SCPI_CMD_SET_OVER_TEMPERATURE_PROTECTION_ENABLE, + SCPI_CMD_SET_OVER_TEMPERATURE_PROTECTION_DISABLE, SCPI_CMD_GET_OVER_VOLTAGE_PROTECTION_ENABLED, - SCPI_CMD_SET_OVER_VOLTAGE_PROTECTION_ENABLED, + SCPI_CMD_SET_OVER_VOLTAGE_PROTECTION_ENABLE, + SCPI_CMD_SET_OVER_VOLTAGE_PROTECTION_DISABLE, SCPI_CMD_GET_OVER_VOLTAGE_PROTECTION_ACTIVE, SCPI_CMD_GET_OVER_VOLTAGE_PROTECTION_THRESHOLD, SCPI_CMD_SET_OVER_VOLTAGE_PROTECTION_THRESHOLD, SCPI_CMD_GET_OVER_CURRENT_PROTECTION_ENABLED, - SCPI_CMD_SET_OVER_CURRENT_PROTECTION_ENABLED, + SCPI_CMD_SET_OVER_CURRENT_PROTECTION_ENABLE, + SCPI_CMD_SET_OVER_CURRENT_PROTECTION_DISABLE, SCPI_CMD_GET_OVER_CURRENT_PROTECTION_ACTIVE, SCPI_CMD_GET_OVER_CURRENT_PROTECTION_THRESHOLD, SCPI_CMD_SET_OVER_CURRENT_PROTECTION_THRESHOLD, - SCPI_CMD_GET_OUTPUT_CHANNEL_CONFIG, - SCPI_CMD_SET_OUTPUT_CHANNEL_CONFIG, }; /* @@ -70,14 +77,12 @@ enum pps_features { }; struct scpi_pps { - int vendor_id; char *vendor; - char *idn_vendor; - char *idn_model; + char *model; uint64_t features; - const int32_t *devopts; + const uint32_t *devopts; unsigned int num_devopts; - const int32_t *devopts_cg; + const uint32_t *devopts_cg; unsigned int num_devopts_cg; struct channel_spec *channels; unsigned int num_channels; @@ -85,6 +90,9 @@ struct scpi_pps { unsigned int num_channel_groups; struct scpi_command *commands; unsigned int num_commands; + int (*probe_channels) (struct sr_dev_inst *sdi, struct sr_scpi_hw_info *hwinfo, + struct channel_spec **channels, unsigned int *num_channels, + struct channel_group_spec **channel_groups, unsigned int *num_channel_groups); }; struct channel_spec { @@ -105,6 +113,18 @@ struct channel_group_spec { uint64_t features; }; +struct pps_channel { + int mq; + unsigned int hw_output_idx; + char *hwname; +}; + +struct pps_channel_instance { + int mq; + int command; + char *prefix; +}; + struct pps_channel_group { uint64_t features; }; @@ -124,13 +144,22 @@ struct dev_context { void *cb_data; /* Operational state */ + gboolean beeper_was_set; + struct channel_spec *channels; + struct channel_group_spec *channel_groups; /* Temporary state across callbacks */ - int state; struct sr_channel *cur_channel; }; +const char *get_vendor(const char *raw_vendor); +SR_PRIV char *scpi_cmd_get(const struct sr_dev_inst *sdi, int command); SR_PRIV int scpi_cmd(const struct sr_dev_inst *sdi, int command, ...); +SR_PRIV int scpi_cmd_resp(const struct sr_dev_inst *sdi, GVariant **gvar, + const GVariantType *gvtype, int command, ...); +SR_PRIV int select_channel(const struct sr_dev_inst *sdi, struct sr_channel *ch); +SR_PRIV struct sr_channel *next_enabled_channel(const struct sr_dev_inst *sdi, + struct sr_channel *cur_channel); SR_PRIV int scpi_pps_receive_data(int fd, int revents, void *cb_data); #endif