Преглед изворни кода

reader section got reading DG7

Eric Betts пре 9 месеци
родитељ
комит
f86fd88886
2 измењених фајлова са 25 додато и 8 уклоњено
  1. 13 0
      passy_reader.c
  2. 12 8
      scenes/passy_scene_main_menu.c

+ 13 - 0
passy_reader.c

@@ -465,6 +465,19 @@ NfcCommand passy_reader_state_machine(Passy* passy, PassyReader* passy_reader) {
             file_stream_close(stream);
             furi_record_close(RECORD_STORAGE);
             furi_string_free(path);
+        } else if(passy->read_type == PassyReadDG7) {
+            uint8_t header[100];
+            ret = passy_reader_read_binary(passy_reader, 0x00, sizeof(header), header);
+            if(ret != NfcCommandContinue) {
+                view_dispatcher_send_custom_event(
+                    passy->view_dispatcher, PassyCustomEventReaderError);
+                break;
+            }
+            view_dispatcher_send_custom_event(
+                passy->view_dispatcher, PassyCustomEventReaderReading);
+
+            size_t body_size = asn1_length(header + 1);
+            FURI_LOG_I(TAG, "DG7 length: %d", body_size);
         }
 
         // Everything done

+ 12 - 8
scenes/passy_scene_main_menu.c

@@ -7,6 +7,7 @@ enum SubmenuIndex {
     SubmenuIndexDeleteMRZInfo,
     SubmenuIndexReadDG1,
     SubmenuIndexReadDG2,
+    SubmenuIndexReadDG7,
 };
 
 void passy_scene_main_menu_submenu_callback(void* context, uint32_t index) {
@@ -48,6 +49,12 @@ void passy_scene_main_menu_on_enter(void* context) {
             SubmenuIndexReadDG2,
             passy_scene_main_menu_submenu_callback,
             passy);
+        submenu_add_item(
+            submenu,
+            "Read DG7",
+            SubmenuIndexReadDG7,
+            passy_scene_main_menu_submenu_callback,
+            passy);
     }
 
     view_dispatcher_switch_to_view(passy->view_dispatcher, PassyViewMenu);
@@ -58,26 +65,23 @@ bool passy_scene_main_menu_on_event(void* context, SceneManagerEvent event) {
     bool consumed = false;
 
     if(event.type == SceneManagerEventTypeCustom) {
+        scene_manager_set_scene_state(passy->scene_manager, PassySceneMainMenu, event.event);
         if(event.event == SubmenuIndexEnterMRZInfo) {
-            scene_manager_set_scene_state(
-                passy->scene_manager, PassySceneMainMenu, SubmenuIndexEnterMRZInfo);
             scene_manager_next_scene(passy->scene_manager, PassyScenePassportNumberInput);
             consumed = true;
         } else if(event.event == SubmenuIndexDeleteMRZInfo) {
-            scene_manager_set_scene_state(
-                passy->scene_manager, PassySceneMainMenu, SubmenuIndexDeleteMRZInfo);
             scene_manager_next_scene(passy->scene_manager, PassySceneDelete);
             consumed = true;
         } else if(event.event == SubmenuIndexReadDG1) {
             passy->read_type = PassyReadDG1;
-            scene_manager_set_scene_state(
-                passy->scene_manager, PassySceneMainMenu, SubmenuIndexReadDG1);
             scene_manager_next_scene(passy->scene_manager, PassySceneRead);
             consumed = true;
         } else if(event.event == SubmenuIndexReadDG2) {
             passy->read_type = PassyReadDG2;
-            scene_manager_set_scene_state(
-                passy->scene_manager, PassySceneMainMenu, SubmenuIndexReadDG2);
+            scene_manager_next_scene(passy->scene_manager, PassySceneRead);
+            consumed = true;
+        } else if(event.event == SubmenuIndexReadDG7) {
+            passy->read_type = PassyReadDG7;
             scene_manager_next_scene(passy->scene_manager, PassySceneRead);
             consumed = true;
         }