ManualControlSelector: Enable original PX4 default behavior until QGC catches up

This commit is contained in:
Matthias Grob
2021-12-09 11:15:07 +01:00
committed by Daniel Agar
parent d961a067b9
commit 300e439144
4 changed files with 66 additions and 5 deletions
@@ -168,6 +168,57 @@ TEST(ManualControlSelector, AutoInput)
EXPECT_EQ(selector.instance(), 1);
}
TEST(ManualControlSelector, FirstInput)
{
ManualControlSelector selector;
selector.setRcInMode(3);
selector.setTimeout(500_ms);
uint64_t timestamp = some_time;
manual_control_setpoint_s input {};
input.data_source = manual_control_setpoint_s::SOURCE_RC;
input.timestamp_sample = timestamp;
selector.updateWithNewInputSample(timestamp, input, 0);
EXPECT_TRUE(selector.setpoint().valid);
EXPECT_TRUE(selector.setpoint().data_source == manual_control_setpoint_s::SOURCE_RC);
EXPECT_EQ(selector.instance(), 0);
timestamp += 100_ms;
// Now provide input from MAVLink as well which should get ignored.
input.data_source = manual_control_setpoint_s::SOURCE_MAVLINK_0;
input.timestamp_sample = timestamp;
selector.updateWithNewInputSample(timestamp, input, 1);
EXPECT_TRUE(selector.setpoint().valid);
EXPECT_TRUE(selector.setpoint().data_source == manual_control_setpoint_s::SOURCE_RC);
EXPECT_EQ(selector.instance(), 0);
timestamp += 500_ms;
// Now we'll let RC time out, but it should NOT switch to MAVLINK because RC was first
input.data_source = manual_control_setpoint_s::SOURCE_MAVLINK_0;
input.timestamp_sample = timestamp;
selector.updateWithNewInputSample(timestamp, input, 1);
EXPECT_FALSE(selector.setpoint().valid);
EXPECT_FALSE(selector.setpoint().data_source == manual_control_setpoint_s::SOURCE_MAVLINK_0);
EXPECT_EQ(selector.instance(), -1);
timestamp += 100_ms;
// Provide input from RC again and it should get accepted because it was the first.
input.data_source = manual_control_setpoint_s::SOURCE_RC;
input.timestamp_sample = timestamp;
selector.updateWithNewInputSample(timestamp, input, 0);
EXPECT_TRUE(selector.setpoint().valid);
EXPECT_TRUE(selector.setpoint().data_source == manual_control_setpoint_s::SOURCE_RC);
EXPECT_EQ(selector.instance(), 0);
}
TEST(ManualControlSelector, RcTimeout)
{
ManualControlSelector selector;