| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #include "../wiegand.h"
- void wiegand_load_scene_on_enter(void* context) {
- App* app = context;
- bit_count = 0;
- DialogsFileBrowserOptions browser_options;
- dialog_file_browser_set_basic_options(&browser_options, WIEGAND_SAVE_EXTENSION, NULL);
- browser_options.base_path = WIEGAND_SAVE_FOLDER;
- furi_string_set(app->file_path, browser_options.base_path);
- FuriString* buffer = furi_string_alloc(1024);
- if(dialog_file_browser_show(app->dialogs, app->file_path, app->file_path, &browser_options)) {
- Storage* storage = furi_record_open(RECORD_STORAGE);
- File* data_file = storage_file_alloc(storage);
- if(storage_file_open(
- data_file, furi_string_get_cstr(app->file_path), FSAM_READ, FSOM_OPEN_EXISTING)) {
- while(!storage_file_eof(data_file)) {
- char ch;
- furi_string_reset(buffer);
- while(storage_file_read(data_file, &ch, 1) && !storage_file_eof(data_file)) {
- furi_string_push_back(buffer, ch);
- if(ch == '\n') {
- break;
- }
- }
- if(furi_string_start_with(buffer, "RAW_Data: ")) {
- bit_count = 0;
- int length = furi_string_size(buffer);
- uint32_t temp;
- char ch;
- for(int i = 8; i < length - 1; i++) {
- if(furi_string_get_char(buffer, i) == 'D') {
- i++;
- data[bit_count] = furi_string_get_char(buffer, i) == '1';
- i += 2; // Skip space
- temp = 0;
- while(i < length && (ch = furi_string_get_char(buffer, i)) != ' ') {
- temp = temp * 10 + (ch - '0');
- i++;
- }
- data_fall[bit_count] = temp;
- i++; // Skip space
- temp = 0;
- while(i < length && (ch = furi_string_get_char(buffer, i)) != ' ' &&
- ch != '\n') {
- temp = temp * 10 + (ch - '0');
- i++;
- }
- data_rise[bit_count] = temp;
- bit_count++;
- }
- }
- break;
- }
- }
- storage_file_close(data_file);
- }
- storage_file_free(data_file);
- furi_record_close(RECORD_STORAGE);
- }
- if(bit_count == 0) {
- scene_manager_search_and_switch_to_previous_scene(
- app->scene_manager, WiegandMainMenuScene);
- } else {
- data_saved = true;
- scene_manager_next_scene(app->scene_manager, WiegandDataScene);
- }
- }
|