mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-19 14:25:20 +03:00
Add test to ensure that failsafe is not activated when disarmed and RX
signal loss is occurs.
This commit is contained in:
parent
d4eb558254
commit
20a421c4be
1 changed files with 51 additions and 7 deletions
|
@ -59,6 +59,15 @@ void resetCallCounters(void) {
|
|||
rxConfig_t rxConfig;
|
||||
failsafeConfig_t failsafeConfig;
|
||||
|
||||
void configureFailsafe(void)
|
||||
{
|
||||
memset(&rxConfig, 0, sizeof(rxConfig));
|
||||
rxConfig.midrc = TEST_MID_RC;
|
||||
|
||||
memset(&failsafeConfig, 0, sizeof(failsafeConfig));
|
||||
failsafeConfig.failsafe_delay = 10; // 1 second
|
||||
failsafeConfig.failsafe_off_delay = 50; // 5 seconds
|
||||
}
|
||||
//
|
||||
// Stepwise tests
|
||||
//
|
||||
|
@ -66,13 +75,9 @@ failsafeConfig_t failsafeConfig;
|
|||
TEST(FlightFailsafeTest, TestFailsafeInitialState)
|
||||
{
|
||||
// given
|
||||
memset(&rxConfig, 0, sizeof(rxConfig));
|
||||
rxConfig.midrc = TEST_MID_RC;
|
||||
|
||||
configureFailsafe();
|
||||
// and
|
||||
memset(&failsafeConfig, 0, sizeof(failsafeConfig));
|
||||
failsafeConfig.failsafe_delay = 10; // 1 second
|
||||
failsafeConfig.failsafe_off_delay = 50; // 5 seconds
|
||||
DISABLE_ARMING_FLAG(ARMED);
|
||||
|
||||
// when
|
||||
useFailsafeConfig(&failsafeConfig);
|
||||
|
@ -95,8 +100,11 @@ TEST(FlightFailsafeTest, TestFailsafeStartMonitoring)
|
|||
EXPECT_EQ(FAILSAFE_IDLE, failsafePhase());
|
||||
}
|
||||
|
||||
TEST(FlightFailsafeTest, TestFailsafeFirstCycle)
|
||||
TEST(FlightFailsafeTest, TestFailsafeFirstArmedCycle)
|
||||
{
|
||||
// given
|
||||
ENABLE_ARMING_FLAG(ARMED);
|
||||
|
||||
// when
|
||||
failsafeOnRxCycleStarted();
|
||||
failsafeOnValidDataReceived();
|
||||
|
@ -254,6 +262,42 @@ TEST(FlightFailsafeTest, TestFailsafeCausesLanding)
|
|||
|
||||
}
|
||||
|
||||
//
|
||||
// Additional non-stepwise tests
|
||||
//
|
||||
|
||||
TEST(FlightFailsafeTest, TestFailsafeNotActivatedWhenDisarmedAndRXLossIsDetected)
|
||||
{
|
||||
// given
|
||||
configureFailsafe();
|
||||
|
||||
// and
|
||||
useFailsafeConfig(&failsafeConfig);
|
||||
failsafeInit(&rxConfig);
|
||||
|
||||
// and
|
||||
DISABLE_ARMING_FLAG(ARMED);
|
||||
|
||||
// when
|
||||
failsafeStartMonitoring();
|
||||
|
||||
// and
|
||||
int callsToMakeToSimulateTenSeconds = FAILSAFE_UPDATE_HZ * 10;
|
||||
|
||||
for (int i = 0; i < callsToMakeToSimulateTenSeconds; i++) {
|
||||
failsafeOnRxCycleStarted();
|
||||
// no call to failsafeOnValidDataReceived();
|
||||
|
||||
failsafeUpdateState();
|
||||
|
||||
// then
|
||||
EXPECT_EQ(true, failsafeIsMonitoring());
|
||||
EXPECT_EQ(false, failsafeIsActive());
|
||||
EXPECT_EQ(FAILSAFE_IDLE, failsafePhase());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// STUBS
|
||||
|
||||
extern "C" {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue