From 67ce53cd2de7677a4022824d62b39397c1937f89 Mon Sep 17 00:00:00 2001 From: Luc <8822552+luc-github@users.noreply.github.com> Date: Wed, 20 Apr 2022 18:00:54 +0800 Subject: [PATCH] Add isSdUsed() query for third party --- src/esp3dlib.cpp | 13 +++++++++++++ src/esp3dlib.h | 4 ++++ src/include/Marlin/cardreader.h | 5 +---- src/modules/filesystem/esp_sd.cpp | 7 ++++--- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/esp3dlib.cpp b/src/esp3dlib.cpp index 0f72841..84e2154 100644 --- a/src/esp3dlib.cpp +++ b/src/esp3dlib.cpp @@ -31,6 +31,9 @@ #include "core/esp3doutput.h" #include "core/commands.h" #include +#ifdef SDSUPPORT +#include "modules/filesystem/esp_sd.h" +#endif //SDSUPPORT Esp3DLib esp3dlib; @@ -75,6 +78,16 @@ bool Esp3DLib::parse(char * cmd) return false; } +bool Esp3DLib::isSdUsed() +{ +#ifdef SDSUPPORT + return ESP_SD::isEnabled(); +#else + return false; +#endif //SDSUPPORT + +} + //Idletask when setup is done void Esp3DLib::idletask() { diff --git a/src/esp3dlib.h b/src/esp3dlib.h index 7c0df72..f89cd08 100644 --- a/src/esp3dlib.h +++ b/src/esp3dlib.h @@ -48,6 +48,10 @@ public: * idletask function. */ void idletask(); + /** + * test if SD card is currently used by esp3dlib. + */ + bool isSdUsed(); }; /** diff --git a/src/include/Marlin/cardreader.h b/src/include/Marlin/cardreader.h index 7fd1f44..2944824 100644 --- a/src/include/Marlin/cardreader.h +++ b/src/include/Marlin/cardreader.h @@ -37,10 +37,7 @@ typedef struct { mounted:1, filenameIsDir:1, workDirIsRoot:1, - abort_sd_printing:1, - busy:1 - - ; + abort_sd_printing:1; } card_flags_t; diff --git a/src/modules/filesystem/esp_sd.cpp b/src/modules/filesystem/esp_sd.cpp index ba819d4..851b675 100644 --- a/src/modules/filesystem/esp_sd.cpp +++ b/src/modules/filesystem/esp_sd.cpp @@ -62,6 +62,9 @@ bool ESP_SD::_enabled = false; bool ESP_SD::enableSharedSD() { + if(_enabled) { + return false; + } _enabled = true; #if defined (ESP_FLAG_SHARED_SD_PIN) //need to check if SD is in use ? @@ -72,11 +75,10 @@ bool ESP_SD::enableSharedSD() #endif // ESP_FLAG_SHARED_SD_PIN #if defined (ESP3DLIB_ENV) //check if card is not currently in use - if ((card.isMounted() && (IS_SD_PRINTING() ||IS_SD_FETCHING() ||IS_SD_PAUSED() || IS_SD_FILE_OPEN()))||card.flag.busy) { + if ((card.isMounted() && (IS_SD_PRINTING() ||IS_SD_FETCHING() ||IS_SD_PAUSED() || IS_SD_FILE_OPEN()))) { _enabled = false; } else { card.release(); - card.flag.busy = true; } #endif // ESP3DLIB_ENV return _enabled; @@ -116,7 +118,6 @@ void ESP_SD::releaseFS() #endif // ESP_FLAG_SHARED_SD_PIN #if defined (ESP3DLIB_ENV) log_esp3d("Release SD"); - card.flag.busy = false; card.mount(); #endif // ESP3DLIB_ENV _enabled = false;