/* Size of the analog pattern space per channel. */
#define ANALOG_BUFSIZE 4096
/* This is a development feature: it starts a new frame every n samples. */
-#define SAMPLES_PER_FRAME 0
+#define SAMPLES_PER_FRAME 1000UL
+#define DEFAULT_LIMIT_FRAMES 0
/* Logic patterns we can generate. */
enum logic_pattern_type {
* something that can get recognized.
*/
PATTERN_SQUID,
+
+ /** Gray encoded data, like rotary encoder signals. */
+ PATTERN_GRAYCODE,
};
/* Analog patterns we can generate. */
uint64_t cur_samplerate;
uint64_t limit_samples;
uint64_t limit_msec;
+ uint64_t limit_frames;
uint64_t sent_samples;
uint64_t sent_frame_samples; /* Number of samples that were sent for current frame. */
int64_t start_us;
/* Logic */
int32_t num_logic_channels;
size_t logic_unitsize;
+ uint64_t all_logic_channels_mask;
/* There is only ever one logic channel group, so its pattern goes here. */
enum logic_pattern_type logic_pattern;
uint8_t logic_data[LOGIC_BUFSIZE];
size_t enabled_analog_channels;
size_t first_partial_logic_index;
uint8_t first_partial_logic_mask;
+ /* Triggers */
+ uint64_t capture_ratio;
+ gboolean trigger_fired;
+ struct soft_trigger_logic *stl;
};
static const char *analog_pattern_str[] = {