mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-22 07:45:29 +03:00
Add configurable boot grace time
This guards against the case when the RX takes longer to obtain a valid link than the gyro takes to calibrate (previously this delay is all that stopped immediate arming).
This commit is contained in:
parent
fd51cda9eb
commit
0c0483d020
8 changed files with 48 additions and 22 deletions
|
@ -70,7 +70,7 @@ bool gyroCalibDone = false;
|
|||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
TEST(ArmingPreventionTest, CalibrationAngleThrottleArmSwitch)
|
||||
TEST(ArmingPreventionTest, CalibrationPowerOnGraceAngleThrottleArmSwitch)
|
||||
{
|
||||
// given
|
||||
simulationTime = 0;
|
||||
|
@ -91,13 +91,17 @@ TEST(ArmingPreventionTest, CalibrationAngleThrottleArmSwitch)
|
|||
rcData[THROTTLE] = 1400;
|
||||
rcData[4] = 1800;
|
||||
|
||||
// and
|
||||
systemConfigMutable()->powerOnArmingGraceTime = 5;
|
||||
setArmingDisabled(ARMING_DISABLED_BOOT_GRACE_TIME);
|
||||
|
||||
// when
|
||||
updateActivatedModes();
|
||||
updateArmingStatus();
|
||||
|
||||
// expect
|
||||
EXPECT_TRUE(isArmingDisabled());
|
||||
EXPECT_EQ(ARMING_DISABLED_CALIBRATING | ARMING_DISABLED_ANGLE | ARMING_DISABLED_ARM_SWITCH | ARMING_DISABLED_THROTTLE, getArmingDisableFlags());
|
||||
EXPECT_EQ(ARMING_DISABLED_BOOT_GRACE_TIME | ARMING_DISABLED_CALIBRATING | ARMING_DISABLED_ANGLE | ARMING_DISABLED_ARM_SWITCH | ARMING_DISABLED_THROTTLE, getArmingDisableFlags());
|
||||
|
||||
// given
|
||||
// gyro calibration is done
|
||||
|
@ -109,7 +113,7 @@ TEST(ArmingPreventionTest, CalibrationAngleThrottleArmSwitch)
|
|||
|
||||
// expect
|
||||
EXPECT_TRUE(isArmingDisabled());
|
||||
EXPECT_EQ(ARMING_DISABLED_ANGLE | ARMING_DISABLED_ARM_SWITCH | ARMING_DISABLED_THROTTLE, getArmingDisableFlags());
|
||||
EXPECT_EQ(ARMING_DISABLED_BOOT_GRACE_TIME | ARMING_DISABLED_ANGLE | ARMING_DISABLED_ARM_SWITCH | ARMING_DISABLED_THROTTLE, getArmingDisableFlags());
|
||||
|
||||
// given
|
||||
// quad is level
|
||||
|
@ -120,7 +124,7 @@ TEST(ArmingPreventionTest, CalibrationAngleThrottleArmSwitch)
|
|||
|
||||
// expect
|
||||
EXPECT_TRUE(isArmingDisabled());
|
||||
EXPECT_EQ(ARMING_DISABLED_ARM_SWITCH | ARMING_DISABLED_THROTTLE, getArmingDisableFlags());
|
||||
EXPECT_EQ(ARMING_DISABLED_BOOT_GRACE_TIME | ARMING_DISABLED_ARM_SWITCH | ARMING_DISABLED_THROTTLE, getArmingDisableFlags());
|
||||
|
||||
// given
|
||||
rcData[THROTTLE] = 1000;
|
||||
|
@ -128,6 +132,17 @@ TEST(ArmingPreventionTest, CalibrationAngleThrottleArmSwitch)
|
|||
// when
|
||||
updateArmingStatus();
|
||||
|
||||
// expect
|
||||
EXPECT_TRUE(isArmingDisabled());
|
||||
EXPECT_EQ(ARMING_DISABLED_BOOT_GRACE_TIME | ARMING_DISABLED_ARM_SWITCH, getArmingDisableFlags());
|
||||
|
||||
// given
|
||||
// arming grace time has elapsed
|
||||
simulationTime += systemConfig()->powerOnArmingGraceTime * 1e6;
|
||||
|
||||
// when
|
||||
updateArmingStatus();
|
||||
|
||||
// expect
|
||||
EXPECT_TRUE(isArmingDisabled());
|
||||
EXPECT_EQ(ARMING_DISABLED_ARM_SWITCH, getArmingDisableFlags());
|
||||
|
@ -220,7 +235,6 @@ TEST(ArmingPreventionTest, ArmingGuardRadioLeftOnAndArmed)
|
|||
EXPECT_FALSE(isArmingDisabled());
|
||||
}
|
||||
|
||||
|
||||
TEST(ArmingPreventionTest, Prearm)
|
||||
{
|
||||
// given
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue