It now compile using Autotools.

This commit is contained in:
Romuald Conty 2009-11-04 10:14:17 +00:00
parent 4a5945e67d
commit 14a9112dea
32 changed files with 193 additions and 192 deletions

View file

@ -165,8 +165,11 @@ fi
AC_CONFIG_FILES([ AC_CONFIG_FILES([
Makefile Makefile
src/Makefile src/lib/buses/Makefile
src/lib/drivers/Makefile
src/lib/Makefile
src/examples/Makefile src/examples/Makefile
src/Makefile
libnfc.pc libnfc.pc
Doxyfile Doxyfile
]) ])

View file

@ -1,7 +1,7 @@
prefix=@prefix@ prefix=@prefix@
exec_prefix=@exec_prefix@ exec_prefix=@exec_prefix@
libdir=@libdir@ libdir=@libdir@
includedir=@includedir@/@PACKAGE@ includedir=@includedir@/nfc
Name: libnfc Name: libnfc
Description: Near Field Communication (NFC) library Description: Near Field Communication (NFC) library
Version: @VERSION@ Version: @VERSION@

View file

@ -1,30 +1,3 @@
SUBDIRS = . examples SUBDIRS = lib examples
# set the include path found by configure
INCLUDES= $(all_includes)
nfc_devices_headers = dev_arygon.h dev_pn532_uart.h
nfcinclude_HEADERS = libnfc.h bitutils.h defines.h types.h rs232.h devices.h messages.h
nfcinclude_HEADERS += $(nfc_devices_headers)
nfcincludedir = $(includedir)/libnfc
lib_LTLIBRARIES = libnfc.la
libnfc_la_SOURCES = bitutils.c libnfc.c rs232.c dev_arygon.c dev_pn532_uart.c
libnfc_la_CFLAGS =
libnfc_la_LIBADD =
if PCSC_LITE_ENABLED
nfcinclude_HEADERS += dev_acr122.h
libnfc_la_CFLAGS += @LIBPCSCLITE_CFLAGS@ -DHAVE_PCSC_LITE
libnfc_la_SOURCES += dev_acr122.c
libnfc_la_LIBADD += @LIBPCSCLITE_LIBS@
endif
if LIBUSB_ENABLED
nfcinclude_HEADERS += dev_pn531.h dev_pn533.h
libnfc_la_CFLAGS += @LIBUSB_CFLAGS@ -DHAVE_LIBUSB
libnfc_la_SOURCES += dev_pn531.c dev_pn533.c
libnfc_la_LIBADD += @LIBUSB_LIBS@
endif
DISTCLEANFILES = Makefile.in DISTCLEANFILES = Makefile.in

View file

@ -4,36 +4,34 @@ bin_PROGRAMS = nfc-anticol nfc-list nfc-mfclassic nfc-mfultralight nfc-relay nfc
INCLUDES= $(all_includes) INCLUDES= $(all_includes)
nfcinclude_HEADERS = mifaretag.h mifareultag.h nfcinclude_HEADERS = mifaretag.h mifareultag.h
nfcincludedir = $(includedir)/libnfc nfcincludedir = $(includedir)/nfc
AM_CFLAGS = -I$(top_srcdir)/src AM_CFLAGS = -I$(top_srcdir)/src/lib
nfc_anticol_SOURCES = nfc-anticol.c nfc_anticol_SOURCES = nfc-anticol.c
nfc_anticol_LDADD = $(top_builddir)/src/libnfc.la nfc_anticol_LDADD = $(top_builddir)/src/lib/libnfc.la
nfc_list_SOURCES = nfc-list.c nfc_list_SOURCES = nfc-list.c
nfc_list_LDADD = $(top_builddir)/src/libnfc.la nfc_list_LDADD = $(top_builddir)/src/lib/libnfc.la
nfc_mfultralight_SOURCES = nfc-mfultralight.c mifareultag.h nfc_mfultralight_SOURCES = nfc-mfultralight.c mifareultag.h
nfc_mfultralight_LDADD = $(top_builddir)/src/libnfc.la nfc_mfultralight_LDADD = $(top_builddir)/src/lib/libnfc.la
nfc_mfclassic_SOURCES = nfc-mfclassic.c mifaretag.h nfc_mfclassic_SOURCES = nfc-mfclassic.c mifaretag.h
nfc_mfclassic_LDADD = $(top_builddir)/src/libnfc.la nfc_mfclassic_LDADD = $(top_builddir)/src/lib/libnfc.la
nfc_relay_SOURCES = nfc-relay.c nfc_relay_SOURCES = nfc-relay.c
nfc_relay_LDADD = $(top_builddir)/src/libnfc.la nfc_relay_LDADD = $(top_builddir)/src/lib/libnfc.la
nfc_emulate_SOURCES = nfc-emulate.c nfc_emulate_SOURCES = nfc-emulate.c
nfc_emulate_LDADD = $(top_builddir)/src/libnfc.la nfc_emulate_LDADD = $(top_builddir)/src/lib/libnfc.la
nfcip_target_SOURCES = nfcip-target.c nfcip_target_SOURCES = nfcip-target.c
nfcip_target_LDADD = $(top_builddir)/src/libnfc.la nfcip_target_LDADD = $(top_builddir)/src/lib/libnfc.la
nfcip_initiator_SOURCES = nfcip-initiator.c nfcip_initiator_SOURCES = nfcip-initiator.c
nfcip_initiator_LDADD = $(top_builddir)/src/libnfc.la nfcip_initiator_LDADD = $(top_builddir)/src/lib/libnfc.la
dist_man_MANS = nfc-anticol.1 nfc-emulate.1 nfc-list.1 nfc-mfclassic.1 nfc-mfultralight.1 nfc-relay.1 dist_man_MANS = nfc-anticol.1 nfc-emulate.1 nfc-list.1 nfc-mfclassic.1 nfc-mfultralight.1 nfc-relay.1
#dist_man_MANS = $(man_MANS)
#EXTRA_DIST = $(man_MANS)
DISTCLEANFILES = Makefile.in DISTCLEANFILES = Makefile.in

View file

@ -28,7 +28,7 @@
#include <stdbool.h> #include <stdbool.h>
#include <string.h> #include <string.h>
#include "libnfc.h" #include <nfc.h>
#include "messages.h" #include "messages.h"
#include "bitutils.h" #include "bitutils.h"

View file

@ -27,7 +27,7 @@
#include <stdint.h> #include <stdint.h>
#include <string.h> #include <string.h>
#include "libnfc.h" #include <nfc.h>
#include "messages.h" #include "messages.h"
#include "bitutils.h" #include "bitutils.h"

