new xadow NFC module

Dependents:   xadow_smartstrap_for_pebble

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?

UserRevisionLine numberNew 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