ICODE SLI are ISO 15693 compliant but feature proprietary extensions not implemented in the reader's firmware. However, you can use those features in transparent mode. The following post will focus on EAS management with this type of tag. The function entries described are available in the CSB6 SDK.
EAS management in the different ICODE SLI types
The way to access to the EAS field depend on the type of ICODE used. With ICODE SLI/SLI-X type L and S, EAS field can be password protected. Once password protected, a "set password" command must be sent to the card once in the RF field or if the password is modified. It will allow the execution of most of the other commands. This security is not available on classic ICODE SLI/SLI-X.
Transparent mode APDU structure
Most of the frames sent to the card contains :
Flags (1 byte) :
Those are detailed in the ISO 15693 documentation.
Command ID (1 byte) :
Allows to identify the type of command sent.
IC manufacturing code (1 byte) :
It refers to the tag type and is contained in the UID of the tag. For NXP Semiconductors, This code is 04h.
UID (8 bytes).
Some other fields are command specific and will be detailed below.
Command available in the SDK
*** AVAILABLE FOR ALL ICODE SLI TYPES ***
Available with void set_EAS(BYTE snr);
Set EAS status to 1.
Available with void reset_EAS(BYTE snr);
Set EAS status to 1.
Available with void lock_EAS(BYTE snr);
This field is commented in the source code. Once locked, EAS cannot be modified anymore.
AVAILABLE FOR ICODE SLI/SLI-X S and L types
Available with void protect_EAS(BYTE snr);
This command allows to protect the EAS field with a password. Once set, this field cannot be changed and you will have to use the "set password" command to modify the EAS status.
Get random number
Available with short get_random_nb(BYTE snr, BYTE * rd_nb)
It will request a 2 bytes randomly generated code required for a proper use of the "set password" command.
Available with void set_password(BYTE snr, BYTE password)
This command requires specific fileds : a password ID to inform the card of which fields are needed to be unlocked, and the previously stored password XOR two random numbers acquired with the "get random number" command.
ex : if the last password was (00 00 00 00)h, and the last "get random number" command return you (0A 25)h, the 4 bytes to pass as command parameters will be (0A 25 0A 25)h.
Available with void write_password(BYTE snr, BYTE password)
Write a new password in the card (if the password field has not been locked).
Available with void lock_password(BYTE snr)
This function is commented in the source code. Once locked, the password cannot be changed.
About the reference application
The application manual is available via the executable call.
A simple [EXECUTABLE NAME] [COM] [HELP] will display the commands available.