From 718729504ea7f5acfd64a24954ad61b5323bf365 Mon Sep 17 00:00:00 2001 From: Dominic Clifton Date: Thu, 20 Aug 2015 02:44:22 +0100 Subject: [PATCH] Allow FC to reverse input channels by using rxrange. Just reverse the min/max arguments. Unit tested. Fixes #1132. --- docs/Rx.md | 2 ++ src/main/io/serial_cli.c | 2 +- src/test/unit/rx_ranges_unittest.cc | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/Rx.md b/docs/Rx.md index 863df54407..28fba552aa 100644 --- a/docs/Rx.md +++ b/docs/Rx.md @@ -269,3 +269,5 @@ the CLI. Be sure to enter the `save` command to save the settings. After configuring channel ranges use the sub-trim on your transmitter to set the middle point of pitch, roll, yaw and throttle. + +You can also use rxrange to reverse the direction of an input channel, e.g. `rxrange 0 2000 1000`. diff --git a/src/main/io/serial_cli.c b/src/main/io/serial_cli.c index 0250e1d8bd..eddbf960af 100644 --- a/src/main/io/serial_cli.c +++ b/src/main/io/serial_cli.c @@ -988,7 +988,7 @@ static void cliRxRange(char *cmdline) if (validArgumentCount != 2) { cliShowParseError(); - } else if (rangeMin < PWM_PULSE_MIN || rangeMin > PWM_PULSE_MAX || rangeMax < PWM_PULSE_MIN || rangeMax > PWM_PULSE_MAX || rangeMin >= rangeMax) { + } else if (rangeMin < PWM_PULSE_MIN || rangeMin > PWM_PULSE_MAX || rangeMax < PWM_PULSE_MIN || rangeMax > PWM_PULSE_MAX) { cliShowParseError(); } else { rxChannelRangeConfiguration_t *channelRangeConfiguration = &masterConfig.rxConfig.channelRanges[i]; diff --git a/src/test/unit/rx_ranges_unittest.cc b/src/test/unit/rx_ranges_unittest.cc index 80448ddc6c..021a2ad90c 100755 --- a/src/test/unit/rx_ranges_unittest.cc +++ b/src/test/unit/rx_ranges_unittest.cc @@ -51,6 +51,11 @@ TEST(RxChannelRangeTest, TestRxChannelRanges) EXPECT_EQ(applyRxChannelRangeConfiguraton(700, RANGE_CONFIGURATION(1000, 2000)), 750); EXPECT_EQ(applyRxChannelRangeConfiguraton(2500, RANGE_CONFIGURATION(1000, 2000)), 2250); + // Reversed channel + EXPECT_EQ(applyRxChannelRangeConfiguraton(1000, RANGE_CONFIGURATION(2000, 1000)), 2000); + EXPECT_EQ(applyRxChannelRangeConfiguraton(1500, RANGE_CONFIGURATION(2000, 1000)), 1500); + EXPECT_EQ(applyRxChannelRangeConfiguraton(2000, RANGE_CONFIGURATION(2000, 1000)), 1000); + // Shifted range EXPECT_EQ(applyRxChannelRangeConfiguraton(900, RANGE_CONFIGURATION(900, 1900)), 1000); EXPECT_EQ(applyRxChannelRangeConfiguraton(1400, RANGE_CONFIGURATION(900, 1900)), 1500);