Prevent re-arming when gyro calibration on arm enabled (only for switch armers due to safety reasons)
This commit is contained in:
parent
5290e4be56
commit
81b94e5cb8
|
@ -117,6 +117,7 @@ extern bool antiWindupProtection;
|
||||||
|
|
||||||
uint16_t filteredCycleTime;
|
uint16_t filteredCycleTime;
|
||||||
static bool isRXDataNew;
|
static bool isRXDataNew;
|
||||||
|
static bool armingCalibrationWasInitialised;
|
||||||
|
|
||||||
typedef void (*pidControllerFuncPtr)(pidProfile_t *pidProfile, controlRateConfig_t *controlRateConfig,
|
typedef void (*pidControllerFuncPtr)(pidProfile_t *pidProfile, controlRateConfig_t *controlRateConfig,
|
||||||
uint16_t max_angle_inclination, rollAndPitchTrims_t *angleTrim, rxConfig_t *rxConfig); // pid controller function prototype
|
uint16_t max_angle_inclination, rollAndPitchTrims_t *angleTrim, rxConfig_t *rxConfig); // pid controller function prototype
|
||||||
|
@ -312,7 +313,7 @@ void annexCode(void)
|
||||||
if (ARMING_FLAG(ARMED)) {
|
if (ARMING_FLAG(ARMED)) {
|
||||||
LED0_ON;
|
LED0_ON;
|
||||||
} else {
|
} else {
|
||||||
if (IS_RC_MODE_ACTIVE(BOXARM) == 0) {
|
if (IS_RC_MODE_ACTIVE(BOXARM) == 0 || armingCalibrationWasInitialised) {
|
||||||
ENABLE_ARMING_FLAG(OK_TO_ARM);
|
ENABLE_ARMING_FLAG(OK_TO_ARM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -341,6 +342,8 @@ void annexCode(void)
|
||||||
|
|
||||||
void mwDisarm(void)
|
void mwDisarm(void)
|
||||||
{
|
{
|
||||||
|
armingCalibrationWasInitialised = false;
|
||||||
|
|
||||||
if (ARMING_FLAG(ARMED)) {
|
if (ARMING_FLAG(ARMED)) {
|
||||||
DISABLE_ARMING_FLAG(ARMED);
|
DISABLE_ARMING_FLAG(ARMED);
|
||||||
|
|
||||||
|
@ -366,11 +369,12 @@ void releaseSharedTelemetryPorts(void) {
|
||||||
|
|
||||||
void mwArm(void)
|
void mwArm(void)
|
||||||
{
|
{
|
||||||
static bool armingCalibrationWasInitialisedOnce;
|
static bool firstArmingCalibrationWasCompleted;
|
||||||
|
|
||||||
if (masterConfig.gyro_cal_on_first_arm && !armingCalibrationWasInitialisedOnce) {
|
if (masterConfig.gyro_cal_on_first_arm && !firstArmingCalibrationWasCompleted) {
|
||||||
gyroSetCalibrationCycles(calculateCalibratingCycles());
|
gyroSetCalibrationCycles(calculateCalibratingCycles());
|
||||||
armingCalibrationWasInitialisedOnce = true;
|
armingCalibrationWasInitialised = true;
|
||||||
|
firstArmingCalibrationWasCompleted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isGyroCalibrationComplete()) return; // prevent arming before gyro is calibrated
|
if (!isGyroCalibrationComplete()) return; // prevent arming before gyro is calibrated
|
||||||
|
|
Loading…
Reference in New Issue