X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fdemo%2Fdemo.c;h=e117e6a59afa29cf065e6f0afcd4e0975eb68c89;hb=cdbc51d97d027c3889aad43c9d9ed3344cfb5a91;hp=c18161f03ce3b23cdeed749e54a7e95f96cceaeb;hpb=764f887f7bfe480690fdc90ccadadfc1f9b42c03;p=libsigrok.git diff --git a/hardware/demo/demo.c b/hardware/demo/demo.c index c18161f0..e117e6a5 100644 --- a/hardware/demo/demo.c +++ b/hardware/demo/demo.c @@ -19,12 +19,13 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -//#define DEMO_ANALOG +#define DEMO_ANALOG #include #include #include #include +#include #ifdef _WIN32 #include #include @@ -49,6 +50,7 @@ enum { GENMODE_DEFAULT, GENMODE_RANDOM, GENMODE_INC, + GENMODE_SINE, }; GIOChannel *channels[2]; @@ -74,6 +76,7 @@ static int capabilities[] = { static const char *patternmodes[] = { "random", "incremental", + "sine", NULL, }; @@ -206,6 +209,9 @@ static int hw_set_configuration(int device_index, int capability, void *value) } else if (!strcmp(stropt, "incremental")) { default_genmode = GENMODE_INC; ret = SIGROK_OK; + } else if (!strcmp(stropt, "sine")) { + default_genmode = GENMODE_SINE; + ret = SIGROK_OK; } else { ret = SIGROK_ERR; } @@ -235,6 +241,13 @@ static void samples_generator(uint8_t *buf, uint64_t size, void *data) switch (mydata->sample_generator) { default: case GENMODE_DEFAULT: + case GENMODE_SINE: + for (i = 0; i < size * 3; i += 3) { + *(buf + i) = i / 3; + *(uint16_t *) (buf + i + 1) = + (uint16_t) (sin(i / 3) * 256 * 30); + } + break; case GENMODE_RANDOM: for (i = 0; i < size * 3; i += 3) { *(buf + i) = (uint8_t)(rand() & 0xff);