From 4b9f353c7806b1d51540d8ff6e650c4d469dacfc Mon Sep 17 00:00:00 2001 From: RogueMaster Date: Sat, 12 Nov 2022 08:37:29 -0500 Subject: [PATCH] fmt --- .../archive/scenes/archive_scene_browser.c | 4 +- .../main/archive/views/archive_browser_view.c | 855 +++++++++--------- applications/main/bad_usb/bad_usb_script.c | 3 +- applications/main/clock/clock_app.c | 19 +- .../main/nfc/scenes/nfc_scene_passport_auth.c | 16 +- .../nfc_scene_passport_auth_save_name.c | 7 +- .../nfc/scenes/nfc_scene_passport_read_auth.c | 3 +- applications/main/nfc/scenes/nfc_scene_read.c | 8 +- lib/nfc/helpers/mrtd_helpers.c | 21 +- lib/nfc/protocols/mrtd.c | 64 +- lib/nfc/protocols/mrtd.h | 21 +- 11 files changed, 524 insertions(+), 497 deletions(-) diff --git a/applications/main/archive/scenes/archive_scene_browser.c b/applications/main/archive/scenes/archive_scene_browser.c index 8fdcc1c77..18c0e2a60 100644 --- a/applications/main/archive/scenes/archive_scene_browser.c +++ b/applications/main/archive/scenes/archive_scene_browser.c @@ -74,10 +74,10 @@ static void archive_run_in_app(ArchiveBrowserView* browser, ArchiveFile_t* selec strcpy(result, tmpType); strcat(result, furi_string_get_cstr(selected->path)); status = loader_start(loader, "Applications", result); - // } else if(strcmp(flipper_app_name[selected->type], "125 kHz RFID") == 0) { + // } else if(strcmp(flipper_app_name[selected->type], "125 kHz RFID") == 0) { // char* tmpType = "/ext/apps/Main/lfrfid.fap¯"; // char* result = - // malloc(strlen(tmpType) + strlen(furi_string_get_cstr(selected->path)) + 1); + // malloc(strlen(tmpType) + strlen(furi_string_get_cstr(selected->path)) + 1); // strcpy(result, tmpType); // strcat(result, furi_string_get_cstr(selected->path)); diff --git a/applications/main/archive/views/archive_browser_view.c b/applications/main/archive/views/archive_browser_view.c index 31a937c9e..645d2b02c 100644 --- a/applications/main/archive/views/archive_browser_view.c +++ b/applications/main/archive/views/archive_browser_view.c @@ -59,509 +59,516 @@ static void render_item_menu(Canvas* canvas, ArchiveBrowserViewModel* model) { ArchiveFile_t* selected = files_array_get(model->files, model->item_idx - model->array_offset); + menu[0] = furi_string_alloc_set("Run in app"); + menu[1] = furi_string_alloc_set("Pin"); + menu[2] = furi_string_alloc_set("Rename"); + menu[3] = furi_string_alloc_set("Delete"); - menu[0] = furi_string_alloc_set("Run in app"); - menu[1] = furi_string_alloc_set("Pin"); - menu[2] = furi_string_alloc_set("Rename"); - menu[3] = furi_string_alloc_set("Delete"); + ArchiveFile_t* selected = + files_array_get(model->files, model->item_idx - model->array_offset); - ArchiveFile_t* selected = files_array_get(model->files, model->item_idx - model->array_offset); - - if((selected->fav) || (model->tab_idx == ArchiveTabFavorites)) { - furi_string_set(menu[1], "Unpin"); - } - - if(!archive_is_known_app(selected->type)) { - furi_string_set(menu[0], "---"); - furi_string_set(menu[1], "---"); - } else { - if(model->tab_idx == ArchiveTabFavorites) { - furi_string_set(menu[2], "Move"); - furi_string_set(menu[3], "---"); - } else if(selected->is_app) { - furi_string_set(menu[2], "---"); + if((selected->fav) || (model->tab_idx == ArchiveTabFavorites)) { + furi_string_set(menu[1], "Unpin"); } - if(selected->type == ArchiveFileTypeFolder) { - //FURI_LOG_D(TAG, "Directory type"); - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_rename, - ArchiveBrowserEventFileMenuRename); - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_delete, - ArchiveBrowserEventFileMenuDelete); - } else if(!archive_is_known_app(selected->type)) { - //FURI_LOG_D(TAG, "Unknown type"); - - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_info, - ArchiveBrowserEventFileMenuInfo); - if(selected->is_text_file) { - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_show, - ArchiveBrowserEventFileMenuShow); - } - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_rename, - ArchiveBrowserEventFileMenuRename); - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_delete, - ArchiveBrowserEventFileMenuDelete); - } else if(model->tab_idx == ArchiveTabFavorites) { - //FURI_LOG_D(TAG, "ArchiveTabFavorites"); - - furi_string_set(item_rename, "Move"); - - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_run, - ArchiveBrowserEventFileMenuRun); - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_pin, - ArchiveBrowserEventFileMenuPin); - if(selected->type <= ArchiveFileTypeBadUsb) { - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_show, - ArchiveBrowserEventFileMenuShow); - } - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_rename, - ArchiveBrowserEventFileMenuRename); - } else if(selected->is_app) { - //FURI_LOG_D(TAG, "3 types"); - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_run, - ArchiveBrowserEventFileMenuRun); - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_info, - ArchiveBrowserEventFileMenuInfo); - if(selected->type <= ArchiveFileTypeBadUsb) { - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_show, - ArchiveBrowserEventFileMenuShow); - } - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_pin, - ArchiveBrowserEventFileMenuPin); - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_delete, - ArchiveBrowserEventFileMenuDelete); + if(!archive_is_known_app(selected->type)) { + furi_string_set(menu[0], "---"); + furi_string_set(menu[1], "---"); } else { - //FURI_LOG_D(TAG, "All menu"); - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_run, - ArchiveBrowserEventFileMenuRun); - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_pin, - ArchiveBrowserEventFileMenuPin); - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_info, - ArchiveBrowserEventFileMenuInfo); - if(selected->type <= ArchiveFileTypeBadUsb) { + if(model->tab_idx == ArchiveTabFavorites) { + furi_string_set(menu[2], "Move"); + furi_string_set(menu[3], "---"); + } else if(selected->is_app) { + furi_string_set(menu[2], "---"); + } + + if(selected->type == ArchiveFileTypeFolder) { + //FURI_LOG_D(TAG, "Directory type"); archive_menu_add_item( menu_array_push_raw(model->context_menu), - item_show, - ArchiveBrowserEventFileMenuShow); - } - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_rename, - ArchiveBrowserEventFileMenuRename); - archive_menu_add_item( - menu_array_push_raw(model->context_menu), - item_delete, - ArchiveBrowserEventFileMenuDelete); - } + item_rename, + ArchiveBrowserEventFileMenuRename); + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_delete, + ArchiveBrowserEventFileMenuDelete); + } else if(!archive_is_known_app(selected->type)) { + //FURI_LOG_D(TAG, "Unknown type"); - furi_string_free(item_run); - furi_string_free(item_pin); - furi_string_free(item_info); - furi_string_free(item_show); - furi_string_free(item_rename); - furi_string_free(item_delete); - } /*else { + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_info, + ArchiveBrowserEventFileMenuInfo); + if(selected->is_text_file) { + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_show, + ArchiveBrowserEventFileMenuShow); + } + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_rename, + ArchiveBrowserEventFileMenuRename); + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_delete, + ArchiveBrowserEventFileMenuDelete); + } else if(model->tab_idx == ArchiveTabFavorites) { + //FURI_LOG_D(TAG, "ArchiveTabFavorites"); + + furi_string_set(item_rename, "Move"); + + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_run, + ArchiveBrowserEventFileMenuRun); + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_pin, + ArchiveBrowserEventFileMenuPin); + if(selected->type <= ArchiveFileTypeBadUsb) { + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_show, + ArchiveBrowserEventFileMenuShow); + } + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_rename, + ArchiveBrowserEventFileMenuRename); + } else if(selected->is_app) { + //FURI_LOG_D(TAG, "3 types"); + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_run, + ArchiveBrowserEventFileMenuRun); + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_info, + ArchiveBrowserEventFileMenuInfo); + if(selected->type <= ArchiveFileTypeBadUsb) { + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_show, + ArchiveBrowserEventFileMenuShow); + } + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_pin, + ArchiveBrowserEventFileMenuPin); + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_delete, + ArchiveBrowserEventFileMenuDelete); + } else { + //FURI_LOG_D(TAG, "All menu"); + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_run, + ArchiveBrowserEventFileMenuRun); + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_pin, + ArchiveBrowserEventFileMenuPin); + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_info, + ArchiveBrowserEventFileMenuInfo); + if(selected->type <= ArchiveFileTypeBadUsb) { + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_show, + ArchiveBrowserEventFileMenuShow); + } + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_rename, + ArchiveBrowserEventFileMenuRename); + archive_menu_add_item( + menu_array_push_raw(model->context_menu), + item_delete, + ArchiveBrowserEventFileMenuDelete); + } + + furi_string_free(item_run); + furi_string_free(item_pin); + furi_string_free(item_info); + furi_string_free(item_show); + furi_string_free(item_rename); + furi_string_free(item_delete); + } /*else { FURI_LOG_D(TAG, "menu_array_size already set: %d", menu_array_size(model->context_menu)); }*/ - size_t size_menu = menu_array_size(model->context_menu); - const uint8_t menu_height = 48; - const uint8_t line_height = 10; + size_t size_menu = menu_array_size(model->context_menu); + const uint8_t menu_height = 48; + const uint8_t line_height = 10; - canvas_set_color(canvas, ColorWhite); - uint8_t calc_height = menu_height - ((MENU_ITEMS - size_menu) * line_height); - canvas_draw_box(canvas, 71, 1, 57, calc_height + 4); - canvas_set_color(canvas, ColorBlack); - elements_slightly_rounded_frame(canvas, 70, 2, 58, calc_height + 4); + canvas_set_color(canvas, ColorWhite); + uint8_t calc_height = menu_height - ((MENU_ITEMS - size_menu) * line_height); + canvas_draw_box(canvas, 71, 1, 57, calc_height + 4); + canvas_set_color(canvas, ColorBlack); + elements_slightly_rounded_frame(canvas, 70, 2, 58, calc_height + 4); - /*FURI_LOG_D( + /*FURI_LOG_D( TAG, "size_menu: %d, calc_height: %d, menu_idx: %d", size_menu, calc_height, model->menu_idx);*/ - for(size_t i = 0; i < size_menu; i++) { - ArchiveContextMenuItem_t* current = menu_array_get(model->context_menu, i); - canvas_draw_str(canvas, 82, 11 + i * line_height, furi_string_get_cstr(current->text)); + for(size_t i = 0; i < size_menu; i++) { + ArchiveContextMenuItem_t* current = menu_array_get(model->context_menu, i); + canvas_draw_str(canvas, 82, 11 + i * line_height, furi_string_get_cstr(current->text)); + } + + canvas_draw_icon(canvas, 74, 4 + model->menu_idx * line_height, &I_ButtonRight_4x7); } - canvas_draw_icon(canvas, 74, 4 + model->menu_idx * line_height, &I_ButtonRight_4x7); -} + static void archive_draw_frame(Canvas * canvas, uint16_t idx, bool scrollbar, bool moving) { + uint8_t x_offset = moving ? MOVE_OFFSET : 0; -static void archive_draw_frame(Canvas* canvas, uint16_t idx, bool scrollbar, bool moving) { - uint8_t x_offset = moving ? MOVE_OFFSET : 0; + canvas_set_color(canvas, ColorBlack); + canvas_draw_box( + canvas, + 0 + x_offset, + 15 + idx * FRAME_HEIGHT, + (scrollbar ? 122 : 127) - x_offset, + FRAME_HEIGHT); - canvas_set_color(canvas, ColorBlack); - canvas_draw_box( - canvas, - 0 + x_offset, - 15 + idx * FRAME_HEIGHT, - (scrollbar ? 122 : 127) - x_offset, - FRAME_HEIGHT); + canvas_set_color(canvas, ColorWhite); + canvas_draw_dot(canvas, 0 + x_offset, 15 + idx * FRAME_HEIGHT); + canvas_draw_dot(canvas, 1 + x_offset, 15 + idx * FRAME_HEIGHT); + canvas_draw_dot(canvas, 0 + x_offset, (15 + idx * FRAME_HEIGHT) + 1); - canvas_set_color(canvas, ColorWhite); - canvas_draw_dot(canvas, 0 + x_offset, 15 + idx * FRAME_HEIGHT); - canvas_draw_dot(canvas, 1 + x_offset, 15 + idx * FRAME_HEIGHT); - canvas_draw_dot(canvas, 0 + x_offset, (15 + idx * FRAME_HEIGHT) + 1); + canvas_draw_dot(canvas, 0 + x_offset, (15 + idx * FRAME_HEIGHT) + 11); + canvas_draw_dot(canvas, scrollbar ? 121 : 126, 15 + idx * FRAME_HEIGHT); + canvas_draw_dot(canvas, scrollbar ? 121 : 126, (15 + idx * FRAME_HEIGHT) + 11); + } - canvas_draw_dot(canvas, 0 + x_offset, (15 + idx * FRAME_HEIGHT) + 11); - canvas_draw_dot(canvas, scrollbar ? 121 : 126, 15 + idx * FRAME_HEIGHT); - canvas_draw_dot(canvas, scrollbar ? 121 : 126, (15 + idx * FRAME_HEIGHT) + 11); -} + static void archive_draw_loading(Canvas * canvas, ArchiveBrowserViewModel * model) { + furi_assert(model); -static void archive_draw_loading(Canvas* canvas, ArchiveBrowserViewModel* model) { - furi_assert(model); + uint8_t x = 128 / 2 - 24 / 2; + uint8_t y = 64 / 2 - 24 / 2; - uint8_t x = 128 / 2 - 24 / 2; - uint8_t y = 64 / 2 - 24 / 2; + canvas_draw_icon(canvas, x, y, &A_Loading_24); + } - canvas_draw_icon(canvas, x, y, &A_Loading_24); -} + static void draw_list(Canvas * canvas, ArchiveBrowserViewModel * model) { + furi_assert(model); -static void draw_list(Canvas* canvas, ArchiveBrowserViewModel* model) { - furi_assert(model); + size_t array_size = files_array_size(model->files); + bool scrollbar = model->item_cnt > 4; - size_t array_size = files_array_size(model->files); - bool scrollbar = model->item_cnt > 4; + for(uint32_t i = 0; i < MIN(model->item_cnt, MENU_ITEMS); ++i) { + FuriString* str_buf; + str_buf = furi_string_alloc(); + int32_t idx = CLAMP((uint32_t)(i + model->list_offset), model->item_cnt, 0u); + uint8_t x_offset = (model->move_fav && model->item_idx == idx) ? MOVE_OFFSET : 0; - for(uint32_t i = 0; i < MIN(model->item_cnt, MENU_ITEMS); ++i) { - FuriString* str_buf; - str_buf = furi_string_alloc(); - int32_t idx = CLAMP((uint32_t)(i + model->list_offset), model->item_cnt, 0u); - uint8_t x_offset = (model->move_fav && model->item_idx == idx) ? MOVE_OFFSET : 0; + ArchiveFileTypeEnum file_type = ArchiveFileTypeLoading; + uint8_t* custom_icon_data = NULL; - ArchiveFileTypeEnum file_type = ArchiveFileTypeLoading; - uint8_t* custom_icon_data = NULL; - - if(archive_is_item_in_array(model, idx)) { - ArchiveFile_t* file = files_array_get( - model->files, CLAMP(idx - model->array_offset, (int32_t)(array_size - 1), 0)); - file_type = file->type; - if(file_type == ArchiveFileTypeApplication) { - if(file->custom_icon_data) { - custom_icon_data = file->custom_icon_data; - furi_string_set(str_buf, file->custom_name); + if(archive_is_item_in_array(model, idx)) { + ArchiveFile_t* file = files_array_get( + model->files, CLAMP(idx - model->array_offset, (int32_t)(array_size - 1), 0)); + file_type = file->type; + if(file_type == ArchiveFileTypeApplication) { + if(file->custom_icon_data) { + custom_icon_data = file->custom_icon_data; + furi_string_set(str_buf, file->custom_name); + } else { + file_type = ArchiveFileTypeUnknown; + path_extract_filename( + file->path, str_buf, archive_is_known_app(file->type)); + } } else { - file_type = ArchiveFileTypeUnknown; path_extract_filename(file->path, str_buf, archive_is_known_app(file->type)); } } else { - path_extract_filename(file->path, str_buf, archive_is_known_app(file->type)); + furi_string_set(str_buf, "---"); } - } else { - furi_string_set(str_buf, "---"); + + elements_string_fit_width( + canvas, str_buf, (scrollbar ? MAX_LEN_PX - 6 : MAX_LEN_PX) - x_offset); + + if(model->item_idx == idx) { + archive_draw_frame(canvas, i, scrollbar, model->move_fav); + } else { + canvas_set_color(canvas, ColorBlack); + } + + if(custom_icon_data) { + canvas_draw_bitmap( + canvas, 2 + x_offset, 16 + i * FRAME_HEIGHT, 11, 10, custom_icon_data); + } else { + canvas_draw_icon( + canvas, 2 + x_offset, 16 + i * FRAME_HEIGHT, ArchiveItemIcons[file_type]); + } + canvas_draw_str( + canvas, 15 + x_offset, 24 + i * FRAME_HEIGHT, furi_string_get_cstr(str_buf)); + + furi_string_free(str_buf); } - elements_string_fit_width( - canvas, str_buf, (scrollbar ? MAX_LEN_PX - 6 : MAX_LEN_PX) - x_offset); - - if(model->item_idx == idx) { - archive_draw_frame(canvas, i, scrollbar, model->move_fav); - } else { - canvas_set_color(canvas, ColorBlack); + if(scrollbar) { + elements_scrollbar_pos(canvas, 126, 15, 49, model->item_idx, model->item_cnt); } - if(custom_icon_data) { - canvas_draw_bitmap( - canvas, 2 + x_offset, 16 + i * FRAME_HEIGHT, 11, 10, custom_icon_data); - } else { - canvas_draw_icon( - canvas, 2 + x_offset, 16 + i * FRAME_HEIGHT, ArchiveItemIcons[file_type]); + if(model->menu) { + render_item_menu(canvas, model); } - canvas_draw_str( - canvas, 15 + x_offset, 24 + i * FRAME_HEIGHT, furi_string_get_cstr(str_buf)); - - furi_string_free(str_buf); } - if(scrollbar) { - elements_scrollbar_pos(canvas, 126, 15, 49, model->item_idx, model->item_cnt); + static void archive_render_status_bar(Canvas * canvas, ArchiveBrowserViewModel * model) { + furi_assert(model); + + const char* tab_name = ArchiveTabNames[model->tab_idx]; + + canvas_draw_icon(canvas, 0, 0, &I_Background_128x11); + + canvas_set_color(canvas, ColorWhite); + canvas_draw_box(canvas, 0, 0, 50, 13); + canvas_draw_box(canvas, 107, 0, 20, 13); + + canvas_set_color(canvas, ColorBlack); + canvas_draw_rframe(canvas, 0, 0, 51, 13, 1); // frame + canvas_draw_line(canvas, 49, 1, 49, 11); // shadow right + canvas_draw_line(canvas, 1, 11, 49, 11); // shadow bottom + canvas_draw_str_aligned(canvas, 25, 9, AlignCenter, AlignBottom, tab_name); + + canvas_draw_rframe(canvas, 107, 0, 21, 13, 1); + canvas_draw_line(canvas, 126, 1, 126, 11); + canvas_draw_line(canvas, 108, 11, 126, 11); + + if(model->move_fav) { + canvas_draw_icon(canvas, 110, 4, &I_ButtonUp_7x4); + canvas_draw_icon(canvas, 117, 4, &I_ButtonDown_7x4); + } else { + canvas_draw_icon(canvas, 111, 2, &I_ButtonLeft_4x7); + canvas_draw_icon(canvas, 119, 2, &I_ButtonRight_4x7); + } + + canvas_set_color(canvas, ColorWhite); + canvas_draw_dot(canvas, 50, 0); + canvas_draw_dot(canvas, 127, 0); + + canvas_set_color(canvas, ColorBlack); } - if(model->menu) { - render_item_menu(canvas, model); - } -} + static void archive_view_render(Canvas * canvas, void* mdl) { + ArchiveBrowserViewModel* model = mdl; -static void archive_render_status_bar(Canvas* canvas, ArchiveBrowserViewModel* model) { - furi_assert(model); + archive_render_status_bar(canvas, mdl); - const char* tab_name = ArchiveTabNames[model->tab_idx]; - - canvas_draw_icon(canvas, 0, 0, &I_Background_128x11); - - canvas_set_color(canvas, ColorWhite); - canvas_draw_box(canvas, 0, 0, 50, 13); - canvas_draw_box(canvas, 107, 0, 20, 13); - - canvas_set_color(canvas, ColorBlack); - canvas_draw_rframe(canvas, 0, 0, 51, 13, 1); // frame - canvas_draw_line(canvas, 49, 1, 49, 11); // shadow right - canvas_draw_line(canvas, 1, 11, 49, 11); // shadow bottom - canvas_draw_str_aligned(canvas, 25, 9, AlignCenter, AlignBottom, tab_name); - - canvas_draw_rframe(canvas, 107, 0, 21, 13, 1); - canvas_draw_line(canvas, 126, 1, 126, 11); - canvas_draw_line(canvas, 108, 11, 126, 11); - - if(model->move_fav) { - canvas_draw_icon(canvas, 110, 4, &I_ButtonUp_7x4); - canvas_draw_icon(canvas, 117, 4, &I_ButtonDown_7x4); - } else { - canvas_draw_icon(canvas, 111, 2, &I_ButtonLeft_4x7); - canvas_draw_icon(canvas, 119, 2, &I_ButtonRight_4x7); + if(model->folder_loading) { + archive_draw_loading(canvas, model); + } else if(model->item_cnt > 0) { + draw_list(canvas, model); + } else { + canvas_draw_str_aligned( + canvas, GUI_DISPLAY_WIDTH / 2, 40, AlignCenter, AlignCenter, "Empty"); + } } - canvas_set_color(canvas, ColorWhite); - canvas_draw_dot(canvas, 50, 0); - canvas_draw_dot(canvas, 127, 0); - - canvas_set_color(canvas, ColorBlack); -} - -static void archive_view_render(Canvas* canvas, void* mdl) { - ArchiveBrowserViewModel* model = mdl; - - archive_render_status_bar(canvas, mdl); - - if(model->folder_loading) { - archive_draw_loading(canvas, model); - } else if(model->item_cnt > 0) { - draw_list(canvas, model); - } else { - canvas_draw_str_aligned( - canvas, GUI_DISPLAY_WIDTH / 2, 40, AlignCenter, AlignCenter, "Empty"); + View* archive_browser_get_view(ArchiveBrowserView * browser) { + furi_assert(browser); + return browser->view; } -} -View* archive_browser_get_view(ArchiveBrowserView* browser) { - furi_assert(browser); - return browser->view; -} + static bool is_file_list_load_required(ArchiveBrowserViewModel * model) { + size_t array_size = files_array_size(model->files); -static bool is_file_list_load_required(ArchiveBrowserViewModel* model) { - size_t array_size = files_array_size(model->files); + if((model->list_loading) || (array_size >= model->item_cnt)) { + return false; + } + + if((model->array_offset > 0) && + (model->item_idx < (model->array_offset + FILE_LIST_BUF_LEN / 4))) { + return true; + } + + if(((model->array_offset + array_size) < model->item_cnt) && + (model->item_idx > + (int32_t)(model->array_offset + array_size - FILE_LIST_BUF_LEN / 4))) { + return true; + } - if((model->list_loading) || (array_size >= model->item_cnt)) { return false; } - if((model->array_offset > 0) && - (model->item_idx < (model->array_offset + FILE_LIST_BUF_LEN / 4))) { - return true; - } + static bool archive_view_input(InputEvent * event, void* context) { + furi_assert(event); + furi_assert(context); - if(((model->array_offset + array_size) < model->item_cnt) && - (model->item_idx > (int32_t)(model->array_offset + array_size - FILE_LIST_BUF_LEN / 4))) { - return true; - } + ArchiveBrowserView* browser = context; - return false; -} + bool in_menu; + bool move_fav_mode; + with_view_model( + browser->view, + ArchiveBrowserViewModel * model, + { + in_menu = model->menu; + move_fav_mode = model->move_fav; + }, + false); -static bool archive_view_input(InputEvent* event, void* context) { - furi_assert(event); - furi_assert(context); - - ArchiveBrowserView* browser = context; - - bool in_menu; - bool move_fav_mode; - with_view_model( - browser->view, - ArchiveBrowserViewModel * model, - { - in_menu = model->menu; - move_fav_mode = model->move_fav; - }, - false); - - if(in_menu) { - if(event->type != InputTypeShort) { - return true; // RETURN - } - if(event->key == InputKeyUp || event->key == InputKeyDown) { - with_view_model( - browser->view, - ArchiveBrowserViewModel * model, - { - size_t size_menu = menu_array_size(model->context_menu); - if(event->key == InputKeyUp) { - model->menu_idx = ((model->menu_idx - 1) + size_menu) % size_menu; - } else if(event->key == InputKeyDown) { - model->menu_idx = (model->menu_idx + 1) % size_menu; - } - }, - true); - } else if(event->key == InputKeyOk) { - uint32_t idx; - with_view_model( - browser->view, - ArchiveBrowserViewModel * model, - { - ArchiveContextMenuItem_t* current = - menu_array_get(model->context_menu, model->menu_idx); - idx = current->event; - }, - false); - browser->callback(idx, browser->context); - } else if(event->key == InputKeyBack) { - browser->callback(ArchiveBrowserEventFileMenuClose, browser->context); - } - } else { - if(event->type == InputTypeShort) { - if(event->key == InputKeyLeft || event->key == InputKeyRight) { - if(move_fav_mode) return false; - archive_switch_tab(browser, event->key); + if(in_menu) { + if(event->type != InputTypeShort) { + return true; // RETURN + } + if(event->key == InputKeyUp || event->key == InputKeyDown) { + with_view_model( + browser->view, + ArchiveBrowserViewModel * model, + { + size_t size_menu = menu_array_size(model->context_menu); + if(event->key == InputKeyUp) { + model->menu_idx = ((model->menu_idx - 1) + size_menu) % size_menu; + } else if(event->key == InputKeyDown) { + model->menu_idx = (model->menu_idx + 1) % size_menu; + } + }, + true); + } else if(event->key == InputKeyOk) { + uint32_t idx; + with_view_model( + browser->view, + ArchiveBrowserViewModel * model, + { + ArchiveContextMenuItem_t* current = + menu_array_get(model->context_menu, model->menu_idx); + idx = current->event; + }, + false); + browser->callback(idx, browser->context); } else if(event->key == InputKeyBack) { - if(move_fav_mode) { - browser->callback(ArchiveBrowserEventExitFavMove, browser->context); - } else { - browser->callback(ArchiveBrowserEventExit, browser->context); + browser->callback(ArchiveBrowserEventFileMenuClose, browser->context); + } + } else { + if(event->type == InputTypeShort) { + if(event->key == InputKeyLeft || event->key == InputKeyRight) { + if(move_fav_mode) return false; + archive_switch_tab(browser, event->key); + } else if(event->key == InputKeyBack) { + if(move_fav_mode) { + browser->callback(ArchiveBrowserEventExitFavMove, browser->context); + } else { + browser->callback(ArchiveBrowserEventExit, browser->context); + } } } - } - if((event->key == InputKeyUp || event->key == InputKeyDown) && - (event->type == InputTypeShort || event->type == InputTypeRepeat)) { - with_view_model( - browser->view, - ArchiveBrowserViewModel * model, - { - if(event->key == InputKeyUp) { - model->item_idx = - ((model->item_idx - 1) + model->item_cnt) % model->item_cnt; - if(is_file_list_load_required(model)) { - model->list_loading = true; - browser->callback(ArchiveBrowserEventLoadPrevItems, browser->context); + if((event->key == InputKeyUp || event->key == InputKeyDown) && + (event->type == InputTypeShort || event->type == InputTypeRepeat)) { + with_view_model( + browser->view, + ArchiveBrowserViewModel * model, + { + if(event->key == InputKeyUp) { + model->item_idx = + ((model->item_idx - 1) + model->item_cnt) % model->item_cnt; + if(is_file_list_load_required(model)) { + model->list_loading = true; + browser->callback( + ArchiveBrowserEventLoadPrevItems, browser->context); + } + if(move_fav_mode) { + browser->callback(ArchiveBrowserEventFavMoveUp, browser->context); + } + } else if(event->key == InputKeyDown) { + model->item_idx = (model->item_idx + 1) % model->item_cnt; + if(is_file_list_load_required(model)) { + model->list_loading = true; + browser->callback( + ArchiveBrowserEventLoadNextItems, browser->context); + } + if(move_fav_mode) { + browser->callback( + ArchiveBrowserEventFavMoveDown, browser->context); + } } - if(move_fav_mode) { - browser->callback(ArchiveBrowserEventFavMoveUp, browser->context); - } - } else if(event->key == InputKeyDown) { - model->item_idx = (model->item_idx + 1) % model->item_cnt; - if(is_file_list_load_required(model)) { - model->list_loading = true; - browser->callback(ArchiveBrowserEventLoadNextItems, browser->context); - } - if(move_fav_mode) { - browser->callback(ArchiveBrowserEventFavMoveDown, browser->context); - } - } - }, - true); - archive_update_offset(browser); - } + }, + true); + archive_update_offset(browser); + } - if(event->key == InputKeyOk) { - ArchiveFile_t* selected = archive_get_current_file(browser); + if(event->key == InputKeyOk) { + ArchiveFile_t* selected = archive_get_current_file(browser); - if(selected) { - bool favorites = archive_get_tab(browser) == ArchiveTabFavorites; - bool folder = selected->type == ArchiveFileTypeFolder; + if(selected) { + bool favorites = archive_get_tab(browser) == ArchiveTabFavorites; + bool folder = selected->type == ArchiveFileTypeFolder; - if(event->type == InputTypeShort) { - if(favorites) { + if(event->type == InputTypeShort) { + if(favorites) { + if(move_fav_mode) { + browser->callback( + ArchiveBrowserEventSaveFavMove, browser->context); + } else { + browser->callback( + ArchiveBrowserEventFileMenuRun, browser->context); + } + } else if(folder) { + browser->callback(ArchiveBrowserEventEnterDir, browser->context); + } else { + browser->callback(ArchiveBrowserEventFileMenuOpen, browser->context); + } + } else if(event->type == InputTypeLong) { if(move_fav_mode) { browser->callback(ArchiveBrowserEventSaveFavMove, browser->context); - } else { - browser->callback(ArchiveBrowserEventFileMenuRun, browser->context); + } else if(folder || favorites) { + browser->callback(ArchiveBrowserEventFileMenuOpen, browser->context); } - } else if(folder) { - browser->callback(ArchiveBrowserEventEnterDir, browser->context); - } else { - browser->callback(ArchiveBrowserEventFileMenuOpen, browser->context); - } - } else if(event->type == InputTypeLong) { - if(move_fav_mode) { - browser->callback(ArchiveBrowserEventSaveFavMove, browser->context); - } else if(folder || favorites) { - browser->callback(ArchiveBrowserEventFileMenuOpen, browser->context); } } } } + + return true; } - return true; -} + ArchiveBrowserView* browser_alloc() { + ArchiveBrowserView* browser = malloc(sizeof(ArchiveBrowserView)); + browser->view = view_alloc(); + view_allocate_model(browser->view, ViewModelTypeLocking, sizeof(ArchiveBrowserViewModel)); + view_set_context(browser->view, browser); + view_set_draw_callback(browser->view, archive_view_render); + view_set_input_callback(browser->view, archive_view_input); -ArchiveBrowserView* browser_alloc() { - ArchiveBrowserView* browser = malloc(sizeof(ArchiveBrowserView)); - browser->view = view_alloc(); - view_allocate_model(browser->view, ViewModelTypeLocking, sizeof(ArchiveBrowserViewModel)); - view_set_context(browser->view, browser); - view_set_draw_callback(browser->view, archive_view_render); - view_set_input_callback(browser->view, archive_view_input); + browser->path = furi_string_alloc_set(archive_get_default_path(TAB_DEFAULT)); - browser->path = furi_string_alloc_set(archive_get_default_path(TAB_DEFAULT)); + with_view_model( + browser->view, + ArchiveBrowserViewModel * model, + { + files_array_init(model->files); + menu_array_init(model->context_menu); + model->tab_idx = TAB_DEFAULT; + }, + true); - with_view_model( - browser->view, - ArchiveBrowserViewModel * model, - { - files_array_init(model->files); - menu_array_init(model->context_menu); - model->tab_idx = TAB_DEFAULT; - }, - true); - - return browser; -} - -void browser_free(ArchiveBrowserView* browser) { - furi_assert(browser); - - if(browser->worker_running) { - file_browser_worker_free(browser->worker); + return browser; } - with_view_model( - browser->view, - ArchiveBrowserViewModel * model, - { - files_array_clear(model->files); - menu_array_clear(model->context_menu); - }, - false); + void browser_free(ArchiveBrowserView * browser) { + furi_assert(browser); - furi_string_free(browser->path); + if(browser->worker_running) { + file_browser_worker_free(browser->worker); + } - view_free(browser->view); - free(browser); -} \ No newline at end of file + with_view_model( + browser->view, + ArchiveBrowserViewModel * model, + { + files_array_clear(model->files); + menu_array_clear(model->context_menu); + }, + false); + + furi_string_free(browser->path); + + view_free(browser->view); + free(browser); + } \ No newline at end of file diff --git a/applications/main/bad_usb/bad_usb_script.c b/applications/main/bad_usb/bad_usb_script.c index d1c6d626e..57e200f4f 100644 --- a/applications/main/bad_usb/bad_usb_script.c +++ b/applications/main/bad_usb/bad_usb_script.c @@ -468,8 +468,7 @@ static int32_t ducky_script_execute_next(BadUsbScript* bad_usb, File* script_fil FURI_LOG_E( WORKER_TAG, "Forbidden empty line at line %u", bad_usb->st.line_cur); } else { - FURI_LOG_E( - WORKER_TAG, "Unknown command at line %u", bad_usb->st.line_cur); + FURI_LOG_E(WORKER_TAG, "Unknown command at line %u", bad_usb->st.line_cur); } return SCRIPT_STATE_ERROR; } else { diff --git a/applications/main/clock/clock_app.c b/applications/main/clock/clock_app.c index d93fa2833..ee445db71 100644 --- a/applications/main/clock/clock_app.c +++ b/applications/main/clock/clock_app.c @@ -302,24 +302,11 @@ static void clock_render_callback(Canvas* const canvas, void* ctx) { int32_t elapsed_secs_img2 = (elapsed_secs % 60) % 4; // int32_t elapsed_secs_img3 = (elapsed_secs % 60) % 4; static const Icon* const count_anim[5] = { - &I_HappyFlipper_128x64, - &I_G0ku, - &I_g0ku_1, - &I_g0ku_2, - &I_g0ku_3 - }; + &I_HappyFlipper_128x64, &I_G0ku, &I_g0ku_1, &I_g0ku_2, &I_g0ku_3}; static const Icon* const count_anim2[4] = { - &I_EviWaiting1_18x21, - &I_EviWaiting2_18x21, - &I_EviSmile1_18x21, - &I_EviSmile2_18x21 - }; + &I_EviWaiting1_18x21, &I_EviWaiting2_18x21, &I_EviSmile1_18x21, &I_EviSmile2_18x21}; static const Icon* const count_anim3[4] = { - &I_frame_01, - &I_frame_02, - &I_frame_03, - &I_frame_02 - }; + &I_frame_01, &I_frame_02, &I_frame_03, &I_frame_02}; canvas_draw_icon(canvas, -5, 15, count_anim[elapsed_secs_img]); canvas_draw_icon(canvas, 90, 0, count_anim2[elapsed_secs_img2]); canvas_draw_icon(canvas, 110, 5, count_anim3[elapsed_secs_img2]); diff --git a/applications/main/nfc/scenes/nfc_scene_passport_auth.c b/applications/main/nfc/scenes/nfc_scene_passport_auth.c index 0fcabee6e..c78c8b70e 100644 --- a/applications/main/nfc/scenes/nfc_scene_passport_auth.c +++ b/applications/main/nfc/scenes/nfc_scene_passport_auth.c @@ -43,20 +43,22 @@ bool nfc_scene_passport_auth_load(Nfc* nfc) { FuriString* file_path; file_path = furi_string_alloc(); - bool res = dialog_file_browser_show(nfc->dev->dialogs, file_path, mrtd_app_folder, &browser_options); + bool res = + dialog_file_browser_show(nfc->dev->dialogs, file_path, mrtd_app_folder, &browser_options); furi_string_free(mrtd_app_folder); if(res) { mrtd_auth_params_load( - nfc->dev->storage, - nfc->dev->dialogs, - &nfc->dev->dev_data.mrtd_data.auth, - furi_string_get_cstr(file_path), - true); + nfc->dev->storage, + nfc->dev->dialogs, + &nfc->dev->dev_data.mrtd_data.auth, + furi_string_get_cstr(file_path), + true); nfc_scene_passport_auth_on_enter(nfc); - variable_item_list_set_selected_item(nfc->variable_item_list, NfcScenePassportAuthSelectAuth); + variable_item_list_set_selected_item( + nfc->variable_item_list, NfcScenePassportAuthSelectAuth); } return res; diff --git a/applications/main/nfc/scenes/nfc_scene_passport_auth_save_name.c b/applications/main/nfc/scenes/nfc_scene_passport_auth_save_name.c index 5cfa7d9a3..65fee0bcf 100644 --- a/applications/main/nfc/scenes/nfc_scene_passport_auth_save_name.c +++ b/applications/main/nfc/scenes/nfc_scene_passport_auth_save_name.c @@ -41,8 +41,8 @@ void nfc_scene_passport_auth_save_name_on_enter(void* context) { furi_string_set(folder_path, NFC_APP_FOLDER); } - ValidatorIsFile* validator_is_file = validator_is_file_alloc_init( - furi_string_get_cstr(folder_path), NFC_APP_EXTENSION, NULL); + ValidatorIsFile* validator_is_file = + validator_is_file_alloc_init(furi_string_get_cstr(folder_path), NFC_APP_EXTENSION, NULL); text_input_set_validator(text_input, validator_is_file_callback, validator_is_file); view_dispatcher_switch_to_view(nfc->view_dispatcher, NfcViewTextInput); @@ -57,7 +57,8 @@ bool nfc_scene_passport_auth_save_name_on_event(void* context, SceneManagerEvent if(event.type == SceneManagerEventTypeCustom) { if(event.event == NfcCustomEventTextInputDone) { - if(mrtd_auth_params_save(nfc->dev->storage, nfc->dev->dialogs, &mrtd_data->auth, nfc->text_store)) { + if(mrtd_auth_params_save( + nfc->dev->storage, nfc->dev->dialogs, &mrtd_data->auth, nfc->text_store)) { scene_manager_next_scene(nfc->scene_manager, NfcSceneSaveSuccess); consumed = true; } else { diff --git a/applications/main/nfc/scenes/nfc_scene_passport_read_auth.c b/applications/main/nfc/scenes/nfc_scene_passport_read_auth.c index 16166f644..31a9e8ce1 100644 --- a/applications/main/nfc/scenes/nfc_scene_passport_read_auth.c +++ b/applications/main/nfc/scenes/nfc_scene_passport_read_auth.c @@ -37,7 +37,8 @@ void nfc_scene_passport_read_auth_on_enter(void* context) { FuriString* temp_str; temp_str = furi_string_alloc(); furi_string_set(temp_str, "\e#Passport\n"); - furi_string_cat_printf(temp_str, "Auth.method: %s\n", mrtd_auth_method_string(mrtd_data->auth_method_used)); + furi_string_cat_printf( + temp_str, "Auth.method: %s\n", mrtd_auth_method_string(mrtd_data->auth_method_used)); // TODO: indicate BAC / PACE used uint16_t lds_version = mrtd_data->files.EF_COM.lds_version; diff --git a/applications/main/nfc/scenes/nfc_scene_read.c b/applications/main/nfc/scenes/nfc_scene_read.c index 23113d999..7b877d645 100644 --- a/applications/main/nfc/scenes/nfc_scene_read.c +++ b/applications/main/nfc/scenes/nfc_scene_read.c @@ -92,9 +92,11 @@ bool nfc_scene_read_on_event(void* context, SceneManagerEvent event) { consumed = true; } else if(event.event == NfcWorkerEventReadPassport) { notification_message(nfc->notifications, &sequence_success); - FURI_LOG_D("NFC", "Read passport, auth: %d, success: %d", - nfc->dev->dev_data.mrtd_data.auth.method, - nfc->dev->dev_data.mrtd_data.auth_success); + FURI_LOG_D( + "NFC", + "Read passport, auth: %d, success: %d", + nfc->dev->dev_data.mrtd_data.auth.method, + nfc->dev->dev_data.mrtd_data.auth_success); if(nfc->dev->dev_data.mrtd_data.auth_success) { scene_manager_next_scene(nfc->scene_manager, NfcScenePassportReadAuthSuccess); } else { diff --git a/lib/nfc/helpers/mrtd_helpers.c b/lib/nfc/helpers/mrtd_helpers.c index faab83cc0..26eda51ef 100644 --- a/lib/nfc/helpers/mrtd_helpers.c +++ b/lib/nfc/helpers/mrtd_helpers.c @@ -13,16 +13,16 @@ static inline unsigned char* ucstr(const char* str) { const char* mrtd_auth_method_string(MrtdAuthMethod method) { switch(method) { - case MrtdAuthMethodBac: - return "BAC"; - case MrtdAuthMethodPace: - return "PACE"; - case MrtdAuthMethodNone: - return "None"; - case MrtdAuthMethodAny: - return "Any"; - default: - return "Unknown"; + case MrtdAuthMethodBac: + return "BAC"; + case MrtdAuthMethodPace: + return "PACE"; + case MrtdAuthMethodNone: + return "None"; + case MrtdAuthMethodAny: + return "Any"; + default: + return "Unknown"; } } @@ -46,7 +46,6 @@ bool mrtd_auth_method_parse_string(MrtdAuthMethod* method, const char* str) { return false; } - uint8_t mrtd_bac_check_digit(const char* input, const uint8_t length) { const uint8_t num_weights = 3; uint8_t weights[] = {7, 3, 1}; diff --git a/lib/nfc/protocols/mrtd.c b/lib/nfc/protocols/mrtd.c index 7e4036bb9..e2b3cc4ba 100644 --- a/lib/nfc/protocols/mrtd.c +++ b/lib/nfc/protocols/mrtd.c @@ -584,18 +584,18 @@ bool mrtd_authenticate(MrtdApplication* app) { app->mrtd_data->auth_method_used = MrtdAuthMethodNone; FURI_LOG_D(TAG, "Auth method: %d", method); switch(method) { - case MrtdAuthMethodAny: - //TODO: try PACE, then BAC. For now, fall through to just BAC - case MrtdAuthMethodBac: - app->mrtd_data->auth_success = mrtd_bac(app, &app->mrtd_data->auth); - app->mrtd_data->auth_method_used = MrtdAuthMethodBac; - break; - case MrtdAuthMethodPace: - FURI_LOG_E(TAG, "Auth method PACE not implemented"); - break; - case MrtdAuthMethodNone: - default: - break; + case MrtdAuthMethodAny: + //TODO: try PACE, then BAC. For now, fall through to just BAC + case MrtdAuthMethodBac: + app->mrtd_data->auth_success = mrtd_bac(app, &app->mrtd_data->auth); + app->mrtd_data->auth_method_used = MrtdAuthMethodBac; + break; + case MrtdAuthMethodPace: + FURI_LOG_E(TAG, "Auth method PACE not implemented"); + break; + case MrtdAuthMethodNone: + default: + break; } if(!app->mrtd_data->auth_success) { @@ -605,16 +605,17 @@ bool mrtd_authenticate(MrtdApplication* app) { return true; } -bool mrtd_auth_params_save(Storage* storage, DialogsApp* dialogs, MrtdAuthData* auth_data, const char* file_name) { - return mrtd_auth_params_save_file(storage, dialogs, auth_data, file_name, MRTD_APP_FOLDER, MRTD_APP_EXTENSION); +bool mrtd_auth_params_save( + Storage* storage, + DialogsApp* dialogs, + MrtdAuthData* auth_data, + const char* file_name) { + return mrtd_auth_params_save_file( + storage, dialogs, auth_data, file_name, MRTD_APP_FOLDER, MRTD_APP_EXTENSION); } void mrtd_date_prepare_format_string(MrtdDate date, FuriString* format_string) { - furi_string_printf( - format_string, "%02u%02u%02u", - date.year, - date.month, - date.day); + furi_string_printf(format_string, "%02u%02u%02u", date.year, date.month, date.day); } bool mrtd_date_parse_format_string(MrtdDate* date, FuriString* format_string) { @@ -633,7 +634,13 @@ bool mrtd_date_parse_format_string(MrtdDate* date, FuriString* format_string) { return true; } -bool mrtd_auth_params_save_file(Storage* storage, DialogsApp* dialogs, MrtdAuthData* auth_data, const char* file_name, const char* folder, const char* extension) { +bool mrtd_auth_params_save_file( + Storage* storage, + DialogsApp* dialogs, + MrtdAuthData* auth_data, + const char* file_name, + const char* folder, + const char* extension) { furi_assert(auth_data); bool saved = false; @@ -646,11 +653,12 @@ bool mrtd_auth_params_save_file(Storage* storage, DialogsApp* dialogs, MrtdAuthD if(!storage_simply_mkdir(storage, MRTD_APP_FOLDER)) break; furi_string_printf(temp_str, "%s/%s%s", folder, file_name, extension); - + // Open file if(!flipper_format_file_open_always(file, furi_string_get_cstr(temp_str))) break; // Write header - if(!flipper_format_write_header_cstr(file, mrtd_auth_file_header, mrtd_auth_file_version)) break; + if(!flipper_format_write_header_cstr(file, mrtd_auth_file_header, mrtd_auth_file_version)) + break; // Write auth method furi_string_set(temp_str, mrtd_auth_method_string(auth_data->method)); @@ -679,7 +687,12 @@ bool mrtd_auth_params_save_file(Storage* storage, DialogsApp* dialogs, MrtdAuthD return saved; } -bool mrtd_auth_params_load(Storage* storage, DialogsApp* dialogs, MrtdAuthData* auth_data, const char* file_path, bool show_dialog) { +bool mrtd_auth_params_load( + Storage* storage, + DialogsApp* dialogs, + MrtdAuthData* auth_data, + const char* file_path, + bool show_dialog) { furi_assert(storage); furi_assert(dialogs); furi_assert(auth_data); @@ -702,7 +715,8 @@ bool mrtd_auth_params_load(Storage* storage, DialogsApp* dialogs, MrtdAuthData* uint32_t version = 0; if(!flipper_format_read_header(file, temp_str, &version)) break; FURI_LOG_D(TAG, "Version: %s", furi_string_get_cstr(temp_str)); - if(furi_string_cmp_str(temp_str, mrtd_auth_file_header) || (version != mrtd_auth_file_version)) { + if(furi_string_cmp_str(temp_str, mrtd_auth_file_header) || + (version != mrtd_auth_file_version)) { deprecated_version = true; break; } @@ -737,7 +751,7 @@ bool mrtd_auth_params_load(Storage* storage, DialogsApp* dialogs, MrtdAuthData* dialog_message_show_storage_error(dialogs, "Can not parse\nfile"); } } - + furi_string_free(temp_str); flipper_format_free(file); return parsed; diff --git a/lib/nfc/protocols/mrtd.h b/lib/nfc/protocols/mrtd.h index 180186f6e..94cd0ece6 100644 --- a/lib/nfc/protocols/mrtd.h +++ b/lib/nfc/protocols/mrtd.h @@ -23,7 +23,22 @@ bool mrtd_select_app(MrtdApplication* app, AIDValue aid); bool mrtd_authenticate(MrtdApplication* app); bool mrtd_read_parse_file(MrtdApplication* app, EFFile file); -bool mrtd_auth_params_save(Storage* storage, DialogsApp* dialogs, MrtdAuthData* auth_data, const char* file_name); -bool mrtd_auth_params_save_file(Storage* storage, DialogsApp* dialogs, MrtdAuthData* auth_data, const char* file_name, const char* folder, const char* extension); +bool mrtd_auth_params_save( + Storage* storage, + DialogsApp* dialogs, + MrtdAuthData* auth_data, + const char* file_name); +bool mrtd_auth_params_save_file( + Storage* storage, + DialogsApp* dialogs, + MrtdAuthData* auth_data, + const char* file_name, + const char* folder, + const char* extension); -bool mrtd_auth_params_load(Storage* storage, DialogsApp* dialogs, MrtdAuthData* auth_data, const char* file_path, bool show_dialog); +bool mrtd_auth_params_load( + Storage* storage, + DialogsApp* dialogs, + MrtdAuthData* auth_data, + const char* file_path, + bool show_dialog);