Browse Source

Abstracting SD and SD_MMC by FS to simplify usage

master
grch101 5 years ago
committed by Torsten Stauder
parent
commit
d95e55eb60
  1. 78
      src/main.cpp

78
src/main.cpp

@ -256,6 +256,9 @@ AsyncEventSource events("/events");
// Audio/mp3 // Audio/mp3
#ifndef SD_MMC_1BIT_MODE #ifndef SD_MMC_1BIT_MODE
SPIClass spiSD(HSPI); SPIClass spiSD(HSPI);
fs::FS FSystem = (fs::FS)SD;
#else
fs::FS FSystem = (fs::FS)SD_MMC;
#endif #endif
TaskHandle_t mp3Play; TaskHandle_t mp3Play;
TaskHandle_t rfid; TaskHandle_t rfid;
@ -562,11 +565,7 @@ void parseSDFileList(fs::FS &fs, const char * dirname, const char * parent, uint
esp_task_wdt_reset(); esp_task_wdt_reset();
if (pathValid(fileNameBuf)) { if (pathValid(fileNameBuf)) {
sendWebsocketData(0, 31); sendWebsocketData(0, 31);
#ifdef SD_MMC_1BIT_MODE
appendNodeToJSONFile(SD_MMC, DIRECTORY_INDEX_FILE, fileNameBuf, parent, "folder" );
#else
appendNodeToJSONFile(SD, DIRECTORY_INDEX_FILE, fileNameBuf, parent, "folder" );
#endif
appendNodeToJSONFile(FSystem, DIRECTORY_INDEX_FILE, fileNameBuf, parent, "folder" );
// check for next subfolder // check for next subfolder
if(levels){ if(levels){
parseSDFileList(fs, fileNameBuf, root.name(), levels -1); parseSDFileList(fs, fileNameBuf, root.name(), levels -1);
@ -590,15 +589,9 @@ void parseSDFileList(fs::FS &fs, const char * dirname, const char * parent, uint
// Public function for creating file-index json on SD-card. It notifies the user-client // Public function for creating file-index json on SD-card. It notifies the user-client
// via websockets when the indexing is done. // via websockets when the indexing is done.
void createJSONFileList() { void createJSONFileList() {
#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
createFile(FSystem, DIRECTORY_INDEX_FILE, "[");
parseSDFileList(FSystem, "/", NULL, FS_DEPTH);
appendToFile(FSystem, DIRECTORY_INDEX_FILE, "]");
isFirstJSONtNode = true; isFirstJSONtNode = true;
sendWebsocketData(0,30); sendWebsocketData(0,30);
} }
@ -1542,11 +1535,7 @@ void playAudio(void *parameter) {
#ifdef NEOPIXEL_ENABLE #ifdef NEOPIXEL_ENABLE
showRewind = true; showRewind = true;
#endif #endif
#ifdef SD_MMC_1BIT_MODE
audio.connecttoFS(SD_MMC, *(playProperties.playlist + playProperties.currentTrackNumber));
#else
audio.connecttoSD(*(playProperties.playlist + playProperties.currentTrackNumber));
#endif
audio.connecttoFS(FSystem, *(playProperties.playlist + playProperties.currentTrackNumber));
loggerNl((char *) FPSTR(trackStart), LOGLEVEL_INFO); loggerNl((char *) FPSTR(trackStart), LOGLEVEL_INFO);
trackCommand = 0; trackCommand = 0;
continue; continue;
@ -1669,21 +1658,13 @@ void playAudio(void *parameter) {
playProperties.playlistFinished = false; playProperties.playlistFinished = false;
} else { } else {
// Files from SD // Files from SD
#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
if (!FSystem.exists(*(playProperties.playlist + playProperties.currentTrackNumber))) { // Check first if file/folder exists
snprintf(logBuf, serialLoglength, "Datei/Ordner '%s' existiert nicht", *(playProperties.playlist + playProperties.currentTrackNumber)); snprintf(logBuf, serialLoglength, "Datei/Ordner '%s' existiert nicht", *(playProperties.playlist + playProperties.currentTrackNumber));
loggerNl(logBuf, LOGLEVEL_ERROR); loggerNl(logBuf, LOGLEVEL_ERROR);
playProperties.trackFinished = true; playProperties.trackFinished = true;
continue; continue;
} else { } else {
#ifdef SD_MMC_1BIT_MODE
audio.connecttoFS(SD_MMC, *(playProperties.playlist + playProperties.currentTrackNumber));
#else
audio.connecttoSD(*(playProperties.playlist + playProperties.currentTrackNumber));
#endif
audio.connecttoFS(FSystem, *(playProperties.playlist + playProperties.currentTrackNumber));
#ifdef NEOPIXEL_ENABLE #ifdef NEOPIXEL_ENABLE
showPlaylistProgress = true; showPlaylistProgress = true;
#endif #endif
@ -2403,11 +2384,7 @@ void trackQueueDispatcher(const char *_itemToPlay, const uint32_t _lastPlayPos,
publishMqtt((char *) FPSTR(topicPlaymodeState), playProperties.playMode, false); publishMqtt((char *) FPSTR(topicPlaymodeState), playProperties.playMode, false);
#endif #endif
if (_playMode != WEBSTREAM) { if (_playMode != WEBSTREAM) {
#ifdef SD_MMC_1BIT_MODE
musicFiles = returnPlaylistFromSD(SD_MMC.open(filename));
#else
musicFiles = returnPlaylistFromSD(SD.open(filename));
#endif
musicFiles = returnPlaylistFromSD(FSystem.open(filename));
} else { } else {
musicFiles = returnPlaylistFromWebstream(filename); musicFiles = returnPlaylistFromWebstream(filename);
} }
@ -3133,11 +3110,7 @@ wl_status_t wifiManager(void) {
snprintf(logBuf, serialLoglength, "Aktuelle IP: %d.%d.%d.%d", myIP[0], myIP[1], myIP[2], myIP[3]); snprintf(logBuf, serialLoglength, "Aktuelle IP: %d.%d.%d.%d", myIP[0], myIP[1], myIP[2], myIP[3]);
loggerNl(logBuf, LOGLEVEL_NOTICE); loggerNl(logBuf, LOGLEVEL_NOTICE);
#ifdef FTP_ENABLE #ifdef FTP_ENABLE
#ifdef SD_MMC_1BIT_MODE
ftpSrv.begin(SD_MMC, ftpUser, ftpPassword);
#else
ftpSrv.begin(ftpUser, ftpPassword);
#endif
ftpSrv.begin(FSystem, ftpUser, ftpPassword);
#endif #endif
} else { // Starts AP if WiFi-connect wasn't successful } else { // Starts AP if WiFi-connect wasn't successful
accessPointStart((char *) FPSTR(accessPointNetworkSSID), apIP, apNetmask); accessPointStart((char *) FPSTR(accessPointNetworkSSID), apIP, apNetmask);
@ -3522,11 +3495,7 @@ void webserverStart(void) {
}); });
wServer.on("/files", HTTP_GET, [](AsyncWebServerRequest *request) { wServer.on("/files", HTTP_GET, [](AsyncWebServerRequest *request) {
#ifdef SD_MMC_1BIT_MODE
request->send(SD_MMC, DIRECTORY_INDEX_FILE, "application/json");
#else
request->send(SD, DIRECTORY_INDEX_FILE, "application/json");
#endif
request->send(FSystem, DIRECTORY_INDEX_FILE, "application/json");
}); });
wServer.onNotFound(notFound); wServer.onNotFound(notFound);
@ -3568,11 +3537,7 @@ void webserverStart(void) {
return NULL; return NULL;
} }
namespace_ID = FindNsID (nvs, _namespace) ; // Find ID of our namespace in NVS namespace_ID = FindNsID (nvs, _namespace) ; // Find ID of our namespace in NVS
#ifdef SD_MMC_1BIT_MODE
File backupFile = SD_MMC.open(_destFile, FILE_WRITE);
#else
File backupFile = SD.open(_destFile, FILE_WRITE);
#endif
File backupFile = FSystem.open(_destFile, FILE_WRITE);
if (!backupFile) { if (!backupFile) {
return false; return false;
} }
@ -4051,17 +4016,10 @@ void setup() {
/** /**
* Create empty Index json file when no file exists. * Create empty Index json file when no file exists.
*/ */
#ifdef SD_MMC_1BIT_MODE
if(!fileExists(SD_MMC,DIRECTORY_INDEX_FILE)){
createFile(SD_MMC,DIRECTORY_INDEX_FILE,"[]");
ESP.restart();
}
#else
if(!fileExists(SD,DIRECTORY_INDEX_FILE)){
createFile(SD,DIRECTORY_INDEX_FILE,"[]");
ESP.restart();
}
#endif
if(!fileExists(FSystem,DIRECTORY_INDEX_FILE)){
createFile(FSystem,DIRECTORY_INDEX_FILE,"[]");
ESP.restart();
}
bootComplete = true; bootComplete = true;
Serial.print(F("Free heap: ")); Serial.print(F("Free heap: "));

Loading…
Cancel
Save