X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fdemo%2Fprotocol.h;h=230d8f3528f6fe93bed4adbb6af2ccc0a09c26d9;hb=24a953382c4c07f4071a36897bf17c93db9ce1e7;hp=d21d0d6a359c9a26f2cd92d42e7a63650afdd94b;hpb=53ea24610e5eb0750f98ed7fccccba4de0b4b5ba;p=libsigrok.git diff --git a/src/hardware/demo/protocol.h b/src/hardware/demo/protocol.h index d21d0d6a..230d8f35 100644 --- a/src/hardware/demo/protocol.h +++ b/src/hardware/demo/protocol.h @@ -5,6 +5,7 @@ * Copyright (C) 2011 Olivier Fauchon * Copyright (C) 2012 Alexandru Gagniuc * Copyright (C) 2015 Bartosz Golaszewski + * Copyright (C) 2019 Frank Stettner * * 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 @@ -37,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 { /** @@ -89,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 { @@ -109,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 */ @@ -117,21 +138,20 @@ struct dev_context { size_t enabled_analog_channels; size_t first_partial_logic_index; uint8_t first_partial_logic_mask; -}; - -static const char *analog_pattern_str[] = { - "square", - "sine", - "triangle", - "sawtooth", + /* Triggers */ + uint64_t capture_ratio; + gboolean trigger_fired; + struct soft_trigger_logic *stl; }; 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]; - unsigned int num_samples; + float offset; struct sr_datafeed_analog packet; struct sr_analog_encoding encoding; struct sr_analog_meaning meaning; @@ -140,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