diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/librfid/rfid_layer2_iso15693.h | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/include/librfid/rfid_layer2_iso15693.h b/include/librfid/rfid_layer2_iso15693.h index 37d204d..f84a6e1 100644 --- a/include/librfid/rfid_layer2_iso15693.h +++ b/include/librfid/rfid_layer2_iso15693.h @@ -49,7 +49,94 @@ enum iso15693_state { ISO15693_STATE_NONE, }; +#ifdef __LIBRFID__ + +#define ISO15693_UID_LEN 8 +#define ISO15693_CRC_LEN 2 + +/* ISO 15693-3, Ch. 7.2 Table 3*/ +enum iso15693_request_flags { + RFID_15693_F_SUBC_TWO = 0x01, + RFID_15693_F_RATE_HIGH = 0x02, + RFID_15693_F_INV_TABLE_5 = 0x04, + RFID_15693_F_PROT_OEXT = 0x08, +}; + +/* ISO 15693-3, Ch. 7.2 Table 4 */ +enum iso15693_request_flags_table4 { + RFID_15693_F4_SELECTED = 0x10, /* only VICC in 'select' state */ + RFID_15693_F4_ADDRESS = 0x20, /* request is addressed */ + RFID_15693_F4_CUSTOM = 0x40, +}; + +/* ISO 15693-3, Ch. 7.2 Table 5 */ +enum iso15693_request_flags_table5 { + RFID_15693_F5_AFI_PRES = 0x10, /* AFI is present */ + RFID_15693_F5_NSLOTS_1 = 0x20, /* only 1 slot (instead of 16) */ + RFID_15693_F5_CUSTOM = 0x40, +}; + +/* ISO 15963-3, Ch. 7.2 Figure 4 */ +struct iso15693_request { + u_int8_t flags; + u_int8_t command; + u_int8_t data[0]; +} __attribute__ ((packed)); + + + +/* ISO 15693, Ch. 7.3 Table 6 */ +enum iso15693_response_flags { + RFID_15693_RF_ERROR = 0x01, + RFID_15693_RF_EXTENDED = 0x08, +}; + +/* ISO 15693, Ch. 7.3.2 Table 7 */ +enum iso15693_response_errors { + RFID_15693_ERR_NOTSUPP = 0x01, + RFID_15693_ERR_INVALID = 0x02, /* command not recognized */ + RFID_15693_ERR_UNKNOWN = 0x0f, /* unknown error */ + RFID_15693_ERR_BLOCK_NA = 0x10, /* block not available */ + RFID_15693_ERR_BLOCK_LOCKED = 0x11, + RFID_15693_ERR_BLOCK_LOCKED_CH = 0x12, + RFID_15693_ERR_BLOCK_NOTPROG = 0x13, + RFID_15693_ERR_BLOCK_NOTLOCK = 0x14, +}; + +/* ISO 15693, Ch. 7.4 */ +enum iso15693_vicc_states { + RFID_15693_STATE_POWER_OFF, + RFID_15693_STATE_READY, + RFID_15693_STATE_QUIET, + RFID_15693_STATE_SELECTED, +}; + +/* ISO 15693, Ch. 9.1 Table 10*/ +enum iso15693_commands { + /* Mandatory 0x01 .. 0x1f */ + ISO15693_CMD_INVENTORY = 0x01, + ISO15693_CMD_STAY_QUIET = 0x02, + /* Optional 0x20 .. 0x9f */ + ISO15693_CMD_READ_BLOCK_SINGLE = 0x20, + ISO15693_CMD_WRITE_BLOCK_SINGLE = 0x21, + ISO15693_CMD_LOCK_BLOCK = 0x22, + ISO15693_CMD_READ_BLOCK_MULTI = 0x23, + ISO15693_CMD_WRITE_BLOCK_MULTI = 0x24, + ISO15693_CMD_SELECT = 0x25, + ISO15693_CMD_RESET_TO_READY = 0x26, + ISO15693_CMD_WRITE_AFI = 0x27, + ISO15693_CMD_LOCK_AFI = 0x28, + ISO15693_CMD_WRITE_DSFID = 0x29, + ISO15693_CMD_LOCK_DSFID = 0x2a, + ISO15693_CMD_GET_SYSINFO = 0x2b, + ISO15693_CMD_GET_BLOCK_SECURITY = 0x2c + /* Custom 0xa0 .. 0xdf */ + /* Proprietary 0xe0 .. 0xff */ +}; + + #include <librfid/rfid_layer2.h> extern const struct rfid_layer2 rfid_layer2_iso15693; +#endif /* __LIBRFID__ */ #endif /* _ISO15693_H */ |