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 #include <stdlib.h>
KillingJacky 0:9d116099a88d 3 #include "mbed.h"
KillingJacky 0:9d116099a88d 4 #include "XadowNFC.h"
KillingJacky 0:9d116099a88d 5 #include "USBSerial.h"
KillingJacky 0:9d116099a88d 6
KillingJacky 0:9d116099a88d 7
KillingJacky 0:9d116099a88d 8 unsigned char uid[10] = {0};
KillingJacky 0:9d116099a88d 9 static char cmd[2];
KillingJacky 0:9d116099a88d 10
KillingJacky 0:9d116099a88d 11 extern I2C i2c;
KillingJacky 0:9d116099a88d 12 extern USBSerial dbg_serial;
KillingJacky 0:9d116099a88d 13
KillingJacky 0:9d116099a88d 14 unsigned char nfc_check_online(void)
KillingJacky 0:9d116099a88d 15 {
KillingJacky 0:9d116099a88d 16 unsigned char data[6];
KillingJacky 0:9d116099a88d 17 unsigned char i;
KillingJacky 0:9d116099a88d 18
KillingJacky 0:9d116099a88d 19 //dlc_i2c_configure(NFC_DEVICE_ADDR, 100);
KillingJacky 0:9d116099a88d 20 //dlc_i2c_send_byte(NFC_SCAN_ID);
KillingJacky 0:9d116099a88d 21 //dlc_i2c_send_byte(0);
KillingJacky 0:9d116099a88d 22
KillingJacky 0:9d116099a88d 23 cmd[0] = NFC_SCAN_ID;
KillingJacky 0:9d116099a88d 24 cmd[1] = 0;
KillingJacky 0:9d116099a88d 25 i2c.write(NFC_DEVICE_ADDR, cmd, 1); //the nfc module's i2c supports only 1 byte read/write per burst
KillingJacky 0:9d116099a88d 26 i2c.write(NFC_DEVICE_ADDR, cmd+1, 1);
KillingJacky 0:9d116099a88d 27
KillingJacky 0:9d116099a88d 28
KillingJacky 0:9d116099a88d 29 for(i=0;i<6;i++)
KillingJacky 0:9d116099a88d 30 {
KillingJacky 0:9d116099a88d 31 //data[i] = dlc_i2c_receive_byte();
KillingJacky 0:9d116099a88d 32 i2c.read(NFC_DEVICE_ADDR, (char *)&data[i], 1); //the nfc module's i2c supports only 1 byte read/write per burst
KillingJacky 0:9d116099a88d 33 }
KillingJacky 0:9d116099a88d 34
KillingJacky 0:9d116099a88d 35 if(data[5] == (NFC_DEVICE_ADDR>>1))return 1;
KillingJacky 0:9d116099a88d 36 else return 0;
KillingJacky 0:9d116099a88d 37 }
KillingJacky 0:9d116099a88d 38
KillingJacky 0:9d116099a88d 39 void nfc_adapter_init(void)
KillingJacky 0:9d116099a88d 40 {
KillingJacky 0:9d116099a88d 41 cmd[0] = NFC_ADAPTER_INIT_ID;
KillingJacky 0:9d116099a88d 42 cmd[1] = 0;
KillingJacky 0:9d116099a88d 43 i2c.write(NFC_DEVICE_ADDR, cmd, 1);
KillingJacky 0:9d116099a88d 44 i2c.write(NFC_DEVICE_ADDR, cmd+1, 1);
KillingJacky 0:9d116099a88d 45 }
KillingJacky 0:9d116099a88d 46
KillingJacky 0:9d116099a88d 47 unsigned char *nfc_adapter_get_uid(void)
KillingJacky 0:9d116099a88d 48 {
KillingJacky 0:9d116099a88d 49 unsigned char i;
KillingJacky 0:9d116099a88d 50
KillingJacky 0:9d116099a88d 51 cmd[0] = NFC_ADAPTER_GET_UID_ID;
KillingJacky 0:9d116099a88d 52 cmd[1] = 0;
KillingJacky 0:9d116099a88d 53 i2c.write(NFC_DEVICE_ADDR, cmd, 1);
KillingJacky 0:9d116099a88d 54 i2c.write(NFC_DEVICE_ADDR, cmd+1, 1);
KillingJacky 0:9d116099a88d 55
KillingJacky 0:9d116099a88d 56
KillingJacky 0:9d116099a88d 57 for(i=0;i<2;i++)
KillingJacky 0:9d116099a88d 58 {
KillingJacky 0:9d116099a88d 59 //uid[i] = dlc_i2c_receive_byte();
KillingJacky 0:9d116099a88d 60 i2c.read(NFC_DEVICE_ADDR, (char *)&uid[i], 1);
KillingJacky 0:9d116099a88d 61 }
KillingJacky 0:9d116099a88d 62
KillingJacky 0:9d116099a88d 63 for(i=0;i<uid[1];i++)
KillingJacky 0:9d116099a88d 64 {
KillingJacky 0:9d116099a88d 65 //uid[i + 2]= dlc_i2c_receive_byte();
KillingJacky 0:9d116099a88d 66 i2c.read(NFC_DEVICE_ADDR, (char *)&uid[i+2], 1);
KillingJacky 0:9d116099a88d 67 }
KillingJacky 0:9d116099a88d 68 uid[uid[1] + 2] = '\0';
KillingJacky 0:9d116099a88d 69
KillingJacky 0:9d116099a88d 70 return (unsigned char *)uid;
KillingJacky 0:9d116099a88d 71 }
KillingJacky 0:9d116099a88d 72
KillingJacky 0:9d116099a88d 73 unsigned char *nfc_adapter_read(void)
KillingJacky 0:9d116099a88d 74 {
KillingJacky 0:9d116099a88d 75 unsigned char data[2];
KillingJacky 0:9d116099a88d 76 unsigned char i;
KillingJacky 0:9d116099a88d 77
KillingJacky 0:9d116099a88d 78 cmd[0] = NFC_ADAPTER_READ_ID;
KillingJacky 0:9d116099a88d 79 cmd[1] = 0;
KillingJacky 0:9d116099a88d 80 i2c.write(NFC_DEVICE_ADDR, cmd, 1);
KillingJacky 0:9d116099a88d 81 i2c.write(NFC_DEVICE_ADDR, cmd+1, 1);
KillingJacky 0:9d116099a88d 82
KillingJacky 0:9d116099a88d 83 for(i=0;i<2;i++)
KillingJacky 0:9d116099a88d 84 {
KillingJacky 0:9d116099a88d 85 //data[i] = dlc_i2c_receive_byte();
KillingJacky 0:9d116099a88d 86 i2c.read(NFC_DEVICE_ADDR, (char *)&data[i], 1);
KillingJacky 0:9d116099a88d 87 }
KillingJacky 0:9d116099a88d 88
KillingJacky 0:9d116099a88d 89 unsigned char length = data[1];
KillingJacky 0:9d116099a88d 90 unsigned char *ptr = (unsigned char *)malloc(length + 2 + 1);
KillingJacky 0:9d116099a88d 91 *ptr = data[0];
KillingJacky 0:9d116099a88d 92 *(ptr + 1) = data[1];
KillingJacky 0:9d116099a88d 93 *(ptr + length + 2) = '\0';
KillingJacky 0:9d116099a88d 94
KillingJacky 0:9d116099a88d 95 for(i=0;i<*(ptr + 1);i++)
KillingJacky 0:9d116099a88d 96 {
KillingJacky 0:9d116099a88d 97 //*(ptr + i + 2) = dlc_i2c_receive_byte();
KillingJacky 0:9d116099a88d 98 i2c.read(NFC_DEVICE_ADDR, (char *)(ptr + i + 2), 1);
KillingJacky 0:9d116099a88d 99 }
KillingJacky 0:9d116099a88d 100
KillingJacky 0:9d116099a88d 101 return ptr;
KillingJacky 0:9d116099a88d 102 }
KillingJacky 0:9d116099a88d 103
KillingJacky 0:9d116099a88d 104 void nfc_adapter_write(unsigned char *data, unsigned char length)
KillingJacky 0:9d116099a88d 105 {
KillingJacky 0:9d116099a88d 106 unsigned char i;
KillingJacky 0:9d116099a88d 107
KillingJacky 0:9d116099a88d 108 cmd[0] = NFC_ADAPTER_WRITE_ID;
KillingJacky 0:9d116099a88d 109 cmd[1] = length;
KillingJacky 0:9d116099a88d 110 i2c.write(NFC_DEVICE_ADDR, cmd, 1);
KillingJacky 0:9d116099a88d 111 i2c.write(NFC_DEVICE_ADDR, cmd+1, 1);
KillingJacky 0:9d116099a88d 112
KillingJacky 0:9d116099a88d 113 for(i=0;i<length;i++)
KillingJacky 0:9d116099a88d 114 {
KillingJacky 0:9d116099a88d 115 //dlc_i2c_send_byte(*(string + i));
KillingJacky 0:9d116099a88d 116 i2c.write(NFC_DEVICE_ADDR, (char *)(data + i), 1);
KillingJacky 0:9d116099a88d 117 }
KillingJacky 0:9d116099a88d 118 }
KillingJacky 0:9d116099a88d 119
KillingJacky 0:9d116099a88d 120 void nfc_adapter_erase(void)
KillingJacky 0:9d116099a88d 121 {
KillingJacky 0:9d116099a88d 122 cmd[0] = NFC_ADAPTER_ERASE_ID;
KillingJacky 0:9d116099a88d 123 cmd[1] = 0;
KillingJacky 0:9d116099a88d 124 i2c.write(NFC_DEVICE_ADDR, cmd, 1);
KillingJacky 0:9d116099a88d 125 i2c.write(NFC_DEVICE_ADDR, cmd+1, 1);
KillingJacky 0:9d116099a88d 126 }
KillingJacky 0:9d116099a88d 127
KillingJacky 0:9d116099a88d 128
KillingJacky 1:27242e2abd99 129