diff --git a/ESP32/disk_device.h b/ESP32/disk_device.h new file mode 120000 index 0000000..dbcee94 --- /dev/null +++ b/ESP32/disk_device.h @@ -0,0 +1 @@ +../disk_device.h \ No newline at end of file diff --git a/ESP32/main.ino b/ESP32/main.ino index 1609ba9..618845e 100644 --- a/ESP32/main.ino +++ b/ESP32/main.ino @@ -193,12 +193,7 @@ void recall_configuration(console *const cnsl) cnsl->put_string_lf("Starting network..."); start_network(cnsl); - auto disk_configuration = load_disk_configuration(cnsl); - - if (disk_configuration.has_value()) { - cnsl->put_string_lf("Starting disk..."); - set_disk_configuration(b, cnsl, disk_configuration.value()); - } + // TODO } #endif diff --git a/debugger.cpp b/debugger.cpp index 4d696ec..c48241b 100644 --- a/debugger.cpp +++ b/debugger.cpp @@ -10,7 +10,6 @@ #include #else #include -#include #include #endif @@ -47,155 +46,12 @@ void check_network(console *const c); void start_network(console *const c); void set_tty_serial_speed(console *const c, const uint32_t bps); - -void recall_configuration(console *const c); #endif -#define NET_DISK_CFG_FILE "net-disk.json" - #if !defined(BUILD_FOR_RP2040) && !defined(linux) extern SdFs SD; #endif -#ifndef linux -#define MAX_CFG_SIZE 1024 -StaticJsonDocument json_doc; -#endif - -typedef enum { BE_NETWORK, BE_SD } disk_backend_t; - -#if !defined(BUILD_FOR_RP2040) -std::optional, std::vector, std::string> > load_disk_configuration(console *const c) -{ -#if IS_POSIX - json_error_t error; - json_t *json = json_load_file("." NET_DISK_CFG_FILE, JSON_REJECT_DUPLICATES, &error); - if (!json) { - c->put_string_lf(format("Cannot load ." NET_DISK_CFG_FILE ": %s", error.text)); - - return { }; - } - - std::string nbd_host = json_string_value (json_object_get(json, "NBD-host")); - int nbd_port = json_integer_value(json_object_get(json, "NBD-port")); - - std::string disk_type_temp = json_string_value (json_object_get(json, "disk-type")); - - std::string tape_file = json_string_value (json_object_get(json, "tape-file")); - - json_decref(json); -#else - File dataFile = LittleFS.open("/" NET_DISK_CFG_FILE, "r"); - if (!dataFile) - return { }; - - size_t size = dataFile.size(); - - char buffer[MAX_CFG_SIZE]; - - if (size > sizeof buffer) { // this should not happen - dataFile.close(); - - return { }; - } - - dataFile.read(reinterpret_cast(buffer), size); - buffer[(sizeof buffer) - 1] = 0x00; - - dataFile.close(); - - auto error = deserializeJson(json_doc, buffer); - if (error) // this should not happen - return { }; - - String nbd_host = json_doc["NBD-host"]; - int nbd_port = json_doc["NBD-port"]; - - String disk_type_temp = json_doc["disk-type"]; - - String tape_file = json_doc["tape-file"]; -#endif - - disk_type_t disk_type = DT_RK05; - - if (disk_type_temp == "rl02") - disk_type = DT_RL02; - else if (disk_type_temp == "tape") - disk_type = DT_TAPE; - - disk_backend *d = new disk_backend_nbd(nbd_host.c_str(), nbd_port); - - if (d->begin(false) == false) { - c->put_string_lf("Cannot initialize NBD client from configuration file"); - delete d; - return { }; - } - - c->put_string_lf(format("Connection to NBD server at %s:%d success", nbd_host.c_str(), nbd_port)); - - if (disk_type == DT_RK05) - return { { { d }, { }, "" } }; - - if (disk_type == DT_RL02) - return { { { }, { d }, "" } }; - - if (disk_type == DT_TAPE) - return { { { }, { }, tape_file.c_str() } }; - - return { }; -} - -bool save_disk_configuration(const std::string & nbd_host, const int nbd_port, const std::optional & tape_file, const disk_type_t dt, console *const cnsl) -{ -#if IS_POSIX - json_t *json = json_object(); - - json_object_set(json, "NBD-host", json_string(nbd_host.c_str())); - json_object_set(json, "NBD-port", json_integer(nbd_port)); - - if (dt == DT_RK05) - json_object_set(json, "disk-type", json_string("rk05")); - else if (dt == DT_RL02) - json_object_set(json, "disk-type", json_string("rl02")); - else - json_object_set(json, "disk-type", json_string("tape")); - - json_object_set(json, "tape-file", json_string(tape_file.has_value() ? tape_file.value().c_str() : "")); - - bool succeeded = json_dump_file(json, "." NET_DISK_CFG_FILE, 0) == 0; - json_decref(json); - - if (succeeded == false) { - cnsl->put_string_lf(format("Cannot write ." NET_DISK_CFG_FILE)); - - return false; - } -#else - json_doc["NBD-host"] = nbd_host; - json_doc["NBD-port"] = nbd_port; - - if (dt == DT_RK05) - json_doc["disk-type"] = "rk05"; - else if (dt == DT_RL02) - json_doc["disk-type"] = "rl02"; - else - json_doc["disk-type"] = "tape"; - - json_doc["tape-file"] = tape_file.has_value() ? tape_file.value() : ""; - - File dataFile = LittleFS.open("/" NET_DISK_CFG_FILE, "w"); - if (!dataFile) - return false; - - serializeJson(json_doc, dataFile); - - dataFile.close(); -#endif - - return true; -} -#endif - #if !defined(BUILD_FOR_RP2040) std::optional select_nbd_server(console *const cnsl) { @@ -995,11 +851,6 @@ void debugger(console *const cnsl, bus *const b, std::atomic_uint32_t *const sto cnsl->put_string_lf("serspd requires an (decimal) parameter"); } - continue; - } - else if (cmd == "init") { - recall_configuration(cnsl); - continue; } #endif @@ -1160,7 +1011,6 @@ void debugger(console *const cnsl, bus *const b, std::atomic_uint32_t *const sto "startnet - start network", "chknet - check network status", "serspd - set serial speed in bps (8N1 are default)", - "init - reload (disk-)configuration from flash", #endif "cfgdisk - configure disk", nullptr diff --git a/debugger.h b/debugger.h index 6a39e46..083f0a1 100644 --- a/debugger.h +++ b/debugger.h @@ -6,10 +6,6 @@ #include "gen.h" -std::optional, std::vector, std::string> > load_disk_configuration(console *const c); -bool save_disk_configuration(const std::string & nbd_host, const int nbd_port, const disk_type_t dt); -void set_disk_configuration(bus *const b, console *const cnsl, std::tuple, std::vector, std::string> & disk_files); - int disassemble(cpu *const c, console *const cnsl, const uint16_t pc, const bool instruction_only); void debugger(console *const cnsl, bus *const b, std::atomic_uint32_t *const stop_event, const bool tracing);