From 4a6447575c734538c82809d053e39711784d532f Mon Sep 17 00:00:00 2001 From: hiro2233 Date: Sun, 3 Jul 2016 15:51:41 -0400 Subject: [PATCH] AP_HAL: fixed and updated RCInput example. --- libraries/AP_HAL/examples/RCInput/RCInput.cpp | 37 +++++++++++-------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/libraries/AP_HAL/examples/RCInput/RCInput.cpp b/libraries/AP_HAL/examples/RCInput/RCInput.cpp index 046c12aa4b..b3b0bfea2d 100644 --- a/libraries/AP_HAL/examples/RCInput/RCInput.cpp +++ b/libraries/AP_HAL/examples/RCInput/RCInput.cpp @@ -8,7 +8,7 @@ const AP_HAL::HAL& hal = AP_HAL::get_HAL(); #define MAX_CHANNELS 16 -static uint8_t max_channels = 0; +static uint8_t max_channels_display = 8; //Set to 0 for display numbers of channels detected. static uint16_t last_value[MAX_CHANNELS]; void setup(void) @@ -16,28 +16,35 @@ void setup(void) hal.console->printf("Starting RCInput test\n"); } -void loop(void) +void loop(void) { bool changed = false; - uint8_t nchannels = hal.rcin->num_channels(); + uint8_t nchannels = hal.rcin->num_channels(); //Get the numbers channels detected by RC_INPUT. if (nchannels > MAX_CHANNELS) { nchannels = MAX_CHANNELS; } - for (uint8_t i=0; iread(i); - if (last_value[i] != v) { - changed = true; - last_value[i] = v; + if (nchannels != 0) { //If channels detected, process. + for (uint8_t i = 0; i < nchannels; i++) { + uint16_t v = hal.rcin->read(i); + if (last_value[i] != v) { + changed = true; + last_value[i] = v; + } } - if (i > max_channels) { - max_channels = i; + if (max_channels_display > nchannels) { + max_channels_display = nchannels; } - } - if (changed) { - for (uint8_t i=0; iprintf("%2u:%04u ", (unsigned)i+1, (unsigned)last_value[i]); + if (max_channels_display > 0) { + if (changed) { + for (uint8_t i = 0; i < max_channels_display; i++) { + hal.console->printf("%2u:%04u ", (unsigned)i+1, (unsigned)last_value[i]); + } + hal.console->println(); + } + } else { + hal.console->printf("Channels detected: %2u\n", nchannels); + hal.console->printf("Set max_channels_display > 0 to display channels values\n"); } - hal.console->println(); } hal.scheduler->delay(100); }