diff --git a/firmware/targets/f18/furi_hal/furi_hal.c b/firmware/targets/f18/furi_hal/furi_hal.c index 9b234143c..1a180e698 100644 --- a/firmware/targets/f18/furi_hal/furi_hal.c +++ b/firmware/targets/f18/furi_hal/furi_hal.c @@ -8,6 +8,10 @@ bool normal_boot = false; +void furi_hal_set_is_normal_boot(bool value) { + normal_boot = value; +} + bool furi_hal_is_normal_boot() { return normal_boot; } @@ -32,7 +36,6 @@ void furi_hal_deinit_early() { } void furi_hal_init() { - normal_boot = true; furi_hal_mpu_init(); furi_hal_clock_init(); furi_hal_console_init(); diff --git a/firmware/targets/f7/api_symbols.csv b/firmware/targets/f7/api_symbols.csv index 33f3ff301..0d326943a 100644 --- a/firmware/targets/f7/api_symbols.csv +++ b/firmware/targets/f7/api_symbols.csv @@ -1415,6 +1415,7 @@ Function,+,furi_hal_rtc_set_pin_fails,void,uint32_t Function,+,furi_hal_rtc_set_register,void,"FuriHalRtcRegister, uint32_t" Function,+,furi_hal_rtc_sync_shadow,void, Function,+,furi_hal_rtc_validate_datetime,_Bool,FuriHalRtcDateTime* +Function,-,furi_hal_set_is_normal_boot,void,_Bool Function,+,furi_hal_speaker_acquire,_Bool,uint32_t Function,-,furi_hal_speaker_deinit,void, Function,-,furi_hal_speaker_init,void, diff --git a/firmware/targets/f7/furi_hal/furi_hal.c b/firmware/targets/f7/furi_hal/furi_hal.c index 01ec37bc6..1378b6955 100644 --- a/firmware/targets/f7/furi_hal/furi_hal.c +++ b/firmware/targets/f7/furi_hal/furi_hal.c @@ -8,6 +8,10 @@ bool normal_boot = false; +void furi_hal_set_is_normal_boot(bool value) { + normal_boot = value; +} + bool furi_hal_is_normal_boot() { return normal_boot; } @@ -32,7 +36,6 @@ void furi_hal_deinit_early() { } void furi_hal_init() { - normal_boot = true; furi_hal_mpu_init(); furi_hal_clock_init(); furi_hal_console_init(); diff --git a/firmware/targets/f7/src/main.c b/firmware/targets/f7/src/main.c index 2c353f52b..2b1fef902 100644 --- a/firmware/targets/f7/src/main.c +++ b/firmware/targets/f7/src/main.c @@ -26,6 +26,7 @@ int main() { // Flipper critical FURI HAL furi_hal_init_early(); + furi_hal_set_is_normal_boot(false); FuriThread* main_thread = furi_thread_alloc_ex("Init", 4096, init_task, NULL); #ifdef FURI_RAM_EXEC @@ -58,6 +59,7 @@ int main() { furi_hal_power_reset(); } else { furi_hal_light_sequence("rgb G"); + furi_hal_set_is_normal_boot(true); furi_thread_start(main_thread); } #endif diff --git a/firmware/targets/furi_hal_include/furi_hal.h b/firmware/targets/furi_hal_include/furi_hal.h index 7d6dc7f24..3b1e8dc2d 100644 --- a/firmware/targets/furi_hal_include/furi_hal.h +++ b/firmware/targets/furi_hal_include/furi_hal.h @@ -42,7 +42,10 @@ struct STOP_EXTERNING_ME {}; extern "C" { #endif -/** True if normally with all subsystems */ +/** Set whether booting normally with all subsystems */ +void furi_hal_set_is_normal_boot(bool value); + +/** True if booting normally with all subsystems */ bool furi_hal_is_normal_boot(); /** Early FuriHal init, only essential subsystems */