|
@@ -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 @@
|
|
|
|
|
|
|
|
|
|
|
|
-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;
|
|
|
|
|
|
|
|
|
|
|
@@ -51,6 +54,21 @@ unsigned int LENGTH_6 = 6;
|
|
|
unsigned int LENGTH_7 = 7;
|
|
|
unsigned int LENGTH_10 = 10;
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+unsigned int RF_STRONGEST = 0x00;
|
|
|
+unsigned int RF_STRONGER = 0x01;
|
|
|
+unsigned int RF_WEAK = 0x02;
|
|
|
+unsigned int RF_WEAKEST = 0x03;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+unsigned int TURN_OFF = 0x00;
|
|
|
+unsigned int TURN_ON = 0X01;
|
|
|
+unsigned int TURN_TEMPORARILY = 0x11;
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -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;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+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:
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ 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;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+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:
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ 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;
|
|
|
+}
|