From 22b48083ce3f11b4c1300cbf88cac09e25e51814 Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Thu, 17 Mar 2022 21:50:48 +0100 Subject: [PATCH] ESP32: menu --- ESP32/main.ino | 2 +- rk05.cpp | 32 +++++++++++++++++++++++++++++--- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/ESP32/main.ino b/ESP32/main.ino index 2405f7f..95e326e 100644 --- a/ESP32/main.ino +++ b/ESP32/main.ino @@ -72,7 +72,7 @@ void setup() { b->add_tty(tty_); Serial.println(F("Load RK05")); - b->add_rk05(new rk05("xxdp+.rk", b)); + b->add_rk05(new rk05("", b)); setBootLoader(b); Serial.print(F("Free RAM after init: ")); diff --git a/rk05.cpp b/rk05.cpp index 248c1b0..3178c0d 100644 --- a/rk05.cpp +++ b/rk05.cpp @@ -35,13 +35,39 @@ rk05::rk05(const std::string & file, bus *const b) : b(b) Serial.print(F("SS : ")); Serial.println(int(SS)); + Serial.println(F("Files on SD-card:")); + if (!sd.begin(SS, SD_SCK_MHZ(15))) sd.initErrorHalt(); - Serial.print(F("Opening: ")); - Serial.println(file.c_str()); + sd.ls("/", LS_DATE | LS_SIZE | LS_R); - if (!fh.open(file.c_str(), O_RDWR)) + std::string selected_file; + + while(Serial.available()) + Serial.read(); + + Serial.print(F("Enter filename: ")); + + for(;;) { + if (Serial.available()) { + char c = Serial.read(); + + if (c == 13 || c == 10) + break; + + if (c >= 32 && c < 127) { + selected_file += c; + + Serial.print(c); + } + } + } + + Serial.print(F("Opening file: ")); + Serial.println(selected_file.c_str()); + + if (!fh.open(selected_file.c_str(), O_RDWR)) sd.errorHalt(F("rk05: open failed")); #else fh = fopen(file.c_str(), "rb");