Speed up the first boot on generic firmware
This commit is contained in:
parent
c9788f1831
commit
feab0bcb81
|
@ -87,6 +87,7 @@ PG_RESET_TEMPLATE(systemConfig_t, systemConfig,
|
|||
.powerOnArmingGraceTime = 5,
|
||||
.boardIdentifier = TARGET_BOARD_IDENTIFIER,
|
||||
.hseMhz = SYSTEM_HSE_VALUE, // Not used for non-F4 targets
|
||||
.configured = false,
|
||||
);
|
||||
|
||||
uint8_t getCurrentPidProfileIndex(void)
|
||||
|
@ -527,30 +528,43 @@ bool readEEPROM(void)
|
|||
return success;
|
||||
}
|
||||
|
||||
void writeEEPROM(void)
|
||||
static void ValidateAndWriteConfigToEEPROM(bool setConfigured)
|
||||
{
|
||||
validateAndFixConfig();
|
||||
|
||||
suspendRxPwmPpmSignal();
|
||||
|
||||
#ifdef USE_CONFIGURATION_STATE
|
||||
if (setConfigured) {
|
||||
systemConfigMutable()->configured = true;
|
||||
}
|
||||
#else
|
||||
UNUSED(setConfigured);
|
||||
#endif
|
||||
|
||||
writeConfigToEEPROM();
|
||||
|
||||
resumeRxPwmPpmSignal();
|
||||
}
|
||||
|
||||
void writeEEPROM(void)
|
||||
{
|
||||
ValidateAndWriteConfigToEEPROM(true);
|
||||
}
|
||||
|
||||
void writeEEPROMWithFeatures(uint32_t features)
|
||||
{
|
||||
featureDisableAll();
|
||||
featureEnable(features);
|
||||
|
||||
writeEEPROM();
|
||||
ValidateAndWriteConfigToEEPROM(true);
|
||||
}
|
||||
|
||||
void resetEEPROM(void)
|
||||
{
|
||||
resetConfigs();
|
||||
|
||||
writeEEPROM();
|
||||
ValidateAndWriteConfigToEEPROM(false);
|
||||
|
||||
activateConfig();
|
||||
}
|
||||
|
@ -565,7 +579,7 @@ void ensureEEPROMStructureIsValid(void)
|
|||
|
||||
void saveConfigAndNotify(void)
|
||||
{
|
||||
writeEEPROM();
|
||||
ValidateAndWriteConfigToEEPROM(true);
|
||||
readEEPROM();
|
||||
beeperConfirmationBeeps(1);
|
||||
}
|
||||
|
@ -581,3 +595,12 @@ void changePidProfile(uint8_t pidProfileIndex)
|
|||
|
||||
beeperConfirmationBeeps(pidProfileIndex + 1);
|
||||
}
|
||||
|
||||
bool isSystemConfigured(void)
|
||||
{
|
||||
#ifdef USE_CONFIGURATION_STATE
|
||||
return systemConfig()->configured;
|
||||
#else
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -43,6 +43,7 @@ typedef struct systemConfig_s {
|
|||
uint8_t powerOnArmingGraceTime; // in seconds
|
||||
char boardIdentifier[sizeof(TARGET_BOARD_IDENTIFIER) + 1];
|
||||
uint8_t hseMhz; // Not used for non-F4 targets
|
||||
uint8_t configured;
|
||||
} systemConfig_t;
|
||||
|
||||
PG_DECLARE(systemConfig_t, systemConfig);
|
||||
|
@ -75,3 +76,5 @@ uint16_t getCurrentMinthrottle(void);
|
|||
void resetConfigs(void);
|
||||
void targetConfiguration(void);
|
||||
void targetValidateConfiguration(void);
|
||||
|
||||
bool isSystemConfigured(void);
|
||||
|
|
|
@ -503,7 +503,9 @@ void init(void)
|
|||
|
||||
if (!sensorsAutodetect()) {
|
||||
// if gyro was not detected due to whatever reason, notify and don't arm.
|
||||
if (isSystemConfigured()) {
|
||||
indicateFailure(FAILURE_MISSING_ACC, 2);
|
||||
}
|
||||
setArmingDisabled(ARMING_DISABLED_NO_GYRO);
|
||||
}
|
||||
|
||||
|
|
|
@ -205,9 +205,11 @@
|
|||
#define USE_RX_XN297
|
||||
#endif
|
||||
|
||||
#ifdef GENERIC_TARGET
|
||||
#define USE_CONFIGURATION_STATE
|
||||
|
||||
// Setup crystal frequency for backward compatibility
|
||||
// Should be set to zero for generic targets and set with CLI variable set system_hse_value.
|
||||
#ifdef GENERIC_TARGET
|
||||
#define SYSTEM_HSE_VALUE 0
|
||||
#else
|
||||
#ifdef TARGET_XTAL_MHZ
|
||||
|
@ -215,7 +217,7 @@
|
|||
#else
|
||||
#define SYSTEM_HSE_VALUE (HSE_VALUE/1000000U)
|
||||
#endif
|
||||
#endif
|
||||
#endif // GENERIC_TARGET
|
||||
|
||||
// Number of pins that needs pre-init
|
||||
#ifdef USE_SPI
|
||||
|
|
Loading…
Reference in New Issue