Forráskód Böngészése

Merge nfc_magic from https://github.com/xMasterX/all-the-plugins

# Conflicts:
#	nfc_magic/application.fam
#	nfc_magic/magic/protocols/gen4/gen4.c
Willy-JL 1 éve
szülő
commit
5c93f61822

+ 1 - 1
nfc_magic/application.fam

@@ -10,7 +10,7 @@ App(
     ],
     ],
     stack_size=4 * 1024,
     stack_size=4 * 1024,
     fap_description="Application for writing to NFC tags with modifiable sector 0",
     fap_description="Application for writing to NFC tags with modifiable sector 0",
-    fap_version="1.8",
+    fap_version="1.9",
     fap_icon="assets/125_10px.png",
     fap_icon="assets/125_10px.png",
     fap_category="NFC",
     fap_category="NFC",
     fap_icon_assets="assets",
     fap_icon_assets="assets",

+ 13 - 2
nfc_magic/magic/protocols/gen4/gen4.c

@@ -2,17 +2,20 @@
 #include "core/check.h"
 #include "core/check.h"
 
 
 Gen4* gen4_alloc() {
 Gen4* gen4_alloc() {
-    Gen4* instance = (Gen4*)malloc(sizeof(Gen4));
+    Gen4* instance = malloc(sizeof(Gen4));
+
     return instance;
     return instance;
 }
 }
 
 
 void gen4_free(Gen4* instance) {
 void gen4_free(Gen4* instance) {
     furi_check(instance);
     furi_check(instance);
+
     free(instance);
     free(instance);
 }
 }
 
 
 void gen4_reset(Gen4* instance) {
 void gen4_reset(Gen4* instance) {
     furi_check(instance);
     furi_check(instance);
+
     memset(&instance->config, 0, sizeof(Gen4Config));
     memset(&instance->config, 0, sizeof(Gen4Config));
     memset(&instance->revision, 0, sizeof(Gen4Revision));
     memset(&instance->revision, 0, sizeof(Gen4Revision));
 }
 }
@@ -20,18 +23,26 @@ void gen4_reset(Gen4* instance) {
 void gen4_copy(Gen4* dest, const Gen4* source) {
 void gen4_copy(Gen4* dest, const Gen4* source) {
     furi_check(dest);
     furi_check(dest);
     furi_check(source);
     furi_check(source);
+
     memcpy(dest, source, sizeof(Gen4));
     memcpy(dest, source, sizeof(Gen4));
 }
 }
 
 
 bool gen4_password_is_set(const Gen4Password* instance) {
 bool gen4_password_is_set(const Gen4Password* instance) {
+    furi_check(instance);
+
     return (instance->bytes[0] || instance->bytes[1] || instance->bytes[2] || instance->bytes[3]);
     return (instance->bytes[0] || instance->bytes[1] || instance->bytes[2] || instance->bytes[3]);
 }
 }
 
 
 void gen4_password_reset(Gen4Password* instance) {
 void gen4_password_reset(Gen4Password* instance) {
+    furi_check(instance);
+
     memset(instance->bytes, 0, GEN4_PASSWORD_LEN);
     memset(instance->bytes, 0, GEN4_PASSWORD_LEN);
 }
 }
 
 
 void gen4_password_copy(Gen4Password* dest, const Gen4Password* source) {
 void gen4_password_copy(Gen4Password* dest, const Gen4Password* source) {
+    furi_check(dest);
+    furi_check(source);
+
     memcpy(dest->bytes, source->bytes, GEN4_PASSWORD_LEN);
     memcpy(dest->bytes, source->bytes, GEN4_PASSWORD_LEN);
 }
 }
 
 
@@ -106,4 +117,4 @@ const char* gen4_get_configuration_name(const Gen4Config* config) {
         return "Unknown";
         return "Unknown";
         break;
         break;
     };
     };
-}
+}

+ 8 - 4
nfc_magic/magic/protocols/gen4/gen4_poller.c

@@ -193,8 +193,9 @@ Gen4PollerError gen4_poller_detect(Nfc* nfc, Gen4Password password, Gen4* gen4_d
     bit_buffer_free(gen4_poller_detect_ctx.tx_buffer);
     bit_buffer_free(gen4_poller_detect_ctx.tx_buffer);
     bit_buffer_free(gen4_poller_detect_ctx.rx_buffer);
     bit_buffer_free(gen4_poller_detect_ctx.rx_buffer);
 
 
-    if(gen4_poller_detect_ctx.error == Gen4PollerErrorNone)
+    if(gen4_poller_detect_ctx.error == Gen4PollerErrorNone) {
         gen4_copy(gen4_data, &gen4_poller_detect_ctx.gen4_data);
         gen4_copy(gen4_data, &gen4_poller_detect_ctx.gen4_data);
+    }
 
 
     return gen4_poller_detect_ctx.error;
     return gen4_poller_detect_ctx.error;
 }
 }
