andrivet / ADVi3pp

ADVi3++, an alternative and better firmware for Wanhao i3 Plus printers and clones. Fork of Marlin Firmware.
https://community.advi3pp.com
GNU General Public License v3.0
243 stars 119 forks source link

SDCARD_SORT_DATE breaks SDCARD_RATHERRECENTFIRST #323

Closed github138 closed 1 year ago

github138 commented 1 year ago

Description

Sd Card sorting not working as expected after Update to 5.5.0 on my Monoprice Maker Select Plus. Recent files are always at the bottom even with newly formated SD Card. Not sure if this is the best solution but it works.

Benefits

Recent files are on top of the list, again.

andrivet commented 1 year ago

I do not understand you fix. How can SDCARD_RATHERRECENTFIRST be broken? It is not used by ADVi3++.

github138 commented 1 year ago

Tried it with Version 5.6.0. SDCARD_RATHERRECENTFIRST is enabled in Configuration_adv.h together with SDCARD_SORT_DATE.

With this config SD Card sorting is newest files at the bottom. So i need to scroll to several pages to get to the newest files. SD Card format is FAT32. If i disable SDCARD_SORT_DATE in Configuration_adv.h i get an compile error.

Compiling .pio\build\advi3pp_51\FrameworkArduino\CDC.cpp.o Marlin\src\sd\cardreader.cpp:73:22: error: 'uint16_t CardReader::write_date' is not a static data member of 'class CardReader' uint16_t CardReader::write_date, CardReader::write_time; // @advi3++ SD sort by date ^~~~~~ Marlin\src\sd\cardreader.cpp:73:46: error: 'uint16_t CardReader::write_time' is not a static data member of 'class CardReader' uint16_t CardReader::write_date, CardReader::write_time; // @advi3++ SD sort by date ^~~~~~ Marlin\src\sd\cardreader.cpp: In constructor 'CardReader::CardReader()': Marlin\src\sd\cardreader.cpp:177:3: error: 'write_date' was not declared in this scope write_date = write_time = 0; // @advi3++ ^~~~~~ Marlin\src\sd\cardreader.cpp:177:3: note: suggested alternative: 'write' write_date = write_time = 0; // @advi3++ ^~~~~~ write Marlin\src\sd\cardreader.cpp:177:16: error: 'write_time' was not declared in this scope write_date = write_time = 0; // @advi3++ ^~~~~~ Marlin\src\sd\cardreader.cpp:177:16: note: suggested alternative: 'write' write_date = write_time = 0; // @advi3++ ^~~~~~ write Marlin\src\sd\cardreader.cpp: In static member function 'static void CardReader::openFileRead(const char*, uint8_t)': Marlin\src\sd\cardreader.cpp:702:5: error: 'write_date' was not declared in this scope write_date = file.writeDate(); // @advi3++ ^~~~~~ Marlin\src\sd\cardreader.cpp:702:5: note: suggested alternative: 'write' write_date = file.writeDate(); // @advi3++ ^~~~~~ write compilation terminated due to -fmax-errors=5. Compiling .pio\build\advi3pp_51\FrameworkArduino\HardwareSerial.cpp.o *** [.pio\build\advi3pp_51\src\src\sd\cardreader.cpp.o] Error 1 =============================================================== [FAILED] Took 63.36 seconds =============================================================== Environment Status Duration


advi3pp_51 FAILED 00:01:03.361 ========================================================== 1 failed, 0 succeeded in 00:01:03.361 ==========================================================

With this workaround i get newest files on top, again.

andrivet commented 1 year ago

This fix is wrong. The root issue was completely unrelated. See https://github.com/andrivet/ADVi3pp/issues/332