Browse Source

Followup to #12451

pull/1/head
Scott Lahteine 6 years ago
parent
commit
643e0066a0
  1. 2
      Marlin/src/feature/power_loss_recovery.h
  2. 4
      Marlin/src/sd/SdFatConfig.h
  3. 18
      Marlin/src/sd/cardreader.cpp
  4. 10
      Marlin/src/sd/cardreader.h

2
Marlin/src/feature/power_loss_recovery.h

@ -68,7 +68,7 @@ typedef struct {
char command_queue[BUFSIZE][MAX_CMD_SIZE]; char command_queue[BUFSIZE][MAX_CMD_SIZE];
// SD Filename and position // SD Filename and position
char sd_filename[MAXPATHNAMELENGTH + 1]; char sd_filename[MAXPATHNAMELENGTH];
uint32_t sdpos; uint32_t sdpos;
// Job elapsed time // Job elapsed time

4
Marlin/src/sd/SdFatConfig.h

@ -106,7 +106,7 @@
* Defines for 8.3 and long (vfat) filenames * Defines for 8.3 and long (vfat) filenames
*/ */
#define FILENAME_LENGTH 12 // Number of UTF-16 characters per entry #define FILENAME_LENGTH 13 // Number of UTF-16 characters per entry
// Total bytes needed to store a single long filename // Total bytes needed to store a single long filename
#define LONG_FILENAME_LENGTH ((FILENAME_LENGTH) * (MAX_VFAT_ENTRIES)) #define LONG_FILENAME_LENGTH (FILENAME_LENGTH * MAX_VFAT_ENTRIES + 1)

18
Marlin/src/sd/cardreader.cpp

@ -48,7 +48,7 @@
// public: // public:
card_flags_t CardReader::flag; card_flags_t CardReader::flag;
char CardReader::filename[FILENAME_LENGTH + 1], CardReader::longFilename[LONG_FILENAME_LENGTH + 1]; char CardReader::filename[FILENAME_LENGTH], CardReader::longFilename[LONG_FILENAME_LENGTH];
int8_t CardReader::autostart_index; int8_t CardReader::autostart_index;
#if ENABLED(FAST_FILE_TRANSFER) #if ENABLED(FAST_FILE_TRANSFER)
@ -82,11 +82,11 @@ uint8_t CardReader::workDirDepth;
#if ENABLED(SDSORT_DYNAMIC_RAM) #if ENABLED(SDSORT_DYNAMIC_RAM)
char **CardReader::sortshort, **CardReader::sortnames; char **CardReader::sortshort, **CardReader::sortnames;
#else #else
char CardReader::sortshort[SDSORT_LIMIT][FILENAME_LENGTH + 1]; char CardReader::sortshort[SDSORT_LIMIT][FILENAME_LENGTH];
char CardReader::sortnames[SDSORT_LIMIT][SORTED_LONGNAME_MAXLEN + 1]; char CardReader::sortnames[SDSORT_LIMIT][SORTED_LONGNAME_MAXLEN];
#endif #endif
#elif DISABLED(SDSORT_USES_STACK) #elif DISABLED(SDSORT_USES_STACK)
char CardReader::sortnames[SDSORT_LIMIT][SORTED_LONGNAME_MAXLEN + 1]; char CardReader::sortnames[SDSORT_LIMIT][SORTED_LONGNAME_MAXLEN];
#endif #endif
#if HAS_FOLDER_SORTING #if HAS_FOLDER_SORTING
@ -107,7 +107,7 @@ SdFile CardReader::file;
uint8_t CardReader::file_subcall_ctr; uint8_t CardReader::file_subcall_ctr;
uint32_t CardReader::filespos[SD_PROCEDURE_DEPTH]; uint32_t CardReader::filespos[SD_PROCEDURE_DEPTH];
char CardReader::proc_filenames[SD_PROCEDURE_DEPTH][MAXPATHNAMELENGTH + 1]; char CardReader::proc_filenames[SD_PROCEDURE_DEPTH][MAXPATHNAMELENGTH];
uint32_t CardReader::filesize, CardReader::sdpos; uint32_t CardReader::filesize, CardReader::sdpos;
@ -183,7 +183,7 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m
if (DIR_IS_SUBDIR(&p) && lsAction != LS_Count && lsAction != LS_GetFilename) { if (DIR_IS_SUBDIR(&p) && lsAction != LS_Count && lsAction != LS_GetFilename) {
// Get the short name for the item, which we know is a folder // Get the short name for the item, which we know is a folder
char dosFilename[FILENAME_LENGTH + 1]; char dosFilename[FILENAME_LENGTH];
createFilename(dosFilename, p); createFilename(dosFilename, p);
// Allocate enough stack space for the full path to a folder, trailing slash, and nul // Allocate enough stack space for the full path to a folder, trailing slash, and nul
@ -350,7 +350,7 @@ void CardReader::printFilename(
#endif #endif
) { ) {
if (file.isOpen()) { if (file.isOpen()) {
char dosFilename[FILENAME_LENGTH + 1]; char dosFilename[FILENAME_LENGTH];
file.getFilename(dosFilename); file.getFilename(dosFilename);
SERIAL_ECHO_P(port, dosFilename); SERIAL_ECHO_P(port, dosFilename);
#if ENABLED(LONG_FILENAME_HOST_SUPPORT) #if ENABLED(LONG_FILENAME_HOST_SUPPORT)
@ -856,7 +856,7 @@ void CardReader::setroot() {
sortnames = new char*[fileCnt]; sortnames = new char*[fileCnt];
#endif #endif
#elif ENABLED(SDSORT_USES_STACK) #elif ENABLED(SDSORT_USES_STACK)
char sortnames[fileCnt][SORTED_LONGNAME_MAXLEN + 1]; char sortnames[fileCnt][SORTED_LONGNAME_MAXLEN];
#endif #endif
// Folder sorting needs 1 bit per entry for flags. // Folder sorting needs 1 bit per entry for flags.
@ -873,7 +873,7 @@ void CardReader::setroot() {
// By default re-read the names from SD for every compare // By default re-read the names from SD for every compare
// retaining only two filenames at a time. This is very // retaining only two filenames at a time. This is very
// slow but is safest and uses minimal RAM. // slow but is safest and uses minimal RAM.
char name1[LONG_FILENAME_LENGTH + 1]; char name1[LONG_FILENAME_LENGTH];
#endif #endif

10
Marlin/src/sd/cardreader.h

@ -159,7 +159,7 @@ public:
public: public:
static card_flags_t flag; static card_flags_t flag;
static char filename[FILENAME_LENGTH + 1], longFilename[LONG_FILENAME_LENGTH + 1]; static char filename[FILENAME_LENGTH], longFilename[LONG_FILENAME_LENGTH];
static int8_t autostart_index; static int8_t autostart_index;
#if ENABLED(FAST_FILE_TRANSFER) #if ENABLED(FAST_FILE_TRANSFER)
@ -204,11 +204,11 @@ private:
#if ENABLED(SDSORT_DYNAMIC_RAM) #if ENABLED(SDSORT_DYNAMIC_RAM)
static char **sortshort, **sortnames; static char **sortshort, **sortnames;
#else #else
static char sortshort[SDSORT_LIMIT][FILENAME_LENGTH + 1]; static char sortshort[SDSORT_LIMIT][FILENAME_LENGTH];
static char sortnames[SDSORT_LIMIT][SORTED_LONGNAME_MAXLEN + 1]; static char sortnames[SDSORT_LIMIT][SORTED_LONGNAME_MAXLEN];
#endif #endif
#elif DISABLED(SDSORT_USES_STACK) #elif DISABLED(SDSORT_USES_STACK)
static char sortnames[SDSORT_LIMIT][SORTED_LONGNAME_MAXLEN + 1]; static char sortnames[SDSORT_LIMIT][SORTED_LONGNAME_MAXLEN];
#endif #endif
// Folder sorting uses an isDir array when caching items. // Folder sorting uses an isDir array when caching items.
@ -234,7 +234,7 @@ private:
static uint8_t file_subcall_ctr; static uint8_t file_subcall_ctr;
static uint32_t filespos[SD_PROCEDURE_DEPTH]; static uint32_t filespos[SD_PROCEDURE_DEPTH];
static char proc_filenames[SD_PROCEDURE_DEPTH][MAXPATHNAMELENGTH + 1]; static char proc_filenames[SD_PROCEDURE_DEPTH][MAXPATHNAMELENGTH];
static uint32_t filesize, sdpos; static uint32_t filesize, sdpos;

Loading…
Cancel
Save