MX il y a 1 an
Parent
commit
39baed393f
4 fichiers modifiés avec 23 ajouts et 2 suppressions
  1. 1 1
      application.fam
  2. 10 1
      ccid.c
  3. 9 0
      sam_api.c
  4. 3 0
      scenes/seader_scene_sam_present.c

+ 1 - 1
application.fam

@@ -18,7 +18,7 @@ App(
     ],
     ],
     fap_icon="icons/logo.png",
     fap_icon="icons/logo.png",
     fap_category="NFC",
     fap_category="NFC",
-    fap_version="2.8",
+    fap_version="2.9",
     fap_author="bettse",
     fap_author="bettse",
 #    fap_extbuild=(
 #    fap_extbuild=(
 #        ExtFile(
 #        ExtFile(

+ 10 - 1
ccid.c

@@ -141,7 +141,7 @@ size_t seader_ccid_process(Seader* seader, uint8_t* cmd, size_t cmd_len) {
     for(uint8_t i = 0; i < cmd_len; i++) {
     for(uint8_t i = 0; i < cmd_len; i++) {
         snprintf(display + (i * 2), sizeof(display), "%02x", cmd[i]);
         snprintf(display + (i * 2), sizeof(display), "%02x", cmd[i]);
     }
     }
-    // FURI_LOG_D(TAG, "UART %d: %s", cmd_len, display);
+    FURI_LOG_D(TAG, "UART %d: %s", cmd_len, display);
 
 
     if(cmd_len == 2) {
     if(cmd_len == 2) {
         if(cmd[0] == CCID_MESSAGE_TYPE_RDR_to_PC_NotifySlotChange) {
         if(cmd[0] == CCID_MESSAGE_TYPE_RDR_to_PC_NotifySlotChange) {
@@ -164,6 +164,10 @@ size_t seader_ccid_process(Seader* seader, uint8_t* cmd, size_t cmd_len) {
                     powered[0] = false;
                     powered[0] = false;
                     hasSAM = false;
                     hasSAM = false;
                     retries = 3;
                     retries = 3;
+                    if(seader_worker->callback) {
+                        seader_worker->callback(
+                            SeaderWorkerEventSamMissing, seader_worker->context);
+                    }
                 }
                 }
                 break;
                 break;
             };
             };
@@ -187,6 +191,10 @@ size_t seader_ccid_process(Seader* seader, uint8_t* cmd, size_t cmd_len) {
                     powered[1] = false;
                     powered[1] = false;
                     hasSAM = false;
                     hasSAM = false;
                     retries = 3;
                     retries = 3;
+                    if(seader_worker->callback) {
+                        seader_worker->callback(
+                            SeaderWorkerEventSamMissing, seader_worker->context);
+                    }
                 }
                 }
                 break;
                 break;
             };
             };
@@ -276,6 +284,7 @@ size_t seader_ccid_process(Seader* seader, uint8_t* cmd, size_t cmd_len) {
         //0306 80 00000000 0001 42fe 00 38
         //0306 80 00000000 0001 42fe 00 38
         if(message.bStatus == 0x41 && message.bError == 0xfe) {
         if(message.bStatus == 0x41 && message.bError == 0xfe) {
             FURI_LOG_W(TAG, "card probably upside down");
             FURI_LOG_W(TAG, "card probably upside down");
+            hasSAM = false;
             if(seader_worker->callback) {
             if(seader_worker->callback) {
                 seader_worker->callback(SeaderWorkerEventSamMissing, seader_worker->context);
                 seader_worker->callback(SeaderWorkerEventSamMissing, seader_worker->context);
             }
             }

+ 9 - 0
sam_api.c

@@ -1,6 +1,7 @@
 
 
 #include "sam_api.h"
 #include "sam_api.h"
 #include <toolbox/path.h>
 #include <toolbox/path.h>
+#include <toolbox/version.h>
 #include <bit_lib/bit_lib.h>
 #include <bit_lib/bit_lib.h>
 
 
 #define TAG "SAMAPI"
 #define TAG "SAMAPI"
@@ -1103,6 +1104,14 @@ NfcCommand seader_worker_card_detect(
     }
     }
 
 
     seader_send_card_detected(seader, cardDetails);
     seader_send_card_detected(seader, cardDetails);
+    // Print version information for app and firmware for later review in log
+    const Version* version = version_get();
+    FURI_LOG_I(
+        TAG,
+        "Firmware origin: %s firmware version: %s app version: %s",
+        version_get_firmware_origin(version),
+        version_get_version(version),
+        FAP_VERSION);
 
 
     free(cardDetails);
     free(cardDetails);
     return NfcCommandContinue;
     return NfcCommandContinue;

+ 3 - 0
scenes/seader_scene_sam_present.c

@@ -97,6 +97,9 @@ bool seader_scene_sam_present_on_event(void* context, SceneManagerEvent event) {
             consumed = true;
             consumed = true;
         } else if(event.event == SubmenuIndexFwVersion) {
         } else if(event.event == SubmenuIndexFwVersion) {
             consumed = true;
             consumed = true;
+        } else if(event.event == SeaderWorkerEventSamMissing) {
+            scene_manager_next_scene(seader->scene_manager, SeaderSceneSamMissing);
+            consumed = true;
         }
         }
     } else if(event.type == SceneManagerEventTypeBack) {
     } else if(event.type == SceneManagerEventTypeBack) {
         scene_manager_stop(seader->scene_manager);
         scene_manager_stop(seader->scene_manager);