Browse Source

ManualControlSelector: Allow disabling stick input

master
Matthias Grob 3 years ago committed by Daniel Agar
parent
commit
897775f38d
  1. 3
      src/modules/commander/commander_params.c
  2. 28
      src/modules/manual_control/ManualControlSelectorTest.cpp

3
src/modules/commander/commander_params.c

@ -252,11 +252,12 @@ PARAM_DEFINE_INT32(COM_HOME_IN_AIR, 0);
* *
* @group Commander * @group Commander
* @min 0 * @min 0
* @max 3 * @max 4
* @value 0 RC Transmitter only * @value 0 RC Transmitter only
* @value 1 Joystick only * @value 1 Joystick only
* @value 2 RC and Joystick with fallback * @value 2 RC and Joystick with fallback
* @value 3 RC or Joystick keep first * @value 3 RC or Joystick keep first
* @value 4 Stick input disabled
*/ */
PARAM_DEFINE_INT32(COM_RC_IN_MODE, 3); PARAM_DEFINE_INT32(COM_RC_IN_MODE, 3);

28
src/modules/manual_control/ManualControlSelectorTest.cpp

@ -219,6 +219,34 @@ TEST(ManualControlSelector, FirstInput)
EXPECT_EQ(selector.instance(), 0); EXPECT_EQ(selector.instance(), 0);
} }
TEST(ManualControlSelector, DisabledInput)
{
ManualControlSelector selector;
selector.setRcInMode(4);
selector.setTimeout(500_ms);
uint64_t timestamp = some_time;
manual_control_setpoint_s input {};
// Reject MAVLink stick input
input.data_source = manual_control_setpoint_s::SOURCE_MAVLINK_0;
input.timestamp_sample = timestamp;
selector.updateWithNewInputSample(timestamp, input, 0);
EXPECT_FALSE(selector.setpoint().valid);
EXPECT_EQ(selector.instance(), -1);
timestamp += 100_ms;
// Reject RC stick input
input.data_source = manual_control_setpoint_s::SOURCE_RC;
input.timestamp_sample = timestamp;
selector.updateWithNewInputSample(timestamp, input, 1);
EXPECT_FALSE(selector.setpoint().valid);
EXPECT_EQ(selector.instance(), -1);
}
TEST(ManualControlSelector, RcTimeout) TEST(ManualControlSelector, RcTimeout)
{ {
ManualControlSelector selector; ManualControlSelector selector;

Loading…
Cancel
Save