mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-12 22:18:35 -07:00
Final merge fixes
This commit is contained in:
@@ -59,10 +59,12 @@ static void desktop_scene_pin_input_done_callback(const DesktopPinCode* pin_code
|
||||
} else {
|
||||
uint32_t pin_fails = furi_hal_rtc_get_pin_fails() + 1;
|
||||
if(pin_fails >= 10 && momentum_settings.bad_pins_format) {
|
||||
storage_sd_format(furi_record_open(RECORD_STORAGE));
|
||||
Storage* storage = furi_record_open(RECORD_STORAGE);
|
||||
storage_sd_format(storage);
|
||||
furi_record_close(RECORD_STORAGE);
|
||||
furi_hal_rtc_reset_registers();
|
||||
power_reboot(PowerBootModeNormal);
|
||||
Power* power = furi_record_open(RECORD_POWER);
|
||||
power_reboot(power, PowerBootModeNormal);
|
||||
}
|
||||
furi_hal_rtc_set_pin_fails(pin_fails);
|
||||
view_dispatcher_send_custom_event(
|
||||
|
||||
@@ -285,13 +285,13 @@ static void number_input_view_draw_callback(Canvas* canvas, void* _model) {
|
||||
canvas,
|
||||
keyboard_origin_x + keys[column].x,
|
||||
keyboard_origin_y + keys[column].y,
|
||||
&I_KeyBackspaceSelected_16x9);
|
||||
&I_KeyBackspaceSelected_17x11);
|
||||
} else {
|
||||
canvas_draw_icon(
|
||||
canvas,
|
||||
keyboard_origin_x + keys[column].x,
|
||||
keyboard_origin_y + keys[column].y,
|
||||
&I_KeyBackspace_16x9);
|
||||
&I_KeyBackspace_17x11);
|
||||
}
|
||||
} else if(keys[column].text == sign_symbol) {
|
||||
if(model->selected_row == row && model->selected_column == column) {
|
||||
|
||||
@@ -63,13 +63,6 @@ static void loader_pubsub_callback(const void* message, void* context) {
|
||||
}
|
||||
}
|
||||
|
||||
static void loader_menu_set_view(LoaderMenu* loader_menu, View* view) {
|
||||
view_holder_set_view(loader_menu->view_holder, view);
|
||||
if(view) {
|
||||
view_holder_update(view, loader_menu->view_holder);
|
||||
}
|
||||
}
|
||||
|
||||
static void loader_menu_dummy_draw(Canvas* canvas, void* context) {
|
||||
UNUSED(context);
|
||||
|
||||
@@ -101,7 +94,7 @@ LoaderMenu* loader_menu_alloc(void (*closed_cb)(void*), void* context, bool sett
|
||||
loader_menu->view_holder = view_holder_alloc();
|
||||
view_holder_attach_to_gui(loader_menu->view_holder, gui);
|
||||
view_holder_set_back_callback(loader_menu->view_holder, NULL, NULL);
|
||||
loader_menu_set_view(loader_menu, loader_menu->dummy);
|
||||
view_holder_set_view(loader_menu->view_holder, loader_menu->dummy);
|
||||
|
||||
loader_menu->loader = furi_record_open(RECORD_LOADER);
|
||||
loader_menu->subscription = furi_pubsub_subscribe(
|
||||
@@ -123,6 +116,7 @@ void loader_menu_free(LoaderMenu* loader_menu) {
|
||||
furi_thread_free(loader_menu->thread);
|
||||
}
|
||||
|
||||
view_holder_set_view(loader_menu->view_holder, NULL);
|
||||
view_holder_free(loader_menu->view_holder);
|
||||
furi_record_close(RECORD_GUI);
|
||||
|
||||
@@ -180,10 +174,18 @@ static void loader_menu_settings_menu_callback(void* context, uint32_t index) {
|
||||
loader_menu_start(name);
|
||||
}
|
||||
|
||||
// Can't do this in GUI callbacks because now ViewHolder waits for ongoing
|
||||
// input, and inputs are not processed because GUI is processing callbacks
|
||||
static void loader_menu_set_view_pending(void* context, uint32_t arg) {
|
||||
LoaderMenuApp* app = context;
|
||||
view_holder_set_view(app->loader_menu->view_holder, (View*)arg);
|
||||
}
|
||||
|
||||
static void loader_menu_switch_to_settings(void* context, uint32_t index) {
|
||||
UNUSED(index);
|
||||
LoaderMenuApp* app = context;
|
||||
loader_menu_set_view(app->loader_menu, submenu_get_view(app->settings_menu));
|
||||
furi_timer_pending_callback(
|
||||
loader_menu_set_view_pending, app, (uint32_t)submenu_get_view(app->settings_menu));
|
||||
app->loader_menu->current_view = LoaderMenuViewSettings;
|
||||
}
|
||||
|
||||
@@ -191,7 +193,8 @@ static void loader_menu_back(void* context) {
|
||||
LoaderMenuApp* app = context;
|
||||
if(app->loader_menu->current_view == LoaderMenuViewSettings &&
|
||||
!app->loader_menu->settings_only) {
|
||||
loader_menu_set_view(app->loader_menu, menu_get_view(app->primary_menu));
|
||||
furi_timer_pending_callback(
|
||||
loader_menu_set_view_pending, app, (uint32_t)menu_get_view(app->primary_menu));
|
||||
app->loader_menu->current_view = LoaderMenuViewPrimary;
|
||||
} else {
|
||||
furi_thread_flags_set(furi_thread_get_id(app->loader_menu->thread), 0);
|
||||
@@ -364,7 +367,7 @@ static LoaderMenuApp* loader_menu_app_alloc(LoaderMenu* loader_menu) {
|
||||
View* view = app->loader_menu->current_view == LoaderMenuViewSettings ?
|
||||
submenu_get_view(app->settings_menu) :
|
||||
menu_get_view(app->primary_menu);
|
||||
loader_menu_set_view(app->loader_menu, view);
|
||||
view_holder_set_view(app->loader_menu->view_holder, view);
|
||||
view_holder_set_back_callback(app->loader_menu->view_holder, loader_menu_back, app);
|
||||
|
||||
return app;
|
||||
@@ -372,7 +375,7 @@ static LoaderMenuApp* loader_menu_app_alloc(LoaderMenu* loader_menu) {
|
||||
|
||||
static void loader_menu_app_free(LoaderMenuApp* app) {
|
||||
view_holder_set_back_callback(app->loader_menu->view_holder, NULL, NULL);
|
||||
loader_menu_set_view(app->loader_menu, app->loader_menu->dummy);
|
||||
view_holder_set_view(app->loader_menu->view_holder, app->loader_menu->dummy);
|
||||
|
||||
if(!app->loader_menu->settings_only) {
|
||||
app->loader_menu->selected_primary = menu_get_selected_item(app->primary_menu);
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
#include <furi.h>
|
||||
#include <furi_hal.h>
|
||||
#include <loader/loader.h>
|
||||
#include <momentum/momentum.h>
|
||||
|
||||
#include <update_util/update_operation.h>
|
||||
@@ -598,7 +599,6 @@ static Power* power_alloc(void) {
|
||||
power->ascii_events_pubsub = furi_record_open(RECORD_ASCII_EVENTS);
|
||||
power->auto_shutdown_timer =
|
||||
furi_timer_alloc(power_auto_shutdown_timer_callback, FuriTimerTypeOnce, power);
|
||||
power->app_running = loader_is_locked(loader);
|
||||
|
||||
power->view_holder = view_holder_alloc();
|
||||
power->view_power_off = power_off_alloc();
|
||||
@@ -634,10 +634,16 @@ int32_t power_srv(void* p) {
|
||||
}
|
||||
|
||||
Power* power = power_alloc();
|
||||
power_init_settings(power);
|
||||
power_update_info(power);
|
||||
|
||||
furi_record_create(RECORD_POWER, power);
|
||||
|
||||
// Can't be done in alloc, other things in startup need power service and it would deadlock by waiting for loader
|
||||
Loader* loader = furi_record_open(RECORD_LOADER);
|
||||
power->app_running = loader_is_locked(loader);
|
||||
furi_record_close(RECORD_LOADER);
|
||||
power_init_settings(power);
|
||||
|
||||
furi_event_loop_run(power->event_loop);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
|
||||
#include <toolbox/api_lock.h>
|
||||
#include <assets_icons.h>
|
||||
#include <loader/loader.h>
|
||||
|
||||
#include "views/power_off.h"
|
||||
#include "views/power_unplug_usb.h"
|
||||
|
||||
Reference in New Issue
Block a user