From de9c58c92c29f9498c9e91a1a1b918261135d31b Mon Sep 17 00:00:00 2001 From: cbdev Date: Sun, 18 Jun 2023 21:10:03 +0200 Subject: Basic reader interface --- reader.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'reader.c') diff --git a/reader.c b/reader.c index 5472e0f..9064c80 100644 --- a/reader.c +++ b/reader.c @@ -2,11 +2,13 @@ #include #include +#include "nfcommander.h" #include "reader.h" #include "config.h" #define MAX_PLUGIN_PATH NAME_MAX void* reader_module = NULL; +reader_plugin_handle reader_backend_handle = NULL; int reader_init(){ char plugin[MAX_PLUGIN_PATH] = ""; @@ -25,18 +27,26 @@ int reader_init(){ return -1; } + reader_backend_handle = dlsym(reader_module, "handle"); + + //call initializer + reader_plugin_init init = dlsym(reader_module, "init"); + if(!reader_backend_handle || !init || init()){ + printf("Failed to initialize the reader\n"); + return 1; + } + return 0; } int reader_handle(int fd){ - //TODO - printf("Handling data on reader fd\n"); - return 0; + return reader_backend_handle(fd); } void reader_free(){ if(reader_module){ dlclose(reader_module); + reader_backend_handle = NULL; reader_module = NULL; } } -- cgit v1.2.3