new xadow NFC module

Dependents:   xadow_smartstrap_for_pebble

Committer:
KillingJacky
Date:
Wed Nov 04 09:59:37 2015 +0000
Revision:
0:9d116099a88d
Child:
1:27242e2abd99
init commit

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 \def NFC_EMULATE_INIT_ID
KillingJacky 0:9d116099a88d 38 The id of NFC emulate as a tag
KillingJacky 0:9d116099a88d 39 */
KillingJacky 0:9d116099a88d 40
KillingJacky 0:9d116099a88d 41 /*
KillingJacky 0:9d116099a88d 42 * Data format : ID, Length (n bytes, form 1 to n), Data1, Data2, ... ,Data n
KillingJacky 0:9d116099a88d 43 * For example, get the scan data.
KillingJacky 0:9d116099a88d 44 * First, Send: 0x00(NFC_SCAN_ID),0x00(Data length) to device.
KillingJacky 0:9d116099a88d 45 * Second, Receive scan data(ID + Data length + Data 1, Data 2, Data 3, Data 4 = 6 bytes).
KillingJacky 0:9d116099a88d 46 * Third, The scan data begin from the third data of received.
KillingJacky 0:9d116099a88d 47 * End
KillingJacky 0:9d116099a88d 48 */
KillingJacky 0:9d116099a88d 49
KillingJacky 0:9d116099a88d 50 #define NFC_DEVICE_ADDR (0x06<<1) //
KillingJacky 0:9d116099a88d 51 #define NFC_SCAN_ID 0 //
KillingJacky 0:9d116099a88d 52 #define NFC_ADAPTER_INIT_ID 1 //
KillingJacky 0:9d116099a88d 53 #define NFC_ADAPTER_GET_UID_ID 2 //
KillingJacky 0:9d116099a88d 54 #define NFC_ADAPTER_READ_ID 3 //
KillingJacky 0:9d116099a88d 55 #define NFC_ADAPTER_WRITE_ID 4 //
KillingJacky 0:9d116099a88d 56 #define NFC_ADAPTER_ERASE_ID 5 //
KillingJacky 0:9d116099a88d 57 #define NFC_EMULATE_INIT_ID 6 //
KillingJacky 0:9d116099a88d 58
KillingJacky 0:9d116099a88d 59 /**
KillingJacky 0:9d116099a88d 60 * \brief Get the status of the NFC device.
KillingJacky 0:9d116099a88d 61 *
KillingJacky 0:9d116099a88d 62 * \return Return TRUE or FALSE. TRUE is on line, FALSE is off line.
KillingJacky 0:9d116099a88d 63 *
KillingJacky 0:9d116099a88d 64 */
KillingJacky 0:9d116099a88d 65 unsigned char nfc_check_online(void);
KillingJacky 0:9d116099a88d 66
KillingJacky 0:9d116099a88d 67 /**
KillingJacky 0:9d116099a88d 68 * \brief Initialize NFC as a adapter, that can read and write a tag.
KillingJacky 0:9d116099a88d 69 *
KillingJacky 0:9d116099a88d 70 * \return Return Null.
KillingJacky 0:9d116099a88d 71 *
KillingJacky 0:9d116099a88d 72 */
KillingJacky 0:9d116099a88d 73 void nfc_adapter_init(void);
KillingJacky 0:9d116099a88d 74
KillingJacky 0:9d116099a88d 75 /**
KillingJacky 0:9d116099a88d 76 * \brief Get the uid data from a tag.
KillingJacky 0:9d116099a88d 77 *
KillingJacky 0:9d116099a88d 78 * \return Return the pointer of uid data, the format is NFC_ADAPTER_GET_UID_ID, Data length, Data 1, Data2, ...
KillingJacky 0:9d116099a88d 79 *
KillingJacky 0:9d116099a88d 80 */
KillingJacky 0:9d116099a88d 81 unsigned char *nfc_adapter_get_uid(void);
KillingJacky 0:9d116099a88d 82
KillingJacky 0:9d116099a88d 83 /**
KillingJacky 0:9d116099a88d 84 * \brief Read the NDEF data from a tag.
KillingJacky 0:9d116099a88d 85 *
KillingJacky 0:9d116099a88d 86 * \return Return the pointer of NEDF data, the format is NFC_ADAPTER_READ_ID, Data length, Data 1, Data2, ...
KillingJacky 0:9d116099a88d 87 *
KillingJacky 0:9d116099a88d 88 */
KillingJacky 0:9d116099a88d 89 unsigned char *nfc_adapter_read(void);
KillingJacky 0:9d116099a88d 90
KillingJacky 0:9d116099a88d 91 /**
KillingJacky 0:9d116099a88d 92 * \brief Write the NDEF data to a tag.
KillingJacky 0:9d116099a88d 93 *
KillingJacky 0:9d116099a88d 94 * \param [in] *data the NEDF data want to write.
KillingJacky 0:9d116099a88d 95 * \param [in] len the length of the NEDF data want to write. max length is 256.
KillingJacky 0:9d116099a88d 96 * \return Return NULL
KillingJacky 0:9d116099a88d 97 *
KillingJacky 0:9d116099a88d 98 */
KillingJacky 0:9d116099a88d 99 void nfc_adapter_write(unsigned char *data, unsigned char len);
KillingJacky 0:9d116099a88d 100
KillingJacky 0:9d116099a88d 101 /**
KillingJacky 0:9d116099a88d 102 * \brief Earse the NDEF data.
KillingJacky 0:9d116099a88d 103 *
KillingJacky 0:9d116099a88d 104 * \return Return Null.
KillingJacky 0:9d116099a88d 105 *
KillingJacky 0:9d116099a88d 106 */
KillingJacky 0:9d116099a88d 107 void nfc_adapter_erase(void);
KillingJacky 0:9d116099a88d 108
KillingJacky 0:9d116099a88d 109 /**
KillingJacky 0:9d116099a88d 110 * \brief Emulate NFC as a target
KillingJacky 0:9d116099a88d 111 *
KillingJacky 0:9d116099a88d 112 * \param [in] *id the target uid, the first data is fixed, so the format is 0x??, 0x??, 0x??(3 bytes)
KillingJacky 0:9d116099a88d 113 * \return Return Null.
KillingJacky 0:9d116099a88d 114 *
KillingJacky 0:9d116099a88d 115 */
KillingJacky 0:9d116099a88d 116 void nfc_emulate_init(unsigned char *id);
KillingJacky 0:9d116099a88d 117
KillingJacky 0:9d116099a88d 118
KillingJacky 0:9d116099a88d 119 #endif