View file

@ -27,7 +27,7 @@
#include <string.h> #include <string.h>
#include "libnfc.h" #include <nfc.h>
#include "messages.h" #include "messages.h"
#include "bitutils.h" #include "bitutils.h"

View file

@ -30,7 +30,7 @@
#include <string.h> #include <string.h>
#include <ctype.h> #include <ctype.h>
#include "libnfc.h" #include <nfc.h>
#include "mifaretag.h" #include "mifaretag.h"
#include "bitutils.h" #include "bitutils.h"

View file

@ -30,7 +30,7 @@
#include <string.h> #include <string.h>
#include <ctype.h> #include <ctype.h>
#include "libnfc.h" #include <nfc.h>
#include "mifareultag.h" #include "mifareultag.h"
#include "bitutils.h" #include "bitutils.h"

View file

@ -26,7 +26,7 @@
#include <stdint.h> #include <stdint.h>
#include <string.h> #include <string.h>
#include "libnfc.h" #include <nfc.h>
#include "messages.h" #include "messages.h"
#include "bitutils.h" #include "bitutils.h"

View file

@ -23,7 +23,7 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include "libnfc.h" #include <nfc.h>
int main(int argc, const char *argv[]) int main(int argc, const char *argv[])
{ {

View file

@ -22,7 +22,7 @@
*/ */
#include <stdio.h> #include <stdio.h>
#include "libnfc.h" #include <nfc.h>
int main(int argc, const char *argv[]) int main(int argc, const char *argv[])
{ {

17
src/lib/Makefile.am Normal file
View file

@ -0,0 +1,17 @@
SUBDIRS = buses drivers .
# set the include path found by configure
INCLUDES= $(all_includes)
nfcinclude_HEADERS = nfc.h defines.h types.h buses.h drivers.h messages.h bitutils.h
nfcincludedir = $(includedir)/nfc
lib_LTLIBRARIES = libnfc.la
libnfc_la_SOURCES = nfc.c bitutils.c
libnfc_la_LDFLAGS = -no-undefined -version-info=0:0:0
libnfc_la_CFLAGS =
libnfc_la_LIBADD = \
$(top_builddir)/src/lib/buses/libnfcbuses.la \
$(top_builddir)/src/lib/drivers/libnfcdrivers.la
DISTCLEANFILES = Makefile.in

View file

@ -5,5 +5,6 @@ INCLUDES= $(all_includes)
noinst_HEADERS = uart.h noinst_HEADERS = uart.h
noinst_LTLIBRARIES = libnfcbuses.la noinst_LTLIBRARIES = libnfcbuses.la
libnfcbuses_la_SOURCES = uart.c libnfcbuses_la_SOURCES = uart.c
libnfcbuses_la_CFLAGS = -I$(top_srcdir)/src/lib
DISTCLEANFILES = Makefile.in DISTCLEANFILES = Makefile.in

View file

@ -17,17 +17,17 @@
* 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 rs232.c * @file uart.c
* @brief * @brief
*/ */
/* /*
Based on rs232-code written by Teunis van Beelen available: Based on uart-code written by Teunis van Beelen available:
http://www.teuniz.net/RS-232/index.html http://www.teuniz.net/RS-232/index.html
*/ */
#include "rs232.h" #include "uart.h"
#include "messages.h" #include "messages.h"
@ -48,10 +48,10 @@ struct timeval tv = {
.tv_usec = 30000 // 30,000 micro seconds .tv_usec = 30000 // 30,000 micro seconds
}; };
// Work-around to claim rs232 interface using the c_iflag (software input processing) from the termios struct // Work-around to claim uart interface using the c_iflag (software input processing) from the termios struct
#define CCLAIMED 0x80000000 #define CCLAIMED 0x80000000
serial_port rs232_open(const char* pcPortName) serial_port uart_open(const char* pcPortName)
{ {
serial_port_unix* sp = malloc(sizeof(serial_port_unix)); serial_port_unix* sp = malloc(sizeof(serial_port_unix));
@ -60,20 +60,20 @@ serial_port rs232_open(const char* pcPortName)
sp->fd = open(pcPortName, O_RDWR | O_NOCTTY | O_NDELAY | O_NONBLOCK); sp->fd = open(pcPortName, O_RDWR | O_NOCTTY | O_NDELAY | O_NONBLOCK);
if(sp->fd == -1) if(sp->fd == -1)
{ {
rs232_close(sp); uart_close(sp);
return INVALID_SERIAL_PORT; return INVALID_SERIAL_PORT;
} }
if(tcgetattr(sp->fd,&sp->tiOld) == -1) if(tcgetattr(sp->fd,&sp->tiOld) == -1)
{ {
rs232_close(sp); uart_close(sp);
return INVALID_SERIAL_PORT; return INVALID_SERIAL_PORT;
} }
// Make sure the port is not claimed already // Make sure the port is not claimed already
if (sp->tiOld.c_iflag & CCLAIMED) if (sp->tiOld.c_iflag & CCLAIMED)
{ {
rs232_close(sp); uart_close(sp);
return CLAIMED_SERIAL_PORT; return CLAIMED_SERIAL_PORT;
} }
@ -90,7 +90,7 @@ serial_port rs232_open(const char* pcPortName)
if(tcsetattr(sp->fd,TCSANOW,&sp->tiNew) == -1) if(tcsetattr(sp->fd,TCSANOW,&sp->tiNew) == -1)
{ {
rs232_close(sp); uart_close(sp);
return INVALID_SERIAL_PORT; return INVALID_SERIAL_PORT;
} }
@ -98,7 +98,7 @@ serial_port rs232_open(const char* pcPortName)
return sp; return sp;
} }
void rs232_set_speed(serial_port sp, const uint32_t uiPortSpeed) void uart_set_speed(serial_port sp, const uint32_t uiPortSpeed)
{ {
DBG("Serial port speed requested to be set to %d bauds.", uiPortSpeed); DBG("Serial port speed requested to be set to %d bauds.", uiPortSpeed);
// Set port speed (Input and Output) // Set port speed (Input and Output)
@ -136,7 +136,7 @@ void rs232_set_speed(serial_port sp, const uint32_t uiPortSpeed)
} }
} }
uint32_t rs232_get_speed(const serial_port sp) uint32_t uart_get_speed(const serial_port sp)
{ {
uint32_t uiPortSpeed = 0; uint32_t uiPortSpeed = 0;
const serial_port_unix* spu = (serial_port_unix*)sp; const serial_port_unix* spu = (serial_port_unix*)sp;
@ -163,21 +163,21 @@ uint32_t rs232_get_speed(const serial_port sp)
return uiPortSpeed; return uiPortSpeed;
} }
void rs232_close(const serial_port sp) void uart_close(const serial_port sp)
{ {
tcsetattr(((serial_port_unix*)sp)->fd,TCSANOW,&((serial_port_unix*)sp)->tiOld); tcsetattr(((serial_port_unix*)sp)->fd,TCSANOW,&((serial_port_unix*)sp)->tiOld);
close(((serial_port_unix*)sp)->fd); close(((serial_port_unix*)sp)->fd);
free(sp); free(sp);
} }
bool rs232_cts(const serial_port sp) bool uart_cts(const serial_port sp)
{ {
char status; char status;
if (ioctl(((serial_port_unix*)sp)->fd,TIOCMGET,&status) < 0) return false; if (ioctl(((serial_port_unix*)sp)->fd,TIOCMGET,&status) < 0) return false;
return (status & TIOCM_CTS); return (status & TIOCM_CTS);
} }
bool rs232_receive(const serial_port sp, byte_t* pbtRx, size_t* pszRxLen) bool uart_receive(const serial_port sp, byte_t* pbtRx, size_t* pszRxLen)
{ {
int iResult; int iResult;
int byteCount; int byteCount;
@ -217,7 +217,7 @@ bool rs232_receive(const serial_port sp, byte_t* pbtRx, size_t* pszRxLen)
return (*pszRxLen > 0); return (*pszRxLen > 0);
} }
bool rs232_send(const serial_port sp, const byte_t* pbtTx, const size_t szTxLen) bool uart_send(const serial_port sp, const byte_t* pbtTx, const size_t szTxLen)
{ {
int iResult; int iResult;
iResult = write(((serial_port_unix*)sp)->fd,pbtTx,szTxLen); iResult = write(((serial_port_unix*)sp)->fd,pbtTx,szTxLen);
@ -233,7 +233,7 @@ typedef struct {
COMMTIMEOUTS ct; // Serial port time-out configuration COMMTIMEOUTS ct; // Serial port time-out configuration
} serial_port_windows; } serial_port_windows;
serial_port rs232_open(const char* pcPortName) serial_port uart_open(const char* pcPortName)
{ {
char acPortName[255]; char acPortName[255];
serial_port_windows* sp = malloc(sizeof(serial_port_windows)); serial_port_windows* sp = malloc(sizeof(serial_port_windows));
@ -246,7 +246,7 @@ serial_port rs232_open(const char* pcPortName)
sp->hPort = CreateFileA(acPortName,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL); sp->hPort = CreateFileA(acPortName,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
if (sp->hPort == INVALID_HANDLE_VALUE) if (sp->hPort == INVALID_HANDLE_VALUE)
{ {
rs232_close(sp); uart_close(sp);
return INVALID_SERIAL_PORT; return INVALID_SERIAL_PORT;
} }
@ -255,14 +255,14 @@ serial_port rs232_open(const char* pcPortName)
sp->dcb.DCBlength = sizeof(DCB); sp->dcb.DCBlength = sizeof(DCB);
if(!BuildCommDCBA("baud=9600 data=8 parity=N stop=1",&sp->dcb)) if(!BuildCommDCBA("baud=9600 data=8 parity=N stop=1",&sp->dcb))
{ {
rs232_close(sp); uart_close(sp);
return INVALID_SERIAL_PORT; return INVALID_SERIAL_PORT;
} }
// Update the active serial port // Update the active serial port
if(!SetCommState(sp->hPort,&sp->dcb)) if(!SetCommState(sp->hPort,&sp->dcb))
{ {
rs232_close(sp); uart_close(sp);
return INVALID_SERIAL_PORT; return INVALID_SERIAL_PORT;
} }
@ -274,7 +274,7 @@ serial_port rs232_open(const char* pcPortName)
if(!SetCommTimeouts(sp->hPort,&sp->ct)) if(!SetCommTimeouts(sp->hPort,&sp->ct))
{ {
rs232_close(sp); uart_close(sp);
return INVALID_SERIAL_PORT; return INVALID_SERIAL_PORT;
} }
@ -283,13 +283,13 @@ serial_port rs232_open(const char* pcPortName)
return sp; return sp;
} }
void rs232_close(const serial_port sp) void uart_close(const serial_port sp)
{ {
CloseHandle(((serial_port_windows*)sp)->hPort); CloseHandle(((serial_port_windows*)sp)->hPort);
free(sp); free(sp);
} }
void rs232_set_speed(serial_port sp, const uint32_t uiPortSpeed) void uart_set_speed(serial_port sp, const uint32_t uiPortSpeed)
{ {
serial_port_windows* spw; serial_port_windows* spw;
@ -316,7 +316,7 @@ void rs232_set_speed(serial_port sp, const uint32_t uiPortSpeed)
} }
} }
uint32_t rs232_get_speed(const serial_port sp) uint32_t uart_get_speed(const serial_port sp)
{ {
const serial_port_windows* spw = (serial_port_windows*)sp; const serial_port_windows* spw = (serial_port_windows*)sp;
if (!GetCommState(spw->hPort, (serial_port)&spw->dcb)) if (!GetCommState(spw->hPort, (serial_port)&spw->dcb))
@ -325,20 +325,13 @@ uint32_t rs232_get_speed(const serial_port sp)
return 0; return 0;
} }
bool rs232_cts(const serial_port sp) bool uart_receive(const serial_port sp, byte_t* pbtRx, size_t* pszRxLen)
{
DWORD dwStatus;
if (!GetCommModemStatus(((serial_port_windows*)sp)->hPort,&dwStatus)) return false;
return (dwStatus & MS_CTS_ON);
}
bool rs232_receive(const serial_port sp, byte_t* pbtRx, size_t* pszRxLen)
{ {
ReadFile(((serial_port_windows*)sp)->hPort,pbtRx,*pszRxLen,(LPDWORD)pszRxLen,NULL); ReadFile(((serial_port_windows*)sp)->hPort,pbtRx,*pszRxLen,(LPDWORD)pszRxLen,NULL);
return (*pszRxLen != 0); return (*pszRxLen != 0);
} }
bool rs232_send(const serial_port sp, const byte_t* pbtTx, const size_t szTxLen) bool uart_send(const serial_port sp, const byte_t* pbtTx, const size_t szTxLen)
{ {
DWORD dwTxLen = 0; DWORD dwTxLen = 0;
return WriteFile(((serial_port_windows*)sp)->hPort,pbtTx,szTxLen,&dwTxLen,NULL); return WriteFile(((serial_port_windows*)sp)->hPort,pbtTx,szTxLen,&dwTxLen,NULL);

View file

@ -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 rs232.h * @file uart.h
* @brief * @brief
*/ */
@ -49,16 +49,14 @@ typedef void* serial_port;
#define INVALID_SERIAL_PORT (void*)(~1) #define INVALID_SERIAL_PORT (void*)(~1)
#define CLAIMED_SERIAL_PORT (void*)(~2) #define CLAIMED_SERIAL_PORT (void*)(~2)
serial_port rs232_open(const char* pcPortName); serial_port uart_open(const char* pcPortName);
void rs232_close(const serial_port sp); void uart_close(const serial_port sp);
void rs232_set_speed(serial_port sp, const uint32_t uiPortSpeed); void uart_set_speed(serial_port sp, const uint32_t uiPortSpeed);
uint32_t rs232_get_speed(const serial_port sp); uint32_t uart_get_speed(const serial_port sp);
bool rs232_cts(const serial_port sp); bool uart_receive(const serial_port sp, byte_t* pbtRx, size_t* pszRxLen);
bool uart_send(const serial_port sp, const byte_t* pbtTx, const size_t szTxLen);
bool rs232_receive(const serial_port sp, byte_t* pbtRx, size_t* pszRxLen);
bool rs232_send(const serial_port sp, const byte_t* pbtTx, const size_t szTxLen);
#endif // _LIBNFC_RS232_H_ #endif // _LIBNFC_RS232_H_

View file

@ -27,26 +27,26 @@
#include "defines.h" #include "defines.h"
#include "types.h" #include "types.h"
#ifdef HAVE_PCSC_LITE #ifdef HAVE_PCSC_LITE
#include "dev_acr122.h" #include <drivers/acr122.h>
#endif /* HAVE_PCSC_LITE */ #endif /* HAVE_PCSC_LITE */
#ifdef HAVE_LIBUSB #ifdef HAVE_LIBUSB
#include "dev_pn531.h" #include <drivers/pn531.h>
#include "dev_pn533.h" #include <drivers/pn533.h>
#endif /* HAVE_LIBUSB */ #endif /* HAVE_LIBUSB */
#include "dev_arygon.h" #include <drivers/arygon.h>
#include "dev_pn532_uart.h" #include <drivers/pn532_uart.h>
const static struct dev_callbacks dev_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", dev_acr122_connect, dev_acr122_transceive, dev_acr122_disconnect }, { "ACR122", acr122_connect, acr122_transceive, acr122_disconnect },
#endif /* HAVE_PCSC_LITE */ #endif /* HAVE_PCSC_LITE */
#ifdef HAVE_LIBUSB #ifdef HAVE_LIBUSB
{ "PN531USB", dev_pn531_connect, dev_pn531_transceive, dev_pn531_disconnect }, { "PN531USB", pn531_connect, pn531_transceive, pn531_disconnect },
{ "PN533USB", dev_pn533_connect, dev_pn533_transceive, dev_pn533_disconnect }, { "PN533USB", pn533_connect, pn533_transceive, pn533_disconnect },
#endif /* HAVE_LIBUSB */ #endif /* HAVE_LIBUSB */
{ "PN532_UART", dev_pn532_uart_connect, dev_pn532_uart_transceive, dev_pn532_uart_disconnect }, { "PN532_UART", pn532_uart_connect, pn532_uart_transceive, pn532_uart_disconnect },
{ "ARYGON", dev_arygon_connect, dev_arygon_transceive, dev_arygon_disconnect } { "ARYGON", arygon_connect, arygon_transceive, arygon_disconnect }
}; };
#endif // _LIBNFC_DEVICES_H_ #endif // _LIBNFC_DEVICES_H_

View file

@ -0,0 +1,24 @@
# set the include path found by configure
INCLUDES= $(all_includes)
noinst_HEADERS = arygon.h pn532_uart.h
noinst_LTLIBRARIES = libnfcdrivers.la
libnfcdrivers_la_SOURCES = arygon.c pn532_uart.c
libnfcdrivers_la_CFLAGS = -I$(top_srcdir)/src/lib -I$(top_srcdir)/src/lib/buses
libnfcdrivers_la_LIBADD =
if PCSC_LITE_ENABLED
noinst_HEADERS += acr122.h
libnfcdrivers_la_CFLAGS += @LIBPCSCLITE_CFLAGS@ -DHAVE_PCSC_LITE
libnfcdrivers_la_SOURCES += acr122.c
libnfcdrivers_la_LIBADD += @LIBPCSCLITE_LIBS@
endif
if LIBUSB_ENABLED
noinst_HEADERS += pn531.h pn533.h
libnfcdrivers_la_CFLAGS += @LIBUSB_CFLAGS@ -DHAVE_LIBUSB
libnfcdrivers_la_SOURCES += pn531.c pn533.c
libnfcdrivers_la_LIBADD += @LIBUSB_LIBS@
endif
DISTCLEANFILES = Makefile.in

View file

@ -17,11 +17,11 @@
* 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 dev_acr122.c * @file acr122.c
* @brief * @brief
*/ */
#include "dev_acr122.h" #include "acr122.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@ -35,7 +35,6 @@
#include "defines.h" #include "defines.h"
#include "messages.h" #include "messages.h"
#include "bitutils.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)
#define IOCTL_CCID_ESCAPE_SCARD_CTL_CODE (((0x31) << 16) | ((3500) << 2)) #define IOCTL_CCID_ESCAPE_SCARD_CTL_CODE (((0x31) << 16) | ((3500) << 2))
@ -58,7 +57,7 @@ typedef struct {
SCARD_IO_REQUEST ioCard; SCARD_IO_REQUEST ioCard;
} dev_spec_acr122; } dev_spec_acr122;
dev_info* dev_acr122_connect(const nfc_device_desc_t* pndd) dev_info* acr122_connect(const nfc_device_desc_t* pndd)
{ {
char* pacReaders[MAX_DEVICES]; char* pacReaders[MAX_DEVICES];
char acList[256+64*MAX_DEVICES]; char acList[256+64*MAX_DEVICES];
@ -131,7 +130,7 @@ dev_info* dev_acr122_connect(const nfc_device_desc_t* pndd)
dsa.ioCard.cbPciLength = sizeof(SCARD_IO_REQUEST); dsa.ioCard.cbPciLength = sizeof(SCARD_IO_REQUEST);
// Retrieve the current firmware version // Retrieve the current firmware version
pcFirmware = dev_acr122_firmware((dev_info*)&dsa); pcFirmware = acr122_firmware((dev_info*)&dsa);
if (strstr(pcFirmware,FIRMWARE_TEXT) != NULL) if (strstr(pcFirmware,FIRMWARE_TEXT) != NULL)
{ {
// We found a occurence, test if it has the right index // We found a occurence, test if it has the right index
@ -163,7 +162,7 @@ dev_info* dev_acr122_connect(const nfc_device_desc_t* pndd)
return INVALID_DEVICE_INFO; return INVALID_DEVICE_INFO;
} }
void dev_acr122_disconnect(dev_info* pdi) void acr122_disconnect(dev_info* pdi)
{ {
dev_spec_acr122* pdsa = (dev_spec_acr122*)pdi->ds; dev_spec_acr122* pdsa = (dev_spec_acr122*)pdi->ds;
SCardDisconnect(pdsa->hCard,SCARD_LEAVE_CARD); SCardDisconnect(pdsa->hCard,SCARD_LEAVE_CARD);
@ -172,7 +171,7 @@ void dev_acr122_disconnect(dev_info* pdi)
free(pdi); free(pdi);
} }
bool dev_acr122_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen) bool acr122_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen)
{ {
byte_t abtRxCmd[5] = { 0xFF,0xC0,0x00,0x00 }; byte_t abtRxCmd[5] = { 0xFF,0xC0,0x00,0x00 };
size_t szRxCmdLen = sizeof(abtRxCmd); size_t szRxCmdLen = sizeof(abtRxCmd);
@ -234,7 +233,7 @@ bool dev_acr122_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t
return true; return true;
} }
char* dev_acr122_firmware(const dev_spec ds) char* acr122_firmware(const dev_spec ds)
{ {
byte_t abtGetFw[5] = { 0xFF,0x00,0x48,0x00,0x00 }; byte_t abtGetFw[5] = { 0xFF,0x00,0x48,0x00,0x00 };
uint32_t uiResult; uint32_t uiResult;
@ -260,7 +259,7 @@ char* dev_acr122_firmware(const dev_spec ds)
return abtFw; return abtFw;
} }
bool dev_acr122_led_red(const dev_spec ds, bool bOn) bool acr122_led_red(const dev_spec ds, bool bOn)
{ {
byte_t abtLed[9] = { 0xFF,0x00,0x40,0x05,0x04,0x00,0x00,0x00,0x00 }; byte_t abtLed[9] = { 0xFF,0x00,0x40,0x05,0x04,0x00,0x00,0x00,0x00 };
dev_spec_acr122* pdsa = (dev_spec_acr122*)ds; dev_spec_acr122* pdsa = (dev_spec_acr122*)ds;

View file

@ -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 dev_acr122.h * @file acr122.h
* @brief * @brief
*/ */
@ -31,15 +31,15 @@
#include "types.h" #include "types.h"
// Functions used by developer to handle connection to this device // Functions used by developer to handle connection to this device
dev_info* dev_acr122_connect(const nfc_device_desc_t* pndd); dev_info* acr122_connect(const nfc_device_desc_t* pndd);
void dev_acr122_disconnect(dev_info* pdi); void acr122_disconnect(dev_info* pdi);
// 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 dev_acr122_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen); bool acr122_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen);
// Various additional features this device supports // Various additional features this device supports
char* dev_acr122_firmware(const dev_spec ds); char* acr122_firmware(const dev_spec ds);
bool dev_acr122_led_red(const dev_spec ds, bool bOn); bool acr122_led_red(const dev_spec ds, bool bOn);
#endif // _LIBNFC_DEV_ACR122_H_ #endif // _LIBNFC_DEV_ACR122_H_

View file

@ -17,14 +17,13 @@
* 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 dev_arygon.c * @file arygon.c
* @brief * @brief
*/ */
#include "dev_arygon.h" #include "arygon.h"
#include "rs232.h" #include "uart.h"
#include "bitutils.h"
#include "messages.h" #include "messages.h"
#ifdef _WIN32 #ifdef _WIN32
@ -73,7 +72,7 @@
* @note ARYGON-APDB2UA33 (PN532 + ARYGON µC): 9600,n,8,1 * @note ARYGON-APDB2UA33 (PN532 + ARYGON µC): 9600,n,8,1
*/ */
dev_info* dev_arygon_connect(const nfc_device_desc_t* pndd) dev_info* arygon_connect(const nfc_device_desc_t* pndd)
{ {
uint32_t uiDevNr; uint32_t uiDevNr;
serial_port sp; serial_port sp;
@ -95,10 +94,10 @@ dev_info* dev_arygon_connect(const nfc_device_desc_t* pndd)
sprintf(acConnect,"%s%d",SERIAL_STRING,uiDevNr); sprintf(acConnect,"%s%d",SERIAL_STRING,uiDevNr);
#endif /* __APPLE__ */ #endif /* __APPLE__ */
sp = rs232_open(acConnect); sp = uart_open(acConnect);
if ((sp != INVALID_SERIAL_PORT) && (sp != CLAIMED_SERIAL_PORT)) if ((sp != INVALID_SERIAL_PORT) && (sp != CLAIMED_SERIAL_PORT))
{ {
rs232_set_speed(sp, SERIAL_DEFAULT_PORT_SPEED); uart_set_speed(sp, SERIAL_DEFAULT_PORT_SPEED);
break; break;
} }
#ifdef DEBUG #ifdef DEBUG
@ -112,12 +111,12 @@ dev_info* dev_arygon_connect(const nfc_device_desc_t* pndd)
} 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);
sp = rs232_open(acConnect); sp = uart_open(acConnect);
if (sp == INVALID_SERIAL_PORT) ERR("Invalid serial port: %s",acConnect); if (sp == INVALID_SERIAL_PORT) ERR("Invalid serial port: %s",acConnect);
if (sp == CLAIMED_SERIAL_PORT) ERR("Serial port already claimed: %s",acConnect); if (sp == CLAIMED_SERIAL_PORT) ERR("Serial port already claimed: %s",acConnect);
if ((sp == CLAIMED_SERIAL_PORT) || (sp == INVALID_SERIAL_PORT)) return INVALID_DEVICE_INFO; if ((sp == CLAIMED_SERIAL_PORT) || (sp == INVALID_SERIAL_PORT)) return INVALID_DEVICE_INFO;
rs232_set_speed(sp, pndd->uiSpeed); uart_set_speed(sp, pndd->uiSpeed);
} }
DBG("Successfully connected to: %s",acConnect); DBG("Successfully connected to: %s",acConnect);
@ -134,13 +133,13 @@ dev_info* dev_arygon_connect(const nfc_device_desc_t* pndd)
return pdi; return pdi;
} }
void dev_arygon_disconnect(dev_info* pdi) void arygon_disconnect(dev_info* pdi)
{ {
rs232_close((serial_port)pdi->ds); uart_close((serial_port)pdi->ds);
free(pdi); free(pdi);
} }
bool dev_arygon_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen) bool arygon_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen)
{ {
byte_t abtTxBuf[BUFFER_LENGTH] = { DEV_ARYGON_PROTOCOL_TAMA, 0x00, 0x00, 0xff }; // Every packet must start with "00 00 ff" byte_t abtTxBuf[BUFFER_LENGTH] = { DEV_ARYGON_PROTOCOL_TAMA, 0x00, 0x00, 0xff }; // Every packet must start with "00 00 ff"
byte_t abtRxBuf[BUFFER_LENGTH]; byte_t abtRxBuf[BUFFER_LENGTH];
@ -168,7 +167,7 @@ bool dev_arygon_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t
printf(" TX: "); printf(" TX: ");
print_hex(abtTxBuf,szTxLen+8); print_hex(abtTxBuf,szTxLen+8);
#endif #endif
if (!rs232_send((serial_port)ds,abtTxBuf,szTxLen+8)) { if (!uart_send((serial_port)ds,abtTxBuf,szTxLen+8)) {
ERR("Unable to transmit data. (TX)"); ERR("Unable to transmit data. (TX)");
return false; return false;
} }
@ -188,7 +187,7 @@ bool dev_arygon_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t
* For more information, see Issue 23 on development site : http://code.google.com/p/libnfc/issues/detail?id=23 * For more information, see Issue 23 on development site : http://code.google.com/p/libnfc/issues/detail?id=23
*/ */
if (!rs232_receive((serial_port)ds,abtRxBuf,&szRxBufLen)) { if (!uart_receive((serial_port)ds,abtRxBuf,&szRxBufLen)) {
ERR("Unable to receive data. (RX)"); ERR("Unable to receive data. (RX)");
return false; return false;
} }

View file

@ -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 dev_arygon.h * @file arygon.h
* @brief * @brief
*/ */
@ -28,11 +28,11 @@
#include "types.h" #include "types.h"
// Functions used by developer to handle connection to this device // Functions used by developer to handle connection to this device
dev_info* dev_arygon_connect(const nfc_device_desc_t* pndd); dev_info* arygon_connect(const nfc_device_desc_t* pndd);
void dev_arygon_disconnect(dev_info* pdi); void arygon_disconnect(dev_info* pdi);
// 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 dev_arygon_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen); bool arygon_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen);
#endif // _LIBNFC_DEV_ARYGON_H_ #endif // _LIBNFC_DEV_ARYGON_H_

View file

@ -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 dev_pn531.c * @file pn531.c
* @brief * @brief
*/ */
@ -32,8 +32,7 @@ Thanks to d18c7db and Okko for example code
#include <string.h> #include <string.h>
#include "defines.h" #include "defines.h"
#include "dev_pn531.h" #include "pn531.h"
#include "bitutils.h"
#include "messages.h" #include "messages.h"
#define BUFFER_LENGTH 256 #define BUFFER_LENGTH 256
@ -81,7 +80,7 @@ static void get_end_points(struct usb_device *dev, dev_spec_pn531* pdsp)
} }
} }
dev_info* dev_pn531_connect(const nfc_device_desc_t* pndd) dev_info* pn531_connect(const nfc_device_desc_t* pndd)
{ {
int idvendor = 0x04CC; int idvendor = 0x04CC;
int idproduct = 0x0531; int idproduct = 0x0531;
@ -163,7 +162,7 @@ dev_info* dev_pn531_connect(const nfc_device_desc_t* pndd)
return pdi; return pdi;
} }
void dev_pn531_disconnect(dev_info* pdi) void pn531_disconnect(dev_info* pdi)
{ {
dev_spec_pn531* pdsp = (dev_spec_pn531*)pdi->ds; dev_spec_pn531* pdsp = (dev_spec_pn531*)pdi->ds;
usb_release_interface(pdsp->pudh,0); usb_release_interface(pdsp->pudh,0);
@ -172,7 +171,7 @@ void dev_pn531_disconnect(dev_info* pdi)
free(pdi); free(pdi);
} }
bool dev_pn531_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen) bool pn531_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;

