source: trunk/src/ifd/init.c @ 1082

Revision 1082, 2.6 KB checked in by martin, 3 years ago (diff)

ePass3000 driver by EnterSafe? <jingmin@…>

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1/*
2 * Initialize the library
3 *
4 * Copyright (C) 2003 Olaf Kirch <okir@suse.de>
5 */
6
7#include "internal.h"
8#include <stdlib.h>
9#include <ltdl.h>
10
11static int configure_driver(ifd_conf_node_t * cf);
12
13int ifd_init(void)
14{
15        unsigned int ival;
16        char *sval;
17        ifd_conf_node_t **nodes;
18        int i, n;
19
20        /* initialize ltdl */
21        i = lt_dlinit();
22        if (i != 0)
23                ct_error("lt_dlinit returned %d", i);
24
25        /* Register built-in drivers */
26        ifd_acr30u_register();
27        ifd_cardman_register();
28        ifd_cm4000_register();
29        ifd_egate_register();
30        ifd_epass3k_register();
31        ifd_etoken_register();
32        ifd_etoken64_register();
33        ifd_eutron_register();
34        ifd_gempc_register();
35        ifd_ikey2k_register();
36        ifd_ikey3k_register();
37        ifd_kaan_register();
38        ifd_pertosmart_ac1030_register();
39        ifd_pertosmart_ac1038_register();
40        ifd_smartboard_register();
41        ifd_smph_register();
42        ifd_starkey_register();
43        ifd_towitoko_register();
44        ifd_rutoken_register();
45        /* ifd_wbeiuu_register();       driver not working yet */
46        ifd_cyberjack_register();       
47        /* ccid last */
48        ifd_ccid_register();
49
50        /* Register all builtin protocols */
51        ifd_protocol_register(&ifd_protocol_t0);
52        ifd_protocol_register(&ifd_protocol_t1);
53        ifd_protocol_register(&ifd_protocol_gbp);
54        ifd_protocol_register(&ifd_protocol_trans);
55        ifd_protocol_register(&ifd_protocol_i2c_short);
56        ifd_protocol_register(&ifd_protocol_i2c_long);
57        ifd_protocol_register(&ifd_protocol_2wire);
58        ifd_protocol_register(&ifd_protocol_3wire);
59        ifd_protocol_register(&ifd_protocol_eurochip);
60        ifd_protocol_register(&ifd_protocol_esc);
61
62        if (ifd_conf_get_integer("debug", &ival) >= 0 && ival > ct_config.debug)
63                ct_config.debug = ival;
64
65        if (ifd_conf_get_string("ifdhandler.program", &sval) >= 0)
66                ct_config.ifdhandler = sval;
67
68        /* Register all driver information (use hotplug ids) */
69        n = ifd_conf_get_nodes("driver", NULL, 0);
70        if (n >= 0) {
71                nodes = (ifd_conf_node_t **) calloc(n, sizeof(*nodes));
72                if (!nodes) {
73                        ct_error("out of memory");
74                        return 1;
75                }
76                n = ifd_conf_get_nodes("driver", nodes, n);
77                for (i = 0; i < n; i++) {
78                        if (configure_driver(nodes[i])) {
79                                free(nodes);
80                                return 1;
81                        }
82                }
83                free(nodes);
84        }
85        return 0;
86}
87
88/*
89 * Configure a reader driver
90 */
91static int configure_driver(ifd_conf_node_t * cf)
92{
93        const char *driver;
94        char **ids;
95        int j, n;
96
97        if (!(driver = cf->value))
98                return 1;
99        if ((n = ifd_conf_node_get_string_list(cf, "ids", NULL, 0)) >= 0) {
100                ids = (char **)calloc(n, sizeof(char *));
101                if (!ids) {
102                        ct_error("out of memory");
103                        return 1;
104                }
105                n = ifd_conf_node_get_string_list(cf, "ids", ids, n);
106                for (j = 0; j < n; j++)
107                        ifd_driver_add_id(ids[j], driver);
108                free(ids);
109        }
110        return 0;
111}
Note: See TracBrowser for help on using the repository browser.