Mats van Reenen 4a8aad0d7f cleanup
2020-06-01 11:00:06 +02:00

86 lines
2.7 KiB
C

#include <msp430.h>
#include "NFC.h"
#include "Mfrc522.h"
void NFCInit(){
P2DIR |= BIT4 | BIT5 | BIT6 ;
P2OUT &= ~ (BIT4 | BIT5 | BIT6 );
RC522_init(BIT6, BIT7);
/*
* Setting antenna gain to maximum (7) can read cards up to approximately 5cm.
* Default can read cards up to approximately 1cm.
* */
RC522_setAntennaGain(7); // TODO fine tuning
//TODO LED
}
//NFCNummer return serienummer van de NFC-tag
uchar NFCAvailable(){ //is er een kaart en is het leesbaar? serienummer
uchar str[5], Colour, Direction;
if(RC522_request(PICC_REQALL, str) == MI_OK){
if(RC522_anticoll(str) == MI_OK){ // controleert of de kaart reageert
RC522_selectTag(str);
Colour = NFCRead (0 , 1 , 0 , str);
Direction = NFCRead (2 , 0 , 9 , str);
RGBLed_update (Colour);
switch (Direction){
case 'S':
return 0b00; // stop = 00
case 'D':
return 0b11; // vooruit = 11
case 'L':
return 0b10; // 10= Links
case 'R':
return 0b01; // 01 = rechts
}
}
}
}
//uchar* NFCTestConnection (uchar* TagType); //communiceren met de eerst gedetecteerde kaart
//uchar* NFCActive(); //NFC tag communicatie controleren
// controleren of we de kaart kunnen "authenticaten" en De vervallen NFCActive
//uchar NFCAuthenticate (uchar* NFCNummer);
//sector*4 + block formule of (sector << 2) | block
uchar NFCRead (uchar sector, uchar block, uchar byte, uchar* str){
/* See if we can authenticate to read */
uchar recvData[18];
block = (sector << 2) | block;
uchar keyA[6] = {0xBA, 0xBE, 0xBA, 0xBE, 0xBA, 0xBE};
if(RC522_auth(PICC_AUTHENT1A, block, keyA, str) == MI_OK){
/* See if we can actually read data from the card. (block 1) */
if(RC522_readBlock(block, recvData) == MI_OK){
return recvData[byte];
/* Color data is in block 1 of sector 0 */
}
/* Stop authentication */
RC522_stopCrypto();
}
} // controle of de data kan worden gelezen
//stuur richting door pls
// byte van de NFCRead doorsturen naar RGBLed_update
uchar RGBLed_update (uchar Colour){
P2OUT &= ~ (BIT4 | BIT5 | BIT6 );
switch (Colour){
case 'R':
P2OUT |= BIT4 ;
break;
case 'G':
P2OUT |= BIT5 ;
break;
case 'B':
P2OUT |= BIT6 ;
break;
}
return 0;
}