View file

@ -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 dev_pn531.h * @file pn531.h
* @brief * @brief
*/ */
@ -31,11 +31,11 @@
#include "types.h" #include "types.h"
// Functions used by developer to handle connection to this device // Functions used by developer to handle connection to this device
dev_info* dev_pn531_connect(const nfc_device_desc_t* pndd); dev_info* pn531_connect(const nfc_device_desc_t* pndd);
void dev_pn531_disconnect(dev_info* pdi); void pn531_disconnect(dev_info* pdi);
// 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 dev_pn531_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen); bool pn531_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_

View file

@ -17,14 +17,13 @@
* 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 dev_pn532_uart.c * @file pn532_uart.c
* @brief * @brief
*/ */
#include "dev_pn532_uart.h" #include "pn532_uart.h"
#include "rs232.h" #include "uart.h"
#include "bitutils.h"
#include "messages.h" #include "messages.h"
#ifdef _WIN32 #ifdef _WIN32
@ -48,7 +47,7 @@
#define SERIAL_DEFAULT_PORT_SPEED 115200 #define SERIAL_DEFAULT_PORT_SPEED 115200
dev_info* dev_pn532_uart_connect(const nfc_device_desc_t* pndd) dev_info* pn532_uart_connect(const nfc_device_desc_t* pndd)
{ {
uint32_t uiDevNr; uint32_t uiDevNr;
serial_port sp; serial_port sp;
@ -70,10 +69,10 @@ dev_info* dev_pn532_uart_connect(const nfc_device_desc_t* pndd)
sprintf(acConnect,"%s%d",SERIAL_STRING,uiDevNr); sprintf(acConnect,"%s%d",SERIAL_STRING,uiDevNr);
#endif /* __APPLE__ */ #endif /* __APPLE__ */
sp = rs232_open(acConnect); sp = uart_open(acConnect);
if ((sp != INVALID_SERIAL_PORT) && (sp != CLAIMED_SERIAL_PORT)) if ((sp != INVALID_SERIAL_PORT) && (sp != CLAIMED_SERIAL_PORT))
{ {
rs232_set_speed(sp, SERIAL_DEFAULT_PORT_SPEED); uart_set_speed(sp, SERIAL_DEFAULT_PORT_SPEED);
break; break;
} }
#ifdef DEBUG #ifdef DEBUG
@ -87,12 +86,12 @@ dev_info* dev_pn532_uart_connect(const nfc_device_desc_t* pndd)
} 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);
sp = rs232_open(acConnect); sp = uart_open(acConnect);
if (sp == INVALID_SERIAL_PORT) ERR("Invalid serial port: %s",acConnect); if (sp == INVALID_SERIAL_PORT) ERR("Invalid serial port: %s",acConnect);
if (sp == CLAIMED_SERIAL_PORT) ERR("Serial port already claimed: %s",acConnect); if (sp == CLAIMED_SERIAL_PORT) ERR("Serial port already claimed: %s",acConnect);
if ((sp == CLAIMED_SERIAL_PORT) || (sp == INVALID_SERIAL_PORT)) return INVALID_DEVICE_INFO; if ((sp == CLAIMED_SERIAL_PORT) || (sp == INVALID_SERIAL_PORT)) return INVALID_DEVICE_INFO;
rs232_set_speed(sp, pndd->uiSpeed); uart_set_speed(sp, pndd->uiSpeed);
} }
/** @info PN532C106 wakeup. */ /** @info PN532C106 wakeup. */
/** @todo Put this command in pn53x init process */ /** @todo Put this command in pn53x init process */
@ -100,10 +99,10 @@ dev_info* dev_pn532_uart_connect(const nfc_device_desc_t* pndd)
size_t szRxBufLen; size_t szRxBufLen;
const byte_t pncmd_pn532c106_wakeup[] = { 0x55,0x55,0x00,0x00,0x00,0x00,0x00,0xFF,0x03,0xFD,0xD4,0x14,0x01,0x17,0x00 }; const byte_t pncmd_pn532c106_wakeup[] = { 0x55,0x55,0x00,0x00,0x00,0x00,0x00,0xFF,0x03,0xFD,0xD4,0x14,0x01,0x17,0x00 };
rs232_send(sp, pncmd_pn532c106_wakeup, sizeof(pncmd_pn532c106_wakeup)); uart_send(sp, pncmd_pn532c106_wakeup, sizeof(pncmd_pn532c106_wakeup));
delay_ms(10); delay_ms(10);
if (!rs232_receive(sp,abtRxBuf,&szRxBufLen)) { if (!uart_receive(sp,abtRxBuf,&szRxBufLen)) {
ERR("Unable to receive data. (RX)"); ERR("Unable to receive data. (RX)");
return NULL; return NULL;
} }
@ -126,13 +125,13 @@ dev_info* dev_pn532_uart_connect(const nfc_device_desc_t* pndd)
return pdi; return pdi;
} }
void dev_pn532_uart_disconnect(dev_info* pdi) void pn532_uart_disconnect(dev_info* pdi)
{ {
rs232_close((serial_port)pdi->ds); uart_close((serial_port)pdi->ds);
free(pdi); free(pdi);
} }
bool dev_pn532_uart_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen) bool pn532_uart_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen)
{ {
byte_t abtTxBuf[BUFFER_LENGTH] = { 0x00, 0x00, 0xff }; // Every packet must start with "00 00 ff" byte_t abtTxBuf[BUFFER_LENGTH] = { 0x00, 0x00, 0xff }; // Every packet must start with "00 00 ff"
byte_t abtRxBuf[BUFFER_LENGTH]; byte_t abtRxBuf[BUFFER_LENGTH];
@ -160,7 +159,7 @@ bool dev_pn532_uart_transceive(const dev_spec ds, const byte_t* pbtTx, const siz
printf(" TX: "); printf(" TX: ");
print_hex(abtTxBuf,szTxLen+7); print_hex(abtTxBuf,szTxLen+7);
#endif #endif
if (!rs232_send((serial_port)ds,abtTxBuf,szTxLen+7)) { if (!uart_send((serial_port)ds,abtTxBuf,szTxLen+7)) {
ERR("Unable to transmit data. (TX)"); ERR("Unable to transmit data. (TX)");
return false; return false;
} }
@ -175,7 +174,7 @@ bool dev_pn532_uart_transceive(const dev_spec ds, const byte_t* pbtTx, const siz
*/ */
delay_ms(30); delay_ms(30);
if (!rs232_receive((serial_port)ds,abtRxBuf,&szRxBufLen)) { if (!uart_receive((serial_port)ds,abtRxBuf,&szRxBufLen)) {
ERR("Unable to receive data. (RX)"); ERR("Unable to receive data. (RX)");
return false; return false;
} }

View file

@ -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 dev_pn532_uart.h * @file pn532_uart.h
* @brief * @brief
*/ */
@ -28,11 +28,11 @@
#include "types.h" #include "types.h"
// Functions used by developer to handle connection to this device // Functions used by developer to handle connection to this device
dev_info* dev_pn532_uart_connect(const nfc_device_desc_t* pndd); dev_info* pn532_uart_connect(const nfc_device_desc_t* pndd);
void dev_pn532_uart_disconnect(dev_info* pdi); void pn532_uart_disconnect(dev_info* pdi);
// 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 dev_pn532_uart_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen); bool pn532_uart_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen);
#endif // _LIBNFC_DEV_PN532_UART_H_ #endif // _LIBNFC_DEV_PN532_UART_H_

View file

@ -17,21 +17,20 @@
* 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 dev_pn533.c * @file pn533.c
* @brief * @brief
*/ */
/* /*
Thanks to d18c7db and Okko for example code Thanks to d18c7db and Okko for example code
*/ */
#include "dev_pn533.h" #include "pn533.h"
#include <usb.h> #include <usb.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include "defines.h" #include "defines.h"
#include "bitutils.h"
#include "messages.h" #include "messages.h"
#define BUFFER_LENGTH 256 #define BUFFER_LENGTH 256
@ -79,7 +78,7 @@ static void get_end_points(struct usb_device *dev, dev_spec_pn533* pdsp)
} }
} }
dev_info* dev_pn533_connect(const nfc_device_desc_t* pndd) dev_info* pn533_connect(const nfc_device_desc_t* pndd)
{ {
int idvendor = 0x04e6; int idvendor = 0x04e6;
int idproduct = 0x5591; int idproduct = 0x5591;
@ -158,7 +157,7 @@ dev_info* dev_pn533_connect(const nfc_device_desc_t* pndd)
return pdi; return pdi;
} }
void dev_pn533_disconnect(dev_info* pdi) void pn533_disconnect(dev_info* pdi)
{ {
dev_spec_pn533* pdsp = (dev_spec_pn533*)pdi->ds; dev_spec_pn533* pdsp = (dev_spec_pn533*)pdi->ds;
usb_release_interface(pdsp->pudh,0); usb_release_interface(pdsp->pudh,0);
@ -167,7 +166,7 @@ void dev_pn533_disconnect(dev_info* pdi)
free(pdi); free(pdi);
} }
bool dev_pn533_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen) bool pn533_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;

