123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491 |
- #ifndef ADAFRUIT_PN532__
- #define ADAFRUIT_PN532__
- #include <stdint.h>
- #include <stdbool.h>
- #include "sdk_errors.h"
- #define HEADER_SEQUENCE_LENGTH 6
- #define CHECKSUM_SEQUENCE_LENGTH 2
- #define PN532_FRAME_OVERHEAD (HEADER_SEQUENCE_LENGTH + CHECKSUM_SEQUENCE_LENGTH)
- #define PN532_PREAMBLE (0x00)
- #define PN532_STARTCODE1 (0x00)
- #define PN532_STARTCODE2 (0xFF)
- #define PN532_POSTAMBLE (0x00)
- #define PN532_PREAMBLE_OFFSET 0
- #define PN532_STARTCODE1_OFFSET 1
- #define PN532_STARTCODE2_OFFSET 2
- #define PN532_LENGTH_OFFSET 3
- #define PN532_LENGTH_CS_OFFSET 4
- #define PN532_TFI_OFFSET 5
- #define PN532_DATA_OFFSET 6
- #define PN532_HOSTTOPN532 (0xD4)
- #define PN532_PN532TOHOST (0xD5)
- #define PN532_COMMAND_DIAGNOSE (0x00)
- #define PN532_COMMAND_GETFIRMWAREVERSION (0x02)
- #define PN532_COMMAND_GETGENERALSTATUS (0x04)
- #define PN532_COMMAND_READREGISTER (0x06)
- #define PN532_COMMAND_WRITEREGISTER (0x08)
- #define PN532_COMMAND_READGPIO (0x0C)
- #define PN532_COMMAND_WRITEGPIO (0x0E)
- #define PN532_COMMAND_SETSERIALBAUDRATE (0x10)
- #define PN532_COMMAND_SETPARAMETERS (0x12)
- #define PN532_COMMAND_SAMCONFIGURATION (0x14)
- #define PN532_COMMAND_POWERDOWN (0x16)
- #define PN532_COMMAND_RFCONFIGURATION (0x32)
- #define PN532_COMMAND_RFREGULATIONTEST (0x58)
- #define PN532_COMMAND_INJUMPFORDEP (0x56)
- #define PN532_COMMAND_INJUMPFORPSL (0x46)
- #define PN532_COMMAND_INLISTPASSIVETARGET (0x4A)
- #define PN532_COMMAND_INATR (0x50)
- #define PN532_COMMAND_INPSL (0x4E)
- #define PN532_COMMAND_INDATAEXCHANGE (0x40)
- #define PN532_COMMAND_INCOMMUNICATETHRU (0x42)
- #define PN532_COMMAND_INDESELECT (0x44)
- #define PN532_COMMAND_INRELEASE (0x52)
- #define PN532_COMMAND_INSELECT (0x54)
- #define PN532_COMMAND_INAUTOPOLL (0x60)
- #define PN532_COMMAND_TGINITASTARGET (0x8C)
- #define PN532_COMMAND_TGSETGENERALBYTES (0x92)
- #define PN532_COMMAND_TGGETDATA (0x86)
- #define PN532_COMMAND_TGSETDATA (0x8E)
- #define PN532_COMMAND_TGSETMETADATA (0x94)
- #define PN532_COMMAND_TGGETINITIATORCOMMAND (0x88)
- #define PN532_COMMAND_TGRESPONSETOINITIATOR (0x90)
- #define PN532_COMMAND_TGGETTARGETSTATUS (0x8A)
- #define MIFARE_CMD_AUTH_A (0x60)
- #define MIFARE_CMD_AUTH_B (0x61)
- #define MIFARE_CMD_READ (0x30)
- #define MIFARE_CMD_WRITE (0xA0)
- #define MIFARE_CMD_TRANSFER (0xB0)
- #define MIFARE_CMD_DECREMENT (0xC0)
- #define MIFARE_CMD_INCREMENT (0xC1)
- #define MIFARE_CMD_STORE (0xC2)
- #define MIFARE_ULTRALIGHT_CMD_WRITE (0xA2)
- #define T2T_MAX_DATA_EXCHANGE 16
- #define T2T_PAGE_SIZE 4
- #define T2T_END_PAGE_OFFSET 3
- #define SENS_RES_ANTICOLLISION_INFO_BYTE 0
- #define SENS_RES_PLATFORM_INFO_BYTE 1
- #define SENS_RES_SIZE 2
- #define MAX_NFC_A_ID_LEN 10
- #define PN532_MIFARE_ISO14443A_BAUD (0x00)
- #define PN532_I2C_ADDRESS (0x48 >> 1)
- #ifndef PN532_PACKBUFF_SIZE
- #define PN532_PACKBUFF_SIZE 64
- #endif
- typedef struct
- {
- uint8_t sens_res[SENS_RES_SIZE];
- uint8_t sel_res;
- uint8_t nfc_id_len;
- uint8_t nfc_id[MAX_NFC_A_ID_LEN];
- } nfc_a_tag_info;
- ret_code_t adafruit_pn532_init(bool force);
- ret_code_t adafruit_pn532_i2c_create(void);
- ret_code_t adafruit_pn532_sam_config(uint8_t mode);
- ret_code_t adafruit_pn532_power_down(void);
- ret_code_t adafruit_pn532_wake_up(void);
- ret_code_t adafruit_pn532_firmware_version_get(uint32_t * p_response);
- ret_code_t adafruit_pn532_cmd_send(uint8_t * p_cmd, uint8_t cmd_len, uint16_t timeout);
- ret_code_t adafruit_pn532_field_on(void);
- ret_code_t adafruit_pn532_field_off(void);
- ret_code_t adafruit_pn532_nfc_a_target_init(nfc_a_tag_info * p_tag_info,
- uint16_t timeout);
- ret_code_t adafruit_pn532_in_data_exchange(uint8_t * p_send,
- uint8_t send_len,
- uint8_t * p_response,
- uint8_t * p_response_len);
- ret_code_t adafruit_pn532_passive_activation_retries_set(uint8_t max_retries);
- ret_code_t adafruit_pn532_tag2_read(uint8_t start_page, uint8_t * p_buffer);
- ret_code_t adafruit_pn532_tag2_page_write(uint8_t page, uint8_t * p_data);
- ret_code_t adafruit_pn532_ndef_uri_tag2_write(uint8_t uri_id, char * p_url, uint8_t data_len);
- void adafruit_pn532_tag_info_printout(nfc_a_tag_info const * const p_tag_info);
- bool adafruit_pn532_is_ready(void);
- bool adafruit_pn532_waitready_ms(uint16_t timeout);
- ret_code_t adafruit_pn532_ack_read(void);
- ret_code_t adafruit_pn532_data_read(uint8_t * p_buff, uint8_t n);
- ret_code_t adafruit_pn532_command_write(uint8_t * p_cmd, uint8_t cmd_len);
- #endif
|