#include #include #include #include "reader.h" #include "config.h" #define MAX_PLUGIN_PATH NAME_MAX void* reader_module = NULL; int reader_init(){ char plugin[MAX_PLUGIN_PATH] = ""; char* reader = config_get("nfc", "reader"); if(!reader){ printf("No reader plugin configured\n"); return -1; } snprintf(plugin, sizeof(plugin), "./reader_%s.so", reader); reader_module = dlopen(plugin, RTLD_NOW); if(!reader_module){ printf("Failed to load reader plugin %s\n", plugin); return -1; } return 0; } void reader_free(){ if(reader_module){ dlclose(reader_module); reader_module = NULL; } }