]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/demo/protocol.h
demo: Implement logic triggering.
[libsigrok.git] / src / hardware / demo / protocol.h
index e2934980528e72a44930d725d2ba6fdaaaf26028..82fb5d23553829b62604ffcf94e5d67fd602c529 100644 (file)
@@ -34,7 +34,8 @@
 /* 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 {
@@ -77,6 +78,9 @@ 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. */
@@ -91,6 +95,7 @@ struct dev_context {
        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;
@@ -99,6 +104,7 @@ struct dev_context {
        /* 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];
@@ -111,6 +117,10 @@ struct dev_context {
        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[] = {