New in 1.5.1:
API Changes * Types - Communication-level errors DEIO and DETIMEOUT are now know as ECOMIO, ECOMTIMEOUT respectively - Common device-level errors DEINVAL and DEABORT are now know as EINVALARG, EOPABORT respectively - New errors: EFRAACKMISMATCH, EFRAISERRFRAME, EDEVNOTSUP and ENOTIMPL * Functions - nfc_abort_command() returns a boolean - timeout (struct timeval) pointer added to nfc_initiator_transceive_bytes(), nfc_target_send_bytes() and nfc_target_receive_bytes() - timed functions nfc_initiator_transceive_bytes_timed() and nfc_initiator_transceive_bits_timed() now takes uint32_t as cycles pointer - nfc_initiator_poll_targets() renamed to nfc_initiator_poll_target() and only return one target New in 1.5.0: Installed files - nfc-message.h have been removed, internal macros are not part of API. - New nfc-emulation.h file offers a middle level API to handle emulation (see nfc-emulate-forum-tag4 example) API Changes * Types - New error: DEABORT raised when operation is aborted by user (using nfc_abort_command()) - nfc_chip_t type removed from public API (have been renamed to pn53x_type in chips/pn53x) - nfc_device_spec_t removed, each driver can use his own way to keep a connection pointer * Structures - nfc_device_t now have a nfc_driver_t struct pointer (named .driver) and void pointer (.driver_data) to handle device specific wrapping - nfc_device_t now have a void pointer (.chip_data) to keep some chip specific data - nfc_device_t now have an file descriptor array to manage to abort request - nfc_device_t does have .nc member (nfc_chip_t) anymore (different chips handling in now in chip level) - nfc_device_t does have .nds member (nfc_device_spec_t) anymore, each driver handle its communication using driver_data pointer - nfc_device_t does have .bActive member (bool) anymore, this variable was almost not used and was not efficient - nfc_device_t does have chip's register caches anymore, this is handle in chip level (using chip_data pointer) - driver_callbacks structure have been removed from public API - New nfc_emulator structure used by the new emulation API (see nfc_emulate_target()) - New nfc_emulation_state_machine structure used by the new emulation API, it handles an I/O function and data pointer to create a software based state-machine. * Functions - New nfc_abort_command() function to abort current running command. - New nfc_initiator_transceive_bits_timed() and nfc_initiator_transceive_bytes_timed() to transceive bits/bytes and measure the time to have a reply - New nfc_emulate_target() function to start a target emulation using an nfc_emulator structure (it contains a custom state-machine (nfc_emulation_state_machine struct) and a custom target (nfc_target_t) (see nfc-emulate-forum-tag4 to have a look on how-to use it) New in 1.4.1: API Changes * Types - New error: ETGUIDNOTSUP raised when UID is not 4 bytes long or does not start with 0x08 (Security restriction present in the NXP PN53x chips) New in 1.4.0: API Changes * Types - New nfc_device_option value (enum): NDO_FORCE_ISO14443_A to force the chip to switch in ISO14443-A - New nfc_dep_mode_t (enum) for DEP mode: NDM_UNDEFINED, NDM_PASSIVE, NDM_ACTIVE - New nfc_modulation_type_t (enum) that lists modulation types: NMT_ISO14443A, NMT_ISO14443B, NMT_FELICA, NMT_JEWEL, NMT_DEP - New nfc_baud_rate_t (enum): list of baud rates: NBR_UNDEFINED, NBR_106, NBR_212, NBR_424, NBR_847 - nfc_target_type_t have been removed from API (use nfc_modulation_t instead) * Structures - nfc_device_t now have a boolean bAutoIso14443_4 to keep the locally the state of NDO_AUTO_ISO14443_4 (should not be directly set, use nfc_configure() with NDO_AUTO_ISO14443_4) - nfc_device_t now have an uint8_t ui8Parameters to cache PN53x parameters - nfc_device_t now have a byte_t btSupportByte to cache supported modulations - nfc_dep_info_t have completely changed, please see API documentation - nfc_iso14443b_info_t have completely changed, please see API documentation - nfc_modulation_t have completely changed: it now contains a nfc_modulation_type_t and nfc_baud_rate_t couple. Initialization example: nfc_modulation_t nm = { .nmt = NMT_ISO14443A, .nbr = NBR_106, }; - nfc_target_t now contains new nfc_modulation_t instead of nfc_target_type_t. Initialization example: nfc_target_t nt = { .nm.nmt = NMT_ISO14443A, .nm.nbr = NBR_UNDEFINED, .nti.nai.abtAtqa = { 0x03, 0x44 }, .nti.nai.abtUid = { 0x08, 0xab, 0xcd, 0xef }, .nti.nai.btSak = 0x20, .nti.nai.szUidLen = 4, .nti.nai.abtAts = { 0x75, 0x77, 0x81, 0x02, 0x80 }, .nti.nai.szAtsLen = 5, }; * Functions - nfc_initiator_select_passive_target() now use new nfc_modulation_t and nfc_target_t instead of nfc_target_info_t - nfc_initiator_list_passive_targets() now use new nfc_modulation_t and nfc_target_t instead of nfc_target_info_t - nfc_initiator_poll_targets() use new nfc_modulation_t instead of nfc_target_type_t - nfc_initiator_select_dep_target() completely changed, use now nfc_dep_mode_t, nfc_baudrate_t, nfc_dep_info_t and nfc_target_t, please see API documentation - nfc_target_init() have an additional argument: nfc_target_t to describe the wanted target - append_iso14443a_crc() was renamed to iso14443a_crc_append() - New iso14443a_locate_historical_bytes() to locate historical bytes in ATS New in 1.3.9 (since 1.3.4): Installed files - mifaretag.h and mifareultag.h are removed, Mifare features are not a part of libnfc API anymore (these features are always available in examples/) API Changes * Types - New nfc_device_option_t value (enum): NDO_AUTO_14443_4, an option to enable/disable auto-switching to ISO/IEC 14443-4 if device is compliliant - New nfc_device_option_t value (enum): NDO_EASY_FRAMING, an option to enable/disable automatic frames encapsulation and chaining - New nfc_target_type_t (enum), with values like NTT_MIFARE, NTT_ISO14443B_106, NTT_DEP_ACTIVE_424, etc. - Mifare related types have been removed from API: mifare_cmd, mifare_param_auth, mifare_param_data, mifare_param_value, mifare_param * Structures - nfc_device_t now have boolean bEasyFraming to enable/disable "easy framing" feature (should not be directly set, use nfc_configure() with NDO_EASY_FRAMING) - nfc_device_t now have integer iLastError to handle last error - New chip_callbacks to handle error lookup per chip - driver_callbacks now have a pointer to chip_callbacks - New nfc_target_t that contains nfc_target_info_t and nfc_target_type_t * Functions - nfc_initiator_select_tag() became nfc_initiator_select_passive_target() - New nfc_initiator_list_passive_targets() returns a list of detected target on desired modulation - (experimental) New nfc_initiator_poll_targets() returns targets that are detected during hardware polling (available only with PN532) - nfc_initiator_transceive_dep_bytes(), nfc_target_receive_dep_bytes() and nfc_target_send_dep_bytes() have been removed from API, use NDO_EASY_FRAMING option to switch from raw mode to "easy framing" - nfc_initiator_mifare_cmd() have been removed: no more Mifare related stuff in libnfc's API - New nfc_strerror(), nfc_strerror_r() and nfc_perror() to report errors - New append_iso14443a_crc() to append iso14443a_crc() to a string New in 1.3.4 (since 1.2.1): Installed files - Headers are now installed in include/nfc instead of include/libnfc - libnfc.h have been renamed to nfc.h - defines.h and types.h have been merge into nfc-types.h - bitutils.h is not installed anymore, some functions are now in examples/nfc-utils.c - devices.h, dev_acr122.h, dev_arygon.h, dev_pn531.h, dev_pn533.h and rs232.h are not installed anymore - New header mifareultag.h, like mifaretag.h for Mifare UltraLight - New header nfc-messages.h with messages macros (DBG, ERR, INFO) API Changes * Types - uint32_t which was used as size now are size_t - chip_type became nfc_chip_t (enum) - init_modulation became nfc_modulation_t (enum), and now have NM_ACTIVE_DEP and NM_PASSIVE_DEP modulation values added * Structures - dev_info became nfc_device_t - dev_config_option became nfc_device_option_t - New nfc_device_desc_t to describe the way to access to a NFC device. Initialisation example: nfc_device_desc_t ndd = { ndd.pcDriver = "ARYGON"; ndd.pcPort = "/dev/ttyUSB0"; ndd.uiSpeed = 115200; }; - dev_callbacks became driver_callbacks and now have two function pointers more: pick_device() and list_devices() - New nfc_dep_info_t to handle DEP targets info - tag_info_iso14443a became nfc_iso14443a_info_t - tag_info_iso14443b became nfc_iso14443b_info_t - tag_info_felica became nfc_felica_info_t - tag_info_jewel became nfc_jewel_info_t - tag_info became nfc_target_info_t, and now have extended union to nfc_dep_info_t * Functions - nfc_connect() now takes 1 nfc_devive_desc_t argument (can be NULL) - New nfc_list_devices(), it find available NFC devices using all know drivers - (experimental) New nfc_initiator_select_dep(), it looks for DEP targets - (experimental) New nfc_initiator_transceive_dep_bytes(), like nfc_initiator_transceive_bytes() for DEP targets - (experimental) New nfc_target_receive_dep_bytes() and nfc_target_send_dep_bytes(), to receive/send bytes to DEP target (configured as initiator) while local NFC device is configured as target - New nfc_device_name() returns the device's name - New iso14443a_crc() computes CRC as described in ISO/IEC 14443 - New nfc_version() returns the actual version of libnfc (with SVN revision, if available) |