remove @EAP_LDFLAGS@, no longer exists
[mech_eap.orig] / libeap / src / wps / wps_nfc_pn531.c
1 /*
2  * NFC PN531 routines for Wi-Fi Protected Setup
3  * Copyright (c) 2009, Masashi Honma <honma@ictec.co.jp>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation.
8  *
9  * Alternatively, this software may be distributed under the terms of BSD
10  * license.
11  *
12  * See README and COPYING for more details.
13  */
14
15 #include "includes.h"
16 #include "common.h"
17
18 #include "wps/wps.h"
19 #include "wps_i.h"
20
21 #include "WpsNfcType.h"
22 #include "WpsNfc.h"
23
24
25 static int init_nfc_pn531(char *path)
26 {
27         u32 ret;
28
29         ret = WpsNfcInit();
30         if (ret != WPS_NFCLIB_ERR_SUCCESS) {
31                 wpa_printf(MSG_ERROR, "WPS (PN531): Failed to initialize "
32                            "NFC Library: 0x%08x", ret);
33                 return -1;
34         }
35
36         ret = WpsNfcOpenDevice((int8 *) path);
37         if (ret != WPS_NFCLIB_ERR_SUCCESS) {
38                 wpa_printf(MSG_ERROR, "WPS (PN531): Failed to open "
39                            "NFC Device(%s): 0x%08x", path, ret);
40                 goto fail;
41         }
42
43         ret = WpsNfcTokenDiscovery();
44         if (ret != WPS_NFCLIB_ERR_SUCCESS) {
45                 wpa_printf(MSG_ERROR, "WPS (PN531): Failed to discover "
46                            "token: 0x%08x", ret);
47                 WpsNfcCloseDevice();
48                 goto fail;
49         }
50
51         return 0;
52
53 fail:
54         WpsNfcDeinit();
55         return -1;
56 }
57
58
59 static void * read_nfc_pn531(size_t *size)
60 {
61         uint32 len;
62         u32 ret;
63         int8 *data;
64
65         ret = WpsNfcRawReadToken(&data, &len);
66         if (ret != WPS_NFCLIB_ERR_SUCCESS) {
67                 wpa_printf(MSG_ERROR, "WPS (PN531): Failed to read: 0x%08x",
68                            ret);
69                 return NULL;
70         }
71
72         *size = len;
73         return data;
74 }
75
76
77 static int write_nfc_pn531(void *data, size_t len)
78 {
79         u32 ret;
80
81         ret = WpsNfcRawWriteToken(data, len);
82         if (ret != WPS_NFCLIB_ERR_SUCCESS) {
83                 wpa_printf(MSG_ERROR, "WPS (PN531): Failed to write: 0x%08x",
84                            ret);
85                 return -1;
86         }
87
88         return 0;
89 }
90
91
92 static void deinit_nfc_pn531(void)
93 {
94         u32 ret;
95
96         ret = WpsNfcCloseDevice();
97         if (ret != WPS_NFCLIB_ERR_SUCCESS)
98                 wpa_printf(MSG_ERROR, "WPS (PN531): Failed to close "
99                            "NFC Device: 0x%08x", ret);
100
101         ret = WpsNfcDeinit();
102         if (ret != WPS_NFCLIB_ERR_SUCCESS)
103                 wpa_printf(MSG_ERROR, "WPS (PN531): Failed to deinitialize "
104                            "NFC Library: 0x%08x", ret);
105 }
106
107
108 struct oob_nfc_device_data oob_nfc_pn531_device_data = {
109         .init_func      = init_nfc_pn531,
110         .read_func      = read_nfc_pn531,
111         .write_func     = write_nfc_pn531,
112         .deinit_func    = deinit_nfc_pn531,
113 };