From 875b6a062029f0738ac309ef4a915120aee24ef7 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Wed, 24 Jun 2020 19:57:29 -0400 Subject: GUI reads ADC channel --- source/main.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'source') diff --git a/source/main.cpp b/source/main.cpp index dc38ddd..b73776a 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -23,7 +23,7 @@ static_assert(sizeof(adcsample_t) == sizeof(uint16_t)); #if CACHE_LINE_SIZE > 0 CC_ALIGN(CACHE_LINE_SIZE) #endif -static std::array adc_samples; +static std::array adc_samples; int main() { @@ -49,11 +49,13 @@ int main() while (true) { if (usbd.active()) { // Expect to receive a byte command 'packet'. - if (char cmd; usbd.read(&cmd) > 0) { - switch (cmd) { + if (char cmd[3]; usbd.read(&cmd, 3) > 0) { + switch (cmd[0]) { case 'r': // Read in analog signal - adc.getSamples(&adc_samples[0], 100);//adc_samples.size()); - usbd.write(adc_samples.data(), adc_samples.size()); + if (auto count = std::min(static_cast(cmd[1] | (cmd[2] << 8)), adc_samples.size()); count > 0) { + adc.getSamples(&adc_samples[0], count); + usbd.write(adc_samples.data(), count * sizeof(adcsample_t)); + } break; case 'i': // Identify ourself as an stmdsp device usbd.write("stmdsp", 6); @@ -64,7 +66,7 @@ int main() } } - chThdSleepMilliseconds(250); + chThdSleepMilliseconds(1); } } -- cgit v1.2.3