]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/demo/protocol.h
demo: Get/Set amplitude while data acquisition is running.
[libsigrok.git] / src / hardware / demo / protocol.h
index de0ac7a86078d125f1925c801638249bdff37a7c..9877f55367b2a84f16374bc52a64deba5c8cfee2 100644 (file)
 #define SAMPLES_PER_FRAME              1000UL
 #define DEFAULT_LIMIT_FRAMES           0
 
+#define DEFAULT_ANALOG_ENCODING_DIGITS 4
+#define DEFAULT_ANALOG_SPEC_DIGITS             4
+#define DEFAULT_ANALOG_AMPLITUDE               10
+#define DEFAULT_ANALOG_OFFSET                  0.
+
 /* Logic patterns we can generate. */
 enum logic_pattern_type {
        /**
@@ -92,6 +97,18 @@ enum analog_pattern_type {
        PATTERN_SAWTOOTH,
 };
 
+static const char *analog_pattern_str[] = {
+       "square",
+       "sine",
+       "triangle",
+       "sawtooth",
+};
+
+struct analog_pattern {
+       float data[ANALOG_BUFSIZE];
+       unsigned int num_samples;
+};
+
 struct dev_context {
        uint64_t cur_samplerate;
        uint64_t limit_samples;
@@ -110,6 +127,7 @@ struct dev_context {
        enum logic_pattern_type logic_pattern;
        uint8_t logic_data[LOGIC_BUFSIZE];
        /* Analog */
+       struct analog_pattern *analog_patterns[ARRAY_SIZE(analog_pattern_str)];
        int32_t num_analog_channels;
        GHashTable *ch_ag;
        gboolean avg; /* True if averaging is enabled */
@@ -124,13 +142,6 @@ struct dev_context {
        struct soft_trigger_logic *stl;
 };
 
-static const char *analog_pattern_str[] = {
-       "square",
-       "sine",
-       "triangle",
-       "sawtooth",
-};
-
 struct analog_gen {
        struct sr_channel *ch;
        enum sr_mq mq;
@@ -138,8 +149,7 @@ struct analog_gen {
        enum sr_unit unit;
        enum analog_pattern_type pattern;
        float amplitude;
-       float pattern_data[ANALOG_BUFSIZE];
-       unsigned int num_samples;
+       float offset;
        struct sr_datafeed_analog packet;
        struct sr_analog_encoding encoding;
        struct sr_analog_meaning meaning;
@@ -148,7 +158,7 @@ struct analog_gen {
        unsigned int num_avgs; /* Number of samples averaged */
 };
 
-SR_PRIV void demo_generate_analog_pattern(struct analog_gen *ag, uint64_t sample_rate);
+SR_PRIV void demo_generate_analog_pattern(struct dev_context *devc);
 SR_PRIV int demo_prepare_data(int fd, int revents, void *cb_data);
 
 #endif