Browse Source

Merge branch 'patch-1' into 'main'

Switch to `plugin_manager_load_single`

See merge request bettse/picopass!5
Eric Betts 8 tháng trước cách đây
mục cha
commit
519dd38b73
2 tập tin đã thay đổi với 12 bổ sung17 xóa
  1. 11 16
      picopass.c
  2. 1 1
      picopass_i.h

+ 11 - 16
picopass.c

@@ -96,24 +96,19 @@ Picopass* picopass_alloc() {
     view_dispatcher_add_view(
         picopass->view_dispatcher, PicopassViewLoclass, loclass_get_view(picopass->loclass));
 
-    picopass->plugin_manager =
+    picopass->plugin_wiegand_manager =
         plugin_manager_alloc(PLUGIN_APP_ID, PLUGIN_API_VERSION, firmware_api_interface);
-
     picopass->plugin_wiegand = NULL;
-    if(plugin_manager_load_all(picopass->plugin_manager, APP_ASSETS_PATH("plugins")) !=
+    if(plugin_manager_load_single(picopass->plugin_wiegand_manager, APP_ASSETS_PATH("plugins/plugin_wiegand.fal")) !=
        PluginManagerErrorNone) {
-        FURI_LOG_E(TAG, "Failed to load all libs");
-    } else {
-        uint32_t plugin_count = plugin_manager_get_count(picopass->plugin_manager);
-        FURI_LOG_I(TAG, "Loaded %lu plugin(s)", plugin_count);
-
-        for(uint32_t i = 0; i < plugin_count; i++) {
-            const PluginWiegand* plugin = plugin_manager_get_ep(picopass->plugin_manager, i);
-            FURI_LOG_I(TAG, "plugin name: %s", plugin->name);
-            if(strcmp(plugin->name, "Plugin Wiegand") == 0) {
-                // Have to cast to drop "const" qualifier
-                picopass->plugin_wiegand = (PluginWiegand*)plugin;
-            }
+        FURI_LOG_E(TAG, "Failed to load Wiegand plugin");
+    } else if (plugin_manager_get_count(picopass->plugin_wiegand_manager)) {
+        picopass->plugin_wiegand = (PluginWiegand*)plugin_manager_get_ep(picopass->plugin_wiegand_manager, 0);
+        if(strcmp(picopass->plugin_wiegand->name, "Plugin Wiegand") != 0) {
+            FURI_LOG_E(TAG, "Tried to load invalid Wiegand plugin");
+            picopass->plugin_wiegand = NULL;
+        } else {
+            FURI_LOG_I(TAG, "Loaded Wiegand plugin");
         }
     }
 
@@ -180,7 +175,7 @@ void picopass_free(Picopass* picopass) {
     furi_record_close(RECORD_NOTIFICATION);
     picopass->notifications = NULL;
 
-    plugin_manager_free(picopass->plugin_manager);
+    plugin_manager_free(picopass->plugin_wiegand_manager);
 
     free(picopass);
 }

+ 1 - 1
picopass_i.h

@@ -117,7 +117,7 @@ struct Picopass {
     DictAttack* dict_attack;
     Loclass* loclass;
 
-    PluginManager* plugin_manager;
+    PluginManager* plugin_wiegand_manager;
     PluginWiegand* plugin_wiegand;
 
     PicopassDictAttackContext dict_attack_ctx;