[FL-2468] Reboot to update with RPC (#1122)
* Added update boot mode for RPC * Fixed FLIPPER_SYSTEM_APPS_COUNT & updater app arg parsing * Bumped RPC version * Moved boot mode
This commit is contained in:
@@ -9,6 +9,7 @@ typedef struct Power Power;
|
||||
typedef enum {
|
||||
PowerBootModeNormal,
|
||||
PowerBootModeDfu,
|
||||
PowerBootModeUpdateStart,
|
||||
} PowerBootMode;
|
||||
|
||||
typedef enum {
|
||||
|
@@ -17,6 +17,8 @@ void power_reboot(PowerBootMode mode) {
|
||||
furi_hal_rtc_set_boot_mode(FuriHalRtcBootModeNormal);
|
||||
} else if(mode == PowerBootModeDfu) {
|
||||
furi_hal_rtc_set_boot_mode(FuriHalRtcBootModeDfu);
|
||||
} else if(mode == PowerBootModeUpdateStart) {
|
||||
furi_hal_rtc_set_boot_mode(FuriHalRtcBootModePreUpdate);
|
||||
}
|
||||
furi_hal_power_reset();
|
||||
}
|
||||
|
@@ -61,6 +61,8 @@ static void rpc_system_system_reboot_process(const PB_Main* request, void* conte
|
||||
power_reboot(PowerBootModeNormal);
|
||||
} else if(mode == PB_System_RebootRequest_RebootMode_DFU) {
|
||||
power_reboot(PowerBootModeDfu);
|
||||
} else if(mode == PB_System_RebootRequest_RebootMode_UPDATE) {
|
||||
power_reboot(PowerBootModeUpdateStart);
|
||||
} else {
|
||||
rpc_send_and_release_empty(
|
||||
session, request->command_id, PB_CommandStatus_ERROR_INVALID_PARAMETERS);
|
||||
@@ -274,7 +276,7 @@ static void rpc_system_system_update_request_process(const PB_Main* request, voi
|
||||
furi_assert(session);
|
||||
|
||||
bool update_prepare_result =
|
||||
update_operation_prepare(request->content.system_update_request.update_folder) ==
|
||||
update_operation_prepare(request->content.system_update_request.update_manifest) ==
|
||||
UpdatePrepareResultOK;
|
||||
|
||||
PB_Main* response = malloc(sizeof(PB_Main));
|
||||
|
@@ -80,7 +80,9 @@ Updater* updater_alloc(const char* arg) {
|
||||
#ifdef FURI_RAM_EXEC
|
||||
if(true) {
|
||||
#else
|
||||
if(!arg) {
|
||||
FuriHalRtcBootMode boot_mode = furi_hal_rtc_get_boot_mode();
|
||||
if(!arg && ((boot_mode == FuriHalRtcBootModePreUpdate) ||
|
||||
(boot_mode == FuriHalRtcBootModePostUpdate))) {
|
||||
#endif
|
||||
updater->update_task = update_task_alloc();
|
||||
update_task_set_progress_cb(updater->update_task, status_update_cb, updater->main_view);
|
||||
|
Reference in New Issue
Block a user