void updateFailsafeStatus(void) { char failsafeIndicator = '?'; switch (failsafePhase()) { case FAILSAFE_IDLE: failsafeIndicator = '-'; break; case FAILSAFE_RX_LOSS_DETECTED: failsafeIndicator = 'R'; break; case FAILSAFE_LANDING: failsafeIndicator = 'l'; break; case FAILSAFE_LANDED: failsafeIndicator = 'L'; break; case FAILSAFE_RX_LOSS_MONITORING: failsafeIndicator = 'M'; break; case FAILSAFE_RX_LOSS_RECOVERED: failsafeIndicator = 'r'; break; } i2c_OLED_set_xy(SCREEN_CHARACTER_COLUMN_COUNT - 3, 0); i2c_OLED_send_char(failsafeIndicator); }
armingPreventedReason_e getArmingPreventionBlinkMask(void) { if (isCalibrating()) { return ARM_PREV_CALIB; } if (rcModeIsActive(BOXFAILSAFE) || failsafePhase() == FAILSAFE_LANDED) { return ARM_PREV_FAILSAFE; } if (!imuIsAircraftArmable(armingConfig()->max_arm_angle)) { return ARM_PREV_ANGLE; } if (cliMode) { return ARM_PREV_CLI; } if (isSystemOverloaded()) { return ARM_PREV_OVERLOAD; } return ARM_PREV_NONE; }