Przeglądaj źródła

2020-07-29 / Eason Yang
1.Change : Module_RFID.c
Reason :
a) Added : setRfOutputLevel()
b) Added : setDefaultOfAutomaticDetectingCard()
2.Change : Module_RFID.h
Reason :
a) ADDed : constant for RF output level
b) Added : constant for Default of automaitc detecting card.
Version : D0.01

8009 4 lat temu
rodzic
commit
aa82028dee
2 zmienionych plików z 231 dodań i 24 usunięć
  1. 205 18
      EVSE/Modularization/Module_RFID.c
  2. 26 6
      EVSE/Modularization/Module_RFID.h

+ 205 - 18
EVSE/Modularization/Module_RFID.c

@@ -1,9 +1,10 @@
 /*
- * Module_RFID.c
+ * 	Module_RFID.h
  *
- *  Created on: 2019|~10?e28?e
- *      Author: Eason Yang
- *     Version: D0.01
+ *  Created on: 2019-10-24
+ *  Update: 2020-07-29
+ *  Author: Eason Yang
+ *	Version: D0.01
  */
 
 #include "Module_RFID.h"
@@ -27,13 +28,15 @@
 //==================================
 // RFID CMD CONSTANT
 //==================================
-unsigned int RFID_CMD_ISO1443A_REQUEST			= 0x20;
-unsigned int RFID_CMD_ISO1443B_REQUEST			= 0x60;
-unsigned int RFID_CMD_FELICA_POLLING_REQUEST	= 0x2F;
-unsigned int RFID_CMD_HALT_14443A				= 0x28;
-unsigned int RFID_CMD_BLOCK_READ				= 0x21;
-unsigned int RFID_CMD_BLOCK_WRITE				= 0X22;
-unsigned int RFID_CMD_BUZZER_SET				= 0X14;
+unsigned int RFID_CMD_ISO1443A_REQUEST				= 0x20;
+unsigned int RFID_CMD_ISO1443B_REQUEST				= 0x60;
+unsigned int RFID_CMD_FELICA_POLLING_REQUEST		= 0x2F;
+unsigned int RFID_CMD_HALT_14443A					= 0x28;
+unsigned int RFID_CMD_BLOCK_READ					= 0x21;
+unsigned int RFID_CMD_BLOCK_WRITE					= 0x22;
+unsigned int RFID_CMD_BUZZER_SET					= 0x14;
+unsigned int RFID_CMD_RF_OUTPUT_LEVEL_SET			= 0x02;
+unsigned int RFID_CMD_DEFAULT_AUTO_DETECTING_CARD	= 0x1D;
 
 //==================================
 // RFID MODE CONSTANT
@@ -51,6 +54,21 @@ unsigned int LENGTH_6	= 6;
 unsigned int LENGTH_7	= 7;
 unsigned int LENGTH_10	= 10;
 
+//==================================
+// RF output Level constant
+//==================================
+unsigned int RF_STRONGEST	= 0x00;
+unsigned int RF_STRONGER	= 0x01;
+unsigned int RF_WEAK		= 0x02;
+unsigned int RF_WEAKEST		= 0x03;
+
+//==================================
+// Default of Automatic Detecting constant
+//==================================
+unsigned int TURN_OFF 			= 0x00;
+unsigned int TURN_ON  			= 0X01;
+unsigned int TURN_TEMPORARILY	= 0x11;
+
 //==================================
 // MIFARE SECTOR SPACE
 //==================================
@@ -223,7 +241,7 @@ 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);
@@ -302,7 +320,7 @@ 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);
@@ -369,7 +387,7 @@ 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);
@@ -441,7 +459,7 @@ 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);
@@ -517,7 +535,7 @@ 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);
@@ -589,7 +607,7 @@ 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);
@@ -644,7 +662,7 @@ 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);
@@ -674,3 +692,172 @@ void sethaltCard(int Fd, int moduleType)
 			break;
 	}
 }
