X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fasix-sigma%2Fprotocol.h;h=52913da75dcbf99f8d47ca8654eb5bcb925f4bae;hb=22f64ed88c2128ebadf09eafa3e12c8ed76cff7f;hp=9a2e5fc6a352deaa3b3610ff062f09fd3b46f84e;hpb=695dc859c15ba4190f5c1aa2e1a6e2dc6a6e5845;p=libsigrok.git diff --git a/src/hardware/asix-sigma/protocol.h b/src/hardware/asix-sigma/protocol.h index 9a2e5fc6..52913da7 100644 --- a/src/hardware/asix-sigma/protocol.h +++ b/src/hardware/asix-sigma/protocol.h @@ -23,12 +23,21 @@ #define LIBSIGROK_HARDWARE_ASIX_SIGMA_PROTOCOL_H #include +#include #include #include #include #include #include "libsigrok-internal.h" +/* + * Triggers are not working in this implementation. Stop claiming + * support for the feature which effectively is not available, until + * the implementation got fixed. Yet keep the code in place and allow + * developers to turn on this switch during development. + */ +#define ASIX_SIGMA_WITH_TRIGGER 0 + #define LOG_PREFIX "asix-sigma" #define USB_VENDOR 0xa600 @@ -89,6 +98,26 @@ enum sigma_read_register { #define CHUNK_SIZE 1024 +/* WRITE_MODE register fields. */ +#define WMR_SDRAMWRITEEN (1 << 0) +#define WMR_SDRAMREADEN (1 << 1) +#define WMR_TRGRES (1 << 2) +#define WMR_TRGEN (1 << 3) +#define WMR_FORCESTOP (1 << 4) +#define WMR_TRGSW (1 << 5) +/* not used: bit position 6 */ +#define WMR_SDRAMINIT (1 << 7) + +/* READ_MODE register fields. */ +#define RMR_SDRAMWRITEEN (1 << 0) +#define RMR_SDRAMREADEN (1 << 1) +/* not used: bit position 2 */ +#define RMR_TRGEN (1 << 3) +#define RMR_ROUND (1 << 4) +#define RMR_TRIGGERED (1 << 5) +#define RMR_POSTTRIGGERED (1 << 6) +/* not used: bit position 7 */ + /* * The entire ASIX Sigma DRAM is an array of struct sigma_dram_line[1024]; */ @@ -209,6 +238,7 @@ struct dev_context { uint64_t cur_samplerate; uint64_t period_ps; uint64_t limit_msec; + uint64_t limit_samples; struct timeval start_tv; int cur_firmware; int num_channels; @@ -221,13 +251,15 @@ struct dev_context { }; extern SR_PRIV const uint64_t samplerates[]; -extern SR_PRIV const int SAMPLERATES_COUNT; +extern SR_PRIV const size_t samplerates_count; SR_PRIV int sigma_write_register(uint8_t reg, uint8_t *data, size_t len, struct dev_context *devc); SR_PRIV int sigma_set_register(uint8_t reg, uint8_t value, struct dev_context *devc); SR_PRIV int sigma_write_trigger_lut(struct triggerlut *lut, struct dev_context *devc); SR_PRIV void sigma_clear_helper(void *priv); +SR_PRIV uint64_t sigma_limit_samples_to_msec(const struct dev_context *devc, + uint64_t limit_samples); SR_PRIV int sigma_set_samplerate(const struct sr_dev_inst *sdi, uint64_t samplerate); SR_PRIV int sigma_convert_trigger(const struct sr_dev_inst *sdi); SR_PRIV int sigma_receive_data(int fd, int revents, void *cb_data);