Przeglądaj źródła

Add DG7 Empty message

Esteban Fuentealba 9 miesięcy temu
rodzic
commit
2a95ced9fd
3 zmienionych plików z 13 dodań i 0 usunięć
  1. 1 0
      passy_i.h
  2. 7 0
      passy_reader.c
  3. 5 0
      scenes/passy_scene_read_error.c

+ 1 - 0
passy_i.h

@@ -53,6 +53,7 @@ enum PassyCustomEvent {
     PassyCustomEventReaderDetected,
     PassyCustomEventReaderAuthenticated,
     PassyCustomEventReaderReading,
+    PassyCustomEventReaderNoDG7Data,
 };
 
 struct Passy {

+ 7 - 0
passy_reader.c

@@ -420,6 +420,13 @@ NfcCommand passy_reader_state_machine(Passy* passy, PassyReader* passy_reader) {
             size_t body_size = asn1_length(header + 1);
             FURI_LOG_I(TAG, "DG7 length: %d", body_size);
 
+            if(body_size == 0) {
+                FURI_LOG_W(TAG, "This document does not contain data in DG7.");
+                view_dispatcher_send_custom_event(
+                    passy->view_dispatcher, PassyCustomEventReaderNoDG7Data);
+                break;
+            }
+
             void* jpeg2k = memmem(header, sizeof(header), jpeg2k_header, sizeof(jpeg2k_header));
             void* jpeg2k_cs =
                 memmem(header, sizeof(header), jpeg2k_cs_header, sizeof(jpeg2k_cs_header));

+ 5 - 0
scenes/passy_scene_read_error.c

@@ -21,6 +21,11 @@ void passy_scene_read_error_on_enter(void* context) {
     FuriString* primary_str = furi_string_alloc_set("Read Errror");
     FuriString* secondary_str = furi_string_alloc_set("Try again?");
 
+    if(passy->read_type == PassyReadDG7) {
+        furi_string_set(primary_str, "No data in DG7");
+        furi_string_set(secondary_str, "This document does not contain data in DG7.");
+    }
+
     widget_add_button_element(
         widget, GuiButtonTypeLeft, "Retry", passy_scene_read_error_widget_callback, passy);