X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fdemo%2Fprotocol.h;h=f1c667117a29264e0be4ea1221c675a83a0fa3ae;hb=05b0cc416fbfe95fb6440a786942a61dc1eeac52;hp=d747d9c20f9736b18e9cd5c7c3d86292d5fbb3f6;hpb=2ea1fdf12113311cbe1a4316e9e2efe4d8ac40f0;p=libsigrok.git diff --git a/src/hardware/demo/protocol.h b/src/hardware/demo/protocol.h index d747d9c2..f1c66711 100644 --- a/src/hardware/demo/protocol.h +++ b/src/hardware/demo/protocol.h @@ -33,13 +33,15 @@ #define LOGIC_BUFSIZE 4096 /* 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 -/* Private, per-device-instance driver context. */ struct dev_context { uint64_t cur_samplerate; uint64_t limit_samples; uint64_t limit_msec; uint64_t sent_samples; + uint64_t sent_frame_samples; /* Number of samples that were sent for current frame. */ int64_t start_us; int64_t spent_us; uint64_t step; @@ -54,6 +56,10 @@ struct dev_context { GHashTable *ch_ag; gboolean avg; /* True if averaging is enabled */ uint64_t avg_samples; + size_t enabled_logic_channels; + size_t enabled_analog_channels; + size_t first_partial_logic_index; + uint8_t first_partial_logic_mask; }; /* Logic patterns we can generate. */ @@ -75,18 +81,32 @@ enum { */ PATTERN_INC, + /** + * Single bit "walking" across all logic channels by being + * shifted across data lines, restarting after the last line + * was used. An all-zero (all-one) state is inserted to prevent + * repetitive patterns (e.g. with 8 data lines, every 8th state + * would show the same line state) + */ + PATTERN_WALKING_ONE, + PATTERN_WALKING_ZERO, + /** All channels have a low logic state. */ PATTERN_ALL_LOW, /** All channels have a high logic state. */ PATTERN_ALL_HIGH, + + /** + * Mimics a cable squid. Derived from the "works with" logo + * to occupy a larger number of channels yet "painting" + * something that can get recognized. + */ + PATTERN_SQUID, }; /* Analog patterns we can generate. */ enum { - /** - * Square wave. - */ PATTERN_SQUARE, PATTERN_SINE, PATTERN_TRIANGLE, @@ -101,6 +121,7 @@ static const char *analog_pattern_str[] = { }; struct analog_gen { + struct sr_channel *ch; int pattern; float amplitude; float pattern_data[ANALOG_BUFSIZE];