X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fscpi-pps%2Fprotocol.h;h=ba1905132442019ceff60732cb9b2fe389a92fcb;hb=c2fdcc25a47c4c8f25e3ea96ea36a674a151e839;hp=fcd451d1c6684b9223b75a7d26572f3a6bd20a03;hpb=ca95e90fb37f127b3d58d90a8b40ce1ca85641d2;p=libsigrok.git diff --git a/src/hardware/scpi-pps/protocol.h b/src/hardware/scpi-pps/protocol.h index fcd451d1..ba190513 100644 --- a/src/hardware/scpi-pps/protocol.h +++ b/src/hardware/scpi-pps/protocol.h @@ -22,18 +22,27 @@ #include #include -#include "libsigrok.h" +#include #include "libsigrok-internal.h" +#include "scpi.h" #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_MEAS_FREQUENCY, SCPI_CMD_GET_VOLTAGE_TARGET, SCPI_CMD_SET_VOLTAGE_TARGET, + SCPI_CMD_GET_FREQUENCY_TARGET, + SCPI_CMD_SET_FREQUENCY_TARGET, SCPI_CMD_GET_CURRENT_LIMIT, SCPI_CMD_SET_CURRENT_LIMIT, SCPI_CMD_GET_OUTPUT_ENABLED, @@ -72,35 +81,33 @@ enum pps_features { }; struct scpi_pps { - char *vendor; - char *model; + const char *vendor; + const char *model; uint64_t features; const uint32_t *devopts; unsigned int num_devopts; const uint32_t *devopts_cg; unsigned int num_devopts_cg; - struct channel_spec *channels; + const struct channel_spec *channels; unsigned int num_channels; - struct channel_group_spec *channel_groups; + const struct channel_group_spec *channel_groups; unsigned int num_channel_groups; - struct scpi_command *commands; - unsigned int num_commands; + const struct scpi_command *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 { - char *name; + const char *name; /* Min, max, programming resolution. */ float voltage[3]; float current[3]; -}; - -struct scpi_command { - int command; - char *string; + float frequency[3]; }; struct channel_group_spec { - char *name; + const char *name; uint64_t channel_index_mask; uint64_t features; }; @@ -108,13 +115,13 @@ struct channel_group_spec { struct pps_channel { int mq; unsigned int hw_output_idx; - char *hwname; + const char *hwname; }; struct pps_channel_instance { int mq; int command; - char *prefix; + const char *prefix; }; struct pps_channel_group { @@ -132,20 +139,19 @@ struct dev_context { /* Model-specific information */ const struct scpi_pps *device; - /* Acquisition settings */ - void *cb_data; - /* Operational state */ + gboolean beeper_was_set; + struct channel_spec *channels; + struct channel_group_spec *channel_groups; /* Temporary state across callbacks */ 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 extern unsigned int num_pps_profiles; +SR_PRIV extern const struct scpi_pps pps_profiles[]; + +SR_PRIV int select_channel(const struct sr_dev_inst *sdi, struct sr_channel *ch); SR_PRIV int scpi_pps_receive_data(int fd, int revents, void *cb_data); #endif