|
|
|
@ -168,6 +168,57 @@ TEST(ManualControlSelector, AutoInput)
@@ -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; |
|
|
|
|