Use Log instead of Serial.print

This commit is contained in:
André Fiedler 2025-02-18 19:56:59 +01:00
parent b757e557ed
commit 3e4e76e634
5 changed files with 45 additions and 42 deletions

2
.gitignore vendored
View File

@ -1,2 +1,4 @@
Software/.DS_Store Software/.DS_Store
.DS_Store

View File

@ -2,6 +2,7 @@
#include <Wire.h> #include <Wire.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <ArduinoLog.h>
// Constructor: initializes I2C, creates the display object, // Constructor: initializes I2C, creates the display object,
// initializes the display, clears it, and sets an initial rotation. // initializes the display, clears it, and sets an initial rotation.
@ -16,7 +17,7 @@ Display::Display(int sda, int scl, int readerid)
display = new Adafruit_SSD1306(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); display = new Adafruit_SSD1306(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
if (!display->begin(SSD1306_SWITCHCAPVCC, 0x3C)) if (!display->begin(SSD1306_SWITCHCAPVCC, 0x3C))
{ {
Serial.println("SSD1306 allocation failed"); Log.error(F("SSD1306 allocation failed"));
while (1) while (1)
{ {
yield(); // Infinite loop if display initialization fails yield(); // Infinite loop if display initialization fails

View File

@ -2,10 +2,11 @@
#include <SPI.h> #include <SPI.h>
#include <PubSubClient.h> #include <PubSubClient.h>
#include "helpers.h" #include "helpers.h"
#include <ArduinoLog.h>
NFC::NFC(int pin_sda, int pin_scl) NFC::NFC(int pin_sda, int pin_scl)
{ {
Serial.println("NFC: Start"); Log.trace(F("NFC: Start"));
// Create a new PN532 instance with the defined IRQ and RESET pins. // Create a new PN532 instance with the defined IRQ and RESET pins.
rfid = new Adafruit_PN532(PN532_IRQ, PN532_RESET); rfid = new Adafruit_PN532(PN532_IRQ, PN532_RESET);
@ -16,7 +17,7 @@ NFC::NFC(int pin_sda, int pin_scl)
if (!versiondata) if (!versiondata)
{ {
// If no version data is returned, the PN532 was not detected. // If no version data is returned, the PN532 was not detected.
Serial.println("Didn't find PN53x board"); Log.error(F("Didn't find PN53x board"));
while (true) while (true)
{ {
yield(); // Halt execution indefinitely if the board is missing. yield(); // Halt execution indefinitely if the board is missing.
@ -24,8 +25,8 @@ NFC::NFC(int pin_sda, int pin_scl)
} }
// Print chip and firmware details using formatted output. // Print chip and firmware details using formatted output.
Serial.printf("NFC: Found chip PN5%02X\n", (versiondata >> 24) & 0xFF); Log.trace(F("NFC: Found chip PN5%02X"), (versiondata >> 24) & 0xFF);
Serial.printf("NFC: Firmware ver. %d.%d\n", (versiondata >> 16) & 0xFF, (versiondata >> 8) & 0xFF); Log.trace(F("NFC: Firmware ver. %d.%d"), (versiondata >> 16) & 0xFF, (versiondata >> 8) & 0xFF);
} }
// Convert the card's UID (stored in a byte array) into a hexadecimal String. // Convert the card's UID (stored in a byte array) into a hexadecimal String.
@ -66,30 +67,29 @@ bool NFC::checkforCard()
// Attempt to read the card's UID (ISO14443A standard) within 1000 ms. // Attempt to read the card's UID (ISO14443A standard) within 1000 ms.
if (!rfid->readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength, 1000)) if (!rfid->readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength, 1000))
{ {
Serial.println("No card found within the timeout period"); Log.warning("No card found within the timeout period");
return false; return false;
} }
// Validate the card's UID length: 7 for DESFire, 4 for MIFARE Classic/ISO14443A. // Validate the card's UID length: 7 for DESFire, 4 for MIFARE Classic/ISO14443A.
if (uidLength != 7 && uidLength != 4) if (uidLength != 7 && uidLength != 4)
{ {
Serial.println("No card detected"); Log.warning("No card detected");
return false; return false;
} }
// Report the type of card detected. // Report the type of card detected.
if (uidLength == 7) if (uidLength == 7)
{ {
Serial.println("DESFire card detected"); Log.info("DESFire card detected");
} }
else else
{ {
Serial.println("MIFARE Classic or another ISO14443A card detected"); Log.info("MIFARE Classic or another ISO14443A card detected");
} }
// Print the card's UID in hexadecimal format. // Print the card's UID in hexadecimal format.
Serial.print("UID: "); Log.trace(F("UID: %s"), getUID().c_str());
printbytes(uid, uidLength);
return true; return true;
} }
@ -110,7 +110,7 @@ bool NFC::connecttoCard()
// Send the RATS command and check for errors. // Send the RATS command and check for errors.
if (rfid->inDataExchange(ratsCmd, sizeof(ratsCmd), atsResponse, &atsResponseLength) < 0) if (rfid->inDataExchange(ratsCmd, sizeof(ratsCmd), atsResponse, &atsResponseLength) < 0)
{ {
Serial.println(F("Failed ATS")); Log.error(F("Failed ATS"));
// PN532 does not offer a dedicated halt command, // PN532 does not offer a dedicated halt command,
// so you may simply return false to abort communication. // so you may simply return false to abort communication.
return false; return false;
@ -129,7 +129,7 @@ bool NFC::connecttoCard()
// Send the PPS command and check for errors. // Send the PPS command and check for errors.
if (rfid->inDataExchange(ppsCmd, sizeof(ppsCmd), ppsResponse, &ppsResponseLength) < 0) if (rfid->inDataExchange(ppsCmd, sizeof(ppsCmd), ppsResponse, &ppsResponseLength) < 0)
{ {
Serial.println(F("Failed PPS")); Log.error(F("Failed PPS"));
return false; return false;
} }
@ -146,7 +146,6 @@ bool NFC::connecttoCard()
// Disconnect from the card by issuing an ISO14443A HALT command. // Disconnect from the card by issuing an ISO14443A HALT command.
bool NFC::disconnectCard() bool NFC::disconnectCard()
{ {
// HALT command for ISO14443A cards in auto-CRC mode: [0x50, 0x00] // HALT command for ISO14443A cards in auto-CRC mode: [0x50, 0x00]
// You can either compute the CRC or, if your setup automatically appends it, // You can either compute the CRC or, if your setup automatically appends it,
// simply send the command without CRC bytes. // simply send the command without CRC bytes.
@ -164,8 +163,7 @@ bool NFC::disconnectCard()
int status = rfid->inDataExchange(haltCmd, sizeof(haltCmd), response, &responseLength); int status = rfid->inDataExchange(haltCmd, sizeof(haltCmd), response, &responseLength);
if (status < 0) if (status < 0)
{ {
Serial.println(F("Failed to send HALT command")); Log.error(F("Failed to send HALT command: %d"), status); // Combined Serial.println calls
Serial.println(status);
return false; return false;
} }

View File

@ -1,6 +1,7 @@
#include "OTAProxy.h" #include "OTAProxy.h"
#include "NFC.h" #include "NFC.h"
#include <PubSubClient.h> #include <PubSubClient.h>
#include <ArduinoLog.h>
OTAProxy::OTAProxy(PubSubClient *mqttClient, NFC *nfc, int id) OTAProxy::OTAProxy(PubSubClient *mqttClient, NFC *nfc, int id)
{ {
@ -28,7 +29,7 @@ void OTAProxy::startOTA()
String uid = nfc->getUID(); String uid = nfc->getUID();
mqtt->publish(topic, uid.c_str(), uid.length()); mqtt->publish(topic, uid.c_str(), uid.length());
Serial.println("Start OTA"); Log.info(F("Start OTA"));
} }
void OTAProxy::continueOTA(char *topic, byte *payload, unsigned int length) void OTAProxy::continueOTA(char *topic, byte *payload, unsigned int length)
@ -48,7 +49,7 @@ void OTAProxy::continueOTA(char *topic, byte *payload, unsigned int length)
if (!strcmp(topic, topic_requestOTA)) if (!strcmp(topic, topic_requestOTA))
{ {
Serial.println("Request OTA"); Log.info("Request OTA");
byte response[APDU_BUFFER_SIZE] = {0}; byte response[APDU_BUFFER_SIZE] = {0};
@ -58,9 +59,9 @@ void OTAProxy::continueOTA(char *topic, byte *payload, unsigned int length)
// Cast length (unsigned int) to uint8_t, assuming it fits within 255 bytes. // Cast length (unsigned int) to uint8_t, assuming it fits within 255 bytes.
uint8_t sendLength = (uint8_t)length; uint8_t sendLength = (uint8_t)length;
Serial.println("Run Transceive"); Log.trace(F("Run Transceive"));
int status = nfc->rfid->inDataExchange(payload, sendLength, response, &response_len); int status = nfc->rfid->inDataExchange(payload, sendLength, response, &response_len);
Serial.printf("PICC_Transceive: 0x%02x\n", status); Log.trace(F("PICC_Transceive: 0x%02x"), status);
if (status < 0) if (status < 0)
{ {
@ -69,19 +70,18 @@ void OTAProxy::continueOTA(char *topic, byte *payload, unsigned int length)
} }
mqtt->publish(topic_responseOTA, response, response_len); mqtt->publish(topic_responseOTA, response, response_len);
Serial.println("Response OTA"); Log.info("Response OTA");
} }
else if (!strcmp(topic, topic_stopOTA)) else if (!strcmp(topic, topic_stopOTA))
{ {
Serial.println("Stop OTA"); Log.info("Stop OTA");
nfc->disconnectCard(); nfc->disconnectCard();
activeOTA = false; activeOTA = false;
} }
// else if (!strcmp(topic, topic_restartOTA)) // else if (!strcmp(topic, topic_restartOTA))
// { // {
// Serial.println("Restart OTA"); // Log.info("Restart OTA"); // Updated if uncommented
// // Add your PN532-specific card deselection logic here if needed. // // Add your PN532-specific card deselection logic here if needed.
// // For example, you might send a halt command or wait until the card is removed.
// } // }
} }
@ -99,5 +99,5 @@ void OTAProxy::cancelOTA()
} }
activeOTA = false; activeOTA = false;
Serial.println("Cancel OTA"); Log.info("Cancel OTA");
} }

View File

@ -1,6 +1,5 @@
#include <Arduino.h> #include <Arduino.h>
#include <ArduinoLog.h> #include <ArduinoLog.h>
#include "config.h" #include "config.h"
#include <Pins.h> #include <Pins.h>
#include <NFC.h> #include <NFC.h>
@ -27,7 +26,7 @@ unsigned long lastotatime;
void setup_wifi() void setup_wifi()
{ {
delay(10); delay(10);
Serial.println("Connecting Wifi ..."); Log.trace(F("Connecting Wifi ..."));
WiFi.mode(WIFI_STA); WiFi.mode(WIFI_STA);
WiFi.begin(WLAN_SSID, WLAN_PASS); WiFi.begin(WLAN_SSID, WLAN_PASS);
@ -38,7 +37,7 @@ void setup_wifi()
} }
randomSeed(micros()); randomSeed(micros());
Serial.println("WiFi connected"); Log.trace(F("WiFi connected"));
} }
void reconnect() void reconnect()
@ -48,7 +47,7 @@ void reconnect()
String clientId = "FabReader_"; String clientId = "FabReader_";
clientId += String(FABREADERID); clientId += String(FABREADERID);
Serial.println("Connecting MQTT ..."); Log.trace(F("Connecting MQTT ..."));
bool connected = false; bool connected = false;
if (strcmp(MQTT_USERNAME, "") == 0) if (strcmp(MQTT_USERNAME, "") == 0)
{ {
@ -61,7 +60,7 @@ void reconnect()
if (connected) if (connected)
{ {
Serial.println("MQTT connected"); Log.trace(F("MQTT connected"));
char id[6] = "00000"; char id[6] = "00000";
sprintf(id, "%05d", FABREADERID); sprintf(id, "%05d", FABREADERID);
mqtt->publish("fabreader", id); mqtt->publish("fabreader", id);
@ -86,9 +85,7 @@ void reconnect()
display->writeTitle("Reconnect"); display->writeTitle("Reconnect");
display->writeInfo("MQTT"); display->writeInfo("MQTT");
Serial.print("failed, rc="); Log.error(F("MQTT connection failed, rc=%d, try again in 5 seconds"), mqtt->state());
Serial.print(mqtt->state());
Serial.println(" try again in 5 seconds");
delay(5000); delay(5000);
} }
} }
@ -96,8 +93,7 @@ void reconnect()
void callback(char *topic, byte *payload, unsigned int length) void callback(char *topic, byte *payload, unsigned int length)
{ {
Serial.println("Receive Message"); Log.trace(F("Receive Message: %s"), topic);
Serial.println(topic);
if (ota->hasActiveOTA()) if (ota->hasActiveOTA())
{ {
ota->continueOTA(topic, payload, length); ota->continueOTA(topic, payload, length);
@ -108,8 +104,14 @@ void callback(char *topic, byte *payload, unsigned int length)
void setup() void setup()
{ {
Serial.begin(115200); Serial.begin(115200);
Serial.print("\n\n\n");
Serial.println("Booting ..."); Log.begin(LOG_LEVEL_VERBOSE, &Serial); // Initialize ArduinoLog
// Optional: add a timestamp to each log entry.
// Log.begin(LOG_LEVEL_VERBOSE, &Serial, true);
Log.trace(F("\n\n\n"));
Log.trace(F("Booting ..."));
pinMode(PIN_BUZZER, OUTPUT); pinMode(PIN_BUZZER, OUTPUT);
@ -117,11 +119,11 @@ void setup()
display->clearReaderInfo(); display->clearReaderInfo();
display->writeInfo("Start NFC ..."); display->writeInfo("Start NFC ...");
Serial.println("Connecting NFC ..."); Log.trace(F("Connecting NFC ..."));
nfc = new NFC(PIN_SDA, PIN_SCL); nfc = new NFC(PIN_SDA, PIN_SCL);
Serial.println("NFC connected"); Log.trace(F("NFC connected"));
display->writeInfo("Start WIFI ..."); display->writeInfo("Start WIFI ...");
setup_wifi(); setup_wifi();
@ -147,10 +149,10 @@ void loop()
{ {
if (nfc->checkforCard()) if (nfc->checkforCard())
{ {
Serial.println("Card detected"); Log.trace(F("Card detected"));
if (nfc->connecttoCard()) if (nfc->connecttoCard())
{ {
Serial.println("Card connected"); Log.trace(F("Card connected"));
lastotatime = millis(); lastotatime = millis();
display->createReaderInfo("Run OTA"); display->createReaderInfo("Run OTA");