diff --git a/rk05.cpp b/rk05.cpp index 44f127b..ab4ee0d 100644 --- a/rk05.cpp +++ b/rk05.cpp @@ -25,7 +25,7 @@ static const char * const regnames[] = { rk05::rk05(bus *const b, std::atomic_bool *const disk_read_acitivity, std::atomic_bool *const disk_write_acitivity) : b(b), - disk_read_acitivity(disk_read_acitivity), + disk_read_acitivity (disk_read_acitivity ), disk_write_acitivity(disk_write_acitivity) { } @@ -281,37 +281,31 @@ void rk05::write_word(const uint16_t addr, const uint16_t v) } } -#if IS_POSIX -json_t *rk05::serialize() const +JsonDocument rk05::serialize() const { - json_t *j = json_object(); + JsonDocument j; - json_t *j_backends = json_array(); + JsonArray j_backends; for(auto & dbe: fhs) - json_array_append(j_backends, dbe->serialize()); - - json_object_set(j, "backends", j_backends); + j_backends.add(dbe->serialize()); + j["backends"] = j_backends; for(int regnr=0; regnr<7; regnr++) - json_object_set(j, format("register-%d", regnr).c_str(), json_integer(registers[regnr])); + j[format("register-%d", regnr)] = registers[regnr]; return j; } -rk05 *rk05::deserialize(const json_t *const j, bus *const b) +rk05 *rk05::deserialize(const JsonDocument j, bus *const b) { - std::vector backends; - rk05 *r = new rk05(b, nullptr, nullptr); r->begin(); - json_t *j_backends = json_object_get(j, "backends"); - for(size_t i=0; iaccess_disk_backends()->push_back(disk_backend::deserialize(json_array_get(j_backends, i))); + for(auto j_backend: j["backends"]) + r->access_disk_backends()->push_back(disk_backend::deserialize(j_backend)); for(int regnr=0; regnr<7; regnr++) - r->registers[regnr] = json_integer_value(json_object_get(j, format("register-%d", regnr).c_str())); + r->registers[regnr] = j[format("register-%d", regnr)]; return r; } -#endif diff --git a/rk05.h b/rk05.h index 9d17a93..9d2f6c9 100644 --- a/rk05.h +++ b/rk05.h @@ -3,6 +3,7 @@ #pragma once +#include #include #include #include @@ -48,10 +49,8 @@ public: void show_state(console *const cnsl) const override; -#if IS_POSIX - json_t *serialize() const; - static rk05 *deserialize(const json_t *const j, bus *const b); -#endif + JsonDocument serialize() const; + static rk05 *deserialize(const JsonDocument j, bus *const b); uint8_t read_byte(const uint16_t addr) override; uint16_t read_word(const uint16_t addr) override;