View file

@ -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 dev_pn533.h * @file pn533.h
* @brief * @brief
*/ */
@ -28,11 +28,11 @@
#include "types.h" #include "types.h"
// Functions used by developer to handle connection to this device // Functions used by developer to handle connection to this device
dev_info* dev_pn533_connect(const nfc_device_desc_t* pndd); dev_info* pn533_connect(const nfc_device_desc_t* pndd);
void dev_pn533_disconnect(dev_info* pdi); void pn533_disconnect(dev_info* pdi);
// 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 dev_pn533_transceive(const dev_spec ds, const byte_t* pbtTx, const size_t szTxLen, byte_t* pbtRx, size_t* pszRxLen); bool pn533_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_

View file

@ -17,22 +17,21 @@
* 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 libnfc.c * @file nfc.c
* @brief * @brief
*/ */
#include "libnfc.h" #include "nfc.h"
#include <stdio.h> #include <stdio.h>
#include <stddef.h> #include <stddef.h>
#include <string.h> #include <string.h>
#include "devices.h" #include "drivers.h"
#include "bitutils.h"
#include "messages.h" #include "messages.h"
#include "../config.h" #include "../../config.h"
// Registers and symbols masks used to covers parts within a register // Registers and symbols masks used to covers parts within a register
#define REG_CIU_TX_MODE 0x6302 #define REG_CIU_TX_MODE 0x6302
@ -285,20 +284,20 @@ dev_info* nfc_connect(nfc_device_desc_t* pndd)
size_t szFwLen = sizeof(abtFw); size_t szFwLen = sizeof(abtFw);
// Search through the device list for an available device // Search through the device list for an available device
for (uiDev=0; uiDev<sizeof(dev_callbacks_list)/sizeof(dev_callbacks_list[0]); uiDev++) for (uiDev=0; uiDev<sizeof(drivers_callbacks_list)/sizeof(drivers_callbacks_list[0]); uiDev++)
{ {
if (pndd == NULL) { if (pndd == NULL) {
// No device description specified: try to automatically claim a device // No device description specified: try to automatically claim a device
pdi = dev_callbacks_list[uiDev].connect(pndd); pdi = drivers_callbacks_list[uiDev].connect(pndd);
} else { } else {
// Specific device is requested: using device description pndd // Specific device is requested: using device description pndd
if( 0 != strcmp(dev_callbacks_list[uiDev].acDriver, pndd->pcDriver ) ) if( 0 != strcmp(drivers_callbacks_list[uiDev].acDriver, pndd->pcDriver ) )
{ {
DBG("Looking for %s, found %s... Skip it.", pndd->pcDriver, dev_callbacks_list[uiDev].acDriver); DBG("Looking for %s, found %s... Skip it.", pndd->pcDriver, drivers_callbacks_list[uiDev].acDriver);
continue; continue;
} else { } else {
DBG("Looking for %s, found %s... Use it.", pndd->pcDriver, dev_callbacks_list[uiDev].acDriver); DBG("Looking for %s, found %s... Use it.", pndd->pcDriver, drivers_callbacks_list[uiDev].acDriver);
pdi = dev_callbacks_list[uiDev].connect(pndd); pdi = drivers_callbacks_list[uiDev].connect(pndd);
} }
} }
@ -307,7 +306,7 @@ dev_info* nfc_connect(nfc_device_desc_t* pndd)
{ {
DBG("[%s] has been claimed.", pdi->acName); DBG("[%s] has been claimed.", pdi->acName);
// Great we have claimed a device // Great we have claimed a device
pdi->pdc = &(dev_callbacks_list[uiDev]); pdi->pdc = &(drivers_callbacks_list[uiDev]);
// Try to retrieve PN53x chip revision // Try to retrieve PN53x chip revision
// We can not use pn53x_transceive() because abtRx[0] gives no status info // We can not use pn53x_transceive() because abtRx[0] gives no status info
@ -339,7 +338,7 @@ dev_info* nfc_connect(nfc_device_desc_t* pndd)
return pdi; return pdi;
} else { } else {
DBG("No device found using driver: %s", dev_callbacks_list[uiDev].acDriver); DBG("No device found using driver: %s", drivers_callbacks_list[uiDev].acDriver);
} }
} }
// To bad, no reader is ready to be claimed // To bad, no reader is ready to be claimed

