Skip to content

Commit

Permalink
πŸ§‘β€πŸ’» SD card
Browse files Browse the repository at this point in the history
  • Loading branch information
thinkyhead committed Feb 10, 2024
1 parent 8753015 commit 6b65665
Show file tree
Hide file tree
Showing 16 changed files with 273 additions and 209 deletions.
4 changes: 2 additions & 2 deletions Marlin/src/feature/easythreed_ui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -195,9 +195,9 @@ void EasythreedUI::printButton() {
return; // Bail out
}
card.ls(); // List all files to serial output
const uint16_t filecnt = card.countFilesInWorkDir(); // Count printable files in cwd
const int16_t filecnt = card.get_num_items(); // Count printable files in cwd
if (filecnt == 0) return; // None are printable?
card.selectFileByIndex(filecnt); // Select the last file according to current sort options
card.selectFileByIndex(filecnt); // Select the last file (without sort)
card.openAndPrintFile(card.filename); // Start printing it
} break;
case PF_PAUSE: { // Pause printing (not currently firing)
Expand Down
10 changes: 5 additions & 5 deletions Marlin/src/lcd/e3v2/creality/dwin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ void Scroll_Menu(const uint8_t dir) {
}

inline uint16_t nr_sd_menu_items() {
return card.get_num_Files() + !card.flag.workDirIsRoot;
return card.get_num_items() + !card.flag.workDirIsRoot;
}

void Erase_Menu_Text(const uint8_t line) {
Expand Down Expand Up @@ -1830,9 +1830,9 @@ void MarlinUI::refresh() { /* Nothing to see here */ }
void Init_Shift_Name() {
const bool is_subdir = !card.flag.workDirIsRoot;
const int8_t filenum = select_file.now - 1 - is_subdir; // Skip "Back" and ".."
const uint16_t fileCnt = card.get_num_Files();
const int16_t fileCnt = card.get_num_items();
if (WITHIN(filenum, 0, fileCnt - 1)) {
card.getfilename_sorted(SD_ORDER(filenum, fileCnt));
card.selectFileByIndexSorted(filenum);
char * const name = card.longest_filename();
make_name_without_ext(shift_name, name, 100);
}
Expand All @@ -1857,7 +1857,7 @@ void Draw_SDItem(const uint16_t item, int16_t row=-1) {
return;
}

card.getfilename_sorted(SD_ORDER(item - is_subdir, card.get_num_Files()));
card.selectFileByIndexSorted(item - is_subdir);
char * const name = card.longest_filename();

#if ENABLED(SCROLL_LONG_FILENAMES)
Expand Down Expand Up @@ -2223,7 +2223,7 @@ void HMI_SelectFile() {
}
else {
const uint16_t filenum = select_file.now - 1 - hasUpDir;
card.getfilename_sorted(SD_ORDER(filenum, card.get_num_Files()));
card.selectFileByIndexSorted(filenum);

// Enter that folder!
if (card.flag.filenameIsDir) {
Expand Down
8 changes: 4 additions & 4 deletions Marlin/src/lcd/e3v2/jyersui/dwin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -808,7 +808,7 @@ void CrealityDWINClass::Draw_SD_Item(const uint8_t item, const uint8_t row) {
if (item == 0)
Draw_Menu_Item(0, ICON_Back, card.flag.workDirIsRoot ? F("Back") : F(".."));
else {
card.getfilename_sorted(SD_ORDER(item - 1, card.get_num_Files()));
card.selectFileByIndexSorted(item - 1);
char * const filename = card.longest_filename();
size_t max = MENU_CHAR_LIMIT;
size_t pos = strlen(filename), len = pos;
Expand Down Expand Up @@ -4283,7 +4283,7 @@ void CrealityDWINClass::File_Control() {
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) {
if (selection > 0) {
card.getfilename_sorted(SD_ORDER(selection - 1, card.get_num_Files()));
card.selectFileByIndexSorted(selection - 1);
char * const filename = card.longest_filename();
size_t len = strlen(filename);
size_t pos = len;
Expand All @@ -4302,7 +4302,7 @@ void CrealityDWINClass::File_Control() {
}
return;
}
if (encoder_diffState == ENCODER_DIFF_CW && selection < card.get_num_Files()) {
if (encoder_diffState == ENCODER_DIFF_CW && selection < card.get_num_items()) {
DWIN_Draw_Rectangle(1, Color_Bg_Black, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33);
if (selection > 0) {
DWIN_Draw_Rectangle(1, Color_Bg_Black, LBLX, MBASE(selection - scrollpos) - 14, 271, MBASE(selection - scrollpos) + 28);
Expand Down Expand Up @@ -4342,7 +4342,7 @@ void CrealityDWINClass::File_Control() {
}
}
else {
card.getfilename_sorted(SD_ORDER(selection - 1, card.get_num_Files()));
card.selectFileByIndexSorted(selection - 1);
if (card.flag.filenameIsDir) {
card.cd(card.filename);
Draw_SD_List();
Expand Down
8 changes: 4 additions & 4 deletions Marlin/src/lcd/e3v2/proui/dwin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -873,7 +873,7 @@ void SetMediaAutoMount() {
}

inline uint16_t nr_sd_menu_items() {
return _MIN(card.get_num_Files() + !card.flag.workDirIsRoot, MENU_MAX_ITEMS);
return _MIN(card.get_num_items() + !card.flag.workDirIsRoot, MENU_MAX_ITEMS);
}

void make_name_without_ext(char *dst, char *src, size_t maxlen=MENU_CHAR_LIMIT) {
Expand Down Expand Up @@ -920,7 +920,7 @@ void onClickSDItem() {
if (hasUpDir && CurrentMenu->selected == 1) return SDCard_Up();
else {
const uint16_t filenum = CurrentMenu->selected - 1 - hasUpDir;
card.getfilename_sorted(SD_ORDER(filenum, card.get_num_Files()));
card.selectFileByIndexSorted(filenum);

// Enter that folder!
if (card.flag.filenameIsDir) return SDCard_Folder(card.filename);
Expand Down Expand Up @@ -963,7 +963,7 @@ void onClickSDItem() {
last_itemselected = selected;
if (selected >= 1 + hasUpDir) {
const int8_t filenum = selected - 1 - hasUpDir; // Skip "Back" and ".."
card.getfilename_sorted(SD_ORDER(filenum, card.get_num_Files()));
card.selectFileByIndexSorted(filenum);
make_name_without_ext(shift_name, card.longest_filename(), LONG_FILENAME_LENGTH);
shift_len = strlen(shift_name);
shift_amt = 0;
Expand Down Expand Up @@ -991,7 +991,7 @@ void onDrawFileName(MenuItemClass* menuitem, int8_t line) {
}
else {
uint8_t icon;
card.getfilename_sorted(SD_ORDER(menuitem->pos - is_subdir - 1, card.get_num_Files()));
card.selectFileByIndexSorted(menuitem->pos - is_subdir - 1);
make_name_without_ext(shift_name, card.longest_filename());
icon = card.flag.filenameIsDir ? ICON_Folder : card.fileIsBinary() ? ICON_Binary : ICON_File;
Draw_Menu_Line(line, icon, shift_name);
Expand Down
4 changes: 2 additions & 2 deletions Marlin/src/lcd/extui/malyan/malyan.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -325,8 +325,8 @@ void process_lcd_s_command(const char *command) {
// select a file for printing during a print, there's
// little reason not to do it this way.
char message_buffer[MAX_CURLY_COMMAND];
uint16_t file_count = card.get_num_Files();
for (uint16_t i = 0; i < file_count; i++) {
int16_t file_count = card.get_num_items();
for (int16_t i = 0; i < file_count; i++) {
card.selectFileByIndex(i);
sprintf_P(message_buffer, card.flag.filenameIsDir ? PSTR("{DIR:%s}") : PSTR("{FILE:%s}"), card.longest_filename());
write_to_lcd(message_buffer);
Expand Down
6 changes: 3 additions & 3 deletions Marlin/src/lcd/extui/mks_ui/draw_print_file.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,11 @@ uint8_t sel_id = 0;
else
card.cdroot();

const uint16_t fileCnt = card.get_num_Files();
const int16_t fileCnt = card.get_num_items();

for (uint16_t i = 0; i < fileCnt; i++) {
for (int16_t i = 0; i < fileCnt; i++) {
if (list_file.Sd_file_cnt == list_file.Sd_file_offset) {
card.getfilename_sorted(SD_ORDER(i, fileCnt));
card.selectFileByIndexSorted(i);

list_file.IsFolder[valid_name_cnt] = card.flag.filenameIsDir;
strcpy(list_file.file_name[valid_name_cnt], list_file.curDirPath);
Expand Down
19 changes: 13 additions & 6 deletions Marlin/src/lcd/extui/mks_ui/wifi_module.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -817,19 +817,26 @@ uint8_t Explore_Disk(char *path , uint8_t recu_level) {

if (!path) return 0;

const uint8_t fileCnt = card.get_num_Files();
const int16_t fileCnt = card.get_num_items();

for (uint8_t i = 0; i < fileCnt; i++) {
card.getfilename_sorted(SD_ORDER(i, fileCnt));
ZERO(tmp);
strcpy(tmp, card.filename);
MediaFile file;
MediaFile *diveDir;
for (int16_t i = 0; i < fileCnt; i++) {
card.selectFileByIndexSorted(i);

ZERO(Fstream);
strcpy(Fstream, tmp);
strcpy(Fstream, card.filename);

if (card.flag.filenameIsDir && recu_level <= 10)
strcat_P(Fstream, PSTR(".DIR"));

strcat_P(Fstream, PSTR(" 0")); // report 0 file size

if (with_longnames) {
strcat_P(Fstream, PSTR(" "));
strcat_P(Fstream, card.longest_filename());
}

strcat_P(Fstream, PSTR("\r\n"));
send_to_wifi((uint8_t*)Fstream, strlen(Fstream));
}
Expand Down
18 changes: 5 additions & 13 deletions Marlin/src/lcd/extui/ui_api.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1166,12 +1166,12 @@ namespace ExtUI {

FileList::FileList() { refresh(); }

void FileList::refresh() { num_files = 0xFFFF; }
void FileList::refresh() { }

bool FileList::seek(const uint16_t pos, const bool skip_range_check) {
#if HAS_MEDIA
if (!skip_range_check && (pos + 1) > count()) return false;
card.getfilename_sorted(SD_ORDER(pos, count()));
card.selectFileByIndexSorted(pos);
return card.filename[0] != '\0';
#else
UNUSED(pos);
Expand All @@ -1197,27 +1197,19 @@ namespace ExtUI {
}

uint16_t FileList::count() {
return TERN0(HAS_MEDIA, (num_files = (num_files == 0xFFFF ? card.get_num_Files() : num_files)));
return TERN0(HAS_MEDIA, card.get_num_items());
}

bool FileList::isAtRootDir() {
return TERN1(HAS_MEDIA, card.flag.workDirIsRoot);
}

void FileList::upDir() {
#if HAS_MEDIA
card.cdup();
num_files = 0xFFFF;
#endif
TERN_(HAS_MEDIA, card.cdup());
}

void FileList::changeDir(const char * const dirname) {
#if HAS_MEDIA
card.cd(dirname);
num_files = 0xFFFF;
#else
UNUSED(dirname);
#endif
TERN(HAS_MEDIA, card.cd(dirname), UNUSED(dirname));
}

} // namespace ExtUI
Expand Down
3 changes: 0 additions & 3 deletions Marlin/src/lcd/extui/ui_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -434,9 +434,6 @@ namespace ExtUI {
void resumePrint();

class FileList {
private:
uint16_t num_files;

public:
FileList();
void refresh();
Expand Down
26 changes: 14 additions & 12 deletions Marlin/src/lcd/menu/menu_media.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -109,10 +109,10 @@ void menu_media_filelist() {
ui.encoder_direction_menus();

#if HAS_MARLINUI_U8GLIB
static uint16_t fileCnt;
if (ui.first_page) fileCnt = card.get_num_Files();
static int16_t fileCnt;
if (ui.first_page) fileCnt = card.get_num_items();
#else
const uint16_t fileCnt = card.get_num_Files();
const int16_t fileCnt = card.get_num_items();
#endif

START_MENU();
Expand All @@ -129,16 +129,18 @@ void menu_media_filelist() {
else if (card.isMounted())
ACTION_ITEM_F(F(LCD_STR_FOLDER " .."), lcd_sd_updir);

if (ui.should_draw()) for (uint16_t i = 0; i < fileCnt; i++) {
if (_menuLineNr == _thisItemNr) {
card.getfilename_sorted(SD_ORDER(i, fileCnt));
if (card.flag.filenameIsDir)
MENU_ITEM(sdfolder, MSG_MEDIA_MENU, card);
else
MENU_ITEM(sdfile, MSG_MEDIA_MENU, card);
if (ui.should_draw()) {
for (int16_t i = 0; i < fileCnt; i++) {
if (_menuLineNr != _thisItemNr)
SKIP_ITEM();
else {
card.selectFileByIndexSorted(i);
if (card.flag.filenameIsDir)
MENU_ITEM(sdfolder, MSG_MEDIA_MENU, card);
else
MENU_ITEM(sdfile, MSG_MEDIA_MENU, card);
}
}
else
SKIP_ITEM();
}
END_MENU();
}
Expand Down
Loading

0 comments on commit 6b65665

Please sign in to comment.