#include "WS_SD.h" bool SDCard_Flag = 0; bool SDCard_Finish = 0; uint16_t SDCard_Size = 0; uint16_t Flash_Size = 0; void SD_Init() { // SD MMC if(!SD_MMC.setPins(SD_CLK_PIN, SD_CMD_PIN, SD_D0_PIN,-1,-1,-1)){ printf("SD MMC: Pin change failed!\r\n"); return; } if (SD_MMC.begin("/sdcard", true, true)) { // "/sdcard", true, true or "/sdcard", true, false printf("SD card initialization successful!\r\n"); } else { printf("SD card initialization failed!\r\n"); } uint8_t cardType = SD_MMC.cardType(); if(cardType == CARD_NONE){ printf("No SD card attached\r\n"); return; } else{ printf("SD Card Type: "); if(cardType == CARD_MMC){ printf("MMC\r\n"); } else if(cardType == CARD_SD){ printf("SDSC\r\n"); } else if(cardType == CARD_SDHC){ printf("SDHC\r\n"); } else { printf("UNKNOWN\r\n"); } uint64_t totalBytes = SD_MMC.totalBytes(); uint64_t usedBytes = SD_MMC.usedBytes(); SDCard_Size = totalBytes/(1024*1024); printf("Total space: %llu\n", totalBytes); printf("Used space: %llu\n", usedBytes); printf("Free space: %llu\n", totalBytes - usedBytes); } } bool File_Search(const char* directory, const char* fileName) { File Path = SD_MMC.open(directory); if (!Path) { printf("Path: <%s> does not exist\r\n",directory); return false; } File file = Path.openNextFile(); while (file) { if (strcmp(file.name(), fileName) == 0) { if (strcmp(directory, "/") == 0) printf("File '%s%s' found in root directory.\r\n",directory,fileName); else printf("File '%s/%s' found in root directory.\r\n",directory,fileName); Path.close(); return true; } file = Path.openNextFile(); } if (strcmp(directory, "/") == 0) printf("File '%s%s' not found in root directory.\r\n",directory,fileName); else printf("File '%s/%s' not found in root directory.\r\n",directory,fileName); Path.close(); return false; } uint16_t Folder_retrieval(const char* directory, const char* fileExtension, char File_Name[][100],uint16_t maxFiles) { File Path = SD_MMC.open(directory); if (!Path) { printf("Path: <%s> does not exist\r\n",directory); return false; } uint16_t fileCount = 0; char filePath[100]; File file = Path.openNextFile(); while (file && fileCount < maxFiles) { if (!file.isDirectory() && strstr(file.name(), fileExtension)) { strncpy(File_Name[fileCount], file.name(), sizeof(File_Name[fileCount])); if (strcmp(directory, "/") == 0) { snprintf(filePath, 100, "%s%s", directory, file.name()); } else { snprintf(filePath, 100, "%s/%s", directory, file.name()); } printf("File found: %s\r\n", filePath); fileCount++; } file = Path.openNextFile(); } Path.close(); if (fileCount > 0) { printf("Retrieved %d mp3 files\r\n",fileCount); return fileCount; } else { printf("No files with extension '%s' found in directory: %s\r\n", fileExtension, directory); return 0; } } void Flash_test() { printf("/********** RAM Test**********/\r\n"); // Get Flash size uint32_t flashSize = ESP.getFlashChipSize(); Flash_Size = flashSize/1024/1024; printf("Flash size: %d MB \r\n", flashSize/1024/1024); printf("/******* RAM Test Over********/\r\n\r\n"); }