Pārlūkot izejas kodu

2020-10-19 / Eason Yang
Action
1. Added : Reyax code.

File
1. Module_Rfid.c
Action 1

2. Module_Rifd.h
Action 1

Version : V0.03

8009 4 gadi atpakaļ
vecāks
revīzija
62edd6aff4
2 mainītis faili ar 275 papildinājumiem un 97 dzēšanām
  1. 254 91
      EVSE/Modularization/Module_RFID.c
  2. 21 6
      EVSE/Modularization/Module_RFID.h

+ 254 - 91
EVSE/Modularization/Module_RFID.c

@@ -2,9 +2,17 @@
  * 	Module_RFID.c
  *
  *  Created on: 2019-10-24
- *  Update: 2020-07-29
+ *  Update: 2020-10-19
  *  Author: Eason Yang
- *	Version: D0.02
+ *	Version: V0.03
+ *
+ * History 
+ * 1. Added : Reyax code.
+ *
+ *
+ *
+ *
+ *
  */
 
 #include "Module_RFID.h"
@@ -116,7 +124,7 @@ int StoreLogMessage(const char *fmt, ...)
 	CurrentTime = time(NULL);
 	tm = localtime(&CurrentTime);
 	sprintf(Buf,
-			"echo -n \"[%04d.%02d.%02d %02d:%02d:%02d] - %s\" >> /Storage/SystemLog/[%04d.%02d]RFID_SystemLog",
+			"echo \"[%04d.%02d.%02d %02d:%02d:%02d] - %s\" >> /Storage/SystemLog/[%04d.%02d]RFID_SystemLog",
 			tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour,
 			tm->tm_min, tm->tm_sec, buffer, tm->tm_year + 1900, tm->tm_mon + 1);
 	system(Buf);
