diff --git a/.gitmodules b/.gitmodules index 23a7dab..e613979 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,6 +7,12 @@ [submodule "FW/leo_muziekdoos_esp32/lib/JCButton"] path = FW/leo_muziekdoos_esp32/lib/JCButton url = http://192.168.2.3/Bonobo.Git.Server/JCButton.git -[submodule "FW/leo_muziekdoos_esp32/lib/rfid_C95HF"] - path = FW/leo_muziekdoos_esp32/lib/rfid_C95HF - url = http://192.168.2.3/Bonobo.Git.Server/rfid.C95HF.git +[submodule "FW/leo_muziekdoos_esp32/lib/NDEF"] + path = FW/leo_muziekdoos_esp32/lib/NDEF + url = http://192.168.2.3/Bonobo.Git.Server/rfid.NDEF.git +[submodule "FW/leo_muziekdoos_esp32/lib/PN532"] + path = FW/leo_muziekdoos_esp32/lib/PN532 + url = http://192.168.2.3/Bonobo.Git.Server/rfid.PN532.git +[submodule "FW/leo_muziekdoos_esp32/lib/PN532_SPI"] + path = FW/leo_muziekdoos_esp32/lib/PN532_SPI + url = http://192.168.2.3/Bonobo.Git.Server/rfid.PN532_SPI.git diff --git a/FW/leo_muziekdoos_esp32/lib/CR95HF-master/examples/ReadTag/ReadTag.ino b/FW/leo_muziekdoos_esp32/lib/CR95HF-master/examples/ReadTag/ReadTag.ino deleted file mode 100644 index 80dffc8..0000000 --- a/FW/leo_muziekdoos_esp32/lib/CR95HF-master/examples/ReadTag/ReadTag.ino +++ /dev/null @@ -1,21 +0,0 @@ -#include "CR95HF.h" - -CR95HF reader(4, 2, 3, 5); - -void setup() { - - Serial.begin(115200); - while (!Serial) {} - reader.begin(); - Serial.println(reader.readSerial()); -} - - -void loop() { - - String id = reader.getID(); - if (id != "") { - Serial.println(id); - } - -} diff --git a/FW/leo_muziekdoos_esp32/lib/CR95HF-master/keywords.txt b/FW/leo_muziekdoos_esp32/lib/CR95HF-master/keywords.txt deleted file mode 100644 index c10c442..0000000 --- a/FW/leo_muziekdoos_esp32/lib/CR95HF-master/keywords.txt +++ /dev/null @@ -1,20 +0,0 @@ -####################################### -# Syntax Coloring Map HID -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -CR95HF KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### -begin KEYWORD2 -readSerial KEYWORD2 -getID KEYWORD2 - -####################################### -# Constants (LITERAL1) -####################################### diff --git a/FW/leo_muziekdoos_esp32/lib/CR95HF-master/library.properties b/FW/leo_muziekdoos_esp32/lib/CR95HF-master/library.properties deleted file mode 100644 index 0495182..0000000 --- a/FW/leo_muziekdoos_esp32/lib/CR95HF-master/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=CR95HF -version=1.0 -author=Martino Facchin -maintainer=Martino Facchin -sentence=Library to talk with ST Microelectronics CR95HF RFID/NFC reader -paragraph=Porting of mikroElektronika RFid click example code. Only SPI bus supported at the moment. -category=Communication -url=http://www.github.com/facchinm/CR95HF -architectures=* diff --git a/FW/leo_muziekdoos_esp32/lib/CR95HF-master/src/CR95HF.cpp b/FW/leo_muziekdoos_esp32/lib/CR95HF-master/src/CR95HF.cpp deleted file mode 100644 index f43a439..0000000 --- a/FW/leo_muziekdoos_esp32/lib/CR95HF-master/src/CR95HF.cpp +++ /dev/null @@ -1,448 +0,0 @@ -#include "CR95HF.h" -#include "SPI.h" - -// Write command to the CR95HF -void CR95HF::writeCmd(unsigned short cmd, unsigned short dataLen) -{ - unsigned short i = 0; - - digitalWrite(CS, LOW); - SPI.beginTransaction(SETTINGS); - SPI.transfer(0x00); // Send cmd to CR95HF - SPI.transfer(cmd); - SPI.transfer(dataLen); - while (dataLen == 0) - { - digitalWrite(CS, HIGH); - break; - } - for (i = 0; i < dataLen; i++) - { - SPI.transfer(sdata[i]); - } - SPI.endTransaction(); - digitalWrite(CS, HIGH); -} - -// Poll the CR95HF -void CR95HF::readCmd() -{ - unsigned short i = 0; - - while (1) - { - digitalWrite(CS, LOW); - SPI.beginTransaction(SETTINGS); - SPI.transfer(0x03); - res = SPI.transfer(0); - SPI.endTransaction(); - digitalWrite(CS, HIGH); - - if ((res & 0x08) >> 3) - { - digitalWrite(CS, LOW); - SPI.beginTransaction(SETTINGS); - SPI.transfer(0x02); - res = SPI.transfer(0); - dataNum = SPI.transfer(0); - for (i = 0; i < dataNum; i++) - rdata[i] = SPI.transfer(0); - SPI.endTransaction(); - digitalWrite(CS, HIGH); - break; - } - SPI.endTransaction(); - digitalWrite(CS, HIGH); - delay(10); - } -} - -// Initialize MCU and peripherals -void CR95HF::begin() -{ - // Configure GPIO pins - // if (SSI_0 != -1) - // pinMode(SSI_0, OUTPUT); - // if (SSI_1 != -1) - // pinMode(SSI_1, OUTPUT); - if (IRQ_IN != -1) - pinMode(IRQ_IN, OUTPUT); - - pinMode(CS, OUTPUT); - - // Set in SPI mode - // if (SSI_0 != -1) - // digitalWrite(SSI_0, HIGH); - // if (SSI_1 != -1) - // digitalWrite(SSI_1, LOW); - if (IRQ_IN != -1) - digitalWrite(IRQ_IN, HIGH); - delay(1); - - if (IRQ_IN != -1) - digitalWrite(IRQ_IN, LOW); - delay(1); - if (IRQ_IN != -1) - digitalWrite(IRQ_IN, HIGH); - delay(1); - - Serial.println("RFID init: init SPI"); - SPI.begin(SCK, MISO, MOSI); - - Serial.print("RFID init: Wait for response"); - while (!EchoResponse()) - { // Until CR95HF is detected - if (IRQ_IN != -1) - digitalWrite(IRQ_IN, HIGH); - delay(10); - if (IRQ_IN != -1) - digitalWrite(IRQ_IN, LOW); - delay(10); - Serial.print("."); - } - Serial.println("ok"); - - Serial.printf("RFID init: Serial=%s\n", readSerial()); - Calibration(); - IndexMod_Gain(); - AutoFDet(); - Select_ISO_IEC_18092_Protocol(); -} - -// Get Echo reponse from CR95HF -char CR95HF::EchoResponse() -{ - - digitalWrite(CS, LOW); - SPI.beginTransaction(SETTINGS); - SPI.transfer(0x00); // Send cmd to CR95HF - SPI.transfer(ECHO); - SPI.endTransaction(); - digitalWrite(CS, HIGH); - Serial.println("send echo"); - - while (1) - { - digitalWrite(CS, LOW); - SPI.beginTransaction(SETTINGS); - SPI.transfer(0x03); - tmp = SPI.transfer(0); - SPI.endTransaction(); - digitalWrite(CS, HIGH); - Serial.printf("rfid: received %x\n",tmp); - - if ((tmp & 0x08) >> 3) - { - digitalWrite(CS, LOW); - SPI.beginTransaction(SETTINGS); - SPI.transfer(0x02); - tmp = SPI.transfer(0); - SPI.endTransaction(); - digitalWrite(CS, HIGH); - if (tmp == ECHO) - { - Serial.println("receive echo"); - return 1; - } - Serial.printf("no echo, received %x\n",tmp); - return 0; - } - } -} - -// Calibrate CR95HF device -void CR95HF::Calibration() -{ - sdata[0] = 0x03; - sdata[1] = 0xA1; - sdata[2] = 0x00; - sdata[3] = 0xF8; - sdata[4] = 0x01; - sdata[5] = 0x18; - sdata[6] = 0x00; - sdata[7] = 0x20; - sdata[8] = 0x60; - sdata[9] = 0x60; - sdata[10] = 0x00; - sdata[11] = 0x00; - sdata[12] = 0x3F; - sdata[13] = 0x01; - writeCmd(Idle, 0x0E); - readCmd(); - - sdata[0] = 0x03; - sdata[1] = 0xA1; - sdata[2] = 0x00; - sdata[3] = 0xF8; - sdata[4] = 0x01; - sdata[5] = 0x18; - sdata[6] = 0x00; - sdata[7] = 0x20; - sdata[8] = 0x60; - sdata[9] = 0x60; - sdata[10] = 0x00; - sdata[11] = 0xFC; - sdata[12] = 0x3F; - sdata[13] = 0x01; - writeCmd(Idle, 0x0E); - readCmd(); - - sdata[0] = 0x03; - sdata[1] = 0xA1; - sdata[2] = 0x00; - sdata[3] = 0xF8; - sdata[4] = 0x01; - sdata[5] = 0x18; - sdata[6] = 0x00; - sdata[7] = 0x20; - sdata[8] = 0x60; - sdata[9] = 0x60; - sdata[10] = 0x00; - sdata[11] = 0x7C; - sdata[12] = 0x3F; - sdata[13] = 0x01; - writeCmd(Idle, 0x0E); - readCmd(); - - sdata[0] = 0x03; - sdata[1] = 0xA1; - sdata[2] = 0x00; - sdata[3] = 0xF8; - sdata[4] = 0x01; - sdata[5] = 0x18; - sdata[6] = 0x00; - sdata[7] = 0x20; - sdata[8] = 0x60; - sdata[9] = 0x60; - sdata[10] = 0x00; - sdata[11] = 0x3C; - sdata[12] = 0x3F; - sdata[13] = 0x01; - writeCmd(Idle, 0x0E); - readCmd(); - - sdata[0] = 0x03; - sdata[1] = 0xA1; - sdata[2] = 0x00; - sdata[3] = 0xF8; - sdata[4] = 0x01; - sdata[5] = 0x18; - sdata[6] = 0x00; - sdata[7] = 0x20; - sdata[8] = 0x60; - sdata[9] = 0x60; - sdata[10] = 0x00; - sdata[11] = 0x5C; - sdata[12] = 0x3F; - sdata[13] = 0x01; - writeCmd(Idle, 0x0E); - readCmd(); - - sdata[0] = 0x03; - sdata[1] = 0xA1; - sdata[2] = 0x00; - sdata[3] = 0xF8; - sdata[4] = 0x01; - sdata[5] = 0x18; - sdata[6] = 0x00; - sdata[7] = 0x20; - sdata[8] = 0x60; - sdata[9] = 0x60; - sdata[10] = 0x00; - sdata[11] = 0x6C; - sdata[12] = 0x3F; - sdata[13] = 0x01; - writeCmd(Idle, 0x0E); - readCmd(); - - sdata[0] = 0x03; - sdata[1] = 0xA1; - sdata[2] = 0x00; - sdata[3] = 0xF8; - sdata[4] = 0x01; - sdata[5] = 0x18; - sdata[6] = 0x00; - sdata[7] = 0x20; - sdata[8] = 0x60; - sdata[9] = 0x60; - sdata[10] = 0x00; - sdata[11] = 0x74; - sdata[12] = 0x3F; - sdata[13] = 0x01; - writeCmd(Idle, 0x0E); - readCmd(); - - sdata[0] = 0x03; - sdata[1] = 0xA1; - sdata[2] = 0x00; - sdata[3] = 0xF8; - sdata[4] = 0x01; - sdata[5] = 0x18; - sdata[6] = 0x00; - sdata[7] = 0x20; - sdata[8] = 0x60; - sdata[9] = 0x60; - sdata[10] = 0x00; - sdata[11] = 0x70; - sdata[12] = 0x3F; - sdata[13] = 0x01; - writeCmd(Idle, 0x0E); - readCmd(); -} - -// Get CR95HF chip ID -char *CR95HF::readSerial() -{ - writeCmd(IDN, 0); - readCmd(); - for (j = 0; j < dataNum; j++) - { - CR95HF_ID[j] = rdata[j]; - } - return CR95HF_ID; -} - -// Select the RF communication protocol (ISO/IEC 14443-A) -void CR95HF::Select_ISO_IEC_14443_A_Protocol() -{ - sdata[0] = 0x02; - sdata[1] = 0x00; - writeCmd(ProtocolSelect, 2); - readCmd(); - - // Clear read and write buffers - for (j = 0; j < 18; j++) - { - rdata[j] = 0; - sdata[j] = 0; - } -} - -// Select the RF communication protocol (ISO/IEC 18092) -void CR95HF::Select_ISO_IEC_18092_Protocol() -{ - sdata[0] = 0x04; - sdata[1] = 0x51; - writeCmd(ProtocolSelect, 2); - readCmd(); - - // Clear read and write buffers - for (j = 0; j < 18; j++) - { - rdata[j] = 0; - sdata[j] = 0; - } -} - -// Configure IndexMod & Gain -void CR95HF::IndexMod_Gain() -{ - sdata[0] = 0x09; - sdata[1] = 0x04; - sdata[2] = 0x68; - sdata[3] = 0x01; - sdata[4] = 0x01; - sdata[5] = 0x50; - writeCmd(WrReg, 6); - readCmd(); -} - -// Configure Auto FDet -void CR95HF::AutoFDet() -{ - sdata[0] = 0x09; - sdata[1] = 0x04; - sdata[2] = 0x0A; - sdata[3] = 0x01; - sdata[4] = 0x02; - sdata[5] = 0xA1; - writeCmd(WrReg, 6); - readCmd(); -} - -// Read the tag ID -void CR95HF::GetTagID() -{ - sdata[0] = 0x26; - sdata[1] = 0x07; - writeCmd(SendRecv, 2); - readCmd(); - - sdata[0] = 0x93; - sdata[1] = 0x20; - sdata[2] = 0x08; - writeCmd(SendRecv, 3); - readCmd(); - - if (res == 0x80) - { - for (j = 1; j < dataNum - 3; j++) - { - ID += String(rdata[j], HEX); - } - TAG_flag = 1; - } - else - { - TAG_flag = 0; - Select_ISO_IEC_18092_Protocol(); - } -} - -// Read the NFC Forum tags -void CR95HF::GetNFCTag() -{ - sdata[0] = 0x00; - sdata[1] = 0xFF; - sdata[2] = 0xFF; - sdata[3] = 0x00; - sdata[4] = 0x00; - writeCmd(SendRecv, 5); - readCmd(); - - if (res == 0x80) - { - for (j = 0; j < dataNum; j++) - { - ID += String(rdata[j], HEX); - } - NFC_flag = 1; - } - else - { - NFC_flag = 0; - Select_ISO_IEC_14443_A_Protocol(); - } -} - -String CR95HF::getID() -{ - - String id = ""; - - if (!TAG_flag) - GetNFCTag(); // Get NFC ID - - if (!NFC_flag) - GetTagID(); // Get Tag ID - - if (ID.c_str()[0] == 0) - { // If there is no tag present - flag++; // Increment counter flag - } - else - { // If tag is present - flag = 0; // Reset counter flag - id = ID; // Set current ID as previous ID - } - ID = ""; // Terminate the ID string - - // Clear read and write buffers - for (j = 0; j < 18; j++) - { - rdata[j] = 0; - sdata[j] = 0; - } - - return id; -} diff --git a/FW/leo_muziekdoos_esp32/lib/CR95HF-master/src/CR95HF.h b/FW/leo_muziekdoos_esp32/lib/CR95HF-master/src/CR95HF.h deleted file mode 100644 index ecbae6c..0000000 --- a/FW/leo_muziekdoos_esp32/lib/CR95HF-master/src/CR95HF.h +++ /dev/null @@ -1,56 +0,0 @@ -#include "SPI.h" -#include "Arduino.h" - -// CR95HF Commands Definition -#define IDN 0x01 -#define ProtocolSelect 0x02 -#define SendRecv 0x04 -#define Idle 0x07 -#define RdReg 0x08 -#define WrReg 0x09 -#define BaudRate 0x0A -#define ECHO 0x55 - -class CR95HF -{ - -public: - CR95HF(int cs, int sck, int mosi, int miso, int irq_in = -1, int ssi_o = -1, int ssi_i = -1) : CS(cs), SCK(sck), MOSI(mosi), MISO(miso), IRQ_IN(irq_in), SSI_0(ssi_o), SSI_1(ssi_i) {} - void begin(); - char *readSerial(); - String getID(); - -private: - void writeCmd(unsigned short cmd, unsigned short dataLen); - void readCmd(); - char EchoResponse(); - void Calibration(); - void GetNFCTag(); - void GetTagID(); - void AutoFDet(); - void IndexMod_Gain(); - void Select_ISO_IEC_18092_Protocol(); - void Select_ISO_IEC_14443_A_Protocol(); - -private: - const SPISettings SETTINGS = SPISettings(1000000, MSBFIRST, SPI_MODE0); - unsigned short sdata[18]; - unsigned short rdata[18]; - unsigned short res = 0, dataNum = 0; - unsigned short j = 0, tmp = 0; - int x_pos = 0; - int x_pos_old = 0; - char CR95HF_ID[13]; - String ID; - String ID_old; - char flag = 0; - unsigned char NFC_flag = 0; - unsigned char TAG_flag = 1; - const unsigned int CS; - const unsigned int SCK; - const unsigned int MOSI; - const unsigned int MISO; - const unsigned int IRQ_IN; - const unsigned int SSI_0; - const unsigned int SSI_1; -}; diff --git a/FW/leo_muziekdoos_esp32/lib/NDEF b/FW/leo_muziekdoos_esp32/lib/NDEF new file mode 160000 index 0000000..4d119fd --- /dev/null +++ b/FW/leo_muziekdoos_esp32/lib/NDEF @@ -0,0 +1 @@ +Subproject commit 4d119fdce369bdf0bab1f0e1212c0eba53903f6b diff --git a/FW/leo_muziekdoos_esp32/lib/PN532 b/FW/leo_muziekdoos_esp32/lib/PN532 new file mode 160000 index 0000000..ae7421a --- /dev/null +++ b/FW/leo_muziekdoos_esp32/lib/PN532 @@ -0,0 +1 @@ +Subproject commit ae7421a5b3b3e898dc5ffb4e19ced45e02fe1098 diff --git a/FW/leo_muziekdoos_esp32/lib/PN532_SPI b/FW/leo_muziekdoos_esp32/lib/PN532_SPI new file mode 160000 index 0000000..d8ec6bf --- /dev/null +++ b/FW/leo_muziekdoos_esp32/lib/PN532_SPI @@ -0,0 +1 @@ +Subproject commit d8ec6bf06aa96c4f91dd0844a7630f0ac8c43b50 diff --git a/FW/leo_muziekdoos_esp32/lib/rfid_C95HF b/FW/leo_muziekdoos_esp32/lib/rfid_C95HF deleted file mode 160000 index 4463b52..0000000 --- a/FW/leo_muziekdoos_esp32/lib/rfid_C95HF +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4463b521e8c26ac8d0a3d6ab2496b2e18dd00732