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;
|
rxConfig_t rxConfig;
|
||||||
failsafeConfig_t failsafeConfig;
|
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
|
// Stepwise tests
|
||||||
//
|
//
|
||||||
|
@ -66,13 +75,9 @@ failsafeConfig_t failsafeConfig;
|
||||||
TEST(FlightFailsafeTest, TestFailsafeInitialState)
|
TEST(FlightFailsafeTest, TestFailsafeInitialState)
|
||||||
{
|
{
|
||||||
// given
|
// given
|
||||||
memset(&rxConfig, 0, sizeof(rxConfig));
|
configureFailsafe();
|
||||||
rxConfig.midrc = TEST_MID_RC;
|
|
||||||
|
|
||||||
// and
|
// and
|
||||||
memset(&failsafeConfig, 0, sizeof(failsafeConfig));
|
DISABLE_ARMING_FLAG(ARMED);
|
||||||
failsafeConfig.failsafe_delay = 10; // 1 second
|
|
||||||
failsafeConfig.failsafe_off_delay = 50; // 5 seconds
|
|
||||||
|
|
||||||
// when
|
// when
|
||||||
useFailsafeConfig(&failsafeConfig);
|
useFailsafeConfig(&failsafeConfig);
|
||||||
|
@ -95,8 +100,11 @@ TEST(FlightFailsafeTest, TestFailsafeStartMonitoring)
|
||||||
EXPECT_EQ(FAILSAFE_IDLE, failsafePhase());
|
EXPECT_EQ(FAILSAFE_IDLE, failsafePhase());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(FlightFailsafeTest, TestFailsafeFirstCycle)
|
TEST(FlightFailsafeTest, TestFailsafeFirstArmedCycle)
|
||||||
{
|
{
|
||||||
|
// given
|
||||||
|
ENABLE_ARMING_FLAG(ARMED);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
failsafeOnRxCycleStarted();
|
failsafeOnRxCycleStarted();
|
||||||
failsafeOnValidDataReceived();
|
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
|
// STUBS
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue