Avoid redundant code in PN53x usb and uart drivers. Since it makes sense to
report errors at the nfc_device_t level, pass it directly to
pn53x_transceive().
Programs using the libnfc MAY use pn53x_transceive() to communicate with a NFC
device, and SHALL not use anymore pnd->pdc->transceive(). Code in the library
itself SHOULD avoid calling pnd->pdc->transceive(), so such construct have been
updated accordingly.
New issue
Summary: pn53x_transceive() workaround reverences in examples/nfc-poll.c comments
Status: New
Owner: rconty@il4p.fr
Cc: rtartiere@il4p.fr
The source code of nfc-poll has references to no using pn53x_transceive() for
the status-byte workaround reason in a comment. However this function is not
called in the code. While I guess that's some comment that should have been
removed and have never reached the svn repo, I prefer to be sure that it can be
removed. The comments where introduced at the same time of the file, at r353.
Within the ongoing effort to improve the NFC devices abstraction, and now that
pn53x_transceive() does not fail when it reads a response that has no
status-code, do not call directly pnd->pdc->transceive() from nfc.c. In a
mid-term future this will be changed again, and calling pn53x_transceive() from
nfc.c will be forbiden, in favor of colling some pnd->transceive() function,
but that's another part of the story.
Of course, it changes the API one more and it's not going to be the last time
in this branch.
- New API functions: nfc_strerror(), nfc_strerror_r() and nfc_perror();
- Drivers now have a reference to chips callback methods;
- Rename -pn53x_err2string to pn53x_strerror and add it to pn53x_callbacks_list.
As the documentation states, and as reported in isssue 81 (fixed in r421),
usb_reset()'s argument is invalid after the call and so usb_close(3) must be
called before usb_reset(3).
The doc says LCS (aka abtTx[4]) must be set so that the lower byte of LCS+LEN
(aka abtTx[3]) is 0x00. This has not to be related to the USB buffer size, so
that we can adjust it without breaking down the libnfc.
- Complete indent(1)'s arguments list;
- Ensure files to be indented have no local edit;
- Hide indent command-line details. Since everything is static, no need for V=1 support.
- New API function append_iso14443a_crc();
- Add a PRINT_HEX macro for driver debugging (replaces print_hex function from bitutils.c);
- Move bit-mirroring related functions to libnfc/mirror-subr.[hc];
- Move iso14443 related functions to libnfc/iso14443-subr.c;
- Move libnfc/bitutils.c hex-dumping code to examples/nfc-utils.c;
- Replace calls to swap_endian32() and swap_endian64() functions with calls to bswap32() and bswap64 provided by endian.h.
And while I am here:
- Fix the DBG macro so that it does not throw warning at compile time.
This is not a 'complete' fix since the DBG macro is still using it; but more globally, this file should not be part of the libnfc installed files. We should rely on error codes and maybe some logging mechanism (e.g. syslog() on POSIX compliant systems and RegisterEventSource() / ReportEvent() on Windows).
- format '%ld' expects type 'long int', but argument 2 has type 'unsigned int';
- format '%ld' expects type 'long int', but argument 2 has type 'size_t'.
Tested on FreeBSD arm.
- format '%d' expects type 'int', but argument 2 has type 'long unsigned int';
- format '%d' expects type 'int', but argument 2 has type 'size_t';
- unused variable 'nti';
- unused parameter 'argc'.
1. Try to use pkg-config to locate libusb;
2. Try with libusb-config if not found;
3. Try to locate headers and lib if still not found.
This would hopefully prevent build failures in some very particular cases, such as cross compiling libnfc on a FreeBSD version for another FreeBSD version that does not use the same libusb.
http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/142836
Reported by: Dmitry Marakasov
The uart_open() function may call uart_close() with a 'serial_port' structure with an invalid member 'fd' if the port was not opened successfully. The call to uart_close() was kept for consistency with the rest of the function because uart_close() is also in charge of freeing 'serial_port'.
The snprintf() function conforms to C99. On FreeBSD, sys/cdefs.h instruct us that _XOPEN_SOURCE == 500 defines _POSIX_C_SOURCE as 199506 which in turn defines __ISO_C_VISIBLE as 1990. 600 is the minimal _XOPEN_SOURCE value we can use to allow us using C99 functions.
Reported by: tinderbox
When I introduced headers separation (aka includes-revamp branch), the libnfc source code includes have been changed from '#include "../xx/nfc*.h"' to '#include <nfc/nfc*>' (when compiling, the source include dir (src/include) has precedence over '${prefix}/include'). For the sake of consistency, update libnfc.pc includedir so that compiling third party code using '#include <nfc/nfc*>' just works (tm). This provides much more consistent headers since they are usually referred relative to the includedir (exceptions are e.g. glib, gtk, xorg... quite bigger than libnfc I could say).
Since March 9, 2009; the FreeBSD operating system base ships with libusb. As a consequence, the devel/libusb ports that used to provide userland programs access to USB devices is useless and so marked as IGNORE for recent versions of FreeBSD. This patch detects the FreeBSD version configure is run on and conditionally ignore the libusb detection if relevant.
Obtained from: Ooo vcs.
The various SCardConnect() can block if a device is already opened in PC/SC potentially leading to deadlocks. Avoiding using this and matching the device name against a list of supported devices instead.
- Add driver agnostic nfc_pick_device(), nfc_list_devices();
- New API function: nfc_list_devices();
- PCSC Context sharing for acr122 driver;
- List all devices in nfc-list(1);
- Various code fixes and cleanup;
- Remove warnings when compiling;
- Merge r191:199 from trunk \_°< Coin!
- acr122: add acr122_pick_device(), acr122_list_devices();
- Add device name to device descriptions (nfc_device_desc_t) to select a given PCSC device;
- Use constants for driver names;
- Various code cleanups and enhancements.