rk05 new serialization
This commit is contained in:
parent
cc99ce6e19
commit
eda3dd9866
2 changed files with 14 additions and 21 deletions
28
rk05.cpp
28
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) :
|
rk05::rk05(bus *const b, std::atomic_bool *const disk_read_acitivity, std::atomic_bool *const disk_write_acitivity) :
|
||||||
b(b),
|
b(b),
|
||||||
disk_read_acitivity(disk_read_acitivity),
|
disk_read_acitivity (disk_read_acitivity ),
|
||||||
disk_write_acitivity(disk_write_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
|
JsonDocument rk05::serialize() const
|
||||||
json_t *rk05::serialize() const
|
|
||||||
{
|
{
|
||||||
json_t *j = json_object();
|
JsonDocument j;
|
||||||
|
|
||||||
json_t *j_backends = json_array();
|
JsonArray j_backends;
|
||||||
for(auto & dbe: fhs)
|
for(auto & dbe: fhs)
|
||||||
json_array_append(j_backends, dbe->serialize());
|
j_backends.add(dbe->serialize());
|
||||||
|
j["backends"] = j_backends;
|
||||||
json_object_set(j, "backends", j_backends);
|
|
||||||
|
|
||||||
for(int regnr=0; regnr<7; regnr++)
|
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;
|
return j;
|
||||||
}
|
}
|
||||||
|
|
||||||
rk05 *rk05::deserialize(const json_t *const j, bus *const b)
|
rk05 *rk05::deserialize(const JsonDocument j, bus *const b)
|
||||||
{
|
{
|
||||||
std::vector<disk_backend *> backends;
|
|
||||||
|
|
||||||
rk05 *r = new rk05(b, nullptr, nullptr);
|
rk05 *r = new rk05(b, nullptr, nullptr);
|
||||||
r->begin();
|
r->begin();
|
||||||
|
|
||||||
json_t *j_backends = json_object_get(j, "backends");
|
for(auto j_backend: j["backends"])
|
||||||
for(size_t i=0; i<json_array_size(j_backends); i++)
|
r->access_disk_backends()->push_back(disk_backend::deserialize(j_backend));
|
||||||
r->access_disk_backends()->push_back(disk_backend::deserialize(json_array_get(j_backends, i)));
|
|
||||||
|
|
||||||
for(int regnr=0; regnr<7; regnr++)
|
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;
|
return r;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
7
rk05.h
7
rk05.h
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <ArduinoJson.h>
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -48,10 +49,8 @@ public:
|
||||||
|
|
||||||
void show_state(console *const cnsl) const override;
|
void show_state(console *const cnsl) const override;
|
||||||
|
|
||||||
#if IS_POSIX
|
JsonDocument serialize() const;
|
||||||
json_t *serialize() const;
|
static rk05 *deserialize(const JsonDocument j, bus *const b);
|
||||||
static rk05 *deserialize(const json_t *const j, bus *const b);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
uint8_t read_byte(const uint16_t addr) override;
|
uint8_t read_byte(const uint16_t addr) override;
|
||||||
uint16_t read_word(const uint16_t addr) override;
|
uint16_t read_word(const uint16_t addr) override;
|
||||||
|
|
Loading…
Add table
Reference in a new issue