new xadow NFC module
Dependents: xadow_smartstrap_for_pebble
XadowNFC.cpp
- Committer:
- KillingJacky
- Date:
- 2015-11-06
- Revision:
- 1:27242e2abd99
- Parent:
- 0:9d116099a88d
File content as of revision 1:27242e2abd99:
#include <stdlib.h> #include "mbed.h" #include "XadowNFC.h" #include "USBSerial.h" unsigned char uid[10] = {0}; static char cmd[2]; extern I2C i2c; extern USBSerial dbg_serial; unsigned char nfc_check_online(void) { unsigned char data[6]; unsigned char i; //dlc_i2c_configure(NFC_DEVICE_ADDR, 100); //dlc_i2c_send_byte(NFC_SCAN_ID); //dlc_i2c_send_byte(0); cmd[0] = NFC_SCAN_ID; cmd[1] = 0; i2c.write(NFC_DEVICE_ADDR, cmd, 1); //the nfc module's i2c supports only 1 byte read/write per burst i2c.write(NFC_DEVICE_ADDR, cmd+1, 1); for(i=0;i<6;i++) { //data[i] = dlc_i2c_receive_byte(); i2c.read(NFC_DEVICE_ADDR, (char *)&data[i], 1); //the nfc module's i2c supports only 1 byte read/write per burst } if(data[5] == (NFC_DEVICE_ADDR>>1))return 1; else return 0; } void nfc_adapter_init(void) { cmd[0] = NFC_ADAPTER_INIT_ID; cmd[1] = 0; i2c.write(NFC_DEVICE_ADDR, cmd, 1); i2c.write(NFC_DEVICE_ADDR, cmd+1, 1); } unsigned char *nfc_adapter_get_uid(void) { unsigned char i; cmd[0] = NFC_ADAPTER_GET_UID_ID; cmd[1] = 0; i2c.write(NFC_DEVICE_ADDR, cmd, 1); i2c.write(NFC_DEVICE_ADDR, cmd+1, 1); for(i=0;i<2;i++) { //uid[i] = dlc_i2c_receive_byte(); i2c.read(NFC_DEVICE_ADDR, (char *)&uid[i], 1); } for(i=0;i<uid[1];i++) { //uid[i + 2]= dlc_i2c_receive_byte(); i2c.read(NFC_DEVICE_ADDR, (char *)&uid[i+2], 1); } uid[uid[1] + 2] = '\0'; return (unsigned char *)uid; } unsigned char *nfc_adapter_read(void) { unsigned char data[2]; unsigned char i; cmd[0] = NFC_ADAPTER_READ_ID; cmd[1] = 0; i2c.write(NFC_DEVICE_ADDR, cmd, 1); i2c.write(NFC_DEVICE_ADDR, cmd+1, 1); for(i=0;i<2;i++) { //data[i] = dlc_i2c_receive_byte(); i2c.read(NFC_DEVICE_ADDR, (char *)&data[i], 1); } unsigned char length = data[1]; unsigned char *ptr = (unsigned char *)malloc(length + 2 + 1); *ptr = data[0]; *(ptr + 1) = data[1]; *(ptr + length + 2) = '\0'; for(i=0;i<*(ptr + 1);i++) { //*(ptr + i + 2) = dlc_i2c_receive_byte(); i2c.read(NFC_DEVICE_ADDR, (char *)(ptr + i + 2), 1); } return ptr; } void nfc_adapter_write(unsigned char *data, unsigned char length) { unsigned char i; cmd[0] = NFC_ADAPTER_WRITE_ID; cmd[1] = length; i2c.write(NFC_DEVICE_ADDR, cmd, 1); i2c.write(NFC_DEVICE_ADDR, cmd+1, 1); for(i=0;i<length;i++) { //dlc_i2c_send_byte(*(string + i)); i2c.write(NFC_DEVICE_ADDR, (char *)(data + i), 1); } } void nfc_adapter_erase(void) { cmd[0] = NFC_ADAPTER_ERASE_ID; cmd[1] = 0; i2c.write(NFC_DEVICE_ADDR, cmd, 1); i2c.write(NFC_DEVICE_ADDR, cmd+1, 1); }