* Copyright (C) 2011 Olivier Fauchon <olivier@aixmarseille.com>
* Copyright (C) 2012 Alexandru Gagniuc <mr.nuke.me@gmail.com>
* Copyright (C) 2015 Bartosz Golaszewski <bgolaszewski@baylibre.com>
+ * Copyright (C) 2019 Frank Stettner <frank-stettner@gmx.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
/* 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;
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[] = {
struct analog_gen {
struct sr_channel *ch;
+ enum sr_mq mq;
+ enum sr_mqflag mq_flags;
+ enum sr_unit unit;
enum analog_pattern_type pattern;
float amplitude;
float pattern_data[ANALOG_BUFSIZE];