X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fdemo%2Fprotocol.h;h=230d8f3528f6fe93bed4adbb6af2ccc0a09c26d9;hb=395c1850b797384cd7e1a2e194c001461c8460f7;hp=de0ac7a86078d125f1925c801638249bdff37a7c;hpb=94f364ec11c938934f68cde067ee590218177140;p=libsigrok.git diff --git a/src/hardware/demo/protocol.h b/src/hardware/demo/protocol.h index de0ac7a8..230d8f35 100644 --- a/src/hardware/demo/protocol.h +++ b/src/hardware/demo/protocol.h @@ -38,6 +38,11 @@ #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 { /** @@ -90,6 +95,20 @@ enum analog_pattern_type { PATTERN_SINE, PATTERN_TRIANGLE, PATTERN_SAWTOOTH, + PATTERN_ANALOG_RANDOM, +}; + +static const char *analog_pattern_str[] = { + "square", + "sine", + "triangle", + "sawtooth", + "random", +}; + +struct analog_pattern { + float data[ANALOG_BUFSIZE]; + unsigned int num_samples; }; struct dev_context { @@ -110,6 +129,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 +144,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 +151,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 +160,8 @@ 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 void demo_free_analog_pattern(struct dev_context *devc); SR_PRIV int demo_prepare_data(int fd, int revents, void *cb_data); #endif