+
+//==========================================
+// Set the RF Output Level
+//==========================================
+bool setRfOutputLevel(int Fd, int moduleType, int Value)
+{
+	bool isSuccess = false;
+	int len = 4;
+	unsigned char txByte[len];
+	unsigned char rxByte[254];
+	unsigned char tmp[254];
+
+	switch(moduleType)
+	{
+		case MODULE_EWT:
+		default:
+			//===============================
+			// Command
+			//===============================
+			txByte[0] = 0x03;
+			txByte[1] = RFID_CMD_RF_OUTPUT_LEVEL_SET;
+			txByte[2] = Value;
+			txByte[ARRAY_SIZE(txByte)-1] = ClaCheckSum(txByte,ARRAY_SIZE(txByte));
+			
+			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
+						
+						if(Value == RF_STRONGEST)
+						{
+							#ifdef SystemLogMessage
+							DEBUG_INFO_1("Strongest...\r\n");
+							#endif
+						}
+						else if(Value == RF_STRONGER)
+						{
+							#ifdef SystemLogMessage
+							DEBUG_INFO_1("Strong...\r\n");
+							#endif
+						}	
+						else if(Value == RF_WEAK)
+						{
+							#ifdef SystemLogMessage
+							DEBUG_INFO_1("Weak...\r\n");
+							#endif
+						}
+						else if(Value == RF_WEAKEST)
+						{
+							#ifdef SystemLogMessage
+							DEBUG_INFO_1("Weakest...\r\n");
+							#endif
+						}
+					
+						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
+						
+						isSuccess = false;
+					}
+				}
+				else
+				{}
+			}
+			else
+			{}
+			
+			break;			
+	}
+	
+	return isSuccess;
+}
+
+//==========================================
+// Set the Default of Automatic Detecting Card
+//==========================================
+bool setDefaultOfAutomaticDetectingCard(int Fd, int moduleType, int Value)
+{
+	bool isSuccess = false;
+	int len = 4;
+	unsigned char txByte[len];
+	unsigned char rxByte[254];
+	unsigned char tmp[254];
+	
+	switch(moduleType)
+	{
+		case MODULE_EWT:
+		default:
+			//===============================
+			// Command
+			//===============================
+			txByte[0] = 0x03;
+			txByte[1] = RFID_CMD_DEFAULT_AUTO_DETECTING_CARD;
+			txByte[2] = Value;
+			txByte[ARRAY_SIZE(txByte)-1] = ClaCheckSum(txByte,ARRAY_SIZE(txByte));
+	
+			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
+						}
+						else if (Value == TURN_ON)
+						{
+							#ifdef SystemLogMessage
+							DEBUG_INFO_1("Default of Automatic Detecting Card : ON...\r\n");
+							#endif
+						}
+						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
+						}
+						
+						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
+						
+						isSuccess = false;
+					}
+				}
+				else
+				{}
+			}
+			else
+			{}
+
+			break;
+	}
+	
+	return isSuccess;
+}

+ 26 - 6
EVSE/Modularization/Module_RFID.h

@@ -1,9 +1,12 @@
 /*
- * Module_RFID.h
+ * 	Module_RFID.h
  *
- *  Created on: 2019|~10?e24?e
- *      Author: Eason Yang
+ *  Created on: 2019-10-24
+ *  Update: 2020-07-29
+ *  Author: Eason Yang
+ *	Version: D0.01
  */
+ 
 #ifndef LIB_RFID_H_
 #define LIB_RFID_H_
 
@@ -47,7 +50,7 @@ typedef struct Rfid
 }RFID;
 
 //==================================
-// Card Length
+// Global Constant (Card Length)
 //==================================
 #define RFID_SN_TYPE_4BYTE		4
 #define RFID_SN_TYPE_6BYTE		6
@@ -55,7 +58,7 @@ typedef struct Rfid
 #define RFID_SN_TYPE_10BYTE     10
 
 //==================================
-// Card Type
+// Global Constant (Card Type)
 //==================================
 #define NONE					0
 #define ISO14443A				1
@@ -63,11 +66,26 @@ typedef struct Rfid
 #define FELICA					3
 
 //==================================
-// MODULE CONSTANT
+// Global Constant (Module type)
 //==================================
 #define NO_MODULE			-1
 #define MODULE_EWT			0
 
+//==================================
+// Global Constant (RF Output level)
+//==================================
+#define SET_RF_STRONGEST	0x00
+#define SET_RF_STRONGER		0x01
+#define SET_RF_WEAK			0x02
+#define SET_RF_WEAKEST		0x03
+
+//==================================
+// Global Constant (Automatic Detecting)
+//==================================
+#define SET_DETECTING_OFF			0x00
+#define SET_DETECTING_ON			0x01
+#define SET_DETECTING_TEMPORARILY	0x11
+
 char ClaCheckSum(unsigned char *buffer, int len);
 int system_command(int uart, unsigned char* cmd,int length, unsigned char* rx);
 bool getRequestCardSN(int Fd, int moduleType,RFID *rfid);
@@ -76,6 +94,8 @@ bool ISO14443B_REQUEST_SN(int Fd, int moduleType, unsigned char *serialNumber);
 bool FELICA_REQUEST_SN(int Fd, int moduleType, unsigned char *serialNumber);
 bool getBlockRead(int Fd, int moduleType,int block, unsigned char keyid, unsigned char *data);
 bool setBlockWrite(int Fd, int moduleType,int block, unsigned char keyid, unsigned char *data);
+bool setDefaultOfAutomaticDetectingCard(int Fd, int moduleType, int Value);
+bool setRfOutputLevel(int Fd, int moduleType, int Value);
 void setBuzzer(int Fd, int moduleType, unsigned char time);
 void sethaltCard(int Fd, int moduleType);