diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index f46c6a53c..6c8c423c2 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -5744,13 +5744,11 @@ if(eSoundMode!=e_SOUND_MODE_SILENT) - `L` - Reports ling filenames instead of just short filenames. Requires host software parsing. */ case 20: - { KEEPALIVE_STATE(NOT_BUSY); // do not send busy messages during listing. Inhibits the output of manage_heater() SERIAL_PROTOCOLLNRPGM(_N("Begin file list"));////MSG_BEGIN_FILE_LIST - struct CardReader::ls_param params = {.LFN = code_seen('L'), .timestamp = code_seen('T')}; - card.ls(params); + card.ls(CardReader::ls_param(code_seen('L'), code_seen('T'))); SERIAL_PROTOCOLLNRPGM(_N("End file list"));////MSG_END_FILE_LIST - } break; + break; /*! ### M21 - Init SD card M21: Initialize SD card diff --git a/Firmware/cardreader.cpp b/Firmware/cardreader.cpp index 37c9ade97..a86c49e16 100644 --- a/Firmware/cardreader.cpp +++ b/Firmware/cardreader.cpp @@ -63,7 +63,7 @@ char *createFilename(char *buffer,const dir_t &p) //buffer>12characters +* LS_SerialPrint - Print the full path and size of each file to serial output +*/ -void CardReader::lsDive(const char *prepend, SdFile parent, const char * const match/*=NULL*/, LsAction lsAction, struct ls_param *lsParams) { +void CardReader::lsDive(const char *prepend, SdFile parent, const char * const match/*=NULL*/, LsAction lsAction, ls_param lsParams) { static uint8_t recursionCnt = 0; // RAII incrementer for the recursionCnt class _incrementer @@ -102,7 +102,7 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m // Get a new directory object using the full path // and dive recursively into it. - if (lsParams->LFN) + if (lsParams.LFN) printf_P(PSTR("DIR_ENTER: %s \"%s\"\n"), path, longFilename[0] ? longFilename : lfilename); SdFile dir; @@ -114,7 +114,7 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m lsDive(path, dir, NULL, lsAction, lsParams); // close() is done automatically by destructor of SdFile - if (lsParams->LFN) + if (lsParams.LFN) puts_P(PSTR("DIR_EXIT")); } else { @@ -133,7 +133,7 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m MYSERIAL.write(' '); SERIAL_PROTOCOL(p.fileSize); - if (lsParams->timestamp) + if (lsParams.timestamp) { crmodDate = p.lastWriteDate; crmodTime = p.lastWriteTime; @@ -144,7 +144,7 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m printf_P(PSTR(" %#lx"), ((uint32_t)crmodDate << 16) | crmodTime); } - if (lsParams->LFN) + if (lsParams.LFN) printf_P(PSTR(" \"%s\""), LONGEST_FILENAME); SERIAL_PROTOCOLLN(); @@ -189,10 +189,10 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m } // while readDir } -void CardReader::ls(struct ls_param params) +void CardReader::ls(ls_param params) { root.rewind(); - lsDive("",root, NULL, LS_SerialPrint, ¶ms); + lsDive("",root, NULL, LS_SerialPrint, params); } diff --git a/Firmware/cardreader.h b/Firmware/cardreader.h index 7eba0f51d..c6e55428d 100644 --- a/Firmware/cardreader.h +++ b/Firmware/cardreader.h @@ -23,6 +23,8 @@ public: { bool LFN : 1; bool timestamp : 1; + inline ls_param():LFN(0), timestamp(0) { } + inline ls_param(bool LFN, bool timestamp):LFN(LFN), timestamp(timestamp) { } } __attribute__((packed)); void initsd(); @@ -54,7 +56,7 @@ public: uint16_t getWorkDirDepth(); - void ls(struct ls_param params); + void ls(ls_param params); bool chdir(const char * relpath, bool doPresort); void updir(); void setroot(bool doPresort); @@ -137,7 +139,7 @@ private: char* diveDirName; bool diveSubfolder (const char *&fileName); - void lsDive(const char *prepend, SdFile parent, const char * const match=NULL, LsAction lsAction = LS_GetFilename, struct ls_param *lsParams = NULL); + void lsDive(const char *prepend, SdFile parent, const char * const match=NULL, LsAction lsAction = LS_GetFilename, ls_param lsParams = ls_param()); #ifdef SDCARD_SORT_ALPHA void flush_presort(); #endif