Mercurial > code > home > repos > homeauto
diff service/rfid_pn532_py/pyfreefare/freefare.h @ 404:19ef0ac8f7f7
build more of libfreefare
Ignore-this: efb50f50a9cc9de6d8ce068cd391a6fc
author | drewp@bigasterisk.com |
---|---|
date | Sun, 10 Mar 2019 04:02:59 -0700 |
parents | b4404948d1e8 |
children |
line wrap: on
line diff
--- a/service/rfid_pn532_py/pyfreefare/freefare.h Mon Mar 04 15:18:46 2019 -0800 +++ b/service/rfid_pn532_py/pyfreefare/freefare.h Sun Mar 10 04:02:59 2019 -0700 @@ -46,20 +46,20 @@ FreefareTag *freefare_get_tags(nfc_device *device); FreefareTag freefare_tag_new(nfc_device *device, nfc_target target); freefare_tag_type freefare_get_tag_type(FreefareTag tag); - // const char *freefare_get_tag_friendly_name(FreefareTag tag); - // char *freefare_get_tag_uid(FreefareTag tag); - // void freefare_free_tag(FreefareTag tag); - // void freefare_free_tags(FreefareTag *tags); - // bool freefare_selected_tag_is_present(nfc_device *device); - // - // const char *freefare_strerror(FreefareTag tag); - // int freefare_strerror_r(FreefareTag tag, char *buffer, size_t len); - // void freefare_perror(FreefareTag tag, const char *string); - // - // - // +const char *freefare_get_tag_friendly_name(FreefareTag tag); +char *freefare_get_tag_uid(FreefareTag tag); +void freefare_free_tag(FreefareTag tag); +void freefare_free_tags(FreefareTag *tags); +bool freefare_selected_tag_is_present(nfc_device *device); + +const char *freefare_strerror(FreefareTag tag); +int freefare_strerror_r(FreefareTag tag, char *buffer, size_t len); +void freefare_perror(FreefareTag tag, const char *string); + + + // bool felica_taste(nfc_device *device, nfc_target target); - // + // #define FELICA_SC_RW 0x0009 // #define FELICA_SC_RO 0x000b // @@ -152,67 +152,67 @@ // FreefareTag mifare_mini_tag_new(nfc_device *device, nfc_target target); // FreefareTag mifare_classic1k_tag_new(nfc_device *device, nfc_target target); // FreefareTag mifare_classic4k_tag_new(nfc_device *device, nfc_target target); -// void mifare_classic_tag_free(FreefareTag tag); -// -// typedef unsigned char MifareClassicBlock[16]; -// -// typedef uint8_t MifareClassicSectorNumber; -// typedef unsigned char MifareClassicBlockNumber; -// -// typedef enum { MFC_KEY_A, MFC_KEY_B } MifareClassicKeyType; -// typedef unsigned char MifareClassicKey[6]; -// -// /* NFC Forum public key */ -// extern const MifareClassicKey mifare_classic_nfcforum_public_key_a; -// -// int mifare_classic_connect(FreefareTag tag); -// int mifare_classic_disconnect(FreefareTag tag); -// -// int mifare_classic_authenticate(FreefareTag tag, const MifareClassicBlockNumber block, const MifareClassicKey key, const MifareClassicKeyType key_type); -// int mifare_classic_read(FreefareTag tag, const MifareClassicBlockNumber block, MifareClassicBlock *data); -// int mifare_classic_init_value(FreefareTag tag, const MifareClassicBlockNumber block, const int32_t value, const MifareClassicBlockNumber adr); -// int mifare_classic_read_value(FreefareTag tag, const MifareClassicBlockNumber block, int32_t *value, MifareClassicBlockNumber *adr); -// int mifare_classic_write(FreefareTag tag, const MifareClassicBlockNumber block, const MifareClassicBlock data); -// -// int mifare_classic_increment(FreefareTag tag, const MifareClassicBlockNumber block, const uint32_t amount); -// int mifare_classic_decrement(FreefareTag tag, const MifareClassicBlockNumber block, const uint32_t amount); -// int mifare_classic_restore(FreefareTag tag, const MifareClassicBlockNumber block); -// int mifare_classic_transfer(FreefareTag tag, const MifareClassicBlockNumber block); -// -// int mifare_classic_get_trailer_block_permission(FreefareTag tag, const MifareClassicBlockNumber block, const uint16_t permission, const MifareClassicKeyType key_type); -// int mifare_classic_get_data_block_permission(FreefareTag tag, const MifareClassicBlockNumber block, const unsigned char permission, const MifareClassicKeyType key_type); +void mifare_classic_tag_free(FreefareTag tag); // -// int mifare_classic_format_sector(FreefareTag tag, const MifareClassicSectorNumber sector); -// -// void mifare_classic_trailer_block(MifareClassicBlock *block, const MifareClassicKey key_a, uint8_t ab_0, uint8_t ab_1, uint8_t ab_2, uint8_t ab_tb, const uint8_t gpb, const MifareClassicKey key_b); -// -// MifareClassicSectorNumber mifare_classic_block_sector(MifareClassicBlockNumber block); -// MifareClassicBlockNumber mifare_classic_sector_first_block(MifareClassicSectorNumber sector); -// size_t mifare_classic_sector_block_count(MifareClassicSectorNumber sector); -// MifareClassicBlockNumber mifare_classic_sector_last_block(MifareClassicSectorNumber sector); -// -// #define C_000 0 -// #define C_001 1 -// #define C_010 2 -// #define C_011 3 -// #define C_100 4 -// #define C_101 5 -// #define C_110 6 -// #define C_111 7 -// #define C_DEFAULT 255 -// -// /* MIFARE Classic Access Bits */ -// #define MCAB_R 0x8 -// #define MCAB_W 0x4 -// #define MCAB_D 0x2 -// #define MCAB_I 0x1 -// -// #define MCAB_READ_KEYA 0x400 -// #define MCAB_WRITE_KEYA 0x100 -// #define MCAB_READ_ACCESS_BITS 0x040 -// #define MCAB_WRITE_ACCESS_BITS 0x010 -// #define MCAB_READ_KEYB 0x004 -// #define MCAB_WRITE_KEYB 0x001 +typedef unsigned char MifareClassicBlock[16]; + +typedef uint8_t MifareClassicSectorNumber; +typedef unsigned char MifareClassicBlockNumber; + +typedef enum { MFC_KEY_A, MFC_KEY_B } MifareClassicKeyType; +typedef unsigned char MifareClassicKey[6]; + +/* NFC Forum public key */ +extern const MifareClassicKey mifare_classic_nfcforum_public_key_a; + +int mifare_classic_connect(FreefareTag tag); +int mifare_classic_disconnect(FreefareTag tag); + +int mifare_classic_authenticate(FreefareTag tag, const MifareClassicBlockNumber block, const MifareClassicKey key, const MifareClassicKeyType key_type); +int mifare_classic_read(FreefareTag tag, const MifareClassicBlockNumber block, MifareClassicBlock *data); +int mifare_classic_init_value(FreefareTag tag, const MifareClassicBlockNumber block, const int32_t value, const MifareClassicBlockNumber adr); +int mifare_classic_read_value(FreefareTag tag, const MifareClassicBlockNumber block, int32_t *value, MifareClassicBlockNumber *adr); +int mifare_classic_write(FreefareTag tag, const MifareClassicBlockNumber block, const MifareClassicBlock data); + +int mifare_classic_increment(FreefareTag tag, const MifareClassicBlockNumber block, const uint32_t amount); +int mifare_classic_decrement(FreefareTag tag, const MifareClassicBlockNumber block, const uint32_t amount); +int mifare_classic_restore(FreefareTag tag, const MifareClassicBlockNumber block); +int mifare_classic_transfer(FreefareTag tag, const MifareClassicBlockNumber block); + +int mifare_classic_get_trailer_block_permission(FreefareTag tag, const MifareClassicBlockNumber block, const uint16_t permission, const MifareClassicKeyType key_type); +int mifare_classic_get_data_block_permission(FreefareTag tag, const MifareClassicBlockNumber block, const unsigned char permission, const MifareClassicKeyType key_type); + +int mifare_classic_format_sector(FreefareTag tag, const MifareClassicSectorNumber sector); + +void mifare_classic_trailer_block(MifareClassicBlock *block, const MifareClassicKey key_a, uint8_t ab_0, uint8_t ab_1, uint8_t ab_2, uint8_t ab_tb, const uint8_t gpb, const MifareClassicKey key_b); + +MifareClassicSectorNumber mifare_classic_block_sector(MifareClassicBlockNumber block); +MifareClassicBlockNumber mifare_classic_sector_first_block(MifareClassicSectorNumber sector); +size_t mifare_classic_sector_block_count(MifareClassicSectorNumber sector); +MifareClassicBlockNumber mifare_classic_sector_last_block(MifareClassicSectorNumber sector); + +#define C_000 0 +#define C_001 1 +#define C_010 2 +#define C_011 3 +#define C_100 4 +#define C_101 5 +#define C_110 6 +#define C_111 7 +#define C_DEFAULT 255 + +/* MIFARE Classic Access Bits */ +#define MCAB_R 0x8 +#define MCAB_W 0x4 +#define MCAB_D 0x2 +#define MCAB_I 0x1 + +#define MCAB_READ_KEYA 0x400 +#define MCAB_WRITE_KEYA 0x100 +#define MCAB_READ_ACCESS_BITS 0x040 +#define MCAB_WRITE_ACCESS_BITS 0x010 +#define MCAB_READ_KEYB 0x004 +#define MCAB_WRITE_KEYB 0x001 // // struct mad_aid { // uint8_t application_code;