Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFID Support to PN532 #200

Merged
merged 5 commits into from
Aug 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions src/core/display.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ void setTftDisplay(int x, int y, uint16_t fc, int size, uint16_t bg) {
void displayRedStripe(String text, uint16_t fgcolor, uint16_t bgcolor) {
// detect if not running in interactive mode -> show nothing onscreen and return immediately
if(server || isSleeping || isScreenOff) return; // webui is running

int size;
if(fgcolor==bgcolor && fgcolor==TFT_WHITE) fgcolor=TFT_BLACK;
if(text.length()*LW*FM<(WIDTH-2*FM*LW)) size = FM;
Expand Down Expand Up @@ -230,7 +230,7 @@ int loopOptions(std::vector<Option>& options, bool bright, bool submenu, String

#ifdef CARDPUTER
if(checkEscPress()) break;
int pressed_number = checkNumberShortcutPress();
int pressed_number = checkNumberShortcutPress();
if(pressed_number>=0) {
if(index == pressed_number) {
// press 2 times the same number to confirm
Expand Down Expand Up @@ -399,6 +399,16 @@ void drawMainBorder(bool clear) {
#endif
}

void drawMainBorderWithTitle(String title, bool clear) {
drawMainBorder(clear);

tft.setCursor(BORDER_PAD_X, BORDER_PAD_Y);
tft.setTextColor(FGCOLOR, BGCOLOR);
tft.setTextSize(FM);
padprintln(title);

tft.setTextSize(FP);
}

/***************************************************************************************
** Function name: getBattery()
Expand Down
48 changes: 25 additions & 23 deletions src/core/display.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@

#include "globals.h"

#define PADX 10
#define BORDER_PAD_X 10
#define BORDER_PAD_Y 28

//Funções para economizar linhas nas outras funções
void resetTftDisplay(int x = 0, int y = 0, uint16_t fc = FGCOLOR, int size = FM, uint16_t bg = BGCOLOR, uint16_t screen = BGCOLOR);
Expand All @@ -18,28 +19,28 @@ void displayWarning(String txt);// Faixa amarela
void displayInfo(String txt); // Faixa Azul
void displaySuccess(String txt);// Faixa Verde

void padprint(const String &s, int16_t padx=PADX);
void padprint(const char str[], int16_t padx=PADX);
void padprint(char c, int16_t padx=PADX);
void padprint(unsigned char b, int base=DEC, int16_t padx=PADX);
void padprint(int n, int base=DEC, int16_t padx=PADX);
void padprint(unsigned int n, int base=DEC, int16_t padx=PADX);
void padprint(long n, int base=DEC, int16_t padx=PADX);
void padprint(unsigned long n, int base=DEC, int16_t padx=PADX);
void padprint(long long n, int base=DEC, int16_t padx=PADX);
void padprint(unsigned long long n, int base=DEC, int16_t padx=PADX);
void padprint(double n, int digits, int16_t padx=PADX);
void padprintln(const String &s, int16_t padx=PADX);
void padprintln(const char str[], int16_t padx=PADX);
void padprintln(char c, int16_t padx=PADX);
void padprintln(unsigned char b, int base=DEC, int16_t padx=PADX);
void padprintln(int n, int base=DEC, int16_t padx=PADX);
void padprintln(unsigned int n, int base=DEC, int16_t padx=PADX);
void padprintln(long n, int base=DEC, int16_t padx=PADX);
void padprintln(unsigned long n, int base=DEC, int16_t padx=PADX);
void padprintln(long long n, int base=DEC, int16_t padx=PADX);
void padprintln(unsigned long long n, int base=DEC, int16_t padx=PADX);
void padprintln(double n, int digits, int16_t padx=PADX);
void padprint(const String &s, int16_t padx=BORDER_PAD_X);
void padprint(const char str[], int16_t padx=BORDER_PAD_X);
void padprint(char c, int16_t padx=BORDER_PAD_X);
void padprint(unsigned char b, int base=DEC, int16_t padx=BORDER_PAD_X);
void padprint(int n, int base=DEC, int16_t padx=BORDER_PAD_X);
void padprint(unsigned int n, int base=DEC, int16_t padx=BORDER_PAD_X);
void padprint(long n, int base=DEC, int16_t padx=BORDER_PAD_X);
void padprint(unsigned long n, int base=DEC, int16_t padx=BORDER_PAD_X);
void padprint(long long n, int base=DEC, int16_t padx=BORDER_PAD_X);
void padprint(unsigned long long n, int base=DEC, int16_t padx=BORDER_PAD_X);
void padprint(double n, int digits, int16_t padx=BORDER_PAD_X);
void padprintln(const String &s, int16_t padx=BORDER_PAD_X);
void padprintln(const char str[], int16_t padx=BORDER_PAD_X);
void padprintln(char c, int16_t padx=BORDER_PAD_X);
void padprintln(unsigned char b, int base=DEC, int16_t padx=BORDER_PAD_X);
void padprintln(int n, int base=DEC, int16_t padx=BORDER_PAD_X);
void padprintln(unsigned int n, int base=DEC, int16_t padx=BORDER_PAD_X);
void padprintln(long n, int base=DEC, int16_t padx=BORDER_PAD_X);
void padprintln(unsigned long n, int base=DEC, int16_t padx=BORDER_PAD_X);
void padprintln(long long n, int base=DEC, int16_t padx=BORDER_PAD_X);
void padprintln(unsigned long long n, int base=DEC, int16_t padx=BORDER_PAD_X);
void padprintln(double n, int digits, int16_t padx=BORDER_PAD_X);

//loopOptions will now return the last index used in the function
int loopOptions(std::vector<Option>& options, bool bright, bool submenu, String subText,int index = 0);
Expand All @@ -51,6 +52,7 @@ void drawOptions(int index,std::vector<Option>& options, uint16_t fgcolor, uint1
void drawSubmenu(int index,std::vector<Option>& options, String system);

void drawMainBorder(bool clear = true);
void drawMainBorderWithTitle(String title, bool clear = true);

void listFiles(int index, String fileList[][3]);

Expand Down
9 changes: 9 additions & 0 deletions src/core/globals.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,8 @@ extern int RfModule;

extern float RfFreq;

extern int RfidModule;

extern String cachedPassword;

// Screen sleep control variables
Expand All @@ -117,6 +119,7 @@ extern bool isSleeping;
extern bool isScreenOff;
extern bool dimmer;
extern int dimmerSet;
extern int devMode;

void readFGCOLORFromEEPROM();

Expand All @@ -133,5 +136,11 @@ extern String wui_usr;
extern String wui_pwd;
extern int tmz;

enum RFIDModules {
M5_RFID2_MODULE = 0,
PN532_I2C_MODULE = 1,
PN532_SPI_MODULE = 2,
};

void setup_gpio();

52 changes: 52 additions & 0 deletions src/core/i2c_finder.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#include <Wire.h>
#include "display.h"
#include "mykeyboard.h"
#include "i2c_finder.h"

#define FIRST_I2C_ADDRESS 0x01
#define LAST_I2C_ADDRESS 0x7F

void find_i2c_addresses() {
drawMainBorderWithTitle("I2C Finder");
padprintln("");
padprintln("");

bool first_found = true;
Wire.begin(GROVE_SDA, GROVE_SCL);

padprintln("Checking I2C addresses ...\n\n");
delay(300);

padprint("Found: ");

for (uint8_t i = FIRST_I2C_ADDRESS; i <= LAST_I2C_ADDRESS; i++) {
Wire.beginTransmission(i);
if (Wire.endTransmission() == 0) {
if (!first_found) tft.print(", ");
else first_found = false;
tft.printf("0x%X", i);
}
}

while(1) {
if (checkEscPress() || checkSelPress()) {
returnToMenu=true;
break;
}
}
}

uint8_t find_first_i2c_address() {
for (uint8_t i = FIRST_I2C_ADDRESS; i <= LAST_I2C_ADDRESS; i++) {
Wire.beginTransmission(i);
if (Wire.endTransmission() == 0) return i;
}
return 0;
}

bool check_i2c_address(uint8_t i2c_address) {
Wire.begin(GROVE_SDA, GROVE_SCL);
Wire.beginTransmission(i2c_address);
int error = Wire.endTransmission();
return (error == 0);
}
5 changes: 5 additions & 0 deletions src/core/i2c_finder.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#include "globals.h"

void find_i2c_addresses();
uint8_t find_first_i2c_address();
bool check_i2c_address(uint8_t i2c_address);
53 changes: 43 additions & 10 deletions src/core/main_menu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include "wg.h"
#include "wifi_common.h"
#include "main_menu.h"
#include "i2c_finder.h"

#include "modules/ble/ble_spam.h"
#include "modules/ble/ble_common.h"
Expand All @@ -17,7 +18,6 @@
#include "modules/ir/ir_read.h"
#include "modules/rf/rf.h"
#include "modules/rfid/tag_o_matic.h"
#include "modules/rfid/mfrc522_i2c.h"
#include "modules/rfid/rfid125.h"
#include "modules/wifi/clients.h"
#include "modules/wifi/dpwo.h"
Expand Down Expand Up @@ -75,11 +75,11 @@ void wifiOptions() {
**********************************************************************/
void bleOptions() {
options = {
#if !defined(CORE)
#if !defined(LITE_VERSION)
#if !defined(CORE)
#if !defined(LITE_VERSION)
{"BLE Beacon", [=]() { ble_test(); }},
{"BLE Scan", [=]() { ble_scan(); }},
#endif
#endif
{"AppleJuice", [=]() { aj_adv(0); }},
{"SwiftPair", [=]() { aj_adv(1); }},
{"Samsung Spam", [=]() { aj_adv(2); }},
Expand All @@ -88,7 +88,7 @@ void bleOptions() {
{"BT Maelstrom", [=]() { aj_adv(5); }},
#else
{"In Development", [=]() { backToMenu(); }},
#endif
#endif
{"Main Menu", [=]() { backToMenu(); }},
};
delay(200);
Expand Down Expand Up @@ -144,13 +144,29 @@ void rfidOptions(){
{"Load file", [=]() { TagOMatic(TagOMatic::LOAD_MODE); }}, //@RennanCockles
{"Erase data", [=]() { TagOMatic(TagOMatic::ERASE_MODE); }}, //@RennanCockles
{"Write NDEF", [=]() { TagOMatic(TagOMatic::WRITE_NDEF_MODE); }}, //@RennanCockles
{"Config", [=]() { rfidConfigOptions(); }},
{"Main Menu", [=]() { backToMenu(); }},
};
delay(200);
loopOptions(options,false,true,"RFID");
}


/**********************************************************************
** Function: rfidConfigOptions
** RFID config menu options
**********************************************************************/
void rfidConfigOptions(){
options = {
{"RFID Module", [=]() { setRFIDModuleMenu(); saveConfigs();}},
{"Back", [=]() { rfidOptions(); }},
};

delay(200);
loopOptions(options,false,true,"RF Config");
}


/**********************************************************************
** Function: irOptions
** Infrared menu options
Expand Down Expand Up @@ -190,14 +206,14 @@ void irConfigOptions(){
**********************************************************************/
void otherOptions(){
options = {
#ifdef MIC_SPM1423
{"Mic Spectrum", [=]() { mic_test(); }},
#endif
{"QRCodes", [=]() { qrcode_menu(); }},
{"SD Card", [=]() { loopSD(SD); }},
{"LittleFS", [=]() { loopSD(LittleFS); }},
{"WebUI", [=]() { loopOptionsWebUi(); }},
{"QRCodes", [=]() { qrcode_menu(); }},
{"Megalodon", [=]() { shark_setup(); }},
#ifdef MIC_SPM1423
{"Mic Spectrum", [=]() { mic_test(); }},
#endif
#ifdef USB_as_HID
{"BadUSB", [=]() { usb_setup(); }},
{"USB Keyboard", [=]() { usb_keyboard(); }},
Expand Down Expand Up @@ -229,14 +245,31 @@ void configOptions(){
{"Clock", [=]() { setClock(); }},
{"Sleep", [=]() { setSleepMode(); }},
{"Restart", [=]() { ESP.restart(); }},
{"Main Menu", [=]() { backToMenu(); }},
};

if (devMode) options.push_back({"Dev Mode", [=]() { devModeOptions(); }});
options.push_back({"Main Menu", [=]() { backToMenu(); }});

delay(200);
loopOptions(options,false,true,"Config");
}


/**********************************************************************
** Function: devModeOptions
** Developer Options
**********************************************************************/
void devModeOptions(){
options = {
{"I2C Finder", [=]() { find_i2c_addresses(); }},
{"Back", [=]() { configOptions(); }},
};

delay(200);
loopOptions(options,false,true,"Dev Mode");
}


/**********************************************************************
** Function: getMainMenuOptions
** Description: Get main menu options
Expand Down
2 changes: 2 additions & 0 deletions src/core/main_menu.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@ void bleOptions();
void rfOptions();
void rfConfigOptions();
void rfidOptions();
void rfidConfigOptions();
void irOptions();
void irConfigOptions();
void otherOptions();
void configOptions();
void devModeOptions();

void getMainMenuOptions(int index = 0);
void drawMainMenu(int index = 0);
Loading
Loading