]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/asix-sigma/protocol.h
asix-sigma: eliminate magic numbers in firmware file references
[libsigrok.git] / src / hardware / asix-sigma / protocol.h
index af4e5c103ebd29b24c208991eb5a624bfce76210..cd7bc23953ccc2cc71d46cf9f28eb482f30fe3e1 100644 (file)
@@ -284,6 +284,7 @@ enum triggerfunc {
 struct sigma_state {
        enum {
                SIGMA_UNINITIALIZED = 0,
+               SIGMA_CONFIG,
                SIGMA_IDLE,
                SIGMA_CAPTURE,
                SIGMA_STOPPING,
@@ -293,6 +294,17 @@ struct sigma_state {
        uint16_t lastsample;
 };
 
+enum sigma_firmware_idx {
+       SIGMA_FW_NONE,
+       SIGMA_FW_50MHZ,
+       SIGMA_FW_100MHZ,
+       SIGMA_FW_200MHZ,
+       SIGMA_FW_SYNC,
+       SIGMA_FW_FREQ,
+};
+
+struct submit_buffer;
+
 struct dev_context {
        struct {
                uint16_t vid, pid;
@@ -301,19 +313,18 @@ struct dev_context {
                enum asix_device_type type;
        } id;
        struct ftdi_context ftdic;
-       uint64_t cur_samplerate;
-       uint64_t limit_msec;
-       uint64_t limit_samples;
-       uint64_t sent_samples;
-       uint64_t start_time;
-       int cur_firmware;
+       uint64_t samplerate;
+       struct sr_sw_limits cfg_limits; /* Configured limits (user specified). */
+       struct sr_sw_limits acq_limits; /* Acquisition limits (internal use). */
+       struct sr_sw_limits feed_limits; /* Datafeed limits (internal use). */
+       enum sigma_firmware_idx firmware_idx;
        int num_channels;
-       int cur_channels;
        int samples_per_event;
        uint64_t capture_ratio;
        struct sigma_trigger trigger;
        int use_triggers;
        struct sigma_state state;
+       struct submit_buffer *buffer;
 };
 
 extern SR_PRIV const uint64_t samplerates[];
@@ -323,9 +334,9 @@ 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 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_normalize_samplerate(uint64_t want_rate, uint64_t *have_rate);
+SR_PRIV int sigma_set_samplerate(const struct sr_dev_inst *sdi);
+SR_PRIV int sigma_set_acquire_timeout(struct dev_context *devc);
 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);
 SR_PRIV int sigma_build_basic_trigger(struct triggerlut *lut, struct dev_context *devc);