Added ATQA information for card identification
Added MIFARE DESFire type
Improved RATS
Added the "Dumping memory contents not implemented for that PICC type." for ISO-14443 cards
updated keyword.txt
Added PPS (Protocol and Parameter Selection Request)
Change baud rates in PPS and hardcoded CID
Improved ATS response.
Made ATS response more user-friendly
Enable CRC for T=CL after succesfull PPS.
Added TCL_Transceive and TCL_Deselect methods.
Response to TCL_Transceive takes care if R-Block is received
Added private methos to help parse PCB Block response
Using a structure to transceive PCB blocks.
Renamed some methods and structures.
Change some method and structure names and fixed a bug in PPS.
Added sanity check to PPS command
Added method to send R-Block (ACK/NAK).
Also takes care if chaining is present in I-Block response.
PPS works at 106 and 212 Kbps (Higher speeds not working)
* removed need for reset pin - use soft reset on PCD_Init() if reset pin has not been configured
* UINT8_MAX is used to signify an unused reset connection, the _resetPowerDownPin member is initialized accordingly
http://forum.arduino.cc/index.php?topic=256260.msg2756668#msg2756668
Above forum message is indicating that the old Servo Example is problematic. For better user experience, I (Original Poster) updated the code and header to give more information what this example does. Commented most of the code.
It seems that selftest completion condition
(PCD_ReadRegister(DivIrqReg) & 4) may not work.
On my v1.0 device DivIrqReg is stuck at 0x13 during test,
but output data is generated succesfully.
I think, the better way to check for completion is to
monitor FIFO level register.
It seems that the last four uid bytes should be used for
auth instead of first ones.
This patch allows to work with Mifare plus cards in SL1 mode,
that have 7 byte uids (e.g. Troyka transport cards.)
See also "3.2.5 MIFARE Classic Authentication" of AN10927 document.
http://cache.nxp.com/documents/application_note/AN10927.pdf