From cf2c0d4f24f7932ee057f848864145299a330eba Mon Sep 17 00:00:00 2001 From: Jimmy Date: Sat, 26 Dec 2020 00:56:38 +1300 Subject: [PATCH] Changed to Class renamed files --- src/{rc522.cpp => mfrc522.cpp} | 140 ++++++++++++++++++--------------- src/{rc522.h => mfrc522.h} | 44 +++++++---- test/main.cpp | 67 +++++++++++----- 3 files changed, 153 insertions(+), 98 deletions(-) rename src/{rc522.cpp => mfrc522.cpp} (61%) rename src/{rc522.h => mfrc522.h} (80%) diff --git a/src/rc522.cpp b/src/mfrc522.cpp similarity index 61% rename from src/rc522.cpp rename to src/mfrc522.cpp index 4a5fa6b..3eba64e 100644 --- a/src/rc522.cpp +++ b/src/mfrc522.cpp @@ -1,92 +1,109 @@ #include "spi.h" #include "rc522.h" +/////////////////////////////////////////////////////////// -void Write_MFRC522(uchar addr, uchar val) +MFRC522::MFRC522(volatile uchar cs_pin, volatile uchar *cs_port, volatile uchar reset_pin, volatile uchar *reset_port) { + this->cs_pin = cs_pin; + this->cs_port = cs_port; + this->reset_pin = reset_pin; + this->reset_port = reset_port; + *(cs_port-1) |= (1< @@ -115,21 +114,36 @@ #ifndef NRSTPD_PORT #define NRSTPD_PORT PORTB #define NRSTPD_DDR DDRB - #define NRSTPD_PIN PB1 + #define NRSTPD_PIN PB2 #endif #define MAX_LEN 16 -void MFRC522_Init(void); -void MFRC522_Halt(void); -uchar MFRC522_ToCard(uchar command, uchar *sendData, uchar sendLen, uchar *backData, uint *backLen); -void Write_MFRC522(uchar addr, uchar val); -uchar Read_MFRC522(uchar addr); -uchar MFRC522_Auth(uchar authMode, uchar BlockAddr, uchar *Sectorkey, uchar *serNum); -uchar MFRC522_Write(uchar blockAddr, uchar *writeData); -uchar MFRC522_Read(uchar blockAddr, uchar *recvData); -uchar MFRC522_Request(uchar reqMode, uchar *TagType); -uchar MFRC522_Anticoll(uchar *serNum); -uchar MFRC522_SelectTag(uchar *serNum); +class MFRC522 +{ +private: + /* data */ + volatile uchar *reset_port, *cs_port; + volatile uchar reset_pin, cs_pin; + void SetBitMask(uchar reg, uchar mask); + void ClearBitMask(uchar reg, uchar mask); + void AntennaOn(void); + void AntennaOff(void); + void Reset(void); + void CalulateCRC(uchar *pIndata, uchar len, uchar *pOutData); +public: + MFRC522(volatile uchar cs_pin, volatile uchar *cs_port, volatile uchar reset_pin, volatile uchar *reset_port); + ~MFRC522(); + void Init(void); + char Halt(void); + uchar ToCard(uchar command, uchar *sendData, uchar sendLen, uchar *backData, uint *backLen); + void put(uchar addr, uchar val); + uchar get(uchar addr); + uchar Auth(uchar authMode, uchar BlockAddr, uchar *Sectorkey, uchar *serNum); + uchar Write(uchar blockAddr, uchar *writeData); + uchar Read(uchar blockAddr, uchar *recvData); + uchar Request(uchar reqMode, uchar *TagType); + uchar Anticoll(uchar *serNum); + uchar SelectTag(uchar *serNum); +}; -#endif \ No newline at end of file diff --git a/test/main.cpp b/test/main.cpp index 4f281d3..c6ae6b9 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -2,35 +2,58 @@ #include #include "../lib/usart/src/usart.h" #include "string.h" +#include -#define uchar unsigned char +#define uint8_t unsigned char #define uint unsigned int #define MAX_LEN 16 const int chipSelectPin = 10; const int NRSTPD = 5; -uchar serNum[5]; -uchar writeDate[16] ={'T', 'e', 'n', 'g', ' ', 'B', 'o', 0, 0, 0, 0, 0, 0, 0, 0,0}; +uint8_t serNum[5]; +uint8_t writeDate[16] ={'T', 'e', 'n', 'g', ' ', 'B', 'o', 0, 0, 0, 0, 0, 0, 0, 0,0}; -uchar sectorKeyA[16] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; +uint8_t sectorKeyA[16] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; int main() { usart::init(1000000); printf("Hello"); PORTC |= (1<Anticoll(str); memcpy(serNum, str, 5); if (status == MI_OK) { @@ -43,20 +66,21 @@ int main() { } // select card, return card capacity - RC_size = MFRC522_SelectTag(serNum); + RC_size = mfrc522->SelectTag(serNum); if (RC_size != 0) {} - if(PINC & (1<Auth(PICC_AUTHENT1A, blockAddr, sectorKeyA, serNum); // authentication if (status == MI_OK) { // write data blockAddr = blockAddr - 3 ; - status = MFRC522_Write(blockAddr, writeDate); + writeDate[15] = writeDate[15] + 1; + status = mfrc522->Write(blockAddr, writeDate); if(status == MI_OK) { printf("OK!\n\r"); @@ -65,26 +89,27 @@ int main() { } else { // read card blockAddr = 7; // data block 7 - status = MFRC522_Auth(PICC_AUTHENT1A, blockAddr, sectorKeyA, serNum); // authentication + status = mfrc522->Auth(PICC_AUTHENT1A, blockAddr, sectorKeyA, serNum); // authentication if (status == MI_OK) { // read data blockAddr = blockAddr - 3 ; - status = MFRC522_Read(blockAddr, str); + status = mfrc522->Read(blockAddr, str); if (status == MI_OK) { printf("Read from the card ,the data is : \n\r"); for (i=0; i<16; i++) { - printf("%c", str[i]); + printf("%x", str[i]); if(writeDate[i] != str[i]) printf("Not equal"); } printf("\n\r"); } } } - printf("\n\r"); - MFRC522_Halt(); // command card into sleeping mode + printf("\n\r\n\n\n"); + mfrc522->Halt(); // command card into sleeping mode + _delay_ms(1000); }