@@ -146,9 +154,29 @@ int system_command(int uart, unsigned char* cmd,int length, unsigned char* rx)
 	}
 	else
 	{
-		#ifdef SystemLogMessage
 		DEBUG_ERROR_1("system command %s response fail.\n", cmd);
-		#endif
+	}
+
+	return len;
+}
+
+//==========================================
+// Module's AT command send/receive (REYAX)
+//==========================================
+int at_command(int uart, unsigned char* cmd,int length, unsigned char* rx)
+{
+	int len;
+	
+	//sleep(2); //required to make flush work, for some reason
+	tcflush(uart,TCIOFLUSH);
+	if(write(uart, cmd, length) >= ARRAY_SIZE(cmd))
+	{
+		usleep(100000);
+		len = read(uart, rx, 512);
+	}
+	else
+	{
+		DEBUG_ERROR_1("AT command %s response fail.\n", cmd);
 	}
 
 	return len;
@@ -225,6 +253,12 @@ bool ISO14443A_REQUEST_SN(int Fd, int moduleType, unsigned char *data)
 	unsigned char txByte[tx_len];
 	unsigned char rxByte[254];
 	unsigned char tmp[254];
+	
+	unsigned char TX_MESSAGE[254];
+	unsigned char RX_MESSAGE[254];
+	unsigned char TMP_MESSAGE[254];
+	unsigned char TX_LENGTH;
+	unsigned char RX_LENGTH;
 
 	switch(moduleType)
 	{
@@ -241,19 +275,15 @@ bool ISO14443A_REQUEST_SN(int Fd, int moduleType, unsigned char *data)
 			if(Fd > 0)
 			{
 				memset(rxByte, 0, sizeof (rxByte));
-				
 				if(system_command(Fd, txByte, tx_len, rxByte) > 0)
 				{
 					memset(tmp, 0, sizeof tmp);
 					memcpy(tmp, rxByte, sizeof(rxByte));
-
 					if(tmp[1] == RFID_CMD_ISO1443A_REQUEST)
 					{
 						if(tmp[0] == 0x09)
 						{
-							#ifdef SystemLogMessage
 							DEBUG_INFO_1("MIFARE CLASSIC.\n");
-							#endif
 
 							cardLength = LENGTH_4;
 							memcpy(data, rxByte+2, cardLength);
@@ -262,9 +292,7 @@ bool ISO14443A_REQUEST_SN(int Fd, int moduleType, unsigned char *data)
 						}
 						else if(tmp[0] == 0x0C)
 						{
-							#ifdef SystemLogMessage
 							DEBUG_INFO_1("MIFARE PLUS.\n");
-							#endif
 
 							cardLength = LENGTH_7;
 							memcpy(data, rxByte+2, cardLength);
@@ -279,6 +307,72 @@ bool ISO14443A_REQUEST_SN(int Fd, int moduleType, unsigned char *data)
 						cardLength = LENGTH_0;
 						isSuccess = false;
 					}
+					else
+					{}
+				}
+				else
+				{}
+			}
+			else
+			{}
+
+			break;
+		case MODULE_REYAX:
+			if(Fd > 0)
+			{
+				memset(TX_MESSAGE, 0, sizeof(TX_MESSAGE));
+				memset(RX_MESSAGE, 0, sizeof(RX_MESSAGE));
+				strcpy((char*)TX_MESSAGE, "AT+SCAN=1\r\n");
+				TX_LENGTH = strlen((char*)TX_MESSAGE);
+				
+				//DEBUG_INFO_1("ISO14443A TX_LENGTH : %d.\n", TX_LENGTH);
+				//DEBUG_INFO_1("ISO14443A TX_MESSAGE : %s.\n", TX_MESSAGE);
+
+				if((RX_LENGTH = at_command(Fd, TX_MESSAGE, TX_LENGTH, RX_MESSAGE)) > 0)
+				{	
+					//DEBUG_INFO_1("ISO14443A RX_LENGTH : %d.\n", RX_LENGTH);
+					//DEBUG_INFO_1("ISO14443A RX_MESSAGE : %s.\n", RX_MESSAGE);
+				
+					memset(TMP_MESSAGE, 0, sizeof(TMP_MESSAGE));
+					if(strstr((char*)RX_MESSAGE, "+SCAN=ISO14443A:"))
+					{
+						if(RX_LENGTH == 26)
+						{
+							cardLength = LENGTH_4;
+							memcpy(TMP_MESSAGE, RX_MESSAGE+16, (LENGTH_4*2));
+							DEBUG_INFO_1("Mifare Classic tmp message : %s.\n", TMP_MESSAGE);
+
+							sscanf((char*)TMP_MESSAGE, "%2X%2X%2X%2X", (unsigned int *)&data[0], 
+																	   (unsigned int *)&data[1],
+																	   (unsigned int *)&data[2], 
+																	   (unsigned int *)&data[3]);
+
+							isSuccess = true;
+						}
+						else if(RX_LENGTH == 32)
+						{
+							cardLength = LENGTH_7;
+							memcpy(TMP_MESSAGE, RX_MESSAGE+16, (RFID_SN_TYPE_7BYTE*2));
+							DEBUG_INFO_1("Mifare Plus tmp message : %s.\n", TMP_MESSAGE);
+
+							sscanf((char*)TMP_MESSAGE, "%2X%2X%2X%2X%2X%2X%2X", (unsigned int *)&data[0],
+																				(unsigned int *)&data[1],
+																				(unsigned int *)&data[2],
+																				(unsigned int *)&data[3],
+																				(unsigned int *)&data[4],
+																				(unsigned int *)&data[5],
+																				(unsigned int *)&data[6]);
+
+							isSuccess = true;
+						}
+						else
+						{
+							cardLength = LENGTH_0;
+							isSuccess = false;
+						}
+					}
+					else
+					{}
 				}
 				else
 				{}
@@ -303,6 +397,14 @@ bool ISO14443B_REQUEST_SN(int Fd, int moduleType, unsigned char *data)
 	unsigned char txByte[tx_len];
 	unsigned char rxByte[254];
 	unsigned char tmp[254];
+	
+	/*
+	unsigned char TX_MESSAGE[254];
+	unsigned char RX_MESSAGE[254];
+	unsigned char TMP_MESSAGE[254];
+	unsigned char TX_LENGTH;
+	unsigned char RX_LENGTH;
+	*/
 
 	switch(moduleType)
 	{
@@ -320,17 +422,13 @@ bool ISO14443B_REQUEST_SN(int Fd, int moduleType, unsigned char *data)
 			if(Fd > 0)
 			{
 				memset(rxByte, 0, sizeof (rxByte));
-				
 				if(system_command(Fd, txByte, tx_len, rxByte) > 0)
 				{
 					memset(tmp, 0, sizeof tmp);
 					memcpy(tmp, rxByte, sizeof(rxByte));
-
 					if(tmp[1] == RFID_CMD_ISO1443B_REQUEST)
 					{
-						#ifdef SystemLogMessage
 						DEBUG_INFO_1("ISO14443 TYPE B.\n");
-						#endif
 
 						cardLength = LENGTH_4;
 						memcpy(data, rxByte+3, cardLength);
@@ -342,6 +440,8 @@ bool ISO14443B_REQUEST_SN(int Fd, int moduleType, unsigned char *data)
 						cardLength = LENGTH_0;
 						isSuccess = false;
 					}
+					else
+					{}
 				}
 				else
 				{}
@@ -349,6 +449,58 @@ bool ISO14443B_REQUEST_SN(int Fd, int moduleType, unsigned char *data)
 			else
 			{}
 
+			break;
+		case MODULE_REYAX:
+			/*
+			if(Fd > 0)
+			{
+				memset(TX_MESSAGE, 0, sizeof(TX_MESSAGE));
+				memset(RX_MESSAGE, 0, sizeof(RX_MESSAGE));
+				strcpy((char*)TX_MESSAGE, "AT+SCAN=2\r\n");
+				TX_LENGTH = strlen((char*)TX_MESSAGE);
+
+				//DEBUG_INFO_1("IS014443B TX_LENGTH : %d.\n", TX_LENGTH);
+				//DEBUG_INFO_1("IS014443B TX_MESSAGE : %s.\n", TX_MESSAGE);
+				
+				if((RX_LENGTH = at_command(Fd, TX_MESSAGE, TX_LENGTH, RX_MESSAGE);) > 0)
+				{	
+					//DEBUG_INFO_1("IS014443B RX_LENGTH : %d.\n", RX_LENGTH);
+					//DEBUG_INFO_1("IS014443B RX MESSAGE : %s.\n", RX_MESSAGE);
+
+					memset(TMP_MESSAGE, 0, sizeof TMP_MESSAGE);
+					if(strstr((char*)RX_MESSAGE,"+SCAN=Felica:"))
+					{
+						if(RX_MESSAGE_LENGTH == 31)
+						{
+							cardLength = LENGTH_6;
+							memcpy(TMP_MESSAGE, RX_MESSAGE+17, (LENGTH_6*2));
+							DEBUG_INFO_1("IS014443B tmp message : %s...\n", TMP_MESSAGE);
+
+							sscanf((char*)TMP_MESSAGE, "%2X%2X%2X%2X%2X%2X", (unsigned int *)&data[0], 
+																			 (unsigned int *)&data[1],
+																			 (unsigned int *)&data[2], 
+																			 (unsigned int *)&data[3],
+																			 (unsigned int *)&data[4],
+																			 (unsigned int *)&data[5]);
+							
+							isSuccess = true;
+						}
+						else
+						{
+							cardLength = LENGTH_0;
+							isSuccess = false;
+						}
+					}
+					else
+					{}
+				}
+				else
+				{}
+			}
+			else
+			{}
+			*/
+			
 			break;
 	}
 
@@ -366,6 +518,12 @@ bool FELICA_REQUEST_SN(int Fd, int moduleType, unsigned char *data)
 	unsigned char txByte[tx_len];
 	unsigned char rxByte[254];
 	unsigned char tmp[254];
+	
+	unsigned char TX_MESSAGE[254];
+	unsigned char RX_MESSAGE[254];
+	unsigned char TMP_MESSAGE[254];
+	unsigned char TX_LENGTH;
+	unsigned char RX_LENGTH;
 
 	switch(moduleType)
 	{
@@ -387,17 +545,13 @@ bool FELICA_REQUEST_SN(int Fd, int moduleType, unsigned char *data)
 			if(Fd > 0)
 			{
 				memset(rxByte, 0, sizeof (rxByte));
-				
 				if(system_command(Fd, txByte, tx_len, rxByte) > 0)
 				{
 					memset(tmp, 0, sizeof tmp);
 					memcpy(tmp, rxByte, sizeof(rxByte));
-
 					if(tmp[1] == RFID_CMD_FELICA_POLLING_REQUEST)
 					{
-						#ifdef SystemLogMessage
 						DEBUG_INFO_1("FELICA.\n");
-						#endif
 
 						cardLength = LENGTH_6;
 						memcpy(data, rxByte+6, cardLength);
@@ -409,6 +563,58 @@ bool FELICA_REQUEST_SN(int Fd, int moduleType, unsigned char *data)
 						cardLength = LENGTH_0;
 						isSuccess = false;
 					}
+					else
+					{}
+				}
+				else
+				{}
+			}
+			else
+			{}
+
+			break;
+		case MODULE_REYAX:
+			if(Fd > 0)
+			{
+				memset(TX_MESSAGE, 0, sizeof(TX_MESSAGE));
+				memset(RX_MESSAGE, 0, sizeof(RX_MESSAGE));
+				strcpy((char*)TX_MESSAGE, "AT+SCAN=4\r\n");
+				TX_LENGTH = strlen((char*)TX_MESSAGE);
+				
+				//DEBUG_INFO_1("FELICA TX_LENGTH : %d.\n", TX_LENGTH);
+				//DEBUG_INFO_1("FELICA TX_MESSAGE : %s.\n", TX_MESSAGE);
+
+				if((RX_LENGTH = at_command(Fd, TX_MESSAGE, TX_LENGTH, RX_MESSAGE)) > 0)
+				{
+					//DEBUG_INFO_1("FELICA RX_LENGTH : %d.\n", RX_LENGTH);
+					//DEBUG_INFO_1("FELICA RX_MESSAGE : %s.\n", RX_MESSAGE);
+					
+					memset(TMP_MESSAGE, 0, sizeof(TMP_MESSAGE));
+					if(strstr((char*)RX_MESSAGE,"+SCAN=Felica:"))
+					{
+						if(RX_LENGTH == 31)
+						{
+							cardLength = LENGTH_6;
+							memcpy(TMP_MESSAGE, RX_MESSAGE+17, (LENGTH_6*2));
+							DEBUG_INFO_1("Felica tmp message : %s.\n", TMP_MESSAGE);
+
+							sscanf((char*)TMP_MESSAGE, "%2X%2X%2X%2X%2X%2X", (unsigned int *)&data[0], 
+																			 (unsigned int *)&data[1],
+																			 (unsigned int *)&data[2], 
+																			 (unsigned int *)&data[3],
+																			 (unsigned int *)&data[4],
+																			 (unsigned int *)&data[5]);
+
+							isSuccess = true;
+						}
+						else
+						{
+							cardLength = LENGTH_0;
+							isSuccess = false;
+						}
+					}
+					else
+					{}
 				}
 				else
 				{}
@@ -459,17 +665,13 @@ bool getBlockRead(int Fd, int moduleType, int block, unsigned char keyId, unsign
 			if(Fd > 0)
 			{
 				memset(rxByte, 0, sizeof(rxByte));
-				
 				if(system_command(Fd, txByte, len, rxByte) > 0)
 				{
 					memset(tmp, 0, sizeof tmp);
 					memcpy(tmp, rxByte, sizeof (rxByte));
-
 					if((tmp[1] == RFID_CMD_BLOCK_READ))
 					{
-						#ifdef SystemLogMessage
-						DEBUG_INFO_1("Read block ok.\n");
-						#endif
+						DEBUG_INFO_1("Read block successfully.\n");
 
 						memcpy(data, rxByte+2, 16);
 
@@ -477,9 +679,7 @@ bool getBlockRead(int Fd, int moduleType, int block, unsigned char keyId, unsign
 					}
 					else if (tmp[1] == 0xDE)
 					{
-						#ifdef SystemLogMessage
-						DEBUG_INFO_1("Read block failed.\n");
-						#endif
+						DEBUG_INFO_1("Read block unsuccessfully.\n");
 					}
 					else
 					{}
@@ -535,28 +735,24 @@ bool setBlockWrite(int Fd, int moduleType, int block, unsigned char keyid, unsig
 			if(Fd > 0)
 			{
 				memset(rxByte, 0, sizeof(rxByte));
-				
 				if(system_command(Fd, txByte, len, rxByte) > 0)
 				{
 					memset(tmp, 0, sizeof tmp);
 					memcpy(tmp, rxByte, sizeof (rxByte));
-
 					if(tmp[1] == RFID_CMD_BLOCK_WRITE)
 					{
-						#ifdef SystemLogMessage
-						DEBUG_INFO_1("Write block ok.\n");
-						#endif
+						DEBUG_INFO_1("Write block successfully.\n");
 
 						isSuccess = true;
 					}
 					else if(tmp[1] == 0xDD)
 					{
-						#ifdef SystemLogMessage
-						DEBUG_INFO_1("Write block failed.\n");
-						#endif
+						DEBUG_INFO_1("Write block unsuccessfully.\n");
 
 						isSuccess = false;
 					}
+					else
+					{}
 				}
 				else
 				{}
@@ -594,9 +790,7 @@ void setBuzzer(int Fd, int moduleType, unsigned char time)
 				time = 0x05;
 				txByte[2] = time;
 
-				#ifdef SystemLogMessage
 				DEBUG_WARN_1("Value is out of range.\n");
-				#endif
 			}
 			else
 			{
@@ -607,26 +801,21 @@ void setBuzzer(int Fd, int moduleType, unsigned char time)
 			if(Fd > 0)
 			{
 				memset(rxByte, 0, sizeof(rxByte));
-				
 				if(system_command(Fd, txByte, len, rxByte) > 0)
 				{
 					memset(tmp, 0, sizeof tmp);
 					memcpy(tmp, rxByte, sizeof (rxByte));
-
 					if(tmp[1] == 0x14)
 					{
-						#ifdef SystemLogMessage
 						DEBUG_INFO_1("Set Buzzer ok.\n");
 						DEBUG_INFO_1("Set Buzzer %d ms.\n",time);
-						#endif
-
 					}
 					else if(tmp[1] == 0xEC)
 					{
-						#ifdef SystemLogMessage
 						DEBUG_INFO_1("Set Buzzer fail.\n");
-						#endif
 					}
+					else
+					{}
 				}
 				else
 				{}
@@ -662,23 +851,17 @@ void sethaltCard(int Fd, int moduleType)
 			if(Fd > 0)
 			{
 				memset(rxByte, 0, sizeof(rxByte));
-				
 				if(system_command(Fd, txByte, len, rxByte) > 0)
 				{
 					memset(tmp, 0, sizeof tmp);
 					memcpy(tmp, rxByte, sizeof (rxByte));
-
 					if(tmp[1] == 0x28)
 					{
-						#ifdef SystemLogMessage
 						DEBUG_INFO_1("Halt card pass.\n");
-						#endif
 					}
 					else if(tmp[1] == 0xD7)
 					{
-						#ifdef SystemLogMessage
 						DEBUG_INFO_1("Halt card fail.\n");
-						#endif
 					}
 					else
 					{}
@@ -719,58 +902,46 @@ bool setRfOutputLevel(int Fd, int moduleType, int Value)
 			if(Fd > 0)
 			{
 				memset(rxByte, 0, sizeof(rxByte));
-				
 				if(system_command(Fd, txByte, len, rxByte) > 0)
 				{
 					memset(tmp, 0, sizeof tmp);
 					memcpy(tmp, rxByte, sizeof (rxByte));
-					
 					if(tmp[1] == RFID_CMD_RF_OUTPUT_LEVEL_SET)
 					{
-						#ifdef SystemLogMessage
-						DEBUG_INFO_1("Set the RF Output Level : Pass...\r\n");
-						#endif
+						DEBUG_INFO_1("Set the RF Output Level : Pass...\n");
 						
 						if(Value == RF_STRONGEST)
 						{
-							#ifdef SystemLogMessage
-							DEBUG_INFO_1("Strongest...\r\n");
-							#endif
+							DEBUG_INFO_1("Strongest...\n");
 						}
 						else if(Value == RF_STRONGER)
 						{
-							#ifdef SystemLogMessage
-							DEBUG_INFO_1("Strong...\r\n");
-							#endif
+							DEBUG_INFO_1("Strong...\n");
 						}	
 						else if(Value == RF_WEAK)
 						{
-							#ifdef SystemLogMessage
-							DEBUG_INFO_1("Weak...\r\n");
-							#endif
+							DEBUG_INFO_1("Weak...\n");
 						}
 						else if(Value == RF_WEAKEST)
 						{
-							#ifdef SystemLogMessage
-							DEBUG_INFO_1("Weakest...\r\n");
-							#endif
+							DEBUG_INFO_1("Weakest...\n");
 						}
 					
 						isSuccess = true;
 					}
 					else if(tmp[1] == 0xFD)
 					{
-						#ifdef SystemLogMessage
-						DEBUG_INFO_1("Set the RF Output Level : Fail...\r\n");
-						DEBUG_INFO_1("Unknow value !!! \r\n");
-						DEBUG_INFO_1("Strongest : SET_RF_STRONGEST...\r\n");
-						DEBUG_INFO_1("Strong    : SET_RF_STRONGER...\r\n");
-						DEBUG_INFO_1("Weak      : SET_RF_WEAK...\r\n");
-						DEBUG_INFO_1("Weakest   : SET_RF_WEAKEST...\r\n");
-						#endif
+						DEBUG_INFO_1("Set the RF Output Level : Fail...\n");
+						DEBUG_INFO_1("Unknow value !!! \n");
+						DEBUG_INFO_1("Strongest : SET_RF_STRONGEST...\n");
+						DEBUG_INFO_1("Strong    : SET_RF_STRONGER...\n");
+						DEBUG_INFO_1("Weak      : SET_RF_WEAK...\n");
+						DEBUG_INFO_1("Weakest   : SET_RF_WEAKEST...\n");
 						
 						isSuccess = false;
 					}
+					else
+					{}
 				}
 				else
 				{}
@@ -810,45 +981,37 @@ bool setDefaultOfAutomaticDetectingCard(int Fd, int moduleType, int Value)
 			if(Fd > 0)
 			{
 				memset(rxByte, 0, sizeof(rxByte));
-				
 				if(system_command(Fd, txByte, len, rxByte) > 0)
 				{
 					memset(tmp, 0, sizeof tmp);
 					memcpy(tmp, rxByte, sizeof (rxByte));
-					
 					if(tmp[1] == RFID_CMD_DEFAULT_AUTO_DETECTING_CARD)
 					{
 						if(Value == TURN_OFF)
 						{
-							#ifdef SystemLogMessage
-							DEBUG_INFO_1("Default of Automatic Detecting Card : OFF...\r\n");
-							#endif
+							DEBUG_INFO_1("Default of Automatic Detecting Card : OFF...\n");
 						}
 						else if (Value == TURN_ON)
 						{
-							#ifdef SystemLogMessage
-							DEBUG_INFO_1("Default of Automatic Detecting Card : ON...\r\n");
-							#endif
+							DEBUG_INFO_1("Default of Automatic Detecting Card : ON...\n");
 						}
 						else if (Value == TURN_TEMPORARILY)
 						{
-							#ifdef SystemLogMessage
-							DEBUG_INFO_1("Default of Automatic Detecting Card : Temporarily open and close automatically detect card...\r\n");
-							#endif
+							DEBUG_INFO_1("Default of Automatic Detecting Card : Temporarily open and close automatically detect card...\n");
 						}
 						
 						isSuccess = true;
 					}
 					else if(tmp[1] == 0xE2)
 					{
-						#ifdef SystemLogMessage
-						DEBUG_INFO_1("Value : SET_DETECTING_OFF = OFF...\r\n");
-						DEBUG_INFO_1("Value : SET_DETECTING_ON = ON...\r\n");
-						DEBUG_INFO_1("Value : SET_DETECTING_TEMPORARILY = Temporarily open and close...\r\n"); 
-						#endif
+						DEBUG_INFO_1("Value : SET_DETECTING_OFF = OFF...\n");
+						DEBUG_INFO_1("Value : SET_DETECTING_ON = ON...\n");
+						DEBUG_INFO_1("Value : SET_DETECTING_TEMPORARILY = Temporarily open and close...\n");
 						
 						isSuccess = false;
 					}
+					else
+					{}
 				}
 				else
 				{}

+ 21 - 6
EVSE/Modularization/Module_RFID.h

@@ -2,9 +2,17 @@
  * 	Module_RFID.h
  *
  *  Created on: 2019-10-24
- *  Update: 2020-07-29
+ *  Update: 2020-10-19
  *  Author: Eason Yang
- *	Version: D0.02
+ *	Version: V0.03
+ *
+ * History
+ * 1. Added : Reyax constant.
+ *
+ *
+ *
+ *
+ *
  */
  
 #ifndef LIB_RFID_H_
@@ -60,16 +68,17 @@ typedef struct Rfid
 //==================================
 // Global Constant (Card Type)
 //==================================
-#define NONE					0
-#define ISO14443A				1
-#define IS014443B				2
-#define FELICA					3
+#define NONE				0
+#define ISO14443A			1
+#define IS014443B			2
+#define FELICA				3
 
 //==================================
 // Global Constant (Module type)
 //==================================
 #define NO_MODULE			-1
 #define MODULE_EWT			0
+#define MODULE_REYAX		1
 
 //==================================
 // Global Constant (RF Output level)
@@ -86,8 +95,14 @@ typedef struct Rfid
 #define SET_DETECTING_ON			0x01
 #define SET_DETECTING_TEMPORARILY	0x11
 
+//==========================
+// Declare RFID module type
+//==========================
+#define RFID_MODULE_TYPE	MODULE_EWT		// EWT : MODULE_EWT	REYAX : MODULE_REYAX
+
 char ClaCheckSum(unsigned char *buffer, int len);
 int system_command(int uart, unsigned char* cmd,int length, unsigned char* rx);
+int at_command(int uart, unsigned char* cmd,int length, unsigned char* rx);
 bool getRequestCardSN(int Fd, int moduleType,RFID *rfid);
 bool ISO14443A_REQUEST_SN(int Fd, int moduleType, unsigned char *serialNumber);
 bool ISO14443B_REQUEST_SN(int Fd, int moduleType, unsigned char *serialNumber);