diff --git a/app/include/Serializer.h b/app/include/Serializer.h index 4f11042..2973086 100644 --- a/app/include/Serializer.h +++ b/app/include/Serializer.h @@ -17,9 +17,13 @@ using json = nlohmann::json; class Serializer { public: Serializer(); - void Serialize(std::vector> fans); + void SerializeFans(std::vector> fans); std::vector> - Deserialize(std::vector> availableSensors); + DeserializeFans(std::vector> availableSensors); + + void SerializeTempSensors(std::vector> senors); + std::vector> + DeserializeTempSensors(std::vector> availableSensors); private: void WriteJson(json o); diff --git a/app/src/Serializer.cxx b/app/src/Serializer.cxx index d334613..ea6bcfb 100644 --- a/app/src/Serializer.cxx +++ b/app/src/Serializer.cxx @@ -18,22 +18,18 @@ Serializer::Serializer() { } } -void Serializer::Serialize(vector> fans) { - json fansArr; - - for (auto f : fans) { - fansArr.emplace_back(f->toJson()); - } - +void Serializer::SerializeFans(vector> fans) { json obj; - obj["fans"] = fansArr; + for (auto f : fans) { + obj["fans"].push_back(f->toJson()); + } WriteJson(obj); } vector> -Serializer::Deserialize(vector> availableSensors) { +Serializer::DeserializeFans(vector> availableSensors) { vector> mapping; // Create a for the sensors first, then searching becomes cheaper @@ -57,11 +53,35 @@ Serializer::Deserialize(vector> availableSensors) { } void Serializer::WriteJson(json o) { + json obj; + + if (fs::exists(fs::path(SERIALIZATION_DIR) / FANS_JSON_FILENAME)) { + auto obj = ReadJson(); + } + + for (auto &[key, value] : o.items()) { + obj[key] = value; + } + ofstream ostrm(fs::path(SERIALIZATION_DIR) / FANS_JSON_FILENAME, ios::trunc); - ostrm << o.dump(2) << "\n"; + ostrm << obj.dump(2) << "\n"; } json Serializer::ReadJson() { ifstream istrm(fs::path(SERIALIZATION_DIR) / FANS_JSON_FILENAME); return json::parse(istrm); } + +void Serializer::SerializeTempSensors(vector> sensors) { + json obj; + + for (auto s : sensors) { + obj["tempSensors"].push_back(s->toJson()); + } + + WriteJson(obj); +} +vector> +DeserializeTempSensors(vector> availableSensors) { + return vector>(); +} diff --git a/app/src/main.cxx b/app/src/main.cxx index ca372a9..4510248 100644 --- a/app/src/main.cxx +++ b/app/src/main.cxx @@ -26,10 +26,10 @@ int main() { std::vector> fans; if (fs::exists(fs::path(SERIALIZATION_DIR) / FANS_JSON_FILENAME)) { - fans = s.Deserialize(pwmSensors); + fans = s.DeserializeFans(pwmSensors); } else { fans = m.createMapping(pwmSensors, controls); - s.Serialize(fans); + s.SerializeFans(fans); } for (auto f : fans) { diff --git a/doc/Application Overview.drawio b/doc/Application Overview.drawio new file mode 100644 index 0000000..3691335 --- /dev/null +++ b/doc/Application Overview.drawio @@ -0,0 +1 @@ +5VjbctowEP0aZtqHZHwJhjyCQ9JOQ4fJjfRRsRdbrWwRWdzy9V3ZMsYYUichgbYvIB1pJXH2nLVFw3aj+YUg47DPfWANy/DnDfusYVnmqd3CL4UsNGKa7QwJBPU1VgDX9Ak0aGh0Qn1IShMl50zScRn0eByDJ0sYEYLPytNGnJV3HZMAKsC1R1gVHVJfhhnabhoF/gVoEOY7m4YeiUg+WQNJSHw+W4HsXsN2Becya0VzF5hiL+clizvfMro8mIBY1gl4bDnd/sgd3j3IaWfY+za8fXo8Mu1smSlhE/2LB8N+Qy3V1MeWi5wL8JEa3eVChjzgMWG9Au0KPol9UBsa2CvmXHI+RtBE8CdIudB5JhPJEQplxPQozKm8V+HHuH/W/aFXU+2z+WpnkXdiKRb3+Qqqk8Yct5p5v4hLe0Wg31Eawa7HSJJQLwPPKcsPlJGgfvlW2jWU8Inw4BmuHS1fIgKQz+VkKQ60FfAI8MgYJ4ARSaflcxAt72A5r1AANrQIXiAIp6KHhuUwPG7Xp1NsBqp5TmKc404EnkaP4mYrEyrSKYShSJ2FVML1mKR0zbBylEWgjwBCwvx51qss6QDb0fLVdcfODTsrTGzmzgxXDOwY70RsXtBWmO3cXeBS/c69+vz6fb9+W7WbWc9uOmhpuPpui3kMJasZu7Vaq6bV2vu0mln12g1EYxBETgTsVQ2rpXepjD+qofVaOXxA8a2rCGefimjVKb4ljWwuvpWYa4gTLvKBB7E+9cCqt2OUq7fZ2nv1tv4pr669KB3We1L7b7Bqu45VXR6NeYJu+V+MegCvWRvy8haSCKNBjG2Rnb3LyAOwgUoq5Qr3kCkQOKB4pHhvvFybEFHfTx2fT+joFaUyejfBnWkc3KSut4wCudJkWcZuUmVaazXVrKbKOtmQquUFdue5qtbUq4G6e+Ym2Jo340PEbZ6sMWbXFHfzvQjbdll3OZZrzhgcHmmWsW/STupU6vRGW6vEIjWyzFqC3P8ClzPU7PJqM8JH4xqUl5JKycgrwrJUbEpTOZE7yJTVXn/JalYy5WxIlP1upbtZJ1NHOONmImI+GqlWKCAJ1Z96dZ+wKr5P5qrMjAFeFpfWdvz+5A5uG5arnEcSyFogvePPr35wv11VDEZy75qquH/Ti/vpbtyP3eLP03Rs5T9ou/cb \ No newline at end of file diff --git a/doc/Application Overview.jpg b/doc/Application Overview.jpg new file mode 100644 index 0000000..d9fc213 Binary files /dev/null and b/doc/Application Overview.jpg differ