new xadow NFC module
Dependents: xadow_smartstrap_for_pebble
XadowNFC.h@1:27242e2abd99, 2015-11-06 (annotated)
- Committer:
- KillingJacky
- Date:
- Fri Nov 06 02:52:37 2015 +0000
- Revision:
- 1:27242e2abd99
- Parent:
- 0:9d116099a88d
**removed emulation for tag because the resources limit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
KillingJacky | 0:9d116099a88d | 1 | /** |
KillingJacky | 0:9d116099a88d | 2 | * Xadow NFC can work in 2 modes: |
KillingJacky | 0:9d116099a88d | 3 | * 1) adapter, can read uid, read NDEF data, write NDEF, erase NDEF memory |
KillingJacky | 0:9d116099a88d | 4 | * supported card: Mifare classic, Mifare ultralight |
KillingJacky | 0:9d116099a88d | 5 | * 2) emulate as a TAG, with 106 kbps DEP, support setting the uid of the emulated tag. |
KillingJacky | 0:9d116099a88d | 6 | */ |
KillingJacky | 0:9d116099a88d | 7 | |
KillingJacky | 0:9d116099a88d | 8 | |
KillingJacky | 0:9d116099a88d | 9 | |
KillingJacky | 0:9d116099a88d | 10 | #ifndef _XADOW_NFC_H_ |
KillingJacky | 0:9d116099a88d | 11 | #define _XADOW_NFC_H_ |
KillingJacky | 0:9d116099a88d | 12 | |
KillingJacky | 0:9d116099a88d | 13 | #include "mbed.h" |
KillingJacky | 0:9d116099a88d | 14 | |
KillingJacky | 0:9d116099a88d | 15 | /*! |
KillingJacky | 0:9d116099a88d | 16 | \def NFC_DEVICE_ADDR |
KillingJacky | 0:9d116099a88d | 17 | The I2C address of NFC |
KillingJacky | 0:9d116099a88d | 18 | |
KillingJacky | 0:9d116099a88d | 19 | \def NFC_SCAN_ID |
KillingJacky | 0:9d116099a88d | 20 | The id of scan data, the format is 0, 0, 0, Device address |
KillingJacky | 0:9d116099a88d | 21 | |
KillingJacky | 0:9d116099a88d | 22 | \def NFC_ADAPTER_INIT_ID |
KillingJacky | 0:9d116099a88d | 23 | The id of NFC initialize as a adapter |
KillingJacky | 0:9d116099a88d | 24 | |
KillingJacky | 0:9d116099a88d | 25 | \def NFC_ADAPTER_GET_UID_ID |
KillingJacky | 0:9d116099a88d | 26 | The id of NFC adapter to get uid |
KillingJacky | 0:9d116099a88d | 27 | |
KillingJacky | 0:9d116099a88d | 28 | \def NFC_ADAPTER_READ_ID |
KillingJacky | 0:9d116099a88d | 29 | The id of NFC adapter to read NDEF message |
KillingJacky | 0:9d116099a88d | 30 | |
KillingJacky | 0:9d116099a88d | 31 | \def NFC_ADAPTER_WRITE_ID |
KillingJacky | 0:9d116099a88d | 32 | The id of NFC adapter to write NDEF message |
KillingJacky | 0:9d116099a88d | 33 | |
KillingJacky | 0:9d116099a88d | 34 | \def NFC_ADAPTER_ERASE_ID |
KillingJacky | 0:9d116099a88d | 35 | The id of NFC adapter to erase NDEF message |
KillingJacky | 0:9d116099a88d | 36 | |
KillingJacky | 0:9d116099a88d | 37 | */ |
KillingJacky | 0:9d116099a88d | 38 | |
KillingJacky | 0:9d116099a88d | 39 | /* |
KillingJacky | 0:9d116099a88d | 40 | * Data format : ID, Length (n bytes, form 1 to n), Data1, Data2, ... ,Data n |
KillingJacky | 0:9d116099a88d | 41 | * For example, get the scan data. |
KillingJacky | 0:9d116099a88d | 42 | * First, Send: 0x00(NFC_SCAN_ID),0x00(Data length) to device. |
KillingJacky | 0:9d116099a88d | 43 | * Second, Receive scan data(ID + Data length + Data 1, Data 2, Data 3, Data 4 = 6 bytes). |
KillingJacky | 0:9d116099a88d | 44 | * Third, The scan data begin from the third data of received. |
KillingJacky | 0:9d116099a88d | 45 | * End |
KillingJacky | 0:9d116099a88d | 46 | */ |
KillingJacky | 0:9d116099a88d | 47 | |
KillingJacky | 0:9d116099a88d | 48 | #define NFC_DEVICE_ADDR (0x06<<1) // |
KillingJacky | 0:9d116099a88d | 49 | #define NFC_SCAN_ID 0 // |
KillingJacky | 0:9d116099a88d | 50 | #define NFC_ADAPTER_INIT_ID 1 // |
KillingJacky | 0:9d116099a88d | 51 | #define NFC_ADAPTER_GET_UID_ID 2 // |
KillingJacky | 0:9d116099a88d | 52 | #define NFC_ADAPTER_READ_ID 3 // |
KillingJacky | 0:9d116099a88d | 53 | #define NFC_ADAPTER_WRITE_ID 4 // |
KillingJacky | 0:9d116099a88d | 54 | #define NFC_ADAPTER_ERASE_ID 5 // |
KillingJacky | 0:9d116099a88d | 55 | |
KillingJacky | 0:9d116099a88d | 56 | /** |
KillingJacky | 0:9d116099a88d | 57 | * \brief Get the status of the NFC device. |
KillingJacky | 0:9d116099a88d | 58 | * |
KillingJacky | 0:9d116099a88d | 59 | * \return Return TRUE or FALSE. TRUE is on line, FALSE is off line. |
KillingJacky | 0:9d116099a88d | 60 | * |
KillingJacky | 0:9d116099a88d | 61 | */ |
KillingJacky | 0:9d116099a88d | 62 | unsigned char nfc_check_online(void); |
KillingJacky | 0:9d116099a88d | 63 | |
KillingJacky | 0:9d116099a88d | 64 | /** |
KillingJacky | 0:9d116099a88d | 65 | * \brief Initialize NFC as a adapter, that can read and write a tag. |
KillingJacky | 0:9d116099a88d | 66 | * |
KillingJacky | 0:9d116099a88d | 67 | * \return Return Null. |
KillingJacky | 0:9d116099a88d | 68 | * |
KillingJacky | 0:9d116099a88d | 69 | */ |
KillingJacky | 0:9d116099a88d | 70 | void nfc_adapter_init(void); |
KillingJacky | 0:9d116099a88d | 71 | |
KillingJacky | 0:9d116099a88d | 72 | /** |
KillingJacky | 0:9d116099a88d | 73 | * \brief Get the uid data from a tag. |
KillingJacky | 0:9d116099a88d | 74 | * |
KillingJacky | 0:9d116099a88d | 75 | * \return Return the pointer of uid data, the format is NFC_ADAPTER_GET_UID_ID, Data length, Data 1, Data2, ... |
KillingJacky | 0:9d116099a88d | 76 | * |
KillingJacky | 0:9d116099a88d | 77 | */ |
KillingJacky | 0:9d116099a88d | 78 | unsigned char *nfc_adapter_get_uid(void); |
KillingJacky | 0:9d116099a88d | 79 | |
KillingJacky | 0:9d116099a88d | 80 | /** |
KillingJacky | 0:9d116099a88d | 81 | * \brief Read the NDEF data from a tag. |
KillingJacky | 0:9d116099a88d | 82 | * |
KillingJacky | 0:9d116099a88d | 83 | * \return Return the pointer of NEDF data, the format is NFC_ADAPTER_READ_ID, Data length, Data 1, Data2, ... |
KillingJacky | 0:9d116099a88d | 84 | * |
KillingJacky | 0:9d116099a88d | 85 | */ |
KillingJacky | 0:9d116099a88d | 86 | unsigned char *nfc_adapter_read(void); |
KillingJacky | 0:9d116099a88d | 87 | |
KillingJacky | 0:9d116099a88d | 88 | /** |
KillingJacky | 0:9d116099a88d | 89 | * \brief Write the NDEF data to a tag. |
KillingJacky | 0:9d116099a88d | 90 | * |
KillingJacky | 0:9d116099a88d | 91 | * \param [in] *data the NEDF data want to write. |
KillingJacky | 0:9d116099a88d | 92 | * \param [in] len the length of the NEDF data want to write. max length is 256. |
KillingJacky | 0:9d116099a88d | 93 | * \return Return NULL |
KillingJacky | 0:9d116099a88d | 94 | * |
KillingJacky | 0:9d116099a88d | 95 | */ |
KillingJacky | 0:9d116099a88d | 96 | void nfc_adapter_write(unsigned char *data, unsigned char len); |
KillingJacky | 0:9d116099a88d | 97 | |
KillingJacky | 0:9d116099a88d | 98 | /** |
KillingJacky | 0:9d116099a88d | 99 | * \brief Earse the NDEF data. |
KillingJacky | 0:9d116099a88d | 100 | * |
KillingJacky | 0:9d116099a88d | 101 | * \return Return Null. |
KillingJacky | 0:9d116099a88d | 102 | * |
KillingJacky | 0:9d116099a88d | 103 | */ |
KillingJacky | 0:9d116099a88d | 104 | void nfc_adapter_erase(void); |
KillingJacky | 0:9d116099a88d | 105 | |
KillingJacky | 0:9d116099a88d | 106 | |
KillingJacky | 0:9d116099a88d | 107 | |
KillingJacky | 0:9d116099a88d | 108 | #endif |