Add entry/exit point functions that simply register/unregister the driver as of now.
These are guarded with ENABLE_DYNAMIC_DRIVERS - so, should not interfere when building libfprint with statically linked drivers. While at it, remove a control char from drivers/aes1610.c. Signed-off-by: Kunal Gangakhedkar <kunal.gangakhed...@gmail.com> --- libfprint/drivers/aes1610.c | 22 +++++++++++++++++++++- libfprint/drivers/aes2501.c | 18 ++++++++++++++++++ libfprint/drivers/aes4000.c | 18 ++++++++++++++++++ libfprint/drivers/fdu2000.c | 19 +++++++++++++++++++ libfprint/drivers/upeke2.c | 17 +++++++++++++++++ libfprint/drivers/upeksonly.c | 18 ++++++++++++++++++ libfprint/drivers/upekts.c | 16 ++++++++++++++++ libfprint/drivers/uru4000.c | 18 ++++++++++++++++++ libfprint/drivers/vcom5s.c | 17 +++++++++++++++++ libfprint/drivers/vfs101.c | 19 +++++++++++++++++++ libfprint/drivers/vfs301.c | 18 ++++++++++++++++++ 11 files changed, 199 insertions(+), 1 deletion(-) diff --git a/libfprint/drivers/aes1610.c b/libfprint/drivers/aes1610.c index 8b81a80..d0f6331 100644 --- a/libfprint/drivers/aes1610.c +++ b/libfprint/drivers/aes1610.c @@ -29,8 +29,11 @@ #include <libusb.h> +#include <config.h> + #include <aeslib.h> #include <fp_internal.h> +#include <module.h> static void start_capture(struct fp_img_dev *dev); static void complete_deactivation(struct fp_img_dev *dev); @@ -462,7 +465,8 @@ out: } -static void finger_det_none_cb(struct fp_img_dev *dev, int result, void *user_data) { +static void finger_det_none_cb(struct fp_img_dev *dev, int result, void *user_data) +{ fpi_imgdev_report_finger_status(dev, FALSE); start_finger_detection(dev); } @@ -1128,3 +1132,19 @@ struct fp_img_driver aes1610_driver = { .deactivate = dev_deactivate, }; +#ifdef ENABLE_DYNAMIC_DRIVERS +static int init_aes1610(void) +{ + register_driver(&aes1610_driver.driver); + fpi_img_driver_setup(&aes1610_driver); + return 0; +} + +static void exit_aes1610(void) +{ + unregister_driver(&aes1610_driver.driver); +} + +module_init(init_aes1610) +module_exit(exit_aes1610) +#endif /* ENABLE_DYNAMIC_DRIVERS */ diff --git a/libfprint/drivers/aes2501.c b/libfprint/drivers/aes2501.c index 617bb64..12fb8e5 100644 --- a/libfprint/drivers/aes2501.c +++ b/libfprint/drivers/aes2501.c @@ -30,6 +30,8 @@ #include <aeslib.h> #include <fp_internal.h> +#include <module.h> + #include "aes2501.h" static void start_capture(struct fp_img_dev *dev); @@ -961,3 +963,19 @@ struct fp_img_driver aes2501_driver = { .deactivate = dev_deactivate, }; +#ifdef ENABLE_DYNAMIC_DRIVERS +static int init_aes2501(void) +{ + register_driver(&aes2501_driver.driver); + fpi_img_driver_setup(&aes2501_driver); + return 0; +} + +static void exit_aes2501(void) +{ + unregister_driver(&aes2501_driver.driver); +} + +module_init(init_aes2501) +module_exit(exit_aes2501) +#endif /* ENABLE_DYNAMIC_DRIVERS */ diff --git a/libfprint/drivers/aes4000.c b/libfprint/drivers/aes4000.c index 02dc9e8..7fface8 100644 --- a/libfprint/drivers/aes4000.c +++ b/libfprint/drivers/aes4000.c @@ -24,8 +24,10 @@ #include <glib.h> #include <libusb.h> +#include <config.h> #include <aeslib.h> #include <fp_internal.h> +#include <module.h> #define CTRL_TIMEOUT 1000 #define EP_IN (1 | LIBUSB_ENDPOINT_IN) @@ -268,3 +270,19 @@ struct fp_img_driver aes4000_driver = { .deactivate = dev_deactivate, }; +#ifdef ENABLE_DYNAMIC_DRIVERS +static int init_aes4000(void) +{ + register_driver(&aes4000_driver.driver); + fpi_img_driver_setup(&aes4000_driver); + return 0; +} + +static void exit_aes4000(void) +{ + unregister_driver(&aes4000_driver.driver); +} + +module_init(init_aes4000) +module_exit(exit_aes4000) +#endif /* ENABLE_DYNAMIC_DRIVERS */ diff --git a/libfprint/drivers/fdu2000.c b/libfprint/drivers/fdu2000.c index c9afb0b..bc5f4af 100644 --- a/libfprint/drivers/fdu2000.c +++ b/libfprint/drivers/fdu2000.c @@ -26,6 +26,8 @@ #define FP_COMPONENT "fdu2000" #include <fp_internal.h> +#include <module.h> + #ifndef HAVE_MEMMEM gpointer memmem(const gpointer haystack, size_t haystack_len, const gpointer needle, size_t needle_len) { @@ -319,3 +321,20 @@ struct fp_img_driver fdu2000_driver = { .exit = dev_exit, .capture = capture, }; + +#ifdef ENABLE_DYNAMIC_DRIVERS +static int init_fdu2000(void) +{ + register_driver(&fdu2000_driver.driver); + fpi_img_driver_setup(&fdu2000_driver); + return 0; +} + +static void exit_fdu2000(void) +{ + unregister_driver(&fdu2000_driver.driver); +} + +module_init(init_fdu2000) +module_exit(exit_fdu2000) +#endif /* ENABLE_DYNAMIC_DRIVERS */ diff --git a/libfprint/drivers/upeke2.c b/libfprint/drivers/upeke2.c index 3a7c2d8..37906c4 100644 --- a/libfprint/drivers/upeke2.c +++ b/libfprint/drivers/upeke2.c @@ -35,7 +35,9 @@ #include <glib.h> #include <libusb.h> +#include <config.h> #include <fp_internal.h> +#include <module.h> #define EP_IN (1 | LIBUSB_ENDPOINT_IN) #define EP_OUT (2 | LIBUSB_ENDPOINT_OUT) @@ -1470,3 +1472,18 @@ struct fp_driver upeke2_driver = { .verify_stop = verify_stop, }; +#ifdef ENABLE_DYNAMIC_DRIVERS +static int init_upeke2(void) +{ + register_driver(&upeke2_driver); + return 0; +} + +void exit_upeke2(void) +{ + unregister_driver(&upeke2_driver); +} + +module_init(init_upeke2) +module_exit(exit_upeke2) +#endif /* ENABLE_DYNAMIC_DRIVERS */ diff --git a/libfprint/drivers/upeksonly.c b/libfprint/drivers/upeksonly.c index 6ca9706..ef19d93 100644 --- a/libfprint/drivers/upeksonly.c +++ b/libfprint/drivers/upeksonly.c @@ -28,7 +28,9 @@ #include <glib.h> #include <libusb.h> +#include <config.h> #include <fp_internal.h> +#include <module.h> #define CTRL_TIMEOUT 1000 #define IMG_WIDTH 288 @@ -1289,3 +1291,19 @@ struct fp_img_driver upeksonly_driver = { .deactivate = dev_deactivate, }; +#ifdef ENABLE_DYNAMIC_DRIVERS +static int init_upeksonly(void) +{ + register_driver(&upeksonly_driver.driver); + fpi_img_driver_setup(&upeksonly_driver); + return 0; +} + +static void exit_upeksonly(void) +{ + unregister_driver(&upeksonly_driver.driver); +} + +module_init(init_upeksonly) +module_exit(exit_upeksonly) +#endif /* ENABLE_DYNAMIC_DRIVERS */ diff --git a/libfprint/drivers/upekts.c b/libfprint/drivers/upekts.c index a67cd94..4ef237c 100644 --- a/libfprint/drivers/upekts.c +++ b/libfprint/drivers/upekts.c @@ -34,6 +34,7 @@ #include <libusb.h> #include <fp_internal.h> +#include <module.h> #define EP_IN (1 | LIBUSB_ENDPOINT_IN) #define EP_OUT (2 | LIBUSB_ENDPOINT_OUT) @@ -1477,3 +1478,18 @@ struct fp_driver upekts_driver = { .verify_stop = verify_stop, }; +#ifdef ENABLE_DYNAMIC_DRIVERS +static int init_upekts(void) +{ + register_driver(&upekts_driver); + return 0; +} + +static void exit_upekts(void) +{ + unregister_driver(&upekts_driver); +} + +module_init(init_upekts) +module_exit(exit_upekts) +#endif /* ENABLE_DYNAMIC_DRIVERS */ diff --git a/libfprint/drivers/uru4000.c b/libfprint/drivers/uru4000.c index 0dbea96..b2cd80d 100644 --- a/libfprint/drivers/uru4000.c +++ b/libfprint/drivers/uru4000.c @@ -28,6 +28,7 @@ #include <libusb.h> #include <fp_internal.h> +#include <module.h> #define EP_INTR (1 | LIBUSB_ENDPOINT_IN) #define EP_DATA (2 | LIBUSB_ENDPOINT_IN) @@ -1293,3 +1294,20 @@ struct fp_img_driver uru4000_driver = { .change_state = dev_change_state, }; +#ifdef ENABLE_DYNAMIC_DRIVERS +static int init_uru4000(void) +{ + register_driver(&uru4000_driver.driver); + fpi_img_driver_setup(&uru4000_driver); + return 0; +} + +static void exit_uru4000(void) +{ + fp_dbg("URU4000 exiting..\n"); + unregister_driver(&uru4000_driver.driver); +} + +module_init(init_uru4000) +module_exit(exit_uru4000) +#endif /* ENABLE_DYNAMIC_DRIVERS */ diff --git a/libfprint/drivers/vcom5s.c b/libfprint/drivers/vcom5s.c index 0bc5724..80ac6c7 100644 --- a/libfprint/drivers/vcom5s.c +++ b/libfprint/drivers/vcom5s.c @@ -33,6 +33,7 @@ #include <libusb.h> #include <fp_internal.h> +#include <module.h> #define CTRL_IN 0xc0 #define CTRL_OUT 0x40 @@ -384,3 +385,19 @@ struct fp_img_driver vcom5s_driver = { .deactivate = dev_deactivate, }; +#ifdef ENABLE_DYNAMIC_DRIVERS +static int init_vcom5s(void) +{ + register_driver(&vcom5s_driver.driver); + fpi_img_driver_setup(&vcom5s_driver); + return 0; +} + +static void exit_vcom5s(void) +{ + unregister_driver(&vcom5s_driver.driver); +} + +module_init(init_vcom5s) +module_exit(exit_vcom5s) +#endif /* ENABLE_DYNAMIC_DRIVERS */ diff --git a/libfprint/drivers/vfs101.c b/libfprint/drivers/vfs101.c index c2d9a1c..40e3a0b 100644 --- a/libfprint/drivers/vfs101.c +++ b/libfprint/drivers/vfs101.c @@ -24,6 +24,7 @@ #define FP_COMPONENT "vfs101" #include <fp_internal.h> +#include <module.h> /* Input-Output usb endpoint */ #define EP_IN(n) (n | LIBUSB_ENDPOINT_IN) @@ -1568,3 +1569,21 @@ struct fp_img_driver vfs101_driver = .activate = dev_activate, .deactivate = dev_deactivate, }; + +#ifdef ENABLE_DYNAMIC_DRIVERS +static int init_vfs101(void) +{ + register_driver(&vfs101_driver.driver); + fpi_img_driver_setup(&vfs101_driver); + return 0; +} + +static void exit_vfs101(void) +{ + fp_dbg("VFS 101 exiting..\n"); + unregister_driver(&vfs101_driver.driver); +} + +module_init(init_vfs101) +module_exit(exit_vfs101) +#endif /* ENABLE_DYNAMIC_DRIVERS */ diff --git a/libfprint/drivers/vfs301.c b/libfprint/drivers/vfs301.c index a27a945..81e7c6c 100644 --- a/libfprint/drivers/vfs301.c +++ b/libfprint/drivers/vfs301.c @@ -33,6 +33,7 @@ #include <unistd.h> #include <fp_internal.h> +#include <module.h> /************************** GENERIC STUFF *************************************/ @@ -304,3 +305,20 @@ struct fp_img_driver vfs301_driver = .activate = dev_activate, .deactivate = dev_deactivate, }; + +#ifdef ENABLE_DYNAMIC_DRIVERS +static int init_vfs301(void) +{ + register_driver(&vfs301_driver.driver); + fpi_img_driver_setup(&vfs301_driver); + return 0; +} + +static void exit_vfs301(void) +{ + unregister_driver(&vfs301_driver.driver); +} + +module_init(init_vfs301) +module_exit(exit_vfs301) +#endif /* ENABLE_DYNAMIC_DRIVERS */ -- 1.7.9.5 _______________________________________________ fprint mailing list fprint@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/fprint