@@ -623,7 +624,7 @@ NfcCommand gen4_poller_get_current_cfg_handler(Gen4Poller* instance) {
     NfcCommand command = NfcCommandContinue;
     NfcCommand command = NfcCommandContinue;
 
 
     do {
     do {
-        Gen4Config config;
+        Gen4Config config = {};
 
 
         Gen4PollerError error = gen4_poller_get_config(instance, instance->password, &config);
         Gen4PollerError error = gen4_poller_get_config(instance, instance->password, &config);
         if(error != Gen4PollerErrorNone) {
         if(error != Gen4PollerErrorNone) {
@@ -644,7 +645,7 @@ NfcCommand gen4_poller_get_revision_handler(Gen4Poller* instance) {
     NfcCommand command = NfcCommandContinue;
     NfcCommand command = NfcCommandContinue;
 
 
     do {
     do {
-        Gen4Revision revision;
+        Gen4Revision revision = {};
         Gen4PollerError error = gen4_poller_get_revision(instance, instance->password, &revision);
         Gen4PollerError error = gen4_poller_get_revision(instance, instance->password, &revision);
         if(error != Gen4PollerErrorNone) {
         if(error != Gen4PollerErrorNone) {
             FURI_LOG_E(TAG, "Failed to get revision: %d", error);
             FURI_LOG_E(TAG, "Failed to get revision: %d", error);
@@ -804,6 +805,7 @@ void gen4_poller_stop(Gen4Poller* instance) {
 
 
 const Gen4* gen4_poller_get_gen4_data(const Gen4Poller* instance) {
 const Gen4* gen4_poller_get_gen4_data(const Gen4Poller* instance) {
     furi_assert(instance);
     furi_assert(instance);
+
     return instance->gen4_data;
     return instance->gen4_data;
 }
 }
 
 
@@ -811,10 +813,12 @@ void gen4_poller_struct_set_direct_write_block_0_mode(
     Gen4Poller* instance,
     Gen4Poller* instance,
     Gen4DirectWriteBlock0Mode mode) {
     Gen4DirectWriteBlock0Mode mode) {
     furi_assert(instance);
     furi_assert(instance);
+
     instance->direct_write_block_0_mode = mode;
     instance->direct_write_block_0_mode = mode;
 }
 }
 
 
 void gen4_poller_struct_set_shadow_mode(Gen4Poller* instance, Gen4ShadowMode mode) {
 void gen4_poller_struct_set_shadow_mode(Gen4Poller* instance, Gen4ShadowMode mode) {
     furi_assert(instance);
     furi_assert(instance);
+
     instance->shadow_mode = mode;
     instance->shadow_mode = mode;
-}
+}

+ 1 - 1
nfc_magic/magic/protocols/gen4/gen4_poller_i.c

@@ -118,7 +118,7 @@ Gen4PollerError
 
 
         size_t rx_bytes = bit_buffer_get_size_bytes(instance->rx_buffer);
         size_t rx_bytes = bit_buffer_get_size_bytes(instance->rx_buffer);
 
 
-        if((rx_bytes != GEN4_CONFIG_SIZE)) {
+        if(rx_bytes != GEN4_CONFIG_SIZE) {
             ret = Gen4PollerErrorProtocol;
             ret = Gen4PollerErrorProtocol;
             break;
             break;
         }
         }

+ 0 - 1
nfc_magic/scenes/nfc_magic_scene_gen4_set_direct_write_block_0_mode.c

@@ -1,5 +1,4 @@
 #include "../nfc_magic_app_i.h"
 #include "../nfc_magic_app_i.h"
-#include "magic/protocols/gen4/gen4_poller.h"
 
 
 enum {
 enum {
     NfcMagicSceneGen4SetDirectWriteBlock0ModeStateCardSearch,
     NfcMagicSceneGen4SetDirectWriteBlock0ModeStateCardSearch,

+ 0 - 1
nfc_magic/scenes/nfc_magic_scene_gen4_set_shd_mode.c

@@ -1,5 +1,4 @@
 #include "../nfc_magic_app_i.h"
 #include "../nfc_magic_app_i.h"
-#include "magic/protocols/gen4/gen4_poller.h"
 
 
 enum {
 enum {
     NfcMagicSceneGen4SetShadowModeStateCardSearch,
     NfcMagicSceneGen4SetShadowModeStateCardSearch,

+ 3 - 3
nfc_magic/scenes/nfc_magic_scene_gen4_show_info.c

@@ -27,6 +27,8 @@ void nfc_magic_scene_gen4_show_info_on_enter(void* context) {
 
 
     FuriString* output = furi_string_alloc();
     FuriString* output = furi_string_alloc();
 
 
+    furi_string_printf(output, "\e#Gen4\n");
+
     // Revision
     // Revision
     furi_string_cat_printf(
     furi_string_cat_printf(
         output, "Revision: %02X %02X\n", gen4->revision.data[3], gen4->revision.data[4]);
         output, "Revision: %02X %02X\n", gen4->revision.data[3], gen4->revision.data[4]);
@@ -83,9 +85,7 @@ void nfc_magic_scene_gen4_show_info_on_enter(void* context) {
         "Total blocks: %u",
         "Total blocks: %u",
         gen4->config.data_parsed.total_blocks + 1); // config stores the number of the last block
         gen4->config.data_parsed.total_blocks + 1); // config stores the number of the last block
 
 
-    widget_add_string_element(widget, 3, 4, AlignLeft, AlignTop, FontPrimary, "Gen4 Info");
-
-    widget_add_text_scroll_element(widget, 3, 17, 124, 50, furi_string_get_cstr(output));
+    widget_add_text_scroll_element(widget, 0, 0, 128, 64, furi_string_get_cstr(output));
 
 
     widget_add_button_element(
     widget_add_button_element(
         widget,
         widget,