struct sigma_state {
enum {
SIGMA_UNINITIALIZED = 0,
+ SIGMA_CONFIG,
SIGMA_IDLE,
SIGMA_CAPTURE,
SIGMA_STOPPING,
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;
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[];
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);