Remove nfc-defines.h public header.
Use NULL instead of INVALID_DEVICE_INFO to know if device is valid. Make distcheck OK
This commit is contained in:
parent
9fccd11fc7
commit
aa8bb42d9f
27 changed files with 106 additions and 111 deletions
|
@ -24,8 +24,6 @@
|
||||||
#ifndef _LIBNFC_MIFARE_TAG_H_
|
#ifndef _LIBNFC_MIFARE_TAG_H_
|
||||||
#define _LIBNFC_MIFARE_TAG_H_
|
#define _LIBNFC_MIFARE_TAG_H_
|
||||||
|
|
||||||
#include "nfc-defines.h"
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
byte_t abtUID[4];
|
byte_t abtUID[4];
|
||||||
byte_t btBCC;
|
byte_t btBCC;
|
||||||
|
|
|
@ -24,8 +24,6 @@
|
||||||
#ifndef _LIBNFC_MIFARE_UL_TAG_H_
|
#ifndef _LIBNFC_MIFARE_UL_TAG_H_
|
||||||
#define _LIBNFC_MIFARE_UL_TAG_H_
|
#define _LIBNFC_MIFARE_UL_TAG_H_
|
||||||
|
|
||||||
#include "nfc-defines.h"
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
byte_t sn0[3];
|
byte_t sn0[3];
|
||||||
byte_t btBCC0;
|
byte_t btBCC0;
|
||||||
|
|
|
@ -35,6 +35,8 @@
|
||||||
|
|
||||||
#define SAK_FLAG_ATS_SUPPORTED 0x20
|
#define SAK_FLAG_ATS_SUPPORTED 0x20
|
||||||
|
|
||||||
|
#define MAX_FRAME_LEN 264
|
||||||
|
|
||||||
static byte_t abtRx[MAX_FRAME_LEN];
|
static byte_t abtRx[MAX_FRAME_LEN];
|
||||||
static size_t szRxBits;
|
static size_t szRxBits;
|
||||||
static size_t szRxLen;
|
static size_t szRxLen;
|
||||||
|
|
|
@ -32,6 +32,8 @@
|
||||||
#include "nfc-messages.h"
|
#include "nfc-messages.h"
|
||||||
#include "bitutils.h"
|
#include "bitutils.h"
|
||||||
|
|
||||||
|
#define MAX_FRAME_LEN 264
|
||||||
|
|
||||||
static byte_t abtRecv[MAX_FRAME_LEN];
|
static byte_t abtRecv[MAX_FRAME_LEN];
|
||||||
static size_t szRecvBits;
|
static size_t szRecvBits;
|
||||||
static nfc_device_t* pnd;
|
static nfc_device_t* pnd;
|
||||||
|
@ -87,7 +89,7 @@ int main(int argc, char *argv[])
|
||||||
// Try to open the NFC reader
|
// Try to open the NFC reader
|
||||||
pnd = nfc_connect(NULL);
|
pnd = nfc_connect(NULL);
|
||||||
|
|
||||||
if (pnd == INVALID_DEVICE_INFO)
|
if (pnd == NULL)
|
||||||
{
|
{
|
||||||
printf("Error connecting NFC reader\n");
|
printf("Error connecting NFC reader\n");
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -52,7 +52,7 @@ int main(int argc, const char* argv[])
|
||||||
pnd = nfc_connect(&ndd);
|
pnd = nfc_connect(&ndd);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (pnd == INVALID_DEVICE_INFO)
|
if (pnd == NULL)
|
||||||
{
|
{
|
||||||
ERR("Unable to connect to NFC device.");
|
ERR("Unable to connect to NFC device.");
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -405,7 +405,7 @@ int main(int argc, const char* argv[])
|
||||||
|
|
||||||
// Try to open the NFC reader
|
// Try to open the NFC reader
|
||||||
pnd = nfc_connect(NULL);
|
pnd = nfc_connect(NULL);
|
||||||
if (pnd == INVALID_DEVICE_INFO)
|
if (pnd == NULL)
|
||||||
{
|
{
|
||||||
printf("Error connecting NFC reader\n");
|
printf("Error connecting NFC reader\n");
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -149,7 +149,7 @@ int main(int argc, const char* argv[])
|
||||||
|
|
||||||
// Try to open the NFC reader
|
// Try to open the NFC reader
|
||||||
pnd = nfc_connect(NULL);
|
pnd = nfc_connect(NULL);
|
||||||
if (pnd == INVALID_DEVICE_INFO)
|
if (pnd == NULL)
|
||||||
{
|
{
|
||||||
printf("Error connecting NFC reader\n");
|
printf("Error connecting NFC reader\n");
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -31,6 +31,8 @@
|
||||||
#include "nfc-messages.h"
|
#include "nfc-messages.h"
|
||||||
#include "bitutils.h"
|
#include "bitutils.h"
|
||||||
|
|
||||||
|
#define MAX_FRAME_LEN 264
|
||||||
|
|
||||||
static byte_t abtReaderRx[MAX_FRAME_LEN];
|
static byte_t abtReaderRx[MAX_FRAME_LEN];
|
||||||
static byte_t abtReaderRxPar[MAX_FRAME_LEN];
|
static byte_t abtReaderRxPar[MAX_FRAME_LEN];
|
||||||
static size_t szReaderRxBits;
|
static size_t szReaderRxBits;
|
||||||
|
@ -70,7 +72,7 @@ int main(int argc,char* argv[])
|
||||||
|
|
||||||
// Try to open the NFC emulator device
|
// Try to open the NFC emulator device
|
||||||
pndTag = nfc_connect(NULL);
|
pndTag = nfc_connect(NULL);
|
||||||
if (pndTag == INVALID_DEVICE_INFO)
|
if (pndTag == NULL)
|
||||||
{
|
{
|
||||||
printf("Error connecting NFC emulator device\n");
|
printf("Error connecting NFC emulator device\n");
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -89,8 +91,8 @@ int main(int argc,char* argv[])
|
||||||
printf("[+] Thank you, the emulated tag is initialized\n");
|
printf("[+] Thank you, the emulated tag is initialized\n");
|
||||||
|
|
||||||
// Try to open the NFC reader
|
// Try to open the NFC reader
|
||||||
pndReader = INVALID_DEVICE_INFO;
|
pndReader = NULL;
|
||||||
while (pndReader == INVALID_DEVICE_INFO) pndReader = nfc_connect(NULL);
|
while (pndReader == NULL) pndReader = nfc_connect(NULL);
|
||||||
printf("[+] Configuring NFC reader settings\n");
|
printf("[+] Configuring NFC reader settings\n");
|
||||||
nfc_configure(pndReader,DCO_HANDLE_CRC,false);
|
nfc_configure(pndReader,DCO_HANDLE_CRC,false);
|
||||||
nfc_configure(pndReader,DCO_HANDLE_PARITY,false);
|
nfc_configure(pndReader,DCO_HANDLE_PARITY,false);
|
||||||
|
|
|
@ -25,6 +25,8 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <nfc.h>
|
#include <nfc.h>
|
||||||
|
|
||||||
|
#define MAX_FRAME_LEN 264
|
||||||
|
|
||||||
int main(int argc, const char *argv[])
|
int main(int argc, const char *argv[])
|
||||||
{
|
{
|
||||||
nfc_device_t *pnd;
|
nfc_device_t *pnd;
|
||||||
|
|
|
@ -24,6 +24,8 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <nfc.h>
|
#include <nfc.h>
|
||||||
|
|
||||||
|
#define MAX_FRAME_LEN 264
|
||||||
|
|
||||||
int main(int argc, const char *argv[])
|
int main(int argc, const char *argv[])
|
||||||
{
|
{
|
||||||
byte_t abtRecv[MAX_FRAME_LEN];
|
byte_t abtRecv[MAX_FRAME_LEN];
|
||||||
|
|
|
@ -19,7 +19,7 @@ IF(LIBNFC_USB)
|
||||||
FIND_PACKAGE(LIBUSB REQUIRED)
|
FIND_PACKAGE(LIBUSB REQUIRED)
|
||||||
ADD_DEFINITIONS("-DHAVE_LIBUSB=1")
|
ADD_DEFINITIONS("-DHAVE_LIBUSB=1")
|
||||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBUSB_CFLAGS_OTHER}")
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBUSB_CFLAGS_OTHER}")
|
||||||
SET(DRIVERS_SOURCES ${DRIVERS_SOURCES} "drivers/pn531" "drivers/pn533")
|
SET(DRIVERS_SOURCES ${DRIVERS_SOURCES} "drivers/pn531_usb" "drivers/pn533_usb")
|
||||||
ENDIF(LIBNFC_USB)
|
ENDIF(LIBNFC_USB)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ SUBDIRS = buses drivers .
|
||||||
# set the include path found by configure
|
# set the include path found by configure
|
||||||
INCLUDES= $(all_includes)
|
INCLUDES= $(all_includes)
|
||||||
|
|
||||||
nfcinclude_HEADERS = nfc.h nfc-defines.h nfc-types.h buses.h drivers.h nfc-messages.h bitutils.h
|
nfcinclude_HEADERS = nfc.h nfc-types.h buses.h drivers.h nfc-messages.h bitutils.h
|
||||||
nfcincludedir = $(includedir)/nfc
|
nfcincludedir = $(includedir)/nfc
|
||||||
|
|
||||||
lib_LTLIBRARIES = libnfc.la
|
lib_LTLIBRARIES = libnfc.la
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "nfc-defines.h"
|
|
||||||
#include "nfc-types.h"
|
#include "nfc-types.h"
|
||||||
|
|
||||||
// Handle platform specific includes
|
// Handle platform specific includes
|
||||||
|
|
|
@ -17,33 +17,40 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @file devices.h
|
* @file drivers.h
|
||||||
* @brief
|
* @brief
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LIBNFC_DEVICES_H_
|
#ifndef _LIBNFC_DEVICES_H_
|
||||||
#define _LIBNFC_DEVICES_H_
|
#define _LIBNFC_DEVICES_H_
|
||||||
|
|
||||||
#include "nfc-defines.h"
|
|
||||||
#include "nfc-types.h"
|
#include "nfc-types.h"
|
||||||
|
|
||||||
#ifdef HAVE_PCSC_LITE
|
#ifdef HAVE_PCSC_LITE
|
||||||
#include "drivers/acr122.h"
|
#include "drivers/acr122.h"
|
||||||
#endif /* HAVE_PCSC_LITE */
|
#endif /* HAVE_PCSC_LITE */
|
||||||
|
|
||||||
#ifdef HAVE_LIBUSB
|
#ifdef HAVE_LIBUSB
|
||||||
#include "drivers/pn531.h"
|
#include "drivers/pn531_usb.h"
|
||||||
#include "drivers/pn533.h"
|
#include "drivers/pn533_usb.h"
|
||||||
#endif /* HAVE_LIBUSB */
|
#endif /* HAVE_LIBUSB */
|
||||||
|
|
||||||
#include "drivers/arygon.h"
|
#include "drivers/arygon.h"
|
||||||
#include "drivers/pn532_uart.h"
|
#include "drivers/pn532_uart.h"
|
||||||
|
|
||||||
|
#define DRIVERS_MAX_DEVICES 16
|
||||||
|
#define INVALID_DEVICE_INFO 0
|
||||||
|
#define MAX_FRAME_LEN 264
|
||||||
|
|
||||||
const static struct driver_callbacks drivers_callbacks_list[] = {
|
const static struct driver_callbacks drivers_callbacks_list[] = {
|
||||||
// Driver Name Connect Transceive Disconnect
|
// Driver Name Connect Transceive Disconnect
|
||||||
#ifdef HAVE_PCSC_LITE
|
#ifdef HAVE_PCSC_LITE
|
||||||
{ "ACR122", acr122_connect, acr122_transceive, acr122_disconnect },
|
{ "ACR122", acr122_connect, acr122_transceive, acr122_disconnect },
|
||||||
#endif /* HAVE_PCSC_LITE */
|
#endif /* HAVE_PCSC_LITE */
|
||||||
#ifdef HAVE_LIBUSB
|
#ifdef HAVE_LIBUSB
|
||||||
{ "PN531USB", pn531_connect, pn531_transceive, pn531_disconnect },
|
{ "PN531USB", pn531_usb_connect, pn531_usb_transceive, pn531_usb_disconnect },
|
||||||
{ "PN533USB", pn533_connect, pn533_transceive, pn533_disconnect },
|
{ "PN533USB", pn533_usb_connect, pn533_usb_transceive, pn533_usb_disconnect },
|
||||||
#endif /* HAVE_LIBUSB */
|
#endif /* HAVE_LIBUSB */
|
||||||
{ "PN532_UART", pn532_uart_connect, pn532_uart_transceive, pn532_uart_disconnect },
|
{ "PN532_UART", pn532_uart_connect, pn532_uart_transceive, pn532_uart_disconnect },
|
||||||
{ "ARYGON", arygon_connect, arygon_transceive, arygon_disconnect }
|
{ "ARYGON", arygon_connect, arygon_transceive, arygon_disconnect }
|
||||||
|
|
|
@ -15,9 +15,9 @@ if PCSC_LITE_ENABLED
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if LIBUSB_ENABLED
|
if LIBUSB_ENABLED
|
||||||
noinst_HEADERS += pn531.h pn533.h
|
noinst_HEADERS += pn531_usb.h pn533_usb.h
|
||||||
libnfcdrivers_la_CFLAGS += @LIBUSB_CFLAGS@ -DHAVE_LIBUSB
|
libnfcdrivers_la_CFLAGS += @LIBUSB_CFLAGS@ -DHAVE_LIBUSB
|
||||||
libnfcdrivers_la_SOURCES += pn531.c pn533.c
|
libnfcdrivers_la_SOURCES += pn531_usb.c pn533_usb.c
|
||||||
libnfcdrivers_la_LIBADD += @LIBUSB_LIBS@
|
libnfcdrivers_la_LIBADD += @LIBUSB_LIBS@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -27,13 +27,17 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "../drivers.h"
|
||||||
|
|
||||||
|
// Bus
|
||||||
#include <winscard.h>
|
#include <winscard.h>
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
#include <wintypes.h>
|
#include <wintypes.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "nfc-defines.h"
|
|
||||||
#include "nfc-messages.h"
|
#include "nfc-messages.h"
|
||||||
|
|
||||||
// WINDOWS: #define IOCTL_CCID_ESCAPE_SCARD_CTL_CODE SCARD_CTL_CODE(3500)
|
// WINDOWS: #define IOCTL_CCID_ESCAPE_SCARD_CTL_CODE SCARD_CTL_CODE(3500)
|
||||||
|
@ -59,8 +63,8 @@ typedef struct {
|
||||||
|
|
||||||
nfc_device_t* acr122_connect(const nfc_device_desc_t* pndd)
|
nfc_device_t* acr122_connect(const nfc_device_desc_t* pndd)
|
||||||
{
|
{
|
||||||
char* pacReaders[MAX_DEVICES];
|
char* pacReaders[DRIVERS_MAX_DEVICES];
|
||||||
char acList[256+64*MAX_DEVICES];
|
char acList[256+64*DRIVERS_MAX_DEVICES];
|
||||||
size_t szListLen = sizeof(acList);
|
size_t szListLen = sizeof(acList);
|
||||||
size_t szPos;
|
size_t szPos;
|
||||||
uint32_t uiReaderCount;
|
uint32_t uiReaderCount;
|
||||||
|
@ -88,7 +92,7 @@ nfc_device_t* acr122_connect(const nfc_device_desc_t* pndd)
|
||||||
for (szPos=0; szPos<szListLen; szPos++)
|
for (szPos=0; szPos<szListLen; szPos++)
|
||||||
{
|
{
|
||||||
// Make sure don't break out of our reader array
|
// Make sure don't break out of our reader array
|
||||||
if (uiReaderCount == MAX_DEVICES) break;
|
if (uiReaderCount == DRIVERS_MAX_DEVICES) break;
|
||||||
|
|
||||||
// Test if there is a next reader available
|
// Test if there is a next reader available
|
||||||
if (acList[szPos] == 0x00)
|
if (acList[szPos] == 0x00)
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include "nfc-defines.h"
|
|
||||||
#include "nfc-types.h"
|
#include "nfc-types.h"
|
||||||
|
|
||||||
// Functions used by developer to handle connection to this device
|
// Functions used by developer to handle connection to this device
|
||||||
|
|
|
@ -23,9 +23,12 @@
|
||||||
|
|
||||||
#include "arygon.h"
|
#include "arygon.h"
|
||||||
|
|
||||||
#include "uart.h"
|
|
||||||
#include "nfc-messages.h"
|
#include "nfc-messages.h"
|
||||||
|
|
||||||
|
#include "../drivers.h"
|
||||||
|
// Bus
|
||||||
|
#include "uart.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#define SERIAL_STRING "COM"
|
#define SERIAL_STRING "COM"
|
||||||
#define delay_ms( X ) Sleep( X )
|
#define delay_ms( X ) Sleep( X )
|
||||||
|
@ -86,7 +89,7 @@ nfc_device_t* arygon_connect(const nfc_device_desc_t* pndd)
|
||||||
#else
|
#else
|
||||||
DBG("Trying to find ARYGON device on serial port: %s# at %d bauds.",SERIAL_STRING, SERIAL_DEFAULT_PORT_SPEED);
|
DBG("Trying to find ARYGON device on serial port: %s# at %d bauds.",SERIAL_STRING, SERIAL_DEFAULT_PORT_SPEED);
|
||||||
// I have no idea how MAC OS X deals with multiple devices, so a quick workaround
|
// I have no idea how MAC OS X deals with multiple devices, so a quick workaround
|
||||||
for (uiDevNr=0; uiDevNr<MAX_DEVICES; uiDevNr++)
|
for (uiDevNr=0; uiDevNr<DRIVERS_MAX_DEVICES; uiDevNr++)
|
||||||
{
|
{
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
strcpy(acConnect,SERIAL_STRING);
|
strcpy(acConnect,SERIAL_STRING);
|
||||||
|
@ -107,7 +110,7 @@ nfc_device_t* arygon_connect(const nfc_device_desc_t* pndd)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
// Test if we have found a device
|
// Test if we have found a device
|
||||||
if (uiDevNr == MAX_DEVICES) return INVALID_DEVICE_INFO;
|
if (uiDevNr == DRIVERS_MAX_DEVICES) return INVALID_DEVICE_INFO;
|
||||||
} else {
|
} else {
|
||||||
DBG("Connecting to: %s at %d bauds.",pndd->pcPort, pndd->uiSpeed);
|
DBG("Connecting to: %s at %d bauds.",pndd->pcPort, pndd->uiSpeed);
|
||||||
strcpy(acConnect,pndd->pcPort);
|
strcpy(acConnect,pndd->pcPort);
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#ifndef _LIBNFC_DEV_ARYGON_H_
|
#ifndef _LIBNFC_DEV_ARYGON_H_
|
||||||
#define _LIBNFC_DEV_ARYGON_H_
|
#define _LIBNFC_DEV_ARYGON_H_
|
||||||
|
|
||||||
#include "nfc-defines.h"
|
|
||||||
#include "nfc-types.h"
|
#include "nfc-types.h"
|
||||||
|
|
||||||
// Functions used by developer to handle connection to this device
|
// Functions used by developer to handle connection to this device
|
||||||
|
|
|
@ -17,22 +17,24 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @file pn531.c
|
* @file pn531_usb.c
|
||||||
* @brief
|
* @brief Driver for PN531 chip using USB
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Thanks to d18c7db and Okko for example code
|
Thanks to d18c7db and Okko for example code
|
||||||
*/
|
*/
|
||||||
|
#include "pn531_usb.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
#include <usb.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "nfc-defines.h"
|
#include "../drivers.h"
|
||||||
#include "pn531.h"
|
|
||||||
|
// Bus
|
||||||
|
#include <usb.h>
|
||||||
|
|
||||||
#include "nfc-messages.h"
|
#include "nfc-messages.h"
|
||||||
|
|
||||||
#define BUFFER_LENGTH 256
|
#define BUFFER_LENGTH 256
|
||||||
|
@ -42,10 +44,10 @@ typedef struct {
|
||||||
usb_dev_handle* pudh;
|
usb_dev_handle* pudh;
|
||||||
uint32_t uiEndPointIn;
|
uint32_t uiEndPointIn;
|
||||||
uint32_t uiEndPointOut;
|
uint32_t uiEndPointOut;
|
||||||
} dev_spec_pn531;
|
} dev_spec_pn531_usb;
|
||||||
|
|
||||||
// Find transfer endpoints for bulk transfers
|
// Find transfer endpoints for bulk transfers
|
||||||
static void get_end_points(struct usb_device *dev, dev_spec_pn531* pdsp)
|
static void get_end_points(struct usb_device *dev, dev_spec_pn531_usb* pdsp)
|
||||||
{
|
{
|
||||||
uint32_t uiIndex;
|
uint32_t uiIndex;
|
||||||
uint32_t uiEndPoint;
|
uint32_t uiEndPoint;
|
||||||
|
@ -80,7 +82,7 @@ static void get_end_points(struct usb_device *dev, dev_spec_pn531* pdsp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nfc_device_t* pn531_connect(const nfc_device_desc_t* pndd)
|
nfc_device_t* pn531_usb_connect(const nfc_device_desc_t* pndd)
|
||||||
{
|
{
|
||||||
int idvendor = 0x04CC;
|
int idvendor = 0x04CC;
|
||||||
int idproduct = 0x0531;
|
int idproduct = 0x0531;
|
||||||
|
@ -89,8 +91,8 @@ nfc_device_t* pn531_connect(const nfc_device_desc_t* pndd)
|
||||||
struct usb_bus *bus;
|
struct usb_bus *bus;
|
||||||
struct usb_device *dev;
|
struct usb_device *dev;
|
||||||
nfc_device_t* pnd = INVALID_DEVICE_INFO;
|
nfc_device_t* pnd = INVALID_DEVICE_INFO;
|
||||||
dev_spec_pn531* pdsp;
|
dev_spec_pn531_usb* pdsp;
|
||||||
dev_spec_pn531 dsp;
|
dev_spec_pn531_usb dsp;
|
||||||
uint32_t uiDevIndex;
|
uint32_t uiDevIndex;
|
||||||
|
|
||||||
dsp.uiEndPointIn = 0;
|
dsp.uiEndPointIn = 0;
|
||||||
|
@ -145,7 +147,7 @@ nfc_device_t* pn531_connect(const nfc_device_desc_t* pndd)
|
||||||
return INVALID_DEVICE_INFO;
|
return INVALID_DEVICE_INFO;
|
||||||
}
|
}
|
||||||
// Allocate memory for the device info and specification, fill it and return the info
|
// Allocate memory for the device info and specification, fill it and return the info
|
||||||
pdsp = malloc(sizeof(dev_spec_pn531));
|
pdsp = malloc(sizeof(dev_spec_pn531_usb));
|
||||||
*pdsp = dsp;
|
*pdsp = dsp;
|
||||||
pnd = malloc(sizeof(nfc_device_t));
|
pnd = malloc(sizeof(nfc_device_t));
|
||||||
strcpy(pnd->acName,"PN531USB");
|
strcpy(pnd->acName,"PN531USB");
|
||||||
|
@ -162,22 +164,22 @@ nfc_device_t* pn531_connect(const nfc_device_desc_t* pndd)
|
||||||
return pnd;
|
return pnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
void pn531_disconnect(nfc_device_t* pnd)
|
void pn531_usb_disconnect(nfc_device_t* pnd)
|
||||||
{
|
{
|
||||||
dev_spec_pn531* pdsp = (dev_spec_pn531*)pnd->ds;
|
dev_spec_pn531_usb* pdsp = (dev_spec_pn531_usb*)pnd->ds;
|
||||||
usb_release_interface(pdsp->pudh,0);
|
usb_release_interface(pdsp->pudh,0);
|
||||||
usb_close(pdsp->pudh);
|
usb_close(pdsp->pudh);
|
||||||
free(pnd->ds);
|
free(pnd->ds);
|
||||||
free(pnd);
|
free(pnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool pn531_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen)
|
bool pn531_usb_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen)
|
||||||
{
|
{
|
||||||
size_t uiPos = 0;
|
size_t uiPos = 0;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
byte_t abtTx[BUFFER_LENGTH] = { 0x00, 0x00, 0xff }; // Every packet must start with "00 00 ff"
|
byte_t abtTx[BUFFER_LENGTH] = { 0x00, 0x00, 0xff }; // Every packet must start with "00 00 ff"
|
||||||
byte_t abtRx[BUFFER_LENGTH];
|
byte_t abtRx[BUFFER_LENGTH];
|
||||||
dev_spec_pn531* pdsp = (dev_spec_pn531*)ds;
|
dev_spec_pn531_usb* pdsp = (dev_spec_pn531_usb*)ds;
|
||||||
|
|
||||||
// Packet length = data length (len) + checksum (1) + end of stream marker (1)
|
// Packet length = data length (len) + checksum (1) + end of stream marker (1)
|
||||||
abtTx[3] = szTxLen;
|
abtTx[3] = szTxLen;
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @file pn531.h
|
* @file pn531_usb.h
|
||||||
* @brief
|
* @brief
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -27,15 +27,15 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include "nfc-defines.h"
|
|
||||||
#include "nfc-types.h"
|
#include "nfc-types.h"
|
||||||
|
|
||||||
// Functions used by developer to handle connection to this device
|
// Functions used by developer to handle connection to this device
|
||||||
nfc_device_t* pn531_connect(const nfc_device_desc_t* pndd);
|
nfc_device_t* pn531_usb_connect(const nfc_device_desc_t* pndd);
|
||||||
void pn531_disconnect(nfc_device_t* pnd);
|
void pn531_usb_disconnect(nfc_device_t* pnd);
|
||||||
|
|
||||||
// Callback function used by libnfc to transmit commands to the PN53X chip
|
// Callback function used by libnfc to transmit commands to the PN53X chip
|
||||||
bool pn531_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen);
|
bool pn531_usb_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen);
|
||||||
|
|
||||||
#endif // _LIBNFC_DEV_PN531_H_
|
#endif // _LIBNFC_DEV_PN531_H_
|
||||||
|
|
||||||
|
|
|
@ -23,9 +23,13 @@
|
||||||
|
|
||||||
#include "pn532_uart.h"
|
#include "pn532_uart.h"
|
||||||
|
|
||||||
#include "uart.h"
|
|
||||||
#include "nfc-messages.h"
|
#include "nfc-messages.h"
|
||||||
|
|
||||||
|
#include "../drivers.h"
|
||||||
|
|
||||||
|
// Bus
|
||||||
|
#include "uart.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#define SERIAL_STRING "COM"
|
#define SERIAL_STRING "COM"
|
||||||
#define delay_ms( X ) Sleep( X )
|
#define delay_ms( X ) Sleep( X )
|
||||||
|
@ -61,7 +65,7 @@ nfc_device_t* pn532_uart_connect(const nfc_device_desc_t* pndd)
|
||||||
#else
|
#else
|
||||||
DBG("Trying to find ARYGON device on serial port: %s# at %d bauds.",SERIAL_STRING, SERIAL_DEFAULT_PORT_SPEED);
|
DBG("Trying to find ARYGON device on serial port: %s# at %d bauds.",SERIAL_STRING, SERIAL_DEFAULT_PORT_SPEED);
|
||||||
// I have no idea how MAC OS X deals with multiple devices, so a quick workaround
|
// I have no idea how MAC OS X deals with multiple devices, so a quick workaround
|
||||||
for (uiDevNr=0; uiDevNr<MAX_DEVICES; uiDevNr++)
|
for (uiDevNr=0; uiDevNr<DRIVERS_MAX_DEVICES; uiDevNr++)
|
||||||
{
|
{
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
strcpy(acConnect,SERIAL_STRING);
|
strcpy(acConnect,SERIAL_STRING);
|
||||||
|
@ -82,7 +86,7 @@ nfc_device_t* pn532_uart_connect(const nfc_device_desc_t* pndd)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
// Test if we have found a device
|
// Test if we have found a device
|
||||||
if (uiDevNr == MAX_DEVICES) return INVALID_DEVICE_INFO;
|
if (uiDevNr == DRIVERS_MAX_DEVICES) return INVALID_DEVICE_INFO;
|
||||||
} else {
|
} else {
|
||||||
DBG("Connecting to: %s at %d bauds.",pndd->pcPort, pndd->uiSpeed);
|
DBG("Connecting to: %s at %d bauds.",pndd->pcPort, pndd->uiSpeed);
|
||||||
strcpy(acConnect,pndd->pcPort);
|
strcpy(acConnect,pndd->pcPort);
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#ifndef _LIBNFC_DEV_PN532_UART_H_
|
#ifndef _LIBNFC_DEV_PN532_UART_H_
|
||||||
#define _LIBNFC_DEV_PN532_UART_H_
|
#define _LIBNFC_DEV_PN532_UART_H_
|
||||||
|
|
||||||
#include "nfc-defines.h"
|
|
||||||
#include "nfc-types.h"
|
#include "nfc-types.h"
|
||||||
|
|
||||||
// Functions used by developer to handle connection to this device
|
// Functions used by developer to handle connection to this device
|
||||||
|
|
|
@ -17,20 +17,23 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @file pn533.c
|
* @file pn533_usb.c
|
||||||
* @brief
|
* @brief Driver for PN533 chip using USB
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Thanks to d18c7db and Okko for example code
|
Thanks to d18c7db and Okko for example code
|
||||||
*/
|
*/
|
||||||
#include "pn533.h"
|
#include "pn533_usb.h"
|
||||||
|
|
||||||
#include <usb.h>
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "nfc-defines.h"
|
#include "../drivers.h"
|
||||||
|
|
||||||
|
// Bus
|
||||||
|
#include <usb.h>
|
||||||
|
|
||||||
#include "nfc-messages.h"
|
#include "nfc-messages.h"
|
||||||
|
|
||||||
#define BUFFER_LENGTH 256
|
#define BUFFER_LENGTH 256
|
||||||
|
@ -40,10 +43,10 @@ typedef struct {
|
||||||
usb_dev_handle* pudh;
|
usb_dev_handle* pudh;
|
||||||
uint32_t uiEndPointIn;
|
uint32_t uiEndPointIn;
|
||||||
uint32_t uiEndPointOut;
|
uint32_t uiEndPointOut;
|
||||||
} dev_spec_pn533;
|
} dev_spec_pn533_usb;
|
||||||
|
|
||||||
// Find transfer endpoints for bulk transfers
|
// Find transfer endpoints for bulk transfers
|
||||||
static void get_end_points(struct usb_device *dev, dev_spec_pn533* pdsp)
|
static void get_end_points(struct usb_device *dev, dev_spec_pn533_usb* pdsp)
|
||||||
{
|
{
|
||||||
uint32_t uiIndex;
|
uint32_t uiIndex;
|
||||||
uint32_t uiEndPoint;
|
uint32_t uiEndPoint;
|
||||||
|
@ -78,15 +81,15 @@ static void get_end_points(struct usb_device *dev, dev_spec_pn533* pdsp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nfc_device_t* pn533_connect(const nfc_device_desc_t* pndd)
|
nfc_device_t* pn533_usb_connect(const nfc_device_desc_t* pndd)
|
||||||
{
|
{
|
||||||
int idvendor = 0x04e6;
|
int idvendor = 0x04e6;
|
||||||
int idproduct = 0x5591;
|
int idproduct = 0x5591;
|
||||||
struct usb_bus *bus;
|
struct usb_bus *bus;
|
||||||
struct usb_device *dev;
|
struct usb_device *dev;
|
||||||
nfc_device_t* pnd = INVALID_DEVICE_INFO;
|
nfc_device_t* pnd = INVALID_DEVICE_INFO;
|
||||||
dev_spec_pn533* pdsp;
|
dev_spec_pn533_usb* pdsp;
|
||||||
dev_spec_pn533 dsp;
|
dev_spec_pn533_usb dsp;
|
||||||
uint32_t uiDevIndex;
|
uint32_t uiDevIndex;
|
||||||
|
|
||||||
dsp.uiEndPointIn = 0;
|
dsp.uiEndPointIn = 0;
|
||||||
|
@ -140,7 +143,7 @@ nfc_device_t* pn533_connect(const nfc_device_desc_t* pndd)
|
||||||
return INVALID_DEVICE_INFO;
|
return INVALID_DEVICE_INFO;
|
||||||
}
|
}
|
||||||
// Allocate memory for the device info and specification, fill it and return the info
|
// Allocate memory for the device info and specification, fill it and return the info
|
||||||
pdsp = malloc(sizeof(dev_spec_pn533));
|
pdsp = malloc(sizeof(dev_spec_pn533_usb));
|
||||||
*pdsp = dsp;
|
*pdsp = dsp;
|
||||||
pnd = malloc(sizeof(nfc_device_t));
|
pnd = malloc(sizeof(nfc_device_t));
|
||||||
strcpy(pnd->acName,"PN533USB");
|
strcpy(pnd->acName,"PN533USB");
|
||||||
|
@ -157,22 +160,22 @@ nfc_device_t* pn533_connect(const nfc_device_desc_t* pndd)
|
||||||
return pnd;
|
return pnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
void pn533_disconnect(nfc_device_t* pnd)
|
void pn533_usb_disconnect(nfc_device_t* pnd)
|
||||||
{
|
{
|
||||||
dev_spec_pn533* pdsp = (dev_spec_pn533*)pnd->ds;
|
dev_spec_pn533_usb* pdsp = (dev_spec_pn533_usb*)pnd->ds;
|
||||||
usb_release_interface(pdsp->pudh,0);
|
usb_release_interface(pdsp->pudh,0);
|
||||||
usb_close(pdsp->pudh);
|
usb_close(pdsp->pudh);
|
||||||
free(pnd->ds);
|
free(pnd->ds);
|
||||||
free(pnd);
|
free(pnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool pn533_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen)
|
bool pn533_usb_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen)
|
||||||
{
|
{
|
||||||
size_t uiPos = 0;
|
size_t uiPos = 0;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
byte_t abtTx[BUFFER_LENGTH] = { 0x00, 0x00, 0xff }; // Every packet must start with "00 00 ff"
|
byte_t abtTx[BUFFER_LENGTH] = { 0x00, 0x00, 0xff }; // Every packet must start with "00 00 ff"
|
||||||
byte_t abtRx[BUFFER_LENGTH];
|
byte_t abtRx[BUFFER_LENGTH];
|
||||||
dev_spec_pn533* pdsp = (dev_spec_pn533*)ds;
|
dev_spec_pn533_usb* pdsp = (dev_spec_pn533_usb*)ds;
|
||||||
|
|
||||||
// Packet length = data length (len) + checksum (1) + end of stream marker (1)
|
// Packet length = data length (len) + checksum (1) + end of stream marker (1)
|
||||||
abtTx[3] = szTxLen;
|
abtTx[3] = szTxLen;
|
||||||
|
|
|
@ -17,22 +17,22 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @file pn533.h
|
* @file pn533_usb.h
|
||||||
* @brief
|
* @brief
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LIBNFC_DEV_PN533_H_
|
#ifndef _LIBNFC_DEV_PN533_H_
|
||||||
#define _LIBNFC_DEV_PN533_H_
|
#define _LIBNFC_DEV_PN533_H_
|
||||||
|
|
||||||
#include "nfc-defines.h"
|
|
||||||
#include "nfc-types.h"
|
#include "nfc-types.h"
|
||||||
|
|
||||||
// Functions used by developer to handle connection to this device
|
// Functions used by developer to handle connection to this device
|
||||||
nfc_device_t* pn533_connect(const nfc_device_desc_t* pndd);
|
nfc_device_t* pn533_usb_connect(const nfc_device_desc_t* pndd);
|
||||||
void pn533_disconnect(nfc_device_t* pnd);
|
void pn533_usb_disconnect(nfc_device_t* pnd);
|
||||||
|
|
||||||
// Callback function used by libnfc to transmit commands to the PN53X chip
|
// Callback function used by libnfc to transmit commands to the PN53X chip
|
||||||
bool pn533_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen);
|
bool pn533_usb_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen);
|
||||||
|
|
||||||
#endif // _LIBNFC_DEV_PN533_H_
|
#endif // _LIBNFC_DEV_PN533_H_
|
||||||
|
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
/**
|
|
||||||
* Public platform independent Near Field Communication (NFC) library
|
|
||||||
*
|
|
||||||
* Copyright (C) 2009, Roel Verdult
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU Lesser General Public License as published by the
|
|
||||||
* Free Software Foundation, either version 3 of the License, or (at your
|
|
||||||
* option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
||||||
* more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @file nfc-defines.h
|
|
||||||
* @brief
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __NFC_DEFINES_H__
|
|
||||||
#define __NFC_DEFINES_H__
|
|
||||||
|
|
||||||
/* DEBUG flag can also be enabled using ./configure --enable-debug */
|
|
||||||
/* #define DEBUG */
|
|
||||||
|
|
||||||
#define INVALID_DEVICE_INFO 0
|
|
||||||
#define MAX_FRAME_LEN 264
|
|
||||||
#define MAX_DEVICES 16
|
|
||||||
|
|
||||||
#endif // _LIBNFC_DEFINES_H_
|
|
|
@ -29,7 +29,7 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include "nfc-defines.h"
|
|
||||||
#include "nfc-types.h"
|
#include "nfc-types.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
Loading…
Reference in a new issue