View file

@ -44,7 +44,7 @@ typedef enum {
CT_PN533 = 0x30, CT_PN533 = 0x30,
} chip_type; } chip_type;
struct dev_callbacks; // Prototype the callback struct struct driver_callbacks; // Prototype the callback struct
/** /**
* @struct dev_info * @struct dev_info
@ -52,7 +52,7 @@ struct dev_callbacks; // Prototype the callback struct
*/ */
typedef struct { typedef struct {
/** Callback functions for handling device specific wrapping */ /** Callback functions for handling device specific wrapping */
const struct dev_callbacks* pdc; const struct driver_callbacks* pdc;
/** Device name string, including device wrapper firmware */ /** Device name string, including device wrapper firmware */
char acName[DEVICE_NAME_LENGTH]; char acName[DEVICE_NAME_LENGTH];
/** PN53X chip type, this is useful for some "bug" work-arounds */ /** PN53X chip type, this is useful for some "bug" work-arounds */
@ -87,10 +87,10 @@ typedef struct {
} nfc_device_desc_t; } nfc_device_desc_t;
/** /**
* @struct dev_callbacks * @struct driver_callbacks
* @brief NFC defice callbacks * @brief NFC defice callbacks
*/ */
struct dev_callbacks { struct driver_callbacks {
/** Driver name */ /** Driver name */
const char* acDriver; const char* acDriver;
/** Connect callback */ /** Connect callback */