Der Tonuino wird neu gestartet.
// Audio/mp3
+#ifndef SD_MMC_1BIT_MODE
SPIClass spiSD(HSPI);
+#endif
TaskHandle_t mp3Play;
TaskHandle_t rfid;
#ifdef NEOPIXEL_ENABLE
@@ -576,8 +589,11 @@ void parseSDFileList(fs::FS &fs, const char * dirname, const char * parent, uint
esp_task_wdt_reset();
if (pathValid(fileNameBuf)) {
sendWebsocketData(0, 31);
- appendNodeToJSONFile(SD, DIRECTORY_INDEX_FILE, fileNameBuf, parent, "folder" );
-
+ #ifdef SD_MMC_1BIT_MODE
+ appendNodeToJSONFile(SD_MMC, DIRECTORY_INDEX_FILE, fileNameBuf, parent, "folder" );
+ #else
+ appendNodeToJSONFile(SD, DIRECTORY_INDEX_FILE, fileNameBuf, parent, "folder" );
+ #endif
// check for next subfolder
if(levels){
parseSDFileList(fs, fileNameBuf, root.name(), levels -1);
@@ -587,7 +603,7 @@ void parseSDFileList(fs::FS &fs, const char * dirname, const char * parent, uint
} else {
if (fileValid(fileNameBuf)) {
- appendNodeToJSONFile(SD, DIRECTORY_INDEX_FILE, fileNameBuf, parent, "file" );
+ appendNodeToJSONFile(fs, DIRECTORY_INDEX_FILE, fileNameBuf, parent, "file" );
}
}
vTaskDelay(portTICK_PERIOD_MS*50);
@@ -604,9 +620,15 @@ void parseSDFileList(fs::FS &fs, const char * dirname, const char * parent, uint
* is done.
*/
void createJSONFileList() {
- createFile(SD, DIRECTORY_INDEX_FILE, "[");
- parseSDFileList(SD, "/", NULL, FS_DEPTH);
- appendToFile(SD, DIRECTORY_INDEX_FILE, "]");
+ #ifdef SD_MMC_1BIT_MODE
+ createFile(SD_MMC, DIRECTORY_INDEX_FILE, "[");
+ parseSDFileList(SD_MMC, "/", NULL, FS_DEPTH);
+ appendToFile(SD_MMC, DIRECTORY_INDEX_FILE, "]");
+ #else
+ createFile(SD, DIRECTORY_INDEX_FILE, "[");
+ parseSDFileList(SD, "/", NULL, FS_DEPTH);
+ appendToFile(SD, DIRECTORY_INDEX_FILE, "]");
+ #endif
isFirstJSONtNode = true;
sendWebsocketData(0,30);
}
@@ -1546,7 +1568,11 @@ void playAudio(void *parameter) {
#ifdef NEOPIXEL_ENABLE
showRewind = true;
#endif
- audio.connecttoSD(*(playProperties.playlist + playProperties.currentTrackNumber));
+ #ifdef SD_MMC_1BIT_MODE
+ audio.connecttoFS(SD_MMC, *(playProperties.playlist + playProperties.currentTrackNumber));
+ #else
+ audio.connecttoSD(*(playProperties.playlist + playProperties.currentTrackNumber));
+ #endif
loggerNl((char *) FPSTR(trackStart), LOGLEVEL_INFO);
trackCommand = 0;
continue;
@@ -1669,13 +1695,21 @@ void playAudio(void *parameter) {
playProperties.playlistFinished = false;
} else {
// Files from SD
- if (!SD.exists(*(playProperties.playlist + playProperties.currentTrackNumber))) { // Check first if file/folder exists
+ #ifdef SD_MMC_1BIT_MODE
+ if (!SD_MMC.exists(*(playProperties.playlist + playProperties.currentTrackNumber))) { // Check first if file/folder exists
+ #else
+ if (!SD.exists(*(playProperties.playlist + playProperties.currentTrackNumber))) { // Check first if file/folder exists
+ #endif
snprintf(logBuf, serialLoglength, "Datei/Ordner '%s' existiert nicht", *(playProperties.playlist + playProperties.currentTrackNumber));
loggerNl(logBuf, LOGLEVEL_ERROR);
playProperties.trackFinished = true;
continue;
} else {
- audio.connecttoSD(*(playProperties.playlist + playProperties.currentTrackNumber));
+ #ifdef SD_MMC_1BIT_MODE
+ audio.connecttoFS(SD_MMC, *(playProperties.playlist + playProperties.currentTrackNumber));
+ #else
+ audio.connecttoSD(*(playProperties.playlist + playProperties.currentTrackNumber));
+ #endif
#ifdef NEOPIXEL_ENABLE
showPlaylistProgress = true;
#endif
@@ -1721,6 +1755,7 @@ void playAudio(void *parameter) {
}
+#ifdef RFID_READER_TYPE_MFRC522
// Instructs RFID-scanner to scan for new RFID-tags
void rfidScanner(void *parameter) {
static MFRC522 mfrc522(RFID_CS, RST_PIN);
@@ -1783,7 +1818,122 @@ void rfidScanner(void *parameter) {
}
vTaskDelete(NULL);
}
+#endif
+
+
+
+#ifdef RFID_READER_TYPE_PN5180
+// Instructs RFID-scanner to scan for new RFID-tags using PN5180
+void rfidScanner(void *parameter) {
+ static PN5180ISO14443 nfc14443(RFID_CS, RFID_BUSY, RFID_RST);
+ static PN5180ISO15693 nfc15693(RFID_CS, RFID_BUSY, RFID_RST);
+ nfc14443.begin();
+ nfc14443.reset();
+ // show PN5180 reader version
+ uint8_t firmwareVersion[2];
+ nfc14443.readEEprom(FIRMWARE_VERSION, firmwareVersion, sizeof(firmwareVersion));
+ Serial.print(F("Firmware version="));
+ Serial.print(firmwareVersion[1]);
+ Serial.print(".");
+ Serial.println(firmwareVersion[0]);
+
+ // activate RF field
+ delay(4);
+ loggerNl((char *) FPSTR(rfidScannerReady), LOGLEVEL_DEBUG);
+ byte cardId[cardIdSize], lastCardId[cardIdSize];
+ char *cardIdString;
+ uint8_t lastUID[10];
+
+ for (;;) {
+ esp_task_wdt_reset();
+ vTaskDelay(10);
+ if ((millis() - lastRfidCheckTimestamp) >= RFID_SCAN_INTERVAL) {
+ // Reset the loop if no new card is present on the sensor/reader. This saves the entire process when idle.
+ lastRfidCheckTimestamp = millis();
+ // 1. check for an ISO-14443 card
+ nfc14443.reset();
+ nfc14443.setupRF();
+ uint8_t uid[10];
+ if (nfc14443.isCardPresent() && nfc14443.readCardSerial(uid)) {
+ cardIdString = (char *) malloc(cardIdSize*3 +1);
+ if (cardIdString == NULL) {
+ logger((char *) FPSTR(unableToAllocateMem), LOGLEVEL_ERROR);
+ #ifdef NEOPIXEL_ENABLE
+ showLedError = true;
+ #endif
+ continue;
+ }
+ for (uint8_t i=0; i