mirror of
https://git.mirrors.martin98.com/https://github.com/luc-github/ESP3D.git
synced 2025-08-11 13:49:01 +08:00
Sd refactoring (#1086)
This commit is contained in:
parent
5501e78bcb
commit
8a6334e9e3
@ -22,7 +22,7 @@
|
|||||||
#define _VERSION_ESP3D_H
|
#define _VERSION_ESP3D_H
|
||||||
|
|
||||||
// version and sources location
|
// version and sources location
|
||||||
#define FW_VERSION "3.0.0.4b1"
|
#define FW_VERSION "3.0.0.5b1"
|
||||||
#define REPOSITORY "https://github.com/luc-github/ESP3D/tree/3.0"
|
#define REPOSITORY "https://github.com/luc-github/ESP3D/tree/3.0"
|
||||||
|
|
||||||
#endif //_VERSION_ESP3D_H
|
#endif //_VERSION_ESP3D_H
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
#include "esp_sd.h"
|
#include "esp_sd.h"
|
||||||
|
/*
|
||||||
#define ESP_MAX_SD_OPENHANDLE 4
|
#define ESP_MAX_SD_OPENHANDLE 4
|
||||||
#if (SD_DEVICE == ESP_SD_NATIVE) && defined(ARDUINO_ARCH_ESP8266)
|
#if (SD_DEVICE == ESP_SD_NATIVE) && defined(ARDUINO_ARCH_ESP8266)
|
||||||
#define FS_NO_GLOBALS
|
#define FS_NO_GLOBALS
|
||||||
@ -62,7 +62,7 @@ File tSDFile_handle[ESP_MAX_SD_OPENHANDLE];
|
|||||||
#else
|
#else
|
||||||
#include <FS.h>
|
#include <FS.h>
|
||||||
File tSDFile_handle[ESP_MAX_SD_OPENHANDLE];
|
File tSDFile_handle[ESP_MAX_SD_OPENHANDLE];
|
||||||
#endif
|
#endif*/
|
||||||
|
|
||||||
#if defined(ESP3DLIB_ENV)
|
#if defined(ESP3DLIB_ENV)
|
||||||
#include "../../include/Marlin/cardreader.h"
|
#include "../../include/Marlin/cardreader.h"
|
||||||
@ -138,6 +138,8 @@ bool ESP_SD::disableSharedSD() {
|
|||||||
bool ESP_SD::_started = false;
|
bool ESP_SD::_started = false;
|
||||||
uint8_t ESP_SD::_state = ESP_SDCARD_NOT_PRESENT;
|
uint8_t ESP_SD::_state = ESP_SDCARD_NOT_PRESENT;
|
||||||
uint8_t ESP_SD::_spi_speed_divider = 1;
|
uint8_t ESP_SD::_spi_speed_divider = 1;
|
||||||
|
|
||||||
|
|
||||||
bool ESP_SD::_sizechanged = true;
|
bool ESP_SD::_sizechanged = true;
|
||||||
uint8_t ESP_SD::setState(uint8_t flag) {
|
uint8_t ESP_SD::setState(uint8_t flag) {
|
||||||
_state = flag;
|
_state = flag;
|
||||||
|
@ -20,14 +20,9 @@
|
|||||||
|
|
||||||
#ifndef _ESP_SD_H
|
#ifndef _ESP_SD_H
|
||||||
#define _ESP_SD_H
|
#define _ESP_SD_H
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
#include "../../core/esp3d_message.h"
|
|
||||||
#include "../../include/esp3d_config.h"
|
#include "../../include/esp3d_config.h"
|
||||||
|
#include "sd/esp_sd_common.h"
|
||||||
#define ESP_SD_FS_HEADER "/SD"
|
|
||||||
|
|
||||||
#define ESP_MAX_SD_OPENHANDLE 4
|
|
||||||
|
|
||||||
class ESP_SDFile {
|
class ESP_SDFile {
|
||||||
public:
|
public:
|
||||||
|
85
esp3d/src/modules/filesystem/sd/esp_sd_common.h
Normal file
85
esp3d/src/modules/filesystem/sd/esp_sd_common.h
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
/*
|
||||||
|
esp_sd_common.h - ESP3D SD support class
|
||||||
|
|
||||||
|
Copyright (c) 2014 Luc Lebosse. All rights reserved.
|
||||||
|
|
||||||
|
This code is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This code is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with This code; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include "../../../include/esp3d_config.h"
|
||||||
|
|
||||||
|
#define ESP_SD_FS_HEADER "/SD"
|
||||||
|
|
||||||
|
#define ESP_MAX_SD_OPENHANDLE 4
|
||||||
|
|
||||||
|
|
||||||
|
#if (SD_DEVICE == ESP_SD_NATIVE) && defined(ARDUINO_ARCH_ESP8266)
|
||||||
|
#define FS_NO_GLOBALS
|
||||||
|
#define NO_GLOBAL_SD
|
||||||
|
#include <SD.h>
|
||||||
|
using ESP3D_File = fs::File;
|
||||||
|
using ESP3D_SD_Class = SDClass;
|
||||||
|
#endif // (SD_DEVICE == ESP_SD_NATIVE) && defined(ARDUINO_ARCH_ESP8266
|
||||||
|
|
||||||
|
#if ((SD_DEVICE == ESP_SDFAT) || (SD_DEVICE == ESP_SDFAT2)) && defined(ARDUINO_ARCH_ESP8266)
|
||||||
|
#define FS_NO_GLOBALS
|
||||||
|
#define NO_GLOBAL_SD
|
||||||
|
#define DISABLE_FS_H_WARNING 1
|
||||||
|
#include <SdFat.h>
|
||||||
|
#if SDFAT_FILE_TYPE == 1
|
||||||
|
using ESP3D_File = File32;
|
||||||
|
#elif SDFAT_FILE_TYPE == 2
|
||||||
|
using ESP3D_File = ExFile;
|
||||||
|
#elif SDFAT_FILE_TYPE == 3
|
||||||
|
using ESP3D_File = FsFile;
|
||||||
|
#else // SDFAT_FILE_TYPE
|
||||||
|
#error Invalid SDFAT_FILE_TYPE
|
||||||
|
#endif // SDFAT_FILE_TYPE
|
||||||
|
using ESP3D_SD_Class = SdFat;
|
||||||
|
#endif // ((SD_DEVICE == ESP_SDFAT) || (SD_DEVICE == ESP_SDFAT2)) && defined(ARDUINO_ARCH_ESP8266
|
||||||
|
|
||||||
|
#if ((SD_DEVICE == ESP_SDFAT) || (SD_DEVICE == ESP_SDFAT2)) && defined(ARDUINO_ARCH_ESP32)
|
||||||
|
#define DISABLE_FS_H_WARNING 1
|
||||||
|
#include <SdFat.h>
|
||||||
|
#if SDFAT_FILE_TYPE == 1
|
||||||
|
using ESP3D_File = File32;
|
||||||
|
#elif SDFAT_FILE_TYPE == 2
|
||||||
|
using ESP3D_File = ExFile;
|
||||||
|
#elif SDFAT_FILE_TYPE == 3
|
||||||
|
using ESP3D_File = FsFile;
|
||||||
|
#else // SDFAT_FILE_TYPE
|
||||||
|
#error Invalid SDFAT_FILE_TYPE
|
||||||
|
#endif // SDFAT_FILE_TYPE
|
||||||
|
using ESP3D_SD_Class = SdFat;
|
||||||
|
#endif // ((SD_DEVICE == ESP_SDFAT) || (SD_DEVICE == ESP_SDFAT2)) && defined(ARDUINO_ARCH_ESP32
|
||||||
|
|
||||||
|
#if (SD_DEVICE == ESP_SD_NATIVE) && defined(ARDUINO_ARCH_ESP32)
|
||||||
|
#include <FS.h>
|
||||||
|
#include <SD.h>
|
||||||
|
using ESP3D_File = fs::File;
|
||||||
|
using ESP3D_SD_Class = fs::SDFS;
|
||||||
|
#endif // (SD_DEVICE == ESP_SD_NATIVE) && defined(ARDUINO_ARCH_ESP32
|
||||||
|
|
||||||
|
#if (SD_DEVICE == ESP_SDIO) && defined(ARDUINO_ARCH_ESP32)
|
||||||
|
#include <FS.h>
|
||||||
|
#include <SD_MMC.h>
|
||||||
|
using ESP3D_File = fs::File;
|
||||||
|
using ESP3D_SD_Class = fs::SDMMCFS;
|
||||||
|
#endif // (SD_DEVICE == ESP_SDIO) && defined(ARDUINO_ARCH_ESP32
|
||||||
|
|
||||||
|
|
||||||
|
extern ESP3D_SD_Class ESP3D_SD_Card;
|
||||||
|
extern ESP3D_File tSDFile_handle[ESP_MAX_SD_OPENHANDLE];
|
@ -24,14 +24,13 @@ sd_native_esp32.cpp - ESP3D sd support class
|
|||||||
|
|
||||||
#include "../../../core/esp3d_settings.h"
|
#include "../../../core/esp3d_settings.h"
|
||||||
#include "../esp_sd.h"
|
#include "../esp_sd.h"
|
||||||
#include "FS.h"
|
|
||||||
#include "SD.h"
|
|
||||||
|
|
||||||
// TBC: base frequency
|
// TBC: base frequency
|
||||||
// or use (1000000 * ESP.getCpuFreqMHz())
|
// or use (1000000 * ESP.getCpuFreqMHz())
|
||||||
#define ESP_SPI_FREQ 4000000
|
#define ESP_SPI_FREQ 4000000
|
||||||
|
|
||||||
extern File tSDFile_handle[ESP_MAX_SD_OPENHANDLE];
|
ESP3D_SD_Class ESP3D_SD_Card = SD;
|
||||||
|
ESP3D_File tSDFile_handle[ESP_MAX_SD_OPENHANDLE];
|
||||||
|
|
||||||
uint8_t ESP_SD::getState(bool refresh) {
|
uint8_t ESP_SD::getState(bool refresh) {
|
||||||
#if defined(ESP_SD_DETECT_PIN) && ESP_SD_DETECT_PIN != -1
|
#if defined(ESP_SD_DETECT_PIN) && ESP_SD_DETECT_PIN != -1
|
||||||
@ -53,7 +52,7 @@ uint8_t ESP_SD::getState(bool refresh) {
|
|||||||
}
|
}
|
||||||
// SD is idle or not detected, let see if still the case
|
// SD is idle or not detected, let see if still the case
|
||||||
|
|
||||||
SD.end();
|
ESP3D_SD_Card.end();
|
||||||
_state = ESP_SDCARD_NOT_PRESENT;
|
_state = ESP_SDCARD_NOT_PRESENT;
|
||||||
// using default value for speed ? should be parameter
|
// using default value for speed ? should be parameter
|
||||||
// refresh content if card was removed
|
// refresh content if card was removed
|
||||||
@ -62,9 +61,9 @@ uint8_t ESP_SD::getState(bool refresh) {
|
|||||||
ESP_SD_MISO_PIN != -1 ? ESP_SD_MISO_PIN : MISO,
|
ESP_SD_MISO_PIN != -1 ? ESP_SD_MISO_PIN : MISO,
|
||||||
ESP_SD_MOSI_PIN != -1 ? ESP_SD_MOSI_PIN : MOSI,
|
ESP_SD_MOSI_PIN != -1 ? ESP_SD_MOSI_PIN : MOSI,
|
||||||
ESP_SD_SCK_PIN != -1 ? ESP_SD_SCK_PIN : SCK);
|
ESP_SD_SCK_PIN != -1 ? ESP_SD_SCK_PIN : SCK);
|
||||||
if (SD.begin((ESP_SD_CS_PIN == -1) ? SS : ESP_SD_CS_PIN, SPI,
|
if (ESP3D_SD_Card.begin((ESP_SD_CS_PIN == -1) ? SS : ESP_SD_CS_PIN, SPI,
|
||||||
ESP_SPI_FREQ / _spi_speed_divider)) {
|
ESP_SPI_FREQ / _spi_speed_divider)) {
|
||||||
if (SD.cardSize() > 0) {
|
if (ESP3D_SD_Card.cardSize() > 0) {
|
||||||
_state = ESP_SDCARD_IDLE;
|
_state = ESP_SDCARD_IDLE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -114,7 +113,7 @@ bool ESP_SD::begin() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ESP_SD::end() {
|
void ESP_SD::end() {
|
||||||
SD.end();
|
ESP3D_SD_Card.end();
|
||||||
_state = ESP_SDCARD_NOT_PRESENT;
|
_state = ESP_SDCARD_NOT_PRESENT;
|
||||||
_started = false;
|
_started = false;
|
||||||
}
|
}
|
||||||
@ -129,7 +128,7 @@ void ESP_SD::refreshStats(bool force) {
|
|||||||
uint64_t ESP_SD::totalBytes(bool refresh) {
|
uint64_t ESP_SD::totalBytes(bool refresh) {
|
||||||
static uint64_t _totalBytes = 0;
|
static uint64_t _totalBytes = 0;
|
||||||
if (refresh || _totalBytes == 0) {
|
if (refresh || _totalBytes == 0) {
|
||||||
_totalBytes = SD.totalBytes();
|
_totalBytes = ESP3D_SD_Card.totalBytes();
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
return _totalBytes;
|
return _totalBytes;
|
||||||
@ -138,7 +137,7 @@ uint64_t ESP_SD::totalBytes(bool refresh) {
|
|||||||
uint64_t ESP_SD::usedBytes(bool refresh) {
|
uint64_t ESP_SD::usedBytes(bool refresh) {
|
||||||
static uint64_t _usedBytes = 0;
|
static uint64_t _usedBytes = 0;
|
||||||
if (refresh || _usedBytes == 0) {
|
if (refresh || _usedBytes == 0) {
|
||||||
_usedBytes = SD.usedBytes();
|
_usedBytes = ESP3D_SD_Card.usedBytes();
|
||||||
}
|
}
|
||||||
return _usedBytes;
|
return _usedBytes;
|
||||||
}
|
}
|
||||||
@ -151,7 +150,7 @@ uint ESP_SD::maxPathLength() { return 255; }
|
|||||||
|
|
||||||
bool ESP_SD::rename(const char *oldpath, const char *newpath) {
|
bool ESP_SD::rename(const char *oldpath, const char *newpath) {
|
||||||
esp3d_log("rename %s to %s", oldpath, newpath);
|
esp3d_log("rename %s to %s", oldpath, newpath);
|
||||||
return SD.rename(oldpath, newpath);
|
return ESP3D_SD_Card.rename(oldpath, newpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ESP_SD::format() {
|
bool ESP_SD::format() {
|
||||||
@ -180,7 +179,7 @@ ESP_SDFile ESP_SD::open(const char *path, uint8_t mode) {
|
|||||||
return ESP_SDFile();
|
return ESP_SDFile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
File tmp = SD.open(path, (mode == ESP_FILE_READ) ? FILE_READ
|
ESP3D_File tmp = ESP3D_SD_Card.open(path, (mode == ESP_FILE_READ) ? FILE_READ
|
||||||
: (mode == ESP_FILE_WRITE) ? FILE_WRITE
|
: (mode == ESP_FILE_WRITE) ? FILE_WRITE
|
||||||
: FILE_APPEND);
|
: FILE_APPEND);
|
||||||
ESP_SDFile esptmp(&tmp, tmp.isDirectory(),
|
ESP_SDFile esptmp(&tmp, tmp.isDirectory(),
|
||||||
@ -198,23 +197,23 @@ bool ESP_SD::exists(const char *path) {
|
|||||||
if (p.endsWith("/")) {
|
if (p.endsWith("/")) {
|
||||||
p.remove(p.length() - 1, 1);
|
p.remove(p.length() - 1, 1);
|
||||||
}
|
}
|
||||||
res = SD.exists(p);
|
res = ESP3D_SD_Card.exists(p);
|
||||||
if (!res) {
|
if (!res) {
|
||||||
// check if it is a directory
|
// check if it is a directory
|
||||||
p += '/';
|
p += '/';
|
||||||
res = SD.exists(p);
|
res = ESP3D_SD_Card.exists(p);
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ESP_SD::remove(const char *path) { return SD.remove(path); }
|
bool ESP_SD::remove(const char *path) { return ESP3D_SD_Card.remove(path); }
|
||||||
|
|
||||||
bool ESP_SD::mkdir(const char *path) {
|
bool ESP_SD::mkdir(const char *path) {
|
||||||
String p = path;
|
String p = path;
|
||||||
if (p.endsWith("/")) {
|
if (p.endsWith("/")) {
|
||||||
p.remove(p.length() - 1, 1);
|
p.remove(p.length() - 1, 1);
|
||||||
}
|
}
|
||||||
return SD.mkdir(p.c_str());
|
return ESP3D_SD_Card.mkdir(p.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ESP_SD::rmdir(const char *path) {
|
bool ESP_SD::rmdir(const char *path) {
|
||||||
@ -234,8 +233,8 @@ bool ESP_SD::rmdir(const char *path) {
|
|||||||
std::stack<String> pathlist;
|
std::stack<String> pathlist;
|
||||||
pathlist.push(p);
|
pathlist.push(p);
|
||||||
while (pathlist.size() > 0 && res) {
|
while (pathlist.size() > 0 && res) {
|
||||||
File dir = SD.open(pathlist.top().c_str());
|
ESP3D_File dir = ESP3D_SD_Card.open(pathlist.top().c_str());
|
||||||
File f = dir.openNextFile();
|
ESP3D_File f = dir.openNextFile();
|
||||||
bool candelete = true;
|
bool candelete = true;
|
||||||
while (f && res) {
|
while (f && res) {
|
||||||
if (f.isDirectory()) {
|
if (f.isDirectory()) {
|
||||||
@ -244,12 +243,12 @@ bool ESP_SD::rmdir(const char *path) {
|
|||||||
newdir += f.name();
|
newdir += f.name();
|
||||||
pathlist.push(newdir);
|
pathlist.push(newdir);
|
||||||
f.close();
|
f.close();
|
||||||
f = File();
|
f =ESP3D_File();
|
||||||
} else {
|
} else {
|
||||||
String filepath = pathlist.top() + '/';
|
String filepath = pathlist.top() + '/';
|
||||||
filepath += f.name();
|
filepath += f.name();
|
||||||
f.close();
|
f.close();
|
||||||
if (!SD.remove(filepath.c_str())) {
|
if (!ESP3D_SD_Card.remove(filepath.c_str())) {
|
||||||
res = false;
|
res = false;
|
||||||
}
|
}
|
||||||
f = dir.openNextFile();
|
f = dir.openNextFile();
|
||||||
@ -257,7 +256,7 @@ bool ESP_SD::rmdir(const char *path) {
|
|||||||
}
|
}
|
||||||
if (candelete) {
|
if (candelete) {
|
||||||
if (pathlist.top() != "/") {
|
if (pathlist.top() != "/") {
|
||||||
res = SD.rmdir(pathlist.top().c_str());
|
res = ESP3D_SD_Card.rmdir(pathlist.top().c_str());
|
||||||
}
|
}
|
||||||
pathlist.pop();
|
pathlist.pop();
|
||||||
}
|
}
|
||||||
@ -271,7 +270,7 @@ bool ESP_SD::rmdir(const char *path) {
|
|||||||
void ESP_SD::closeAll() {
|
void ESP_SD::closeAll() {
|
||||||
for (uint8_t i = 0; i < ESP_MAX_SD_OPENHANDLE; i++) {
|
for (uint8_t i = 0; i < ESP_MAX_SD_OPENHANDLE; i++) {
|
||||||
tSDFile_handle[i].close();
|
tSDFile_handle[i].close();
|
||||||
tSDFile_handle[i] = File();
|
tSDFile_handle[i] =ESP3D_File();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -291,7 +290,7 @@ ESP_SDFile::ESP_SDFile(void *handle, bool isdir, bool iswritemode,
|
|||||||
bool set = false;
|
bool set = false;
|
||||||
for (uint8_t i = 0; (i < ESP_MAX_SD_OPENHANDLE) && !set; i++) {
|
for (uint8_t i = 0; (i < ESP_MAX_SD_OPENHANDLE) && !set; i++) {
|
||||||
if (!tSDFile_handle[i]) {
|
if (!tSDFile_handle[i]) {
|
||||||
tSDFile_handle[i] = *((File *)handle);
|
tSDFile_handle[i] = *((ESP3D_File *)handle);
|
||||||
// filename
|
// filename
|
||||||
_name = tSDFile_handle[i].name();
|
_name = tSDFile_handle[i].name();
|
||||||
_filename = path;
|
_filename = path;
|
||||||
@ -331,14 +330,14 @@ void ESP_SDFile::close() {
|
|||||||
// reopen if mode = write
|
// reopen if mode = write
|
||||||
// udate size + date
|
// udate size + date
|
||||||
if (_iswritemode && !_isdir) {
|
if (_iswritemode && !_isdir) {
|
||||||
File ftmp = SD.open(_filename.c_str());
|
ESP3D_File ftmp = ESP3D_SD_Card.open(_filename.c_str());
|
||||||
if (ftmp) {
|
if (ftmp) {
|
||||||
_size = ftmp.size();
|
_size = ftmp.size();
|
||||||
_lastwrite = ftmp.getLastWrite();
|
_lastwrite = ftmp.getLastWrite();
|
||||||
ftmp.close();
|
ftmp.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tSDFile_handle[_index] = File();
|
tSDFile_handle[_index] =ESP3D_File();
|
||||||
// esp3d_log("Closing File at index %d",_index);
|
// esp3d_log("Closing File at index %d",_index);
|
||||||
_index = -1;
|
_index = -1;
|
||||||
}
|
}
|
||||||
@ -349,7 +348,7 @@ ESP_SDFile ESP_SDFile::openNextFile() {
|
|||||||
esp3d_log("openNextFile failed");
|
esp3d_log("openNextFile failed");
|
||||||
return ESP_SDFile();
|
return ESP_SDFile();
|
||||||
}
|
}
|
||||||
File tmp = tSDFile_handle[_index].openNextFile();
|
ESP3D_File tmp = tSDFile_handle[_index].openNextFile();
|
||||||
if (tmp) {
|
if (tmp) {
|
||||||
esp3d_log("tmp name :%s %s %s", tmp.name(),
|
esp3d_log("tmp name :%s %s %s", tmp.name(),
|
||||||
(tmp.isDirectory()) ? "isDir" : "isFile", _filename.c_str());
|
(tmp.isDirectory()) ? "isDir" : "isFile", _filename.c_str());
|
||||||
|
@ -20,16 +20,13 @@ sd_native_esp8266.cpp - ESP3D sd support class
|
|||||||
#include "../../../include/esp3d_config.h"
|
#include "../../../include/esp3d_config.h"
|
||||||
#if defined(ARDUINO_ARCH_ESP8266) && defined(SD_DEVICE)
|
#if defined(ARDUINO_ARCH_ESP8266) && defined(SD_DEVICE)
|
||||||
#if (SD_DEVICE == ESP_SD_NATIVE)
|
#if (SD_DEVICE == ESP_SD_NATIVE)
|
||||||
#define FS_NO_GLOBALS
|
|
||||||
#include <SD.h>
|
|
||||||
#include <SDFS.h>
|
|
||||||
|
|
||||||
#include <stack>
|
#include <stack>
|
||||||
|
|
||||||
#include "../../../core/esp3d_settings.h"
|
#include "../../../core/esp3d_settings.h"
|
||||||
#include "../esp_sd.h"
|
#include "../esp_sd.h"
|
||||||
|
|
||||||
extern File tSDFile_handle[ESP_MAX_SD_OPENHANDLE];
|
ESP3D_SD_Class ESP3D_SD_Card;
|
||||||
|
ESP3D_File tSDFile_handle[ESP_MAX_SD_OPENHANDLE];
|
||||||
|
|
||||||
void dateTime(uint16_t* date, uint16_t* dtime) {
|
void dateTime(uint16_t* date, uint16_t* dtime) {
|
||||||
struct tm tmstruct;
|
struct tm tmstruct;
|
||||||
@ -41,30 +38,10 @@ void dateTime(uint16_t* date, uint16_t* dtime) {
|
|||||||
*dtime = FAT_TIME(tmstruct.tm_hour, tmstruct.tm_min, tmstruct.tm_sec);
|
*dtime = FAT_TIME(tmstruct.tm_hour, tmstruct.tm_min, tmstruct.tm_sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
time_t getDateTimeFile(File& filehandle) {
|
time_t getDateTimeFile(ESP3D_File& filehandle) {
|
||||||
static time_t dt = 0;
|
static time_t dt = 0;
|
||||||
#ifdef SD_TIMESTAMP_FEATURE
|
#ifdef SD_TIMESTAMP_FEATURE
|
||||||
struct tm timefile;
|
dt = filehandle.getLastWrite();
|
||||||
dir_t d;
|
|
||||||
if (filehandle) {
|
|
||||||
if (filehandle.dirEntry(&d)) {
|
|
||||||
timefile.tm_year = FAT_YEAR(d.lastWriteDate) - 1900;
|
|
||||||
timefile.tm_mon = FAT_MONTH(d.lastWriteDate) - 1;
|
|
||||||
timefile.tm_mday = FAT_DAY(d.lastWriteDate);
|
|
||||||
timefile.tm_hour = FAT_HOUR(d.lastWriteTime);
|
|
||||||
timefile.tm_min = FAT_MINUTE(d.lastWriteTime);
|
|
||||||
timefile.tm_sec = FAT_SECOND(d.lastWriteTime);
|
|
||||||
timefile.tm_isdst = -1;
|
|
||||||
dt = mktime(&timefile);
|
|
||||||
if (dt == -1) {
|
|
||||||
esp3d_log_e("mktime failed");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
esp3d_log_e("stat file failed");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
esp3d_log("check file for stat failed");
|
|
||||||
}
|
|
||||||
#endif // SD_TIMESTAMP_FEATURE
|
#endif // SD_TIMESTAMP_FEATURE
|
||||||
return dt;
|
return dt;
|
||||||
}
|
}
|
||||||
@ -96,10 +73,10 @@ uint8_t ESP_SD::getState(bool refresh) {
|
|||||||
// SD is idle or not detected, let see if still the case
|
// SD is idle or not detected, let see if still the case
|
||||||
_state = ESP_SDCARD_NOT_PRESENT;
|
_state = ESP_SDCARD_NOT_PRESENT;
|
||||||
// refresh content if card was removed
|
// refresh content if card was removed
|
||||||
if (SD.begin((ESP_SD_CS_PIN == -1) ? SS : ESP_SD_CS_PIN,
|
if (ESP3D_SD_Card.begin((ESP_SD_CS_PIN == -1) ? SS : ESP_SD_CS_PIN,
|
||||||
SD_SCK_HZ(F_CPU / _spi_speed_divider))) {
|
SD_SCK_HZ(F_CPU / _spi_speed_divider))) {
|
||||||
esp3d_log("Init SD State ok");
|
esp3d_log("Init SD State ok");
|
||||||
if (SD.size64() > 0) {
|
if (ESP3D_SD_Card.size64() > 0) {
|
||||||
esp3d_log("SD available");
|
esp3d_log("SD available");
|
||||||
_state = ESP_SDCARD_IDLE;
|
_state = ESP_SDCARD_IDLE;
|
||||||
} else {
|
} else {
|
||||||
@ -152,7 +129,7 @@ void ESP_SD::refreshStats(bool force) {
|
|||||||
uint64_t ESP_SD::totalBytes(bool refresh) {
|
uint64_t ESP_SD::totalBytes(bool refresh) {
|
||||||
static uint64_t _totalBytes = 0;
|
static uint64_t _totalBytes = 0;
|
||||||
if (refresh || _totalBytes == 0) {
|
if (refresh || _totalBytes == 0) {
|
||||||
_totalBytes = SD.size64();
|
_totalBytes = ESP3D_SD_Card.size64();
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
return _totalBytes;
|
return _totalBytes;
|
||||||
@ -207,7 +184,7 @@ ESP_SDFile ESP_SD::open(const char* path, uint8_t mode) {
|
|||||||
return ESP_SDFile();
|
return ESP_SDFile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
File tmp = SD.open(path, (mode == ESP_FILE_READ) ? FILE_READ
|
ESP3D_File tmp = ESP3D_SD_Card.open(path, (mode == ESP_FILE_READ) ? FILE_READ
|
||||||
: (mode == ESP_FILE_WRITE) ? FILE_WRITE
|
: (mode == ESP_FILE_WRITE) ? FILE_WRITE
|
||||||
: FILE_WRITE);
|
: FILE_WRITE);
|
||||||
ESP_SDFile esptmp(&tmp, tmp.isDirectory(),
|
ESP_SDFile esptmp(&tmp, tmp.isDirectory(),
|
||||||
@ -222,7 +199,7 @@ bool ESP_SD::exists(const char* path) {
|
|||||||
return _started;
|
return _started;
|
||||||
}
|
}
|
||||||
esp3d_log("%s exists ?", path);
|
esp3d_log("%s exists ?", path);
|
||||||
res = SD.exists(path);
|
res = ESP3D_SD_Card.exists(path);
|
||||||
if (!res) {
|
if (!res) {
|
||||||
esp3d_log("Seems not - trying open it");
|
esp3d_log("Seems not - trying open it");
|
||||||
ESP_SDFile root = ESP_SD::open(path, ESP_FILE_READ);
|
ESP_SDFile root = ESP_SD::open(path, ESP_FILE_READ);
|
||||||
@ -236,10 +213,10 @@ bool ESP_SD::exists(const char* path) {
|
|||||||
|
|
||||||
bool ESP_SD::remove(const char* path) {
|
bool ESP_SD::remove(const char* path) {
|
||||||
_sizechanged = true;
|
_sizechanged = true;
|
||||||
return SD.remove(path);
|
return ESP3D_SD_Card.remove(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ESP_SD::mkdir(const char* path) { return SD.mkdir(path); }
|
bool ESP_SD::mkdir(const char* path) { return ESP3D_SD_Card.mkdir(path); }
|
||||||
|
|
||||||
bool ESP_SD::rmdir(const char* path) {
|
bool ESP_SD::rmdir(const char* path) {
|
||||||
String p = path;
|
String p = path;
|
||||||
@ -256,9 +233,9 @@ bool ESP_SD::rmdir(const char* path) {
|
|||||||
std::stack<String> pathlist;
|
std::stack<String> pathlist;
|
||||||
pathlist.push(p);
|
pathlist.push(p);
|
||||||
while (pathlist.size() > 0 && res) {
|
while (pathlist.size() > 0 && res) {
|
||||||
File dir = SD.open(pathlist.top().c_str());
|
ESP3D_File dir = ESP3D_SD_Card.open(pathlist.top().c_str());
|
||||||
dir.rewindDirectory();
|
dir.rewindDirectory();
|
||||||
File f = dir.openNextFile();
|
ESP3D_File f = dir.openNextFile();
|
||||||
bool candelete = true;
|
bool candelete = true;
|
||||||
while (f && res) {
|
while (f && res) {
|
||||||
if (f.isDirectory()) {
|
if (f.isDirectory()) {
|
||||||
@ -267,12 +244,12 @@ bool ESP_SD::rmdir(const char* path) {
|
|||||||
newdir += "/";
|
newdir += "/";
|
||||||
pathlist.push(newdir);
|
pathlist.push(newdir);
|
||||||
f.close();
|
f.close();
|
||||||
f = File();
|
f =ESP3D_File();
|
||||||
} else {
|
} else {
|
||||||
_sizechanged = true;
|
_sizechanged = true;
|
||||||
String filepath = pathlist.top() + f.name();
|
String filepath = pathlist.top() + f.name();
|
||||||
f.close();
|
f.close();
|
||||||
if (!SD.remove(filepath.c_str())) {
|
if (!ESP3D_SD_Card.remove(filepath.c_str())) {
|
||||||
res = false;
|
res = false;
|
||||||
}
|
}
|
||||||
f = dir.openNextFile();
|
f = dir.openNextFile();
|
||||||
@ -280,7 +257,7 @@ bool ESP_SD::rmdir(const char* path) {
|
|||||||
}
|
}
|
||||||
if (candelete) {
|
if (candelete) {
|
||||||
if (pathlist.top() != "/") {
|
if (pathlist.top() != "/") {
|
||||||
res = SD.rmdir(pathlist.top().c_str());
|
res = ESP3D_SD_Card.rmdir(pathlist.top().c_str());
|
||||||
}
|
}
|
||||||
pathlist.pop();
|
pathlist.pop();
|
||||||
}
|
}
|
||||||
@ -298,7 +275,7 @@ bool ESP_SDFile::seek(uint32_t pos, uint8_t mode) {
|
|||||||
void ESP_SD::closeAll() {
|
void ESP_SD::closeAll() {
|
||||||
for (uint8_t i = 0; i < ESP_MAX_SD_OPENHANDLE; i++) {
|
for (uint8_t i = 0; i < ESP_MAX_SD_OPENHANDLE; i++) {
|
||||||
tSDFile_handle[i].close();
|
tSDFile_handle[i].close();
|
||||||
tSDFile_handle[i] = File();
|
tSDFile_handle[i] =ESP3D_File();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -318,7 +295,7 @@ ESP_SDFile::ESP_SDFile(void* handle, bool isdir, bool iswritemode,
|
|||||||
bool set = false;
|
bool set = false;
|
||||||
for (uint8_t i = 0; (i < ESP_MAX_SD_OPENHANDLE) && !set; i++) {
|
for (uint8_t i = 0; (i < ESP_MAX_SD_OPENHANDLE) && !set; i++) {
|
||||||
if (!tSDFile_handle[i]) {
|
if (!tSDFile_handle[i]) {
|
||||||
tSDFile_handle[i] = *((File*)handle);
|
tSDFile_handle[i] = *((ESP3D_File*)handle);
|
||||||
// filename
|
// filename
|
||||||
_filename = path;
|
_filename = path;
|
||||||
// name
|
// name
|
||||||
@ -366,15 +343,15 @@ void ESP_SDFile::close() {
|
|||||||
// reopen if mode = write
|
// reopen if mode = write
|
||||||
// udate size + date
|
// udate size + date
|
||||||
if (_iswritemode && !_isdir) {
|
if (_iswritemode && !_isdir) {
|
||||||
File ftmp = SD.open(_filename.c_str());
|
ESP3D_File ftmp = ESP3D_SD_Card.open(_filename.c_str());
|
||||||
if (ftmp) {
|
if (ftmp) {
|
||||||
_size = ftmp.size();
|
_size = ftmp.size();
|
||||||
_lastwrite = getDateTimeFile(ftmp);
|
_lastwrite = getDateTimeFile(ftmp);
|
||||||
ftmp.close();
|
ftmp.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tSDFile_handle[_index] = File();
|
tSDFile_handle[_index] =ESP3D_File();
|
||||||
// esp3d_log("Closing File at index %d",_index);
|
// esp3d_log("ClosingESP3D_File at index %d",_index);
|
||||||
_index = -1;
|
_index = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -384,7 +361,7 @@ ESP_SDFile ESP_SDFile::openNextFile() {
|
|||||||
esp3d_log_e("openNextFile failed");
|
esp3d_log_e("openNextFile failed");
|
||||||
return ESP_SDFile();
|
return ESP_SDFile();
|
||||||
}
|
}
|
||||||
File tmp = tSDFile_handle[_index].openNextFile();
|
ESP3D_File tmp = tSDFile_handle[_index].openNextFile();
|
||||||
if (tmp) {
|
if (tmp) {
|
||||||
String name = tmp.name();
|
String name = tmp.name();
|
||||||
esp3d_log("tmp name :%s %s", name.c_str(),
|
esp3d_log("tmp name :%s %s", name.c_str(),
|
||||||
|
@ -21,24 +21,11 @@ sd_sdfat2_esp32.cpp - ESP3D sd support class
|
|||||||
#if defined(ARDUINO_ARCH_ESP32) && defined(SD_DEVICE)
|
#if defined(ARDUINO_ARCH_ESP32) && defined(SD_DEVICE)
|
||||||
#if (SD_DEVICE == ESP_SDFAT2)
|
#if (SD_DEVICE == ESP_SDFAT2)
|
||||||
|
|
||||||
#include <SdFat.h>
|
|
||||||
#include <sdios.h>
|
#include <sdios.h>
|
||||||
|
|
||||||
#include <stack>
|
#include <stack>
|
||||||
|
|
||||||
#include "../../../core/esp3d_settings.h"
|
#include "../../../core/esp3d_settings.h"
|
||||||
#include "../esp_sd.h"
|
#include "../esp_sd.h"
|
||||||
|
|
||||||
#if SDFAT_FILE_TYPE == 1
|
|
||||||
typedef File32 File;
|
|
||||||
#elif SDFAT_FILE_TYPE == 2
|
|
||||||
typedef ExFile File;
|
|
||||||
#elif SDFAT_FILE_TYPE == 3
|
|
||||||
typedef FsFile File;
|
|
||||||
#else // SDFAT_FILE_TYPE
|
|
||||||
#error Invalid SDFAT_FILE_TYPE
|
|
||||||
#endif // SDFAT_FILE_TYPE
|
|
||||||
|
|
||||||
// Try to select the best SD card configuration.
|
// Try to select the best SD card configuration.
|
||||||
#if HAS_SDIO_CLASS
|
#if HAS_SDIO_CLASS
|
||||||
#define SD_CONFIG SdioConfig(FIFO_SDIO)
|
#define SD_CONFIG SdioConfig(FIFO_SDIO)
|
||||||
@ -50,11 +37,11 @@ typedef FsFile File;
|
|||||||
SdSpiConfig((ESP_SD_CS_PIN == -1) ? SS : ESP_SD_CS_PIN, SHARED_SPI)
|
SdSpiConfig((ESP_SD_CS_PIN == -1) ? SS : ESP_SD_CS_PIN, SHARED_SPI)
|
||||||
#endif // HAS_SDIO_CLASS
|
#endif // HAS_SDIO_CLASS
|
||||||
|
|
||||||
extern File tSDFile_handle[ESP_MAX_SD_OPENHANDLE];
|
ESP3D_SD_Class ESP3D_SD_Card;
|
||||||
|
ESP3D_File tSDFile_handle[ESP_MAX_SD_OPENHANDLE];
|
||||||
|
|
||||||
// Max Freq Working
|
// Max Freq Working
|
||||||
#define FREQMZ 40
|
#define FREQMZ 40
|
||||||
SdFat SD;
|
|
||||||
#undef FILE_WRITE
|
#undef FILE_WRITE
|
||||||
#undef FILE_READ
|
#undef FILE_READ
|
||||||
#undef FILE_APPEND
|
#undef FILE_APPEND
|
||||||
@ -72,7 +59,7 @@ void dateTime(uint16_t* date, uint16_t* dtime) {
|
|||||||
*dtime = FAT_TIME(tmstruct.tm_hour, tmstruct.tm_min, tmstruct.tm_sec);
|
*dtime = FAT_TIME(tmstruct.tm_hour, tmstruct.tm_min, tmstruct.tm_sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
time_t getDateTimeFile(File& filehandle) {
|
time_t getDateTimeFile(ESP3D_File& filehandle) {
|
||||||
static time_t dt = 0;
|
static time_t dt = 0;
|
||||||
#ifdef SD_TIMESTAMP_FEATURE
|
#ifdef SD_TIMESTAMP_FEATURE
|
||||||
struct tm timefile;
|
struct tm timefile;
|
||||||
@ -127,7 +114,7 @@ uint8_t ESP_SD::getState(bool refresh) {
|
|||||||
ESP_SD_MOSI_PIN != -1 ? ESP_SD_MOSI_PIN : MOSI,
|
ESP_SD_MOSI_PIN != -1 ? ESP_SD_MOSI_PIN : MOSI,
|
||||||
ESP_SD_SCK_PIN != -1 ? ESP_SD_SCK_PIN : SCK);
|
ESP_SD_SCK_PIN != -1 ? ESP_SD_SCK_PIN : SCK);
|
||||||
// refresh content if card was removed
|
// refresh content if card was removed
|
||||||
if (SD.begin((ESP_SD_CS_PIN == -1) ? SS : ESP_SD_CS_PIN,
|
if (ESP3D_SD_Card.begin((ESP_SD_CS_PIN == -1) ? SS : ESP_SD_CS_PIN,
|
||||||
SD_SCK_MHZ(FREQMZ / _spi_speed_divider))) {
|
SD_SCK_MHZ(FREQMZ / _spi_speed_divider))) {
|
||||||
_state = ESP_SDCARD_IDLE;
|
_state = ESP_SDCARD_IDLE;
|
||||||
}
|
}
|
||||||
@ -180,12 +167,12 @@ void ESP_SD::refreshStats(bool force) {
|
|||||||
|
|
||||||
uint64_t ESP_SD::totalBytes(bool refresh) {
|
uint64_t ESP_SD::totalBytes(bool refresh) {
|
||||||
static uint64_t _totalBytes = 0;
|
static uint64_t _totalBytes = 0;
|
||||||
if (!SD.volumeBegin()) {
|
if (!ESP3D_SD_Card.volumeBegin()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (refresh || _totalBytes == 0) {
|
if (refresh || _totalBytes == 0) {
|
||||||
_totalBytes = SD.clusterCount();
|
_totalBytes = ESP3D_SD_Card.clusterCount();
|
||||||
uint8_t sectors = SD.sectorsPerCluster();
|
uint8_t sectors = ESP3D_SD_Card.sectorsPerCluster();
|
||||||
_totalBytes = _totalBytes * sectors * 512;
|
_totalBytes = _totalBytes * sectors * 512;
|
||||||
}
|
}
|
||||||
return _totalBytes;
|
return _totalBytes;
|
||||||
@ -197,12 +184,12 @@ uint64_t ESP_SD::usedBytes(bool refresh) {
|
|||||||
|
|
||||||
uint64_t ESP_SD::freeBytes(bool refresh) {
|
uint64_t ESP_SD::freeBytes(bool refresh) {
|
||||||
static uint64_t _freeBytes = 0;
|
static uint64_t _freeBytes = 0;
|
||||||
if (!SD.volumeBegin()) {
|
if (!ESP3D_SD_Card.volumeBegin()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (refresh || _freeBytes == 0) {
|
if (refresh || _freeBytes == 0) {
|
||||||
_freeBytes = SD.freeClusterCount();
|
_freeBytes = ESP3D_SD_Card.freeClusterCount();
|
||||||
uint8_t sectors = SD.sectorsPerCluster();
|
uint8_t sectors = ESP3D_SD_Card.sectorsPerCluster();
|
||||||
_freeBytes = _freeBytes * sectors * 512;
|
_freeBytes = _freeBytes * sectors * 512;
|
||||||
}
|
}
|
||||||
return _freeBytes;
|
return _freeBytes;
|
||||||
@ -211,7 +198,7 @@ uint64_t ESP_SD::freeBytes(bool refresh) {
|
|||||||
uint ESP_SD::maxPathLength() { return 255; }
|
uint ESP_SD::maxPathLength() { return 255; }
|
||||||
|
|
||||||
bool ESP_SD::rename(const char* oldpath, const char* newpath) {
|
bool ESP_SD::rename(const char* oldpath, const char* newpath) {
|
||||||
return SD.rename(oldpath, newpath);
|
return ESP3D_SD_Card.rename(oldpath, newpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ESP_SD::format() {
|
bool ESP_SD::format() {
|
||||||
@ -305,7 +292,7 @@ ESP_SDFile ESP_SD::open(const char* path, uint8_t mode) {
|
|||||||
return ESP_SDFile();
|
return ESP_SDFile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
File tmp = SD.open(path, (mode == ESP_FILE_READ) ? FILE_READ
|
ESP3D_File tmp = ESP3D_SD_Card.open(path, (mode == ESP_FILE_READ) ? FILE_READ
|
||||||
: (mode == ESP_FILE_WRITE) ? FILE_WRITE
|
: (mode == ESP_FILE_WRITE) ? FILE_WRITE
|
||||||
: FILE_WRITE);
|
: FILE_WRITE);
|
||||||
if (tmp) {
|
if (tmp) {
|
||||||
@ -325,7 +312,7 @@ bool ESP_SD::exists(const char* path) {
|
|||||||
if (strcmp(path, "/") == 0) {
|
if (strcmp(path, "/") == 0) {
|
||||||
return _started;
|
return _started;
|
||||||
}
|
}
|
||||||
res = SD.exists(path);
|
res = ESP3D_SD_Card.exists(path);
|
||||||
if (!res) {
|
if (!res) {
|
||||||
ESP_SDFile root = ESP_SD::open(path, ESP_FILE_READ);
|
ESP_SDFile root = ESP_SD::open(path, ESP_FILE_READ);
|
||||||
if (root) {
|
if (root) {
|
||||||
@ -337,10 +324,10 @@ bool ESP_SD::exists(const char* path) {
|
|||||||
|
|
||||||
bool ESP_SD::remove(const char* path) {
|
bool ESP_SD::remove(const char* path) {
|
||||||
_sizechanged = true;
|
_sizechanged = true;
|
||||||
return SD.remove(path);
|
return ESP3D_SD_Card.remove(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ESP_SD::mkdir(const char* path) { return SD.mkdir(path); }
|
bool ESP_SD::mkdir(const char* path) { return ESP3D_SD_Card.mkdir(path); }
|
||||||
|
|
||||||
bool ESP_SD::rmdir(const char* path) {
|
bool ESP_SD::rmdir(const char* path) {
|
||||||
String p = path;
|
String p = path;
|
||||||
@ -357,9 +344,9 @@ bool ESP_SD::rmdir(const char* path) {
|
|||||||
std::stack<String> pathlist;
|
std::stack<String> pathlist;
|
||||||
pathlist.push(p);
|
pathlist.push(p);
|
||||||
while (pathlist.size() > 0 && res) {
|
while (pathlist.size() > 0 && res) {
|
||||||
File dir = SD.open(pathlist.top().c_str());
|
ESP3D_File dir = ESP3D_SD_Card.open(pathlist.top().c_str());
|
||||||
dir.rewindDirectory();
|
dir.rewindDirectory();
|
||||||
File f = dir.openNextFile();
|
ESP3D_File f = dir.openNextFile();
|
||||||
bool candelete = true;
|
bool candelete = true;
|
||||||
while (f && res) {
|
while (f && res) {
|
||||||
if (f.isDir()) {
|
if (f.isDir()) {
|
||||||
@ -371,14 +358,14 @@ bool ESP_SD::rmdir(const char* path) {
|
|||||||
newdir += "/";
|
newdir += "/";
|
||||||
pathlist.push(newdir);
|
pathlist.push(newdir);
|
||||||
f.close();
|
f.close();
|
||||||
f = File();
|
f = ESP3D_File();
|
||||||
} else {
|
} else {
|
||||||
char tmp[255];
|
char tmp[255];
|
||||||
f.getName(tmp, 254);
|
f.getName(tmp, 254);
|
||||||
_sizechanged = true;
|
_sizechanged = true;
|
||||||
String filepath = pathlist.top() + tmp;
|
String filepath = pathlist.top() + tmp;
|
||||||
f.close();
|
f.close();
|
||||||
if (!SD.remove(filepath.c_str())) {
|
if (!ESP3D_SD_Card.remove(filepath.c_str())) {
|
||||||
res = false;
|
res = false;
|
||||||
}
|
}
|
||||||
f = dir.openNextFile();
|
f = dir.openNextFile();
|
||||||
@ -386,7 +373,7 @@ bool ESP_SD::rmdir(const char* path) {
|
|||||||
}
|
}
|
||||||
if (candelete) {
|
if (candelete) {
|
||||||
if (pathlist.top() != "/") {
|
if (pathlist.top() != "/") {
|
||||||
res = SD.rmdir(pathlist.top().c_str());
|
res = ESP3D_SD_Card.rmdir(pathlist.top().c_str());
|
||||||
}
|
}
|
||||||
pathlist.pop();
|
pathlist.pop();
|
||||||
}
|
}
|
||||||
@ -400,7 +387,7 @@ bool ESP_SD::rmdir(const char* path) {
|
|||||||
void ESP_SD::closeAll() {
|
void ESP_SD::closeAll() {
|
||||||
for (uint8_t i = 0; i < ESP_MAX_SD_OPENHANDLE; i++) {
|
for (uint8_t i = 0; i < ESP_MAX_SD_OPENHANDLE; i++) {
|
||||||
tSDFile_handle[i].close();
|
tSDFile_handle[i].close();
|
||||||
tSDFile_handle[i] = File();
|
tSDFile_handle[i] = ESP3D_File();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,7 +414,7 @@ ESP_SDFile::ESP_SDFile(void* handle, bool isdir, bool iswritemode,
|
|||||||
bool set = false;
|
bool set = false;
|
||||||
for (uint8_t i = 0; (i < ESP_MAX_SD_OPENHANDLE) && !set; i++) {
|
for (uint8_t i = 0; (i < ESP_MAX_SD_OPENHANDLE) && !set; i++) {
|
||||||
if (!tSDFile_handle[i]) {
|
if (!tSDFile_handle[i]) {
|
||||||
tSDFile_handle[i] = *((File*)handle);
|
tSDFile_handle[i] = *((ESP3D_File*)handle);
|
||||||
// filename
|
// filename
|
||||||
char tmp[255];
|
char tmp[255];
|
||||||
tSDFile_handle[i].getName(tmp, 254);
|
tSDFile_handle[i].getName(tmp, 254);
|
||||||
@ -470,7 +457,7 @@ const char* ESP_SDFile::shortname() const {
|
|||||||
return _name.c_str();
|
return _name.c_str();
|
||||||
#else
|
#else
|
||||||
static char sname[13];
|
static char sname[13];
|
||||||
File ftmp = SD.open(_filename.c_str());
|
ESP3D_File ftmp = ESP3D_SD_Card.open(_filename.c_str());
|
||||||
if (ftmp) {
|
if (ftmp) {
|
||||||
ftmp.getSFN(sname, 12);
|
ftmp.getSFN(sname, 12);
|
||||||
ftmp.close();
|
ftmp.close();
|
||||||
@ -491,14 +478,14 @@ void ESP_SDFile::close() {
|
|||||||
// reopen if mode = write
|
// reopen if mode = write
|
||||||
// udate size + date
|
// udate size + date
|
||||||
if (_iswritemode && !_isdir) {
|
if (_iswritemode && !_isdir) {
|
||||||
File ftmp = SD.open(_filename.c_str());
|
ESP3D_File ftmp = ESP3D_SD_Card.open(_filename.c_str());
|
||||||
if (ftmp) {
|
if (ftmp) {
|
||||||
_size = ftmp.size();
|
_size = ftmp.size();
|
||||||
_lastwrite = getDateTimeFile(ftmp);
|
_lastwrite = getDateTimeFile(ftmp);
|
||||||
ftmp.close();
|
ftmp.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tSDFile_handle[_index] = File();
|
tSDFile_handle[_index] = ESP3D_File();
|
||||||
// esp3d_log("Closing File at index %d",_index);
|
// esp3d_log("Closing File at index %d",_index);
|
||||||
_index = -1;
|
_index = -1;
|
||||||
}
|
}
|
||||||
@ -509,7 +496,7 @@ ESP_SDFile ESP_SDFile::openNextFile() {
|
|||||||
esp3d_log("openNextFile failed");
|
esp3d_log("openNextFile failed");
|
||||||
return ESP_SDFile();
|
return ESP_SDFile();
|
||||||
}
|
}
|
||||||
File tmp = tSDFile_handle[_index].openNextFile();
|
ESP3D_File tmp = tSDFile_handle[_index].openNextFile();
|
||||||
if (tmp) {
|
if (tmp) {
|
||||||
char tmps[255];
|
char tmps[255];
|
||||||
tmp.getName(tmps, 254);
|
tmp.getName(tmps, 254);
|
||||||
|
@ -21,14 +21,11 @@ sd_sdfat2_esp8266.cpp - ESP3D sd support class
|
|||||||
#include "../../../include/esp3d_config.h"
|
#include "../../../include/esp3d_config.h"
|
||||||
#if defined(ARDUINO_ARCH_ESP8266) && defined(SD_DEVICE)
|
#if defined(ARDUINO_ARCH_ESP8266) && defined(SD_DEVICE)
|
||||||
#if (SD_DEVICE == ESP_SDFAT2)
|
#if (SD_DEVICE == ESP_SDFAT2)
|
||||||
#define FS_NO_GLOBALS
|
|
||||||
#include <stack>
|
#include <stack>
|
||||||
|
|
||||||
#include "../../../core/esp3d_settings.h"
|
#include "../../../core/esp3d_settings.h"
|
||||||
#include "../esp_sd.h"
|
#include "../esp_sd.h"
|
||||||
|
|
||||||
#define NO_GLOBAL_SD
|
|
||||||
#include <SdFat.h>
|
|
||||||
#include <sdios.h>
|
#include <sdios.h>
|
||||||
|
|
||||||
// Try to select the best SD card configuration.
|
// Try to select the best SD card configuration.
|
||||||
@ -41,18 +38,9 @@ sd_sdfat2_esp8266.cpp - ESP3D sd support class
|
|||||||
#define SD_CONFIG \
|
#define SD_CONFIG \
|
||||||
SdSpiConfig((ESP_SD_CS_PIN == -1) ? SS : ESP_SD_CS_PIN, SHARED_SPI)
|
SdSpiConfig((ESP_SD_CS_PIN == -1) ? SS : ESP_SD_CS_PIN, SHARED_SPI)
|
||||||
#endif // HAS_SDIO_CLASS
|
#endif // HAS_SDIO_CLASS
|
||||||
#if SDFAT_FILE_TYPE == 1
|
|
||||||
typedef File32 File;
|
|
||||||
#elif SDFAT_FILE_TYPE == 2
|
|
||||||
typedef ExFile File;
|
|
||||||
#elif SDFAT_FILE_TYPE == 3
|
|
||||||
typedef FsFile File;
|
|
||||||
#else // SDFAT_FILE_TYPE
|
|
||||||
#error Invalid SDFAT_FILE_TYPE
|
|
||||||
#endif // SDFAT_FILE_TYPE
|
|
||||||
|
|
||||||
extern File tSDFile_handle[ESP_MAX_SD_OPENHANDLE];
|
ESP3D_SD_Class ESP3D_SD_Card;
|
||||||
SdFat SD;
|
ESP3D_File tSDFile_handle[ESP_MAX_SD_OPENHANDLE];
|
||||||
|
|
||||||
void dateTime(uint16_t* date, uint16_t* dtime) {
|
void dateTime(uint16_t* date, uint16_t* dtime) {
|
||||||
struct tm tmstruct;
|
struct tm tmstruct;
|
||||||
@ -64,7 +52,7 @@ void dateTime(uint16_t* date, uint16_t* dtime) {
|
|||||||
*dtime = FAT_TIME(tmstruct.tm_hour, tmstruct.tm_min, tmstruct.tm_sec);
|
*dtime = FAT_TIME(tmstruct.tm_hour, tmstruct.tm_min, tmstruct.tm_sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
time_t getDateTimeFile(File& filehandle) {
|
time_t getDateTimeFile(ESP3D_File& filehandle) {
|
||||||
static time_t dt = 0;
|
static time_t dt = 0;
|
||||||
#ifdef SD_TIMESTAMP_FEATURE
|
#ifdef SD_TIMESTAMP_FEATURE
|
||||||
struct tm timefile;
|
struct tm timefile;
|
||||||
@ -120,7 +108,7 @@ uint8_t ESP_SD::getState(bool refresh) {
|
|||||||
// SD is idle or not detected, let see if still the case
|
// SD is idle or not detected, let see if still the case
|
||||||
_state = ESP_SDCARD_NOT_PRESENT;
|
_state = ESP_SDCARD_NOT_PRESENT;
|
||||||
// refresh content if card was removed
|
// refresh content if card was removed
|
||||||
if (SD.begin((ESP_SD_CS_PIN == -1) ? SS : ESP_SD_CS_PIN,
|
if (ESP3D_SD_Card.begin((ESP_SD_CS_PIN == -1) ? SS : ESP_SD_CS_PIN,
|
||||||
SD_SCK_HZ(F_CPU / _spi_speed_divider))) {
|
SD_SCK_HZ(F_CPU / _spi_speed_divider))) {
|
||||||
esp3d_log("Init SD State ok");
|
esp3d_log("Init SD State ok");
|
||||||
_state = ESP_SDCARD_IDLE;
|
_state = ESP_SDCARD_IDLE;
|
||||||
@ -170,12 +158,12 @@ void ESP_SD::refreshStats(bool force) {
|
|||||||
|
|
||||||
uint64_t ESP_SD::totalBytes(bool refresh) {
|
uint64_t ESP_SD::totalBytes(bool refresh) {
|
||||||
static uint64_t _totalBytes = 0;
|
static uint64_t _totalBytes = 0;
|
||||||
if (!SD.volumeBegin()) {
|
if (!ESP3D_SD_Card.volumeBegin()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (refresh || _totalBytes == 0) {
|
if (refresh || _totalBytes == 0) {
|
||||||
_totalBytes = SD.clusterCount();
|
_totalBytes = ESP3D_SD_Card.clusterCount();
|
||||||
uint8_t sectors = SD.sectorsPerCluster();
|
uint8_t sectors = ESP3D_SD_Card.sectorsPerCluster();
|
||||||
_totalBytes = _totalBytes * sectors * 512;
|
_totalBytes = _totalBytes * sectors * 512;
|
||||||
}
|
}
|
||||||
return _totalBytes;
|
return _totalBytes;
|
||||||
@ -187,12 +175,12 @@ uint64_t ESP_SD::usedBytes(bool refresh) {
|
|||||||
|
|
||||||
uint64_t ESP_SD::freeBytes(bool refresh) {
|
uint64_t ESP_SD::freeBytes(bool refresh) {
|
||||||
static uint64_t _freeBytes = 0;
|
static uint64_t _freeBytes = 0;
|
||||||
if (!SD.volumeBegin()) {
|
if (!ESP3D_SD_Card.volumeBegin()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (refresh || _freeBytes == 0) {
|
if (refresh || _freeBytes == 0) {
|
||||||
_freeBytes = SD.freeClusterCount();
|
_freeBytes = ESP3D_SD_Card.freeClusterCount();
|
||||||
uint8_t sectors = SD.sectorsPerCluster();
|
uint8_t sectors = ESP3D_SD_Card.sectorsPerCluster();
|
||||||
_freeBytes = _freeBytes * sectors * 512;
|
_freeBytes = _freeBytes * sectors * 512;
|
||||||
}
|
}
|
||||||
return _freeBytes;
|
return _freeBytes;
|
||||||
@ -201,7 +189,7 @@ uint64_t ESP_SD::freeBytes(bool refresh) {
|
|||||||
uint ESP_SD::maxPathLength() { return 255; }
|
uint ESP_SD::maxPathLength() { return 255; }
|
||||||
|
|
||||||
bool ESP_SD::rename(const char* oldpath, const char* newpath) {
|
bool ESP_SD::rename(const char* oldpath, const char* newpath) {
|
||||||
return SD.rename(oldpath, newpath);
|
return ESP3D_SD_Card.rename(oldpath, newpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ESP_SD::format() {
|
bool ESP_SD::format() {
|
||||||
@ -296,7 +284,7 @@ ESP_SDFile ESP_SD::open(const char* path, uint8_t mode) {
|
|||||||
return ESP_SDFile();
|
return ESP_SDFile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
File tmp = SD.open(path, (mode == ESP_FILE_READ) ? FILE_READ
|
ESP3D_File tmp = ESP3D_SD_Card.open(path, (mode == ESP_FILE_READ) ? FILE_READ
|
||||||
: (mode == ESP_FILE_WRITE) ? FILE_WRITE
|
: (mode == ESP_FILE_WRITE) ? FILE_WRITE
|
||||||
: FILE_WRITE);
|
: FILE_WRITE);
|
||||||
ESP_SDFile esptmp(&tmp, tmp.isDir(), (mode == ESP_FILE_READ) ? false : true,
|
ESP_SDFile esptmp(&tmp, tmp.isDir(), (mode == ESP_FILE_READ) ? false : true,
|
||||||
@ -311,7 +299,7 @@ bool ESP_SD::exists(const char* path) {
|
|||||||
return _started;
|
return _started;
|
||||||
}
|
}
|
||||||
esp3d_log("%s exists ?", path);
|
esp3d_log("%s exists ?", path);
|
||||||
res = SD.exists(path);
|
res = ESP3D_SD_Card.exists(path);
|
||||||
if (!res) {
|
if (!res) {
|
||||||
esp3d_log("Seems not - trying open it");
|
esp3d_log("Seems not - trying open it");
|
||||||
ESP_SDFile root = ESP_SD::open(path, ESP_FILE_READ);
|
ESP_SDFile root = ESP_SD::open(path, ESP_FILE_READ);
|
||||||
@ -325,10 +313,10 @@ bool ESP_SD::exists(const char* path) {
|
|||||||
|
|
||||||
bool ESP_SD::remove(const char* path) {
|
bool ESP_SD::remove(const char* path) {
|
||||||
_sizechanged = true;
|
_sizechanged = true;
|
||||||
return SD.remove(path);
|
return ESP3D_SD_Card.remove(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ESP_SD::mkdir(const char* path) { return SD.mkdir(path); }
|
bool ESP_SD::mkdir(const char* path) { return ESP3D_SD_Card.mkdir(path); }
|
||||||
|
|
||||||
bool ESP_SD::rmdir(const char* path) {
|
bool ESP_SD::rmdir(const char* path) {
|
||||||
String p = path;
|
String p = path;
|
||||||
@ -345,9 +333,9 @@ bool ESP_SD::rmdir(const char* path) {
|
|||||||
std::stack<String> pathlist;
|
std::stack<String> pathlist;
|
||||||
pathlist.push(p);
|
pathlist.push(p);
|
||||||
while (pathlist.size() > 0 && res) {
|
while (pathlist.size() > 0 && res) {
|
||||||
File dir = SD.open(pathlist.top().c_str());
|
ESP3D_File dir = ESP3D_SD_Card.open(pathlist.top().c_str());
|
||||||
dir.rewindDirectory();
|
dir.rewindDirectory();
|
||||||
File f = dir.openNextFile();
|
ESP3D_File f = dir.openNextFile();
|
||||||
bool candelete = true;
|
bool candelete = true;
|
||||||
while (f && res) {
|
while (f && res) {
|
||||||
if (f.isDir()) {
|
if (f.isDir()) {
|
||||||
@ -359,14 +347,14 @@ bool ESP_SD::rmdir(const char* path) {
|
|||||||
newdir += "/";
|
newdir += "/";
|
||||||
pathlist.push(newdir);
|
pathlist.push(newdir);
|
||||||
f.close();
|
f.close();
|
||||||
f = File();
|
f = ESP3D_File() ;
|
||||||
} else {
|
} else {
|
||||||
char tmp[255];
|
char tmp[255];
|
||||||
f.getName(tmp, 254);
|
f.getName(tmp, 254);
|
||||||
_sizechanged = true;
|
_sizechanged = true;
|
||||||
String filepath = pathlist.top() + tmp;
|
String filepath = pathlist.top() + tmp;
|
||||||
f.close();
|
f.close();
|
||||||
if (!SD.remove(filepath.c_str())) {
|
if (!ESP3D_SD_Card.remove(filepath.c_str())) {
|
||||||
res = false;
|
res = false;
|
||||||
}
|
}
|
||||||
f = dir.openNextFile();
|
f = dir.openNextFile();
|
||||||
@ -374,7 +362,7 @@ bool ESP_SD::rmdir(const char* path) {
|
|||||||
}
|
}
|
||||||
if (candelete) {
|
if (candelete) {
|
||||||
if (pathlist.top() != "/") {
|
if (pathlist.top() != "/") {
|
||||||
res = SD.rmdir(pathlist.top().c_str());
|
res = ESP3D_SD_Card.rmdir(pathlist.top().c_str());
|
||||||
}
|
}
|
||||||
pathlist.pop();
|
pathlist.pop();
|
||||||
}
|
}
|
||||||
@ -399,7 +387,7 @@ bool ESP_SDFile::seek(uint32_t pos, uint8_t mode) {
|
|||||||
void ESP_SD::closeAll() {
|
void ESP_SD::closeAll() {
|
||||||
for (uint8_t i = 0; i < ESP_MAX_SD_OPENHANDLE; i++) {
|
for (uint8_t i = 0; i < ESP_MAX_SD_OPENHANDLE; i++) {
|
||||||
tSDFile_handle[i].close();
|
tSDFile_handle[i].close();
|
||||||
tSDFile_handle[i] = File();
|
tSDFile_handle[i] = ESP3D_File() ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -419,7 +407,7 @@ ESP_SDFile::ESP_SDFile(void* handle, bool isdir, bool iswritemode,
|
|||||||
bool set = false;
|
bool set = false;
|
||||||
for (uint8_t i = 0; (i < ESP_MAX_SD_OPENHANDLE) && !set; i++) {
|
for (uint8_t i = 0; (i < ESP_MAX_SD_OPENHANDLE) && !set; i++) {
|
||||||
if (!tSDFile_handle[i]) {
|
if (!tSDFile_handle[i]) {
|
||||||
tSDFile_handle[i] = *((File*)handle);
|
tSDFile_handle[i] = *((ESP3D_File*)handle);
|
||||||
// filename
|
// filename
|
||||||
char tmp[255];
|
char tmp[255];
|
||||||
tSDFile_handle[i].getName(tmp, 254);
|
tSDFile_handle[i].getName(tmp, 254);
|
||||||
@ -462,7 +450,7 @@ const char* ESP_SDFile::shortname() const {
|
|||||||
return _name.c_str();
|
return _name.c_str();
|
||||||
#else
|
#else
|
||||||
static char sname[13];
|
static char sname[13];
|
||||||
File ftmp = SD.open(_filename.c_str());
|
ESP3D_File ftmp = ESP3D_SD_Card.open(_filename.c_str());
|
||||||
if (ftmp) {
|
if (ftmp) {
|
||||||
ftmp.getSFN(sname, 12);
|
ftmp.getSFN(sname, 12);
|
||||||
ftmp.close();
|
ftmp.close();
|
||||||
@ -483,14 +471,14 @@ void ESP_SDFile::close() {
|
|||||||
// reopen if mode = write
|
// reopen if mode = write
|
||||||
// udate size + date
|
// udate size + date
|
||||||
if (_iswritemode && !_isdir) {
|
if (_iswritemode && !_isdir) {
|
||||||
File ftmp = SD.open(_filename.c_str());
|
ESP3D_File ftmp = ESP3D_SD_Card.open(_filename.c_str());
|
||||||
if (ftmp) {
|
if (ftmp) {
|
||||||
_size = ftmp.size();
|
_size = ftmp.size();
|
||||||
_lastwrite = getDateTimeFile(ftmp);
|
_lastwrite = getDateTimeFile(ftmp);
|
||||||
ftmp.close();
|
ftmp.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tSDFile_handle[_index] = File();
|
tSDFile_handle[_index] = ESP3D_File() ;
|
||||||
// esp3d_log("Closing File at index %d",_index);
|
// esp3d_log("Closing File at index %d",_index);
|
||||||
_index = -1;
|
_index = -1;
|
||||||
}
|
}
|
||||||
@ -501,7 +489,7 @@ ESP_SDFile ESP_SDFile::openNextFile() {
|
|||||||
esp3d_log("openNextFile failed");
|
esp3d_log("openNextFile failed");
|
||||||
return ESP_SDFile();
|
return ESP_SDFile();
|
||||||
}
|
}
|
||||||
File tmp = tSDFile_handle[_index].openNextFile();
|
ESP3D_File tmp = tSDFile_handle[_index].openNextFile();
|
||||||
if (tmp) {
|
if (tmp) {
|
||||||
char tmps[255];
|
char tmps[255];
|
||||||
tmp.getName(tmps, 254);
|
tmp.getName(tmps, 254);
|
||||||
|
@ -24,10 +24,9 @@ sdio_esp32.cpp - ESP3D sd support class
|
|||||||
|
|
||||||
#include "../../../core/esp3d_settings.h"
|
#include "../../../core/esp3d_settings.h"
|
||||||
#include "../esp_sd.h"
|
#include "../esp_sd.h"
|
||||||
#include "FS.h"
|
|
||||||
#include "SD_MMC.h"
|
|
||||||
|
|
||||||
extern File tSDFile_handle[ESP_MAX_SD_OPENHANDLE];
|
ESP3D_SD_Class ESP3D_SD_Card = SD_MMC;
|
||||||
|
ESP3D_File tSDFile_handle[ESP_MAX_SD_OPENHANDLE];
|
||||||
|
|
||||||
#define SDMMC_FORCE_BEGIN
|
#define SDMMC_FORCE_BEGIN
|
||||||
|
|
||||||
@ -60,10 +59,10 @@ uint8_t ESP_SD::getState(bool refresh) {
|
|||||||
// refresh content if card was removed
|
// refresh content if card was removed
|
||||||
if (!lastinitok) {
|
if (!lastinitok) {
|
||||||
esp3d_log("last init was failed try sd_mmc begin");
|
esp3d_log("last init was failed try sd_mmc begin");
|
||||||
SD_MMC.end();
|
ESP3D_SD_Card.end();
|
||||||
if (SD_MMC.begin("/sdcard", SDIO_BIT_MODE)) {
|
if (ESP3D_SD_Card.begin("/sdcard", SDIO_BIT_MODE)) {
|
||||||
esp3d_log("sd_mmc begin succeed");
|
esp3d_log("sd_mmc begin succeed");
|
||||||
if (SD_MMC.cardType() != CARD_NONE) {
|
if (ESP3D_SD_Card.cardType() != CARD_NONE) {
|
||||||
_state = ESP_SDCARD_IDLE;
|
_state = ESP_SDCARD_IDLE;
|
||||||
lastinitok = true;
|
lastinitok = true;
|
||||||
esp3d_log("sd_mmc card type succeed");
|
esp3d_log("sd_mmc card type succeed");
|
||||||
@ -75,16 +74,16 @@ uint8_t ESP_SD::getState(bool refresh) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
esp3d_log("last init was ok try card type");
|
esp3d_log("last init was ok try card type");
|
||||||
if (SD_MMC.cardType() != CARD_NONE) {
|
if (ESP3D_SD_Card.cardType() != CARD_NONE) {
|
||||||
esp3d_log("checking sd_mmc card type succeed");
|
esp3d_log("checking sd_mmc card type succeed");
|
||||||
_state = ESP_SDCARD_IDLE;
|
_state = ESP_SDCARD_IDLE;
|
||||||
} else {
|
} else {
|
||||||
lastinitok = false;
|
lastinitok = false;
|
||||||
esp3d_log_e("Soft sd check failed");
|
esp3d_log_e("Soft sd check failed");
|
||||||
SD_MMC.end();
|
ESP3D_SD_Card.end();
|
||||||
if (SD_MMC.begin("/sdcard", SDIO_BIT_MODE)) {
|
if (ESP3D_SD_Card.begin("/sdcard", SDIO_BIT_MODE)) {
|
||||||
esp3d_log("new sd_mmc begin succeed");
|
esp3d_log("new sd_mmc begin succeed");
|
||||||
if (SD_MMC.cardType() != CARD_NONE) {
|
if (ESP3D_SD_Card.cardType() != CARD_NONE) {
|
||||||
_state = ESP_SDCARD_IDLE;
|
_state = ESP_SDCARD_IDLE;
|
||||||
lastinitok = true;
|
lastinitok = true;
|
||||||
esp3d_log("new sd_mmc card type succeed");
|
esp3d_log("new sd_mmc card type succeed");
|
||||||
@ -103,13 +102,13 @@ bool ESP_SD::begin() {
|
|||||||
#if SDIO_BIT_MODE == SD_ONE_BIT_MODE
|
#if SDIO_BIT_MODE == SD_ONE_BIT_MODE
|
||||||
#if (ESP_SDIO_CLK_PIN != -1) || (ESP_SDIO_CMD_PIN != -1) || \
|
#if (ESP_SDIO_CLK_PIN != -1) || (ESP_SDIO_CMD_PIN != -1) || \
|
||||||
(ESP_SDIO_D0_PIN != -1)
|
(ESP_SDIO_D0_PIN != -1)
|
||||||
SD_MMC.setPins(ESP_SDIO_CLK_PIN, ESP_SDIO_CMD_PIN, ESP_SDIO_D0_PIN);
|
ESP3D_SD_Card.setPins(ESP_SDIO_CLK_PIN, ESP_SDIO_CMD_PIN, ESP_SDIO_D0_PIN);
|
||||||
#endif //(ESP_SDIO_CLK_PIN != -1)
|
#endif //(ESP_SDIO_CLK_PIN != -1)
|
||||||
#else
|
#else
|
||||||
#if (ESP_SDIO_CLK_PIN != -1) || (ESP_SDIO_CMD_PIN != -1) || \
|
#if (ESP_SDIO_CLK_PIN != -1) || (ESP_SDIO_CMD_PIN != -1) || \
|
||||||
(ESP_SDIO_D0_PIN != -1) || (ESP_SDIO_D1_PIN != -1) || \
|
(ESP_SDIO_D0_PIN != -1) || (ESP_SDIO_D1_PIN != -1) || \
|
||||||
(ESP_SDIO_D2_PIN != -1) || (ESP_SDIO_D3_PIN != -1)
|
(ESP_SDIO_D2_PIN != -1) || (ESP_SDIO_D3_PIN != -1)
|
||||||
SD_MMC.setPins(ESP_SDIO_CLK_PIN, ESP_SDIO_CMD_PIN, ESP_SDIO_D0_PIN,
|
ESP3D_SD_Card.setPins(ESP_SDIO_CLK_PIN, ESP_SDIO_CMD_PIN, ESP_SDIO_D0_PIN,
|
||||||
ESP_SDIO_D1_PIN, ESP_SDIO_D2_PIN, ESP_SDIO_D3_PIN);
|
ESP_SDIO_D1_PIN, ESP_SDIO_D2_PIN, ESP_SDIO_D3_PIN);
|
||||||
#endif //(ESP_SDIO_CLK_PIN != -1)
|
#endif //(ESP_SDIO_CLK_PIN != -1)
|
||||||
#endif // SD_ONE_BIT_MODE
|
#endif // SD_ONE_BIT_MODE
|
||||||
@ -125,7 +124,7 @@ bool ESP_SD::begin() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ESP_SD::end() {
|
void ESP_SD::end() {
|
||||||
SD_MMC.end();
|
ESP3D_SD_Card.end();
|
||||||
_state = ESP_SDCARD_NOT_PRESENT;
|
_state = ESP_SDCARD_NOT_PRESENT;
|
||||||
_started = false;
|
_started = false;
|
||||||
}
|
}
|
||||||
@ -140,7 +139,7 @@ void ESP_SD::refreshStats(bool force) {
|
|||||||
uint64_t ESP_SD::totalBytes(bool refresh) {
|
uint64_t ESP_SD::totalBytes(bool refresh) {
|
||||||
static uint64_t _totalBytes = 0;
|
static uint64_t _totalBytes = 0;
|
||||||
if (refresh || _totalBytes == 0) {
|
if (refresh || _totalBytes == 0) {
|
||||||
_totalBytes = SD_MMC.totalBytes();
|
_totalBytes = ESP3D_SD_Card.totalBytes();
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
return _totalBytes;
|
return _totalBytes;
|
||||||
@ -149,7 +148,7 @@ uint64_t ESP_SD::totalBytes(bool refresh) {
|
|||||||
uint64_t ESP_SD::usedBytes(bool refresh) {
|
uint64_t ESP_SD::usedBytes(bool refresh) {
|
||||||
static uint64_t _usedBytes = 0;
|
static uint64_t _usedBytes = 0;
|
||||||
if (refresh || _usedBytes == 0) {
|
if (refresh || _usedBytes == 0) {
|
||||||
_usedBytes = SD_MMC.usedBytes();
|
_usedBytes = ESP3D_SD_Card.usedBytes();
|
||||||
}
|
}
|
||||||
return _usedBytes;
|
return _usedBytes;
|
||||||
}
|
}
|
||||||
@ -161,7 +160,7 @@ uint64_t ESP_SD::freeBytes(bool refresh) {
|
|||||||
uint ESP_SD::maxPathLength() { return 255; }
|
uint ESP_SD::maxPathLength() { return 255; }
|
||||||
|
|
||||||
bool ESP_SD::rename(const char *oldpath, const char *newpath) {
|
bool ESP_SD::rename(const char *oldpath, const char *newpath) {
|
||||||
return SD_MMC.rename(oldpath, newpath);
|
return ESP3D_SD_Card.rename(oldpath, newpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ESP_SD::format() {
|
bool ESP_SD::format() {
|
||||||
@ -193,7 +192,7 @@ ESP_SDFile ESP_SD::open(const char *path, uint8_t mode) {
|
|||||||
return ESP_SDFile();
|
return ESP_SDFile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
File tmp = SD_MMC.open(path, (mode == ESP_FILE_READ) ? FILE_READ
|
ESP3D_File tmp = ESP3D_SD_Card.open(path, (mode == ESP_FILE_READ) ? FILE_READ
|
||||||
: (mode == ESP_FILE_WRITE) ? FILE_WRITE
|
: (mode == ESP_FILE_WRITE) ? FILE_WRITE
|
||||||
: FILE_APPEND);
|
: FILE_APPEND);
|
||||||
ESP_SDFile esptmp(&tmp, tmp.isDirectory(),
|
ESP_SDFile esptmp(&tmp, tmp.isDirectory(),
|
||||||
@ -212,7 +211,7 @@ bool ESP_SD::exists(const char *path) {
|
|||||||
if (p.endsWith("/")) {
|
if (p.endsWith("/")) {
|
||||||
p.remove(p.length() - 1, 1);
|
p.remove(p.length() - 1, 1);
|
||||||
}
|
}
|
||||||
res = SD_MMC.exists(p);
|
res = ESP3D_SD_Card.exists(p);
|
||||||
if (!res) {
|
if (!res) {
|
||||||
ESP_SDFile root = ESP_SD::open(p.c_str(), ESP_FILE_READ);
|
ESP_SDFile root = ESP_SD::open(p.c_str(), ESP_FILE_READ);
|
||||||
if (root) {
|
if (root) {
|
||||||
@ -222,14 +221,14 @@ bool ESP_SD::exists(const char *path) {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ESP_SD::remove(const char *path) { return SD_MMC.remove(path); }
|
bool ESP_SD::remove(const char *path) { return ESP3D_SD_Card.remove(path); }
|
||||||
|
|
||||||
bool ESP_SD::mkdir(const char *path) {
|
bool ESP_SD::mkdir(const char *path) {
|
||||||
String p = path;
|
String p = path;
|
||||||
if (p.endsWith("/")) {
|
if (p.endsWith("/")) {
|
||||||
p.remove(p.length() - 1, 1);
|
p.remove(p.length() - 1, 1);
|
||||||
}
|
}
|
||||||
return SD_MMC.mkdir(p.c_str());
|
return ESP3D_SD_Card.mkdir(p.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ESP_SD::rmdir(const char *path) {
|
bool ESP_SD::rmdir(const char *path) {
|
||||||
@ -244,8 +243,8 @@ bool ESP_SD::rmdir(const char *path) {
|
|||||||
}
|
}
|
||||||
pathlist.push(p);
|
pathlist.push(p);
|
||||||
while (pathlist.size() > 0 && res) {
|
while (pathlist.size() > 0 && res) {
|
||||||
File dir = SD_MMC.open(pathlist.top().c_str());
|
ESP3D_File dir = ESP3D_SD_Card.open(pathlist.top().c_str());
|
||||||
File f = dir.openNextFile();
|
ESP3D_File f = dir.openNextFile();
|
||||||
bool candelete = true;
|
bool candelete = true;
|
||||||
while (f && res) {
|
while (f && res) {
|
||||||
if (f.isDirectory()) {
|
if (f.isDirectory()) {
|
||||||
@ -254,12 +253,12 @@ bool ESP_SD::rmdir(const char *path) {
|
|||||||
newdir += f.name();
|
newdir += f.name();
|
||||||
pathlist.push(newdir);
|
pathlist.push(newdir);
|
||||||
f.close();
|
f.close();
|
||||||
f = File();
|
f =ESP3D_File();
|
||||||
} else {
|
} else {
|
||||||
String filepath = pathlist.top() + '/';
|
String filepath = pathlist.top() + '/';
|
||||||
filepath += f.name();
|
filepath += f.name();
|
||||||
f.close();
|
f.close();
|
||||||
if (!SD_MMC.remove(filepath.c_str())) {
|
if (!ESP3D_SD_Card.remove(filepath.c_str())) {
|
||||||
res = false;
|
res = false;
|
||||||
}
|
}
|
||||||
f = dir.openNextFile();
|
f = dir.openNextFile();
|
||||||
@ -267,7 +266,7 @@ bool ESP_SD::rmdir(const char *path) {
|
|||||||
}
|
}
|
||||||
if (candelete) {
|
if (candelete) {
|
||||||
if (pathlist.top() != "/") {
|
if (pathlist.top() != "/") {
|
||||||
res = SD_MMC.rmdir(pathlist.top().c_str());
|
res = ESP3D_SD_Card.rmdir(pathlist.top().c_str());
|
||||||
}
|
}
|
||||||
pathlist.pop();
|
pathlist.pop();
|
||||||
}
|
}
|
||||||
@ -281,7 +280,7 @@ bool ESP_SD::rmdir(const char *path) {
|
|||||||
void ESP_SD::closeAll() {
|
void ESP_SD::closeAll() {
|
||||||
for (uint8_t i = 0; i < ESP_MAX_SD_OPENHANDLE; i++) {
|
for (uint8_t i = 0; i < ESP_MAX_SD_OPENHANDLE; i++) {
|
||||||
tSDFile_handle[i].close();
|
tSDFile_handle[i].close();
|
||||||
tSDFile_handle[i] = File();
|
tSDFile_handle[i] =ESP3D_File();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -301,7 +300,7 @@ ESP_SDFile::ESP_SDFile(void *handle, bool isdir, bool iswritemode,
|
|||||||
bool set = false;
|
bool set = false;
|
||||||
for (uint8_t i = 0; (i < ESP_MAX_SD_OPENHANDLE) && !set; i++) {
|
for (uint8_t i = 0; (i < ESP_MAX_SD_OPENHANDLE) && !set; i++) {
|
||||||
if (!tSDFile_handle[i]) {
|
if (!tSDFile_handle[i]) {
|
||||||
tSDFile_handle[i] = *((File *)handle);
|
tSDFile_handle[i] = *((ESP3D_File *)handle);
|
||||||
// filename
|
// filename
|
||||||
_name = tSDFile_handle[i].name();
|
_name = tSDFile_handle[i].name();
|
||||||
_filename = path;
|
_filename = path;
|
||||||
@ -331,7 +330,7 @@ ESP_SDFile::ESP_SDFile(void *handle, bool isdir, bool iswritemode,
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool ESP_SDFile::seek(uint32_t pos, uint8_t mode) {
|
bool ESP_SDFile::seek(uint32_t pos, uint8_t mode) {
|
||||||
return tSDFile_handle[_index].seek(pos, (SeekMode)mode);
|
return tSDFile_handle[_index].seek(pos, (fs::SeekMode)mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ESP_SDFile::close() {
|
void ESP_SDFile::close() {
|
||||||
@ -341,14 +340,14 @@ void ESP_SDFile::close() {
|
|||||||
// reopen if mode = write
|
// reopen if mode = write
|
||||||
// udate size + date
|
// udate size + date
|
||||||
if (_iswritemode && !_isdir) {
|
if (_iswritemode && !_isdir) {
|
||||||
File ftmp = SD_MMC.open(_filename.c_str());
|
ESP3D_File ftmp = ESP3D_SD_Card.open(_filename.c_str());
|
||||||
if (ftmp) {
|
if (ftmp) {
|
||||||
_size = ftmp.size();
|
_size = ftmp.size();
|
||||||
_lastwrite = ftmp.getLastWrite();
|
_lastwrite = ftmp.getLastWrite();
|
||||||
ftmp.close();
|
ftmp.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tSDFile_handle[_index] = File();
|
tSDFile_handle[_index] =ESP3D_File();
|
||||||
// esp3d_log("Closing File at index %d",_index);
|
// esp3d_log("Closing File at index %d",_index);
|
||||||
_index = -1;
|
_index = -1;
|
||||||
}
|
}
|
||||||
@ -359,7 +358,7 @@ ESP_SDFile ESP_SDFile::openNextFile() {
|
|||||||
esp3d_log("openNextFile failed");
|
esp3d_log("openNextFile failed");
|
||||||
return ESP_SDFile();
|
return ESP_SDFile();
|
||||||
}
|
}
|
||||||
File tmp = tSDFile_handle[_index].openNextFile();
|
ESP3D_File tmp = tSDFile_handle[_index].openNextFile();
|
||||||
if (tmp) {
|
if (tmp) {
|
||||||
esp3d_log("tmp name :%s %s %s", tmp.name(),
|
esp3d_log("tmp name :%s %s %s", tmp.name(),
|
||||||
(tmp.isDirectory()) ? "isDir" : "isFile", _filename.c_str());
|
(tmp.isDirectory()) ? "isDir" : "isFile", _filename.c_str());
|
||||||
|
@ -290,7 +290,7 @@ void GcodeHost::readNextCommand() {
|
|||||||
} else {
|
} else {
|
||||||
_processedSize++;
|
_processedSize++;
|
||||||
_currentPosition++;
|
_currentPosition++;
|
||||||
if (!(char)c == '\n' ) {
|
if ((char)c != '\n' ) {
|
||||||
_currentCommand += (char)c;
|
_currentCommand += (char)c;
|
||||||
} else {
|
} else {
|
||||||
processing = false;
|
processing = false;
|
||||||
|
@ -24,7 +24,6 @@
|
|||||||
*/
|
*/
|
||||||
#ifndef SdFat_h
|
#ifndef SdFat_h
|
||||||
#define SdFat_h
|
#define SdFat_h
|
||||||
#define DISABLE_FS_H_WARNING 1
|
|
||||||
/**
|
/**
|
||||||
* \file
|
* \file
|
||||||
* \brief main SdFs include file.
|
* \brief main SdFs include file.
|
||||||
|
@ -289,6 +289,7 @@ lib_ignore =
|
|||||||
esp32-usb-serial
|
esp32-usb-serial
|
||||||
|
|
||||||
[env:esp8266dev]
|
[env:esp8266dev]
|
||||||
|
;core 3.1.1
|
||||||
platform = espressif8266@4.1.0
|
platform = espressif8266@4.1.0
|
||||||
board = esp12e
|
board = esp12e
|
||||||
framework = arduino
|
framework = arduino
|
||||||
|
Loading…
x
Reference in New Issue
Block a user