Merge remote-tracking branch 'refs/remotes/libnfc/master'
Conflicts: contrib/windows.h libnfc/CMakeLists.txt libnfc/log-printf.c utils/CMakeLists.txt
This commit is contained in:
commit
caa09db5fc
36 changed files with 301 additions and 88 deletions
20
ChangeLog
20
ChangeLog
|
@ -1,3 +1,23 @@
|
||||||
|
Jan TBD, 2013 - 1.7.0-rc3 (release candidate)
|
||||||
|
--------------------------------------------
|
||||||
|
|
||||||
|
Fixes:
|
||||||
|
- Fix pn53x_usb bulk write timeout
|
||||||
|
- Fix BCC in nfc-emulate-uid example
|
||||||
|
- Fix nfc-relay-picc example
|
||||||
|
- Fix a miss returned value within some internal functions (user program could
|
||||||
|
be affected)
|
||||||
|
- Fix nfc-scan-device -i option
|
||||||
|
- Remove wrong exit() calls in library
|
||||||
|
- Fix issue in driver acr122_usb affecting Touchatag
|
||||||
|
- Reenable some idle in all drivers, add selectively PowerDown when possible
|
||||||
|
|
||||||
|
Changes:
|
||||||
|
- nfc_emulate_target() now takes timeout parameter
|
||||||
|
|
||||||
|
Special thanks to:
|
||||||
|
- Alex Lian (Windows support refresh)
|
||||||
|
|
||||||
Jan 20, 2013 - 1.7.0-rc2 (release candidate)
|
Jan 20, 2013 - 1.7.0-rc2 (release candidate)
|
||||||
--------------------------------------------
|
--------------------------------------------
|
||||||
|
|
||||||
|
|
7
NEWS
7
NEWS
|
@ -1,3 +1,10 @@
|
||||||
|
New in 1.7.0-rc3:
|
||||||
|
|
||||||
|
API Changes:
|
||||||
|
|
||||||
|
* Functions
|
||||||
|
- Add timeout param to nfc_emulate_target()
|
||||||
|
|
||||||
New in 1.7.0-rc2:
|
New in 1.7.0-rc2:
|
||||||
|
|
||||||
Configuration:
|
Configuration:
|
||||||
|
|
22
README
22
README
|
@ -10,7 +10,7 @@ General Information
|
||||||
libnfc is a library which allows userspace application access to NFC devices.
|
libnfc is a library which allows userspace application access to NFC devices.
|
||||||
|
|
||||||
The official web site is:
|
The official web site is:
|
||||||
http://www.libnfc.org/
|
http://www.nfc-tools.org/
|
||||||
|
|
||||||
The official forum site is:
|
The official forum site is:
|
||||||
http://www.libnfc.org/community/
|
http://www.libnfc.org/community/
|
||||||
|
@ -23,17 +23,17 @@ Important note: this file covers POSIX systems, for Windows please read README-W
|
||||||
Requirements
|
Requirements
|
||||||
============
|
============
|
||||||
|
|
||||||
Some NFC drivers depends on third party software:
|
Some NFC drivers depend on third party software:
|
||||||
|
|
||||||
* pn53x_usb:
|
* pn53x_usb & acr122_usb:
|
||||||
|
|
||||||
- libusb-0.1 http://libusb.sf.net
|
- libusb-0.1 http://libusb.sf.net
|
||||||
|
|
||||||
* acr122:
|
* acr122_pcsc:
|
||||||
|
|
||||||
- pcsc-lite http://pcsclite.alioth.debian.org/
|
- pcsc-lite http://pcsclite.alioth.debian.org/
|
||||||
|
|
||||||
The regression test suite depend on the cutter framework:
|
The regression test suite depends on the cutter framework:
|
||||||
http://cutter.sf.net
|
http://cutter.sf.net
|
||||||
|
|
||||||
Installation
|
Installation
|
||||||
|
@ -69,7 +69,14 @@ Please make sure to include:
|
||||||
|
|
||||||
And anything else you think is relevant.
|
And anything else you think is relevant.
|
||||||
|
|
||||||
* How to reproduce the bug.
|
* A trace with debug activated.
|
||||||
|
|
||||||
|
Reproduce the bug with debug, e.g. if it was:
|
||||||
|
$ nfc-list -v
|
||||||
|
run it as:
|
||||||
|
$ LIBNFC_LOG_LEVEL=3 nfc-list -v
|
||||||
|
|
||||||
|
* How to reproduce the bug.
|
||||||
|
|
||||||
Please include a short test program that exhibits the behavior.
|
Please include a short test program that exhibits the behavior.
|
||||||
As a last resort, you can also provide a pointer to a larger piece
|
As a last resort, you can also provide a pointer to a larger piece
|
||||||
|
@ -85,7 +92,8 @@ Patches
|
||||||
=======
|
=======
|
||||||
|
|
||||||
Patches can be posted to http://code.google.com/p/libnfc/issues/list or
|
Patches can be posted to http://code.google.com/p/libnfc/issues/list or
|
||||||
can be sent directly to libnfc's developers: http://www.libnfc.org/contact
|
can be sent directly to libnfc's developers:
|
||||||
|
http://nfc-tools.org/index.php?title=Contact
|
||||||
|
|
||||||
If the patch fixes a bug, it is usually a good idea to include
|
If the patch fixes a bug, it is usually a good idea to include
|
||||||
all the information described in "How to Report Bugs".
|
all the information described in "How to Report Bugs".
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
*-
|
*-
|
||||||
* Public platform independent Near Field Communication (NFC) library
|
* Public platform independent Near Field Communication (NFC) library
|
||||||
|
* Windows-specific parts:
|
||||||
* Copyright (C) 2010, Glenn Ergeerts
|
* Copyright (C) 2010, Glenn Ergeerts
|
||||||
|
* Copyright (C) 2013, Alex Lian
|
||||||
-*
|
-*
|
||||||
|
|
||||||
Requirements
|
Requirements
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# General init
|
# General init
|
||||||
|
|
||||||
# /!\ Don't forget to update 'CMakeLists.txt' too /!\
|
# /!\ Don't forget to update 'CMakeLists.txt' too /!\
|
||||||
AC_INIT([libnfc],[1.7.0-rc2],[info@libnfc.org])
|
AC_INIT([libnfc],[1.7.0-rc3],[info@libnfc.org])
|
||||||
|
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
SUBDIRS = sys .
|
SUBDIRS = sys .
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
err.h
|
err.h \
|
||||||
|
stdlib.c \
|
||||||
|
unistd.h
|
||||||
|
|
46
contrib/win32/stdlib.c
Normal file
46
contrib/win32/stdlib.c
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
/*-
|
||||||
|
* Public platform independent Near Field Communication (NFC) library
|
||||||
|
*
|
||||||
|
* Copyright (C) 2013 Alex Lian
|
||||||
|
*
|
||||||
|
* 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 stdlib.c
|
||||||
|
* @brief Windows System compatibility
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Handle platform specific includes
|
||||||
|
#include "contrib/windows.h"
|
||||||
|
|
||||||
|
int setenv(const char *name, const char *value, int overwrite)
|
||||||
|
{
|
||||||
|
int exists = GetEnvironmentVariableA(name, NULL, 0);
|
||||||
|
if ((exists && overwrite) || (!exists)) {
|
||||||
|
if (!SetEnvironmentVariableA(name, value)) {
|
||||||
|
// Set errno here correctly
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// Exists and overwrite is 0.
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void unsetenv(const char *name)
|
||||||
|
{
|
||||||
|
SetEnvironmentVariableA(name, NULL);
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
/*-
|
/*-
|
||||||
* Public platform independent Near Field Communication (NFC) library
|
* Public platform independent Near Field Communication (NFC) library
|
||||||
*
|
*
|
||||||
* Copyright (C) 2011, 2012 Romuald Conty
|
* Copyright (C) 2011, 2012, 2013 Romuald Conty
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it
|
* 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
|
* under the terms of the GNU Lesser General Public License as published by the
|
||||||
|
@ -31,5 +31,11 @@
|
||||||
# include <winbase.h>
|
# include <winbase.h>
|
||||||
# define sleep(X) Sleep( X * 1000)
|
# define sleep(X) Sleep( X * 1000)
|
||||||
|
|
||||||
|
// With MinGW, getopt(3) is provided as separate header
|
||||||
|
#if defined(WIN32) && defined(__GNUC__) /* mingw compiler */
|
||||||
|
#include <getopt.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif /* _UNISTD_H_ */
|
#endif /* _UNISTD_H_ */
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
# define strdup _strdup
|
# define strdup _strdup
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* setenv and unsetenv are not Windows compliant nor implemented in MinGW.
|
* setenv and unsetenv are not Windows compliant nor implemented in MinGW.
|
||||||
* These declarations get rid of the "implicit declaration warning."
|
* These declarations get rid of the "implicit declaration warning."
|
||||||
*/
|
*/
|
||||||
|
|
4
debian/changelog
vendored
4
debian/changelog
vendored
|
@ -1,8 +1,8 @@
|
||||||
libnfc (1.7.0~rc2-1) unstable; urgency=low
|
libnfc (1.7.0~rc3-1) unstable; urgency=low
|
||||||
|
|
||||||
* Upload to Debian. (Closes: #672795)
|
* Upload to Debian. (Closes: #672795)
|
||||||
|
|
||||||
-- Nobuhiro Iwamatsu <iwamatsu@debian.org> Mon, 21 Jan 2013 14:19:24 +0900
|
-- Nobuhiro Iwamatsu <iwamatsu@debian.org> Fri, 01 Feb 2013 09:01:53 +0900
|
||||||
|
|
||||||
libnfc (1.7.0~rc2-0) unstable; urgency=low
|
libnfc (1.7.0~rc2-0) unstable; urgency=low
|
||||||
|
|
||||||
|
|
66
debian/control
vendored
66
debian/control
vendored
|
@ -4,7 +4,7 @@ Priority: extra
|
||||||
Maintainer: Nobuhiro Iwamatsu <iwamatsu@debian.org>
|
Maintainer: Nobuhiro Iwamatsu <iwamatsu@debian.org>
|
||||||
Build-Depends: debhelper (>= 8), dh-autoreconf, libtool, pkg-config, libusb-dev
|
Build-Depends: debhelper (>= 8), dh-autoreconf, libtool, pkg-config, libusb-dev
|
||||||
Standards-Version: 3.9.4
|
Standards-Version: 3.9.4
|
||||||
Homepage: http://www.libnfc.org/
|
Homepage: http://www.nfc-tools.org/
|
||||||
Vcs-Git: https://code.googlecode.com/p/libnfc/
|
Vcs-Git: https://code.googlecode.com/p/libnfc/
|
||||||
Vcs-Browser: http://code.google.com/p/libnfc/source/browse/
|
Vcs-Browser: http://code.google.com/p/libnfc/source/browse/
|
||||||
|
|
||||||
|
@ -14,9 +14,14 @@ Multi-Arch: same
|
||||||
Pre-Depends: ${misc:Pre-Depends}
|
Pre-Depends: ${misc:Pre-Depends}
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||||
Description: Near Field Communication (NFC) library
|
Description: Near Field Communication (NFC) library
|
||||||
libnfc is a Free Software library for Near Field Communication.
|
libnfc is a library for Near Field Communication. It abstracts the
|
||||||
Supported NFC hardware devices are, theorically, all hardware
|
low-level details of communicating with the devices away behind an
|
||||||
based on the NXP PN531, PN532 or PN533 NFC controller chip.
|
easy-to-use high-level API.
|
||||||
|
It supports most hardware based on the NXP PN531, PN532 or PN533
|
||||||
|
controller chips.
|
||||||
|
.
|
||||||
|
This package contains the runtime library files needed to run software
|
||||||
|
using libnfc.
|
||||||
|
|
||||||
Package: libnfc-dev
|
Package: libnfc-dev
|
||||||
Section: libdevel
|
Section: libdevel
|
||||||
|
@ -24,24 +29,57 @@ Architecture: any
|
||||||
Multi-Arch: same
|
Multi-Arch: same
|
||||||
Pre-Depends: ${misc:Pre-Depends}
|
Pre-Depends: ${misc:Pre-Depends}
|
||||||
Depends: ${misc:Depends}, libnfc4 (= ${binary:Version}), libusb-dev
|
Depends: ${misc:Depends}, libnfc4 (= ${binary:Version}), libusb-dev
|
||||||
Description: Near Field Communication library (development files)
|
Description: Near Field Communication (NFC) library (development files)
|
||||||
libnfc is a free software library for near-field communication.
|
libnfc is a library for Near Field Communication. It abstracts the
|
||||||
|
low-level details of communicating with the devices away behind an
|
||||||
|
easy-to-use high-level API.
|
||||||
It supports most hardware based on the NXP PN531, PN532 or PN533
|
It supports most hardware based on the NXP PN531, PN532 or PN533
|
||||||
controller chips.
|
controller chips.
|
||||||
|
.
|
||||||
|
This package contains the header and development files needed to build
|
||||||
|
programs and packages using libnfc.
|
||||||
|
|
||||||
|
Package: libnfc4-dbg
|
||||||
|
Section: debug
|
||||||
|
Architecture: any
|
||||||
|
Multi-Arch: same
|
||||||
|
Pre-Depends: ${misc:Pre-Depends}
|
||||||
|
Depends: ${misc:Depends}, libnfc4 (= ${binary:Version})
|
||||||
|
Description: Near Field Communication (NFC) library (debugging information)
|
||||||
|
libnfc is a library for Near Field Communication. It abstracts the
|
||||||
|
low-level details of communicating with the devices away behind an
|
||||||
|
easy-to-use high-level API.
|
||||||
|
It supports most hardware based on the NXP PN531, PN532 or PN533
|
||||||
|
controller chips.
|
||||||
|
.
|
||||||
|
This package contains the debugging information.
|
||||||
|
|
||||||
Package: libnfc-bin
|
Package: libnfc-bin
|
||||||
Section: utils
|
Section: utils
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}, libnfc4 (>= ${binary:Version})
|
Depends: ${shlibs:Depends}, ${misc:Depends}, libnfc4 (>= ${binary:Version})
|
||||||
Description: Near Field Communication binaries
|
Description: Near Field Communication (NFC) binaries
|
||||||
Some binaries are provided with libnfc useful for development
|
libnfc is a library for Near Field Communication. It abstracts the
|
||||||
purposes (nfc-list, nfc-mfclassic, nfc-mfultralight, etc.).
|
low-level details of communicating with the devices away behind an
|
||||||
|
easy-to-use high-level API.
|
||||||
|
It supports most hardware based on the NXP PN531, PN532 or PN533
|
||||||
|
controller chips.
|
||||||
|
.
|
||||||
|
This package contains some utils that come along with libnfc, for
|
||||||
|
development or debugging purposes (including nfc-list, nfc-mfclassic,
|
||||||
|
nfc-mfultralight, etc).
|
||||||
|
|
||||||
Package: libnfc-examples
|
Package: libnfc-examples
|
||||||
Section: utils
|
Section: utils
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}, libnfc4 (>= ${binary:Version})
|
Depends: ${shlibs:Depends}, ${misc:Depends}, libnfc4 (>= ${binary:Version})
|
||||||
Description: Near Field Communication examples
|
Description: Near Field Communication (NFC) examples
|
||||||
|
libnfc is a library for Near Field Communication. It abstracts the
|
||||||
|
low-level details of communicating with the devices away behind an
|
||||||
|
easy-to-use high-level API.
|
||||||
|
It supports most hardware based on the NXP PN531, PN532 or PN533
|
||||||
|
controller chips.
|
||||||
|
.
|
||||||
Some examples are provided with libnfc for debugging and/or
|
Some examples are provided with libnfc for debugging and/or
|
||||||
educational purposes (nfc-anticol, nfc-emulate, etc.).
|
educational purposes (nfc-anticol, nfc-emulate, etc.).
|
||||||
|
|
||||||
|
@ -49,6 +87,12 @@ Package: libnfc-pn53x-examples
|
||||||
Section: utils
|
Section: utils
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}, libnfc4 (>= ${binary:Version})
|
Depends: ${shlibs:Depends}, ${misc:Depends}, libnfc4 (>= ${binary:Version})
|
||||||
Description: Near Field Communication examples for PN53x chips only
|
Description: Near Field Communication (NFC) examples for PN53x chips only
|
||||||
|
libnfc is a library for Near Field Communication. It abstracts the
|
||||||
|
low-level details of communicating with the devices away behind an
|
||||||
|
easy-to-use high-level API.
|
||||||
|
It supports most hardware based on the NXP PN531, PN532 or PN533
|
||||||
|
controller chips.
|
||||||
|
.
|
||||||
Some PN53x-only examples are provided with libnfc for debugging
|
Some PN53x-only examples are provided with libnfc for debugging
|
||||||
and/or educational purposes (pn53x-sam, pn53x-tamashell, etc.).
|
and/or educational purposes (pn53x-sam, pn53x-tamashell, etc.).
|
||||||
|
|
2
debian/copyright
vendored
2
debian/copyright
vendored
|
@ -1,6 +1,6 @@
|
||||||
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
Upstream-Name: libnfc
|
Upstream-Name: libnfc
|
||||||
Source: http://www.libnfc.org/
|
Source: http://libnfc.googlecode.com/
|
||||||
|
|
||||||
Files: *
|
Files: *
|
||||||
Copyright: 2009, Roel Verdult <roel@libnfc.org>, Romuald Conty <romuald@libnfc.org>
|
Copyright: 2009, Roel Verdult <roel@libnfc.org>, Romuald Conty <romuald@libnfc.org>
|
||||||
|
|
1
debian/libnfc-examples.install
vendored
1
debian/libnfc-examples.install
vendored
|
@ -10,6 +10,7 @@ debian/tmp/usr/bin/nfc-relay
|
||||||
debian/tmp/usr/share/man/man1/nfc-anticol.1
|
debian/tmp/usr/share/man/man1/nfc-anticol.1
|
||||||
debian/tmp/usr/share/man/man1/nfc-dep-initiator.1
|
debian/tmp/usr/share/man/man1/nfc-dep-initiator.1
|
||||||
debian/tmp/usr/share/man/man1/nfc-dep-target.1
|
debian/tmp/usr/share/man/man1/nfc-dep-target.1
|
||||||
|
debian/tmp/usr/share/man/man1/nfc-emulate-forum-tag2.1
|
||||||
debian/tmp/usr/share/man/man1/nfc-emulate-tag.1
|
debian/tmp/usr/share/man/man1/nfc-emulate-tag.1
|
||||||
debian/tmp/usr/share/man/man1/nfc-emulate-uid.1
|
debian/tmp/usr/share/man/man1/nfc-emulate-uid.1
|
||||||
debian/tmp/usr/share/man/man1/nfc-mfsetuid.1
|
debian/tmp/usr/share/man/man1/nfc-mfsetuid.1
|
||||||
|
|
54
debian/libnfc4.symbols
vendored
Normal file
54
debian/libnfc4.symbols
vendored
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
libnfc.so.4 libnfc4 #MINVER#
|
||||||
|
iso14443a_crc@Base 1.7.0~rc2
|
||||||
|
iso14443a_crc_append@Base 1.7.0~rc2
|
||||||
|
iso14443a_locate_historical_bytes@Base 1.7.0~rc2
|
||||||
|
nfc_abort_command@Base 1.7.0~rc2
|
||||||
|
nfc_close@Base 1.7.0~rc2
|
||||||
|
nfc_context_free@Base 1.7.0~rc2
|
||||||
|
nfc_context_new@Base 1.7.0~rc2
|
||||||
|
nfc_device_free@Base 1.7.0~rc2
|
||||||
|
nfc_device_get_connstring@Base 1.7.0~rc2
|
||||||
|
nfc_device_get_information_about@Base 1.7.0~rc2
|
||||||
|
nfc_device_get_last_error@Base 1.7.0~rc2
|
||||||
|
nfc_device_get_name@Base 1.7.0~rc2
|
||||||
|
nfc_device_get_supported_baud_rate@Base 1.7.0~rc2
|
||||||
|
nfc_device_get_supported_modulation@Base 1.7.0~rc2
|
||||||
|
nfc_device_new@Base 1.7.0~rc2
|
||||||
|
nfc_device_set_property_bool@Base 1.7.0~rc2
|
||||||
|
nfc_device_set_property_int@Base 1.7.0~rc2
|
||||||
|
nfc_drivers@Base 1.7.0~rc2
|
||||||
|
nfc_emulate_target@Base 1.7.0~rc2
|
||||||
|
nfc_exit@Base 1.7.0~rc2
|
||||||
|
nfc_idle@Base 1.7.0~rc2
|
||||||
|
nfc_init@Base 1.7.0~rc2
|
||||||
|
nfc_initiator_deselect_target@Base 1.7.0~rc2
|
||||||
|
nfc_initiator_init@Base 1.7.0~rc2
|
||||||
|
nfc_initiator_init_secure_element@Base 1.7.0~rc2
|
||||||
|
nfc_initiator_list_passive_targets@Base 1.7.0~rc2
|
||||||
|
nfc_initiator_poll_dep_target@Base 1.7.0~rc2
|
||||||
|
nfc_initiator_poll_target@Base 1.7.0~rc2
|
||||||
|
nfc_initiator_select_dep_target@Base 1.7.0~rc2
|
||||||
|
nfc_initiator_select_passive_target@Base 1.7.0~rc2
|
||||||
|
nfc_initiator_target_is_present@Base 1.7.0~rc2
|
||||||
|
nfc_initiator_transceive_bits@Base 1.7.0~rc2
|
||||||
|
nfc_initiator_transceive_bits_timed@Base 1.7.0~rc2
|
||||||
|
nfc_initiator_transceive_bytes@Base 1.7.0~rc2
|
||||||
|
nfc_initiator_transceive_bytes_timed@Base 1.7.0~rc2
|
||||||
|
nfc_list_devices@Base 1.7.0~rc2
|
||||||
|
nfc_open@Base 1.7.0~rc2
|
||||||
|
nfc_perror@Base 1.7.0~rc2
|
||||||
|
nfc_strerror@Base 1.7.0~rc2
|
||||||
|
nfc_strerror_r@Base 1.7.0~rc2
|
||||||
|
nfc_target_init@Base 1.7.0~rc2
|
||||||
|
nfc_target_receive_bits@Base 1.7.0~rc2
|
||||||
|
nfc_target_receive_bytes@Base 1.7.0~rc2
|
||||||
|
nfc_target_send_bits@Base 1.7.0~rc2
|
||||||
|
nfc_target_send_bytes@Base 1.7.0~rc2
|
||||||
|
nfc_version@Base 1.7.0~rc2
|
||||||
|
pn532_SAMConfiguration@Base 1.7.0~rc2
|
||||||
|
pn53x_read_register@Base 1.7.0~rc2
|
||||||
|
pn53x_transceive@Base 1.7.0~rc2
|
||||||
|
pn53x_write_register@Base 1.7.0~rc2
|
||||||
|
str_nfc_baud_rate@Base 1.7.0~rc2
|
||||||
|
str_nfc_modulation_type@Base 1.7.0~rc2
|
||||||
|
str_nfc_target@Base 1.7.0~rc2
|
4
debian/rules
vendored
4
debian/rules
vendored
|
@ -27,3 +27,7 @@ override_dh_auto_configure:
|
||||||
|
|
||||||
%:
|
%:
|
||||||
dh $@ --with autoreconf
|
dh $@ --with autoreconf
|
||||||
|
|
||||||
|
override_dh_strip:
|
||||||
|
dh_strip -plibnfc4 --dbg-package=libnfc4-dbg
|
||||||
|
dh_strip --remaining-packages
|
||||||
|
|
|
@ -96,6 +96,7 @@ dist_man_MANS = \
|
||||||
nfc-mfsetuid.1 \
|
nfc-mfsetuid.1 \
|
||||||
pn53x-diagnose.1 \
|
pn53x-diagnose.1 \
|
||||||
pn53x-sam.1 \
|
pn53x-sam.1 \
|
||||||
pn53x-tamashell.1
|
pn53x-tamashell.1 \
|
||||||
|
nfc-emulate-forum-tag2.1
|
||||||
|
|
||||||
EXTRA_DIST = CMakeLists.txt
|
EXTRA_DIST = CMakeLists.txt
|
||||||
|
|
|
@ -197,7 +197,7 @@ main(int argc, char *argv[])
|
||||||
printf("NFC device: %s opened\n", nfc_device_get_name(pnd));
|
printf("NFC device: %s opened\n", nfc_device_get_name(pnd));
|
||||||
printf("Emulating NDEF tag now, please touch it with a second NFC device\n");
|
printf("Emulating NDEF tag now, please touch it with a second NFC device\n");
|
||||||
|
|
||||||
if (nfc_emulate_target(pnd, &emulator) < 0) {
|
if (nfc_emulate_target(pnd, &emulator, 0) < 0) {
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ extern "C" {
|
||||||
void *data;
|
void *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
NFC_EXPORT int nfc_emulate_target(nfc_device *pnd, struct nfc_emulator *emulator);
|
NFC_EXPORT int nfc_emulate_target(nfc_device *pnd, struct nfc_emulator *emulator, const int timeout);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Windows MinGW workarounds
|
# Windows MinGW workarounds
|
||||||
IF(WIN32)
|
IF(WIN32)
|
||||||
message("Adding in contrib win32 sources")
|
message("Adding in contrib win32 sources")
|
||||||
SET(WINDOWS_SOURCES ../contrib/win32/nfc_win32)
|
SET(WINDOWS_SOURCES ../contrib/win32/stdlib)
|
||||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../contrib/win32)
|
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../contrib/win32)
|
||||||
message("Win32: " ${WINDOWS_SOURCES})
|
message("Win32: " ${WINDOWS_SOURCES})
|
||||||
ENDIF(WIN32)
|
ENDIF(WIN32)
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
* @section intro_sec Introduction
|
* @section intro_sec Introduction
|
||||||
* This is the developer manual for \b libnfc.
|
* This is the developer manual for \b libnfc.
|
||||||
* libnfc is an open source library that allows you to communicate with NFC devices. For more info, see the
|
* libnfc is an open source library that allows you to communicate with NFC devices. For more info, see the
|
||||||
* <a href="http://www.libnfc.org">libnfc homepage</a>.
|
* <a href="http://www.nfc-tools.org">libnfc homepage</a>.
|
||||||
*
|
*
|
||||||
* @section quick_start_sec Quick start
|
* @section quick_start_sec Quick start
|
||||||
* If you are looking for libnfc's public API, you should start with the Modules page which links to the different categories of libnfc's functionality.
|
* If you are looking for libnfc's public API, you should start with the Modules page which links to the different categories of libnfc's functionality.
|
||||||
|
|
|
@ -947,30 +947,25 @@ pn53x_idle(struct nfc_device *pnd)
|
||||||
if ((res = pn53x_InRelease(pnd, 0)) < 0) {
|
if ((res = pn53x_InRelease(pnd, 0)) < 0) {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
if (CHIP_DATA(pnd)->type == PN532) {
|
if ((CHIP_DATA(pnd)->type == PN532) && (pnd->driver->powerdown)) {
|
||||||
// Use PowerDown to go in "Low VBat" power mode
|
// Use PowerDown to go in "Low VBat" power mode
|
||||||
if ((res = pn53x_PowerDown(pnd)) < 0) {
|
if ((res = pnd->driver->powerdown(pnd)) < 0) {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case INITIATOR:
|
case INITIATOR:
|
||||||
// Deselect all active communications
|
// Use InRelease to go in "Standby mode"
|
||||||
if ((res = pn53x_InDeselect(pnd, 0)) < 0) {
|
if ((res = pn53x_InRelease(pnd, 0)) < 0) {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
// Disable RF field to avoid heating
|
// Disable RF field to avoid heating
|
||||||
if ((res = nfc_device_set_property_bool(pnd, NP_ACTIVATE_FIELD, false)) < 0) {
|
if ((res = nfc_device_set_property_bool(pnd, NP_ACTIVATE_FIELD, false)) < 0) {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
if (CHIP_DATA(pnd)->type == PN532) {
|
if ((CHIP_DATA(pnd)->type == PN532) && (pnd->driver->powerdown)) {
|
||||||
// Use PowerDown to go in "Low VBat" power mode
|
// Use PowerDown to go in "Low VBat" power mode
|
||||||
if ((res = pn53x_PowerDown(pnd)) < 0) {
|
if ((res = pnd->driver->powerdown(pnd)) < 0) {
|
||||||
return res;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Use InRelease to go in "Standby mode"
|
|
||||||
if ((res = pn53x_InRelease(pnd, 0)) < 0) {
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,7 +80,7 @@
|
||||||
#define ACR122_PCSC_RESPONSE_LEN 268
|
#define ACR122_PCSC_RESPONSE_LEN 268
|
||||||
|
|
||||||
#define LOG_GROUP NFC_LOG_GROUP_DRIVER
|
#define LOG_GROUP NFC_LOG_GROUP_DRIVER
|
||||||
#define LOG_CATEGORY "libnfc.driver.acr122"
|
#define LOG_CATEGORY "libnfc.driver.acr122_pcsc"
|
||||||
|
|
||||||
// Internal data struct
|
// Internal data struct
|
||||||
const struct pn53x_io acr122_pcsc_io;
|
const struct pn53x_io acr122_pcsc_io;
|
||||||
|
@ -324,6 +324,8 @@ error:
|
||||||
static void
|
static void
|
||||||
acr122_pcsc_close(nfc_device *pnd)
|
acr122_pcsc_close(nfc_device *pnd)
|
||||||
{
|
{
|
||||||
|
pn53x_idle(pnd);
|
||||||
|
|
||||||
SCardDisconnect(DRIVER_DATA(pnd)->hCard, SCARD_LEAVE_CARD);
|
SCardDisconnect(DRIVER_DATA(pnd)->hCard, SCARD_LEAVE_CARD);
|
||||||
acr122_pcsc_free_scardcontext();
|
acr122_pcsc_free_scardcontext();
|
||||||
|
|
||||||
|
@ -516,6 +518,8 @@ const struct nfc_driver acr122_pcsc_driver = {
|
||||||
.device_get_information_about = pn53x_get_information_about,
|
.device_get_information_about = pn53x_get_information_about,
|
||||||
|
|
||||||
.abort_command = NULL, // Abort is not supported in this driver
|
.abort_command = NULL, // Abort is not supported in this driver
|
||||||
.idle = NULL, // Idle is not supported in this driver
|
.idle = pn53x_idle,
|
||||||
|
/* Even if PN532, PowerDown is not recommended on those devices */
|
||||||
|
.powerdown = NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -551,7 +551,6 @@ static void
|
||||||
acr122_usb_close(nfc_device *pnd)
|
acr122_usb_close(nfc_device *pnd)
|
||||||
{
|
{
|
||||||
acr122_usb_ack(pnd);
|
acr122_usb_ack(pnd);
|
||||||
|
|
||||||
pn53x_idle(pnd);
|
pn53x_idle(pnd);
|
||||||
|
|
||||||
int res;
|
int res;
|
||||||
|
@ -895,5 +894,7 @@ const struct nfc_driver acr122_usb_driver = {
|
||||||
.device_get_information_about = pn53x_get_information_about,
|
.device_get_information_about = pn53x_get_information_about,
|
||||||
|
|
||||||
.abort_command = acr122_usb_abort_command,
|
.abort_command = acr122_usb_abort_command,
|
||||||
.idle = pn53x_idle,
|
.idle = pn53x_idle,
|
||||||
|
/* Even if PN532, PowerDown is not recommended on those devices */
|
||||||
|
.powerdown = NULL,
|
||||||
};
|
};
|
||||||
|
|
|
@ -520,6 +520,8 @@ static void
|
||||||
acr122s_close(nfc_device *pnd)
|
acr122s_close(nfc_device *pnd)
|
||||||
{
|
{
|
||||||
acr122s_deactivate_sam(pnd);
|
acr122s_deactivate_sam(pnd);
|
||||||
|
pn53x_idle(pnd);
|
||||||
|
|
||||||
uart_close(DRIVER_DATA(pnd)->port);
|
uart_close(DRIVER_DATA(pnd)->port);
|
||||||
|
|
||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
|
@ -726,5 +728,7 @@ const struct nfc_driver acr122s_driver = {
|
||||||
.device_get_information_about = pn53x_get_information_about,
|
.device_get_information_about = pn53x_get_information_about,
|
||||||
|
|
||||||
.abort_command = acr122s_abort_command,
|
.abort_command = acr122s_abort_command,
|
||||||
.idle = NULL,
|
.idle = pn53x_idle,
|
||||||
|
/* Even if PN532, PowerDown is not recommended on those devices */
|
||||||
|
.powerdown = NULL,
|
||||||
};
|
};
|
||||||
|
|
|
@ -211,6 +211,8 @@ arygon_connstring_decode(const nfc_connstring connstring, struct arygon_descript
|
||||||
static void
|
static void
|
||||||
arygon_close(nfc_device *pnd)
|
arygon_close(nfc_device *pnd)
|
||||||
{
|
{
|
||||||
|
pn53x_idle(pnd);
|
||||||
|
|
||||||
// Release UART port
|
// Release UART port
|
||||||
uart_close(DRIVER_DATA(pnd)->port);
|
uart_close(DRIVER_DATA(pnd)->port);
|
||||||
|
|
||||||
|
@ -587,6 +589,8 @@ const struct nfc_driver arygon_driver = {
|
||||||
.device_get_information_about = pn53x_get_information_about,
|
.device_get_information_about = pn53x_get_information_about,
|
||||||
|
|
||||||
.abort_command = arygon_abort_command,
|
.abort_command = arygon_abort_command,
|
||||||
.idle = NULL, // FIXME arygon driver does not support idle()
|
.idle = pn53x_idle,
|
||||||
|
/* Even if PN532, PowerDown is not recommended on those devices */
|
||||||
|
.powerdown = NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -188,6 +188,8 @@ pn532_connstring_decode(const nfc_connstring connstring, struct pn532_uart_descr
|
||||||
static void
|
static void
|
||||||
pn532_uart_close(nfc_device *pnd)
|
pn532_uart_close(nfc_device *pnd)
|
||||||
{
|
{
|
||||||
|
pn53x_idle(pnd);
|
||||||
|
|
||||||
// Release UART port
|
// Release UART port
|
||||||
uart_close(DRIVER_DATA(pnd)->port);
|
uart_close(DRIVER_DATA(pnd)->port);
|
||||||
|
|
||||||
|
@ -528,6 +530,7 @@ const struct nfc_driver pn532_uart_driver = {
|
||||||
.device_get_information_about = pn53x_get_information_about,
|
.device_get_information_about = pn53x_get_information_about,
|
||||||
|
|
||||||
.abort_command = pn532_uart_abort_command,
|
.abort_command = pn532_uart_abort_command,
|
||||||
.idle = pn53x_idle,
|
.idle = pn53x_idle,
|
||||||
|
.powerdown = pn53x_PowerDown,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -447,14 +447,14 @@ pn53x_usb_close(nfc_device *pnd)
|
||||||
{
|
{
|
||||||
pn53x_usb_ack(pnd);
|
pn53x_usb_ack(pnd);
|
||||||
|
|
||||||
pn53x_idle(pnd);
|
|
||||||
|
|
||||||
if (DRIVER_DATA(pnd)->model == ASK_LOGO) {
|
if (DRIVER_DATA(pnd)->model == ASK_LOGO) {
|
||||||
/* Set P30, P31, P32, P33, P35 to logic 1 and P34 to 0 logic */
|
/* Set P30, P31, P32, P33, P35 to logic 1 and P34 to 0 logic */
|
||||||
/* ie. Switch all LEDs off and turn off progressive field */
|
/* ie. Switch all LEDs off and turn off progressive field */
|
||||||
pn53x_write_register(pnd, PN53X_SFR_P3, 0xFF, _BV(P30) | _BV(P31) | _BV(P32) | _BV(P33) | _BV(P35));
|
pn53x_write_register(pnd, PN53X_SFR_P3, 0xFF, _BV(P30) | _BV(P31) | _BV(P32) | _BV(P33) | _BV(P35));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pn53x_idle(pnd);
|
||||||
|
|
||||||
int res;
|
int res;
|
||||||
if ((res = usb_release_interface(DRIVER_DATA(pnd)->pudh, 0)) < 0) {
|
if ((res = usb_release_interface(DRIVER_DATA(pnd)->pudh, 0)) < 0) {
|
||||||
log_put(LOG_GROUP, LOG_CATEGORY, NFC_LOG_PRIORITY_ERROR, "Unable to release USB interface (%s)", _usb_strerror(res));
|
log_put(LOG_GROUP, LOG_CATEGORY, NFC_LOG_PRIORITY_ERROR, "Unable to release USB interface (%s)", _usb_strerror(res));
|
||||||
|
@ -652,7 +652,7 @@ read:
|
||||||
int
|
int
|
||||||
pn53x_usb_ack(nfc_device *pnd)
|
pn53x_usb_ack(nfc_device *pnd)
|
||||||
{
|
{
|
||||||
return pn53x_usb_bulk_write(DRIVER_DATA(pnd), (uint8_t *) pn53x_ack_frame, sizeof(pn53x_ack_frame), -1);
|
return pn53x_usb_bulk_write(DRIVER_DATA(pnd), (uint8_t *) pn53x_ack_frame, sizeof(pn53x_ack_frame), 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -791,5 +791,6 @@ const struct nfc_driver pn53x_usb_driver = {
|
||||||
.device_get_information_about = pn53x_get_information_about,
|
.device_get_information_about = pn53x_get_information_about,
|
||||||
|
|
||||||
.abort_command = pn53x_usb_abort_command,
|
.abort_command = pn53x_usb_abort_command,
|
||||||
.idle = pn53x_idle,
|
.idle = pn53x_idle,
|
||||||
|
.powerdown = pn53x_PowerDown,
|
||||||
};
|
};
|
||||||
|
|
|
@ -26,9 +26,9 @@
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
||||||
#ifndef LOG
|
#ifndef LOG
|
||||||
// Leaving in a preprocessor error, as the build system should skip this
|
// Leaving in a preprocessor error, as the build system should skip this
|
||||||
// file otherwise.
|
// file otherwise.
|
||||||
#error "No logging defined, but log-printf.c still compiled."
|
#error "No logging defined, but log-printf.c still compiled."
|
||||||
#else // LOG
|
#else // LOG
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -19,23 +19,33 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file nfc-emulation.c
|
* @file nfc-emulation.c
|
||||||
* @brief Provide a small API to ease emulation in libnfc
|
* @brief Provide a small API to ease emulation in libnfc
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <nfc/nfc.h>
|
#include <nfc/nfc.h>
|
||||||
#include <nfc/nfc-emulation.h>
|
#include <nfc/nfc-emulation.h>
|
||||||
|
|
||||||
#include "iso7816.h"
|
#include "iso7816.h"
|
||||||
|
|
||||||
|
/** @ingroup emulation
|
||||||
|
* @brief Emulate a target
|
||||||
|
* @return Returns 0 on success, otherwise returns libnfc's error code (negative value).
|
||||||
|
*
|
||||||
|
* @param pnd \a nfc_device struct pointer that represents currently used device
|
||||||
|
* @param emulator \nfc_emulator struct point that handles input/output functions
|
||||||
|
*
|
||||||
|
* If timeout equals to 0, the function blocks indefinitely (until an error is raised or function is completed)
|
||||||
|
* If timeout equals to -1, the default timeout will be used
|
||||||
|
*/
|
||||||
int
|
int
|
||||||
nfc_emulate_target(nfc_device *pnd, struct nfc_emulator *emulator)
|
nfc_emulate_target(nfc_device *pnd, struct nfc_emulator *emulator, const int timeout)
|
||||||
{
|
{
|
||||||
uint8_t abtRx[ISO7816_SHORT_R_APDU_MAX_LEN];
|
uint8_t abtRx[ISO7816_SHORT_R_APDU_MAX_LEN];
|
||||||
uint8_t abtTx[ISO7816_SHORT_C_APDU_MAX_LEN];
|
uint8_t abtTx[ISO7816_SHORT_C_APDU_MAX_LEN];
|
||||||
|
|
||||||
int res;
|
int res;
|
||||||
if ((res = nfc_target_init(pnd, emulator->target, abtRx, sizeof(abtRx), 0)) < 0) {
|
if ((res = nfc_target_init(pnd, emulator->target, abtRx, sizeof(abtRx), timeout)) < 0) {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,12 +54,12 @@ nfc_emulate_target(nfc_device *pnd, struct nfc_emulator *emulator)
|
||||||
while (io_res >= 0) {
|
while (io_res >= 0) {
|
||||||
io_res = emulator->state_machine->io(emulator, abtRx, szRx, abtTx, sizeof(abtTx));
|
io_res = emulator->state_machine->io(emulator, abtRx, szRx, abtTx, sizeof(abtTx));
|
||||||
if (io_res > 0) {
|
if (io_res > 0) {
|
||||||
if ((res = nfc_target_send_bytes(pnd, abtTx, io_res, 0)) < 0) {
|
if ((res = nfc_target_send_bytes(pnd, abtTx, io_res, timeout)) < 0) {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (io_res >= 0) {
|
if (io_res >= 0) {
|
||||||
if ((res = nfc_target_receive_bytes(pnd, abtRx, sizeof(abtRx), 0)) < 0) {
|
if ((res = nfc_target_receive_bytes(pnd, abtRx, sizeof(abtRx), timeout)) < 0) {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
szRx = res;
|
szRx = res;
|
||||||
|
@ -57,3 +67,4 @@ nfc_emulate_target(nfc_device *pnd, struct nfc_emulator *emulator)
|
||||||
}
|
}
|
||||||
return (io_res < 0) ? io_res : 0;
|
return (io_res < 0) ? io_res : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -147,6 +147,7 @@ struct nfc_driver {
|
||||||
|
|
||||||
int (*abort_command)(struct nfc_device *pnd);
|
int (*abort_command)(struct nfc_device *pnd);
|
||||||
int (*idle)(struct nfc_device *pnd);
|
int (*idle)(struct nfc_device *pnd);
|
||||||
|
int (*powerdown)(struct nfc_device *pnd);
|
||||||
};
|
};
|
||||||
|
|
||||||
# define DEVICE_NAME_LENGTH 256
|
# define DEVICE_NAME_LENGTH 256
|
||||||
|
|
18
libnfc/nfc.c
18
libnfc/nfc.c
|
@ -114,10 +114,6 @@ const struct nfc_driver *nfc_drivers[] = {
|
||||||
void
|
void
|
||||||
nfc_init(nfc_context **context)
|
nfc_init(nfc_context **context)
|
||||||
{
|
{
|
||||||
if (!context) {
|
|
||||||
printf("Error: NULL context is not supported anymore, please fix your code.\n");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
*context = nfc_context_new();
|
*context = nfc_context_new();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -213,11 +209,8 @@ void
|
||||||
nfc_close(nfc_device *pnd)
|
nfc_close(nfc_device *pnd)
|
||||||
{
|
{
|
||||||
if (pnd) {
|
if (pnd) {
|
||||||
// Go in idle mode
|
|
||||||
nfc_idle(pnd);
|
|
||||||
// Close, clean up and release the device
|
// Close, clean up and release the device
|
||||||
pnd->driver->close(pnd);
|
pnd->driver->close(pnd);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -236,11 +229,6 @@ nfc_list_devices(nfc_context *context, nfc_connstring connstrings[], const size_
|
||||||
const struct nfc_driver *ndr;
|
const struct nfc_driver *ndr;
|
||||||
const struct nfc_driver **pndr = nfc_drivers;
|
const struct nfc_driver **pndr = nfc_drivers;
|
||||||
|
|
||||||
if (!context) {
|
|
||||||
printf("NULL context is not supported anymore! Please fix your code.\n");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load manually configured devices (from config file and env variables)
|
// Load manually configured devices (from config file and env variables)
|
||||||
// TODO From env var...
|
// TODO From env var...
|
||||||
for (uint32_t i = 0; i < context->user_defined_device_count; i++) {
|
for (uint32_t i = 0; i < context->user_defined_device_count; i++) {
|
||||||
|
@ -251,8 +239,10 @@ nfc_list_devices(nfc_context *context, nfc_connstring connstrings[], const size_
|
||||||
char *old_env_log_level = NULL;
|
char *old_env_log_level = NULL;
|
||||||
// do it silently
|
// do it silently
|
||||||
if (env_log_level) {
|
if (env_log_level) {
|
||||||
if ((old_env_log_level = malloc(strlen(env_log_level) + 1)) == NULL)
|
if ((old_env_log_level = malloc(strlen(env_log_level) + 1)) == NULL) {
|
||||||
exit(EXIT_FAILURE);
|
log_put(LOG_GROUP, LOG_CATEGORY, NFC_LOG_PRIORITY_ERROR, "%s", "Unable to malloc()");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
strcpy(old_env_log_level, env_log_level);
|
strcpy(old_env_log_level, env_log_level);
|
||||||
}
|
}
|
||||||
setenv("LIBNFC_LOG_LEVEL", "0", 1);
|
setenv("LIBNFC_LOG_LEVEL", "0", 1);
|
||||||
|
|
|
@ -21,10 +21,12 @@ FOREACH(source ${UTILS-SOURCES})
|
||||||
LIST(APPEND TARGETS mifare)
|
LIST(APPEND TARGETS mifare)
|
||||||
ENDIF((${source} MATCHES "nfc-mfultralight") OR (${source} MATCHES "nfc-mfclassic"))
|
ENDIF((${source} MATCHES "nfc-mfultralight") OR (${source} MATCHES "nfc-mfclassic"))
|
||||||
|
|
||||||
IF(${source} MATCHES "nfc-scan-device")
|
IF(WIN32)
|
||||||
LIST(APPEND TARGETS ../contrib/win32/nfc_win32)
|
IF(${source} MATCHES "nfc-scan-device")
|
||||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../contrib/win32)
|
LIST(APPEND TARGETS ../contrib/win32/stdlib)
|
||||||
ENDIF(${source} MATCHES "nfc-scan-device")
|
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../contrib/win32)
|
||||||
|
ENDIF(${source} MATCHES "nfc-scan-device")
|
||||||
|
ENDIF(WIN32)
|
||||||
|
|
||||||
ADD_EXECUTABLE(${source} ${TARGETS})
|
ADD_EXECUTABLE(${source} ${TARGETS})
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
* @note There are three different types of information (Authenticate, Data and Value).
|
* @note There are three different types of information (Authenticate, Data and Value).
|
||||||
*
|
*
|
||||||
* First an authentication must take place using Key A or B. It requires a 48 bit Key (6 bytes) and the UID.
|
* First an authentication must take place using Key A or B. It requires a 48 bit Key (6 bytes) and the UID.
|
||||||
* They are both used to initialize the internal cipher-state of the PN53X chip (http://libnfc.org/hardware/pn53x-chip).
|
* They are both used to initialize the internal cipher-state of the PN53X chip.
|
||||||
* After a successful authentication it will be possible to execute other commands (e.g. Read/Write).
|
* After a successful authentication it will be possible to execute other commands (e.g. Read/Write).
|
||||||
* The MIFARE Classic Specification (http://www.nxp.com/acrobat/other/identification/M001053_MF1ICS50_rev5_3.pdf) explains more about this process.
|
* The MIFARE Classic Specification (http://www.nxp.com/acrobat/other/identification/M001053_MF1ICS50_rev5_3.pdf) explains more about this process.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -382,7 +382,7 @@ main(int argc, char *argv[])
|
||||||
printf("NFC device: %s opened\n", nfc_device_get_name(pnd));
|
printf("NFC device: %s opened\n", nfc_device_get_name(pnd));
|
||||||
printf("Emulating NDEF tag now, please touch it with a second NFC device\n");
|
printf("Emulating NDEF tag now, please touch it with a second NFC device\n");
|
||||||
|
|
||||||
if (0 != nfc_emulate_target(pnd, &emulator)) { // contains already nfc_target_init() call
|
if (0 != nfc_emulate_target(pnd, &emulator, 0)) { // contains already nfc_target_init() call
|
||||||
nfc_perror(pnd, "nfc_emulate_target");
|
nfc_perror(pnd, "nfc_emulate_target");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,11 +77,6 @@ main(int argc, const char *argv[])
|
||||||
bool verbose = false;
|
bool verbose = false;
|
||||||
|
|
||||||
nfc_context *context;
|
nfc_context *context;
|
||||||
nfc_init(&context);
|
|
||||||
|
|
||||||
// Display libnfc version
|
|
||||||
acLibnfcVersion = nfc_version();
|
|
||||||
printf("%s uses libnfc %s\n", argv[0], acLibnfcVersion);
|
|
||||||
|
|
||||||
// Get commandline options
|
// Get commandline options
|
||||||
for (int arg = 1; arg < argc; arg++) {
|
for (int arg = 1; arg < argc; arg++) {
|
||||||
|
@ -91,6 +86,7 @@ main(int argc, const char *argv[])
|
||||||
} else if (0 == strcmp(argv[arg], "-v")) {
|
} else if (0 == strcmp(argv[arg], "-v")) {
|
||||||
verbose = true;
|
verbose = true;
|
||||||
} else if (0 == strcmp(argv[arg], "-i")) {
|
} else if (0 == strcmp(argv[arg], "-i")) {
|
||||||
|
// This has to be done before the call to nfc_init()
|
||||||
setenv("LIBNFC_INTRUSIVE_SCAN", "yes", 1);
|
setenv("LIBNFC_INTRUSIVE_SCAN", "yes", 1);
|
||||||
} else {
|
} else {
|
||||||
ERR("%s is not supported option.", argv[arg]);
|
ERR("%s is not supported option.", argv[arg]);
|
||||||
|
@ -99,6 +95,12 @@ main(int argc, const char *argv[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nfc_init(&context);
|
||||||
|
|
||||||
|
// Display libnfc version
|
||||||
|
acLibnfcVersion = nfc_version();
|
||||||
|
printf("%s uses libnfc %s\n", argv[0], acLibnfcVersion);
|
||||||
|
|
||||||
#ifdef HAVE_LIBUSB
|
#ifdef HAVE_LIBUSB
|
||||||
# ifdef DEBUG
|
# ifdef DEBUG
|
||||||
usb_set_debug(4);
|
usb_set_debug(4);
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
; #define? COMPANY_PRODUCT_ICON ..\win32\libnfc.ico ;; override from company.mmh
|
; #define? COMPANY_PRODUCT_ICON ..\win32\libnfc.ico ;; override from company.mmh
|
||||||
#define? UISAMPLE_DIALOG_FILE_dlgbmp nfcleft.bmp ;; override uisample.mmh
|
#define? UISAMPLE_DIALOG_FILE_dlgbmp nfcleft.bmp ;; override uisample.mmh
|
||||||
#define? UISAMPLE_BLINE_TEXT www.libnfc.org
|
#define? UISAMPLE_BLINE_TEXT www.nfc-tools.org
|
||||||
#define? COMPANY_WANT_TO_INSTALL_DOCUMENTATION N
|
#define? COMPANY_WANT_TO_INSTALL_DOCUMENTATION N
|
||||||
|
|
||||||
;--- Include MAKEMSI support (with my customisations and MSI branding) ------
|
;--- Include MAKEMSI support (with my customisations and MSI branding) ------
|
||||||
|
|
Loading…
Add table
Reference in a new issue