- no assert when accessing memory beyond boundaries, bus should take care of this - getting (slowly) rid of camelcasing
58 lines
1,021 B
C++
58 lines
1,021 B
C++
// (C) 2018-2024 by Folkert van Heusden
|
|
// Released under MIT license
|
|
|
|
#if defined(ESP32)
|
|
#include <Arduino.h>
|
|
#endif
|
|
#include <cstring>
|
|
|
|
#include "memory.h"
|
|
|
|
|
|
memory::memory(const uint32_t size) : size(size)
|
|
{
|
|
#if defined(ESP32)
|
|
Serial.print(F("Memory size (in bytes, decimal): "));
|
|
Serial.println(size);
|
|
#endif
|
|
|
|
m = new uint8_t[size]();
|
|
}
|
|
|
|
memory::~memory()
|
|
{
|
|
delete [] m;
|
|
}
|
|
|
|
void memory::reset()
|
|
{
|
|
memset(m, 0x00, size);
|
|
}
|
|
|
|
#if IS_POSIX
|
|
json_t *memory::serialize() const
|
|
{
|
|
json_t *j = json_object();
|
|
|
|
json_object_set(j, "size", json_integer(size));
|
|
|
|
json_t *ja = json_array();
|
|
for(size_t i=0; i<size; i++)
|
|
json_array_append(ja, json_integer(m[i]));
|
|
json_object_set(j, "contents", ja);
|
|
|
|
return j;
|
|
}
|
|
|
|
memory *memory::deserialize(const json_t *const j)
|
|
{
|
|
size_t size = json_integer_value(json_object_get(j, "size"));
|
|
memory *m = new memory(size);
|
|
|
|
json_t *ja = json_object_get(j, "contents");
|
|
for(size_t i=0; i<size; i++)
|
|
m->m[i] = json_integer_value(json_array_get(ja, i));
|
|
|
|
return m;
|
|
}
|
|
#endif
|