Add documentation, start extending serialization
Temperature sensors are still missing
This commit is contained in:
@@ -17,9 +17,13 @@ using json = nlohmann::json;
|
||||
class Serializer {
|
||||
public:
|
||||
Serializer();
|
||||
void Serialize(std::vector<std::shared_ptr<Fan>> fans);
|
||||
void SerializeFans(std::vector<std::shared_ptr<Fan>> fans);
|
||||
std::vector<std::shared_ptr<Fan>>
|
||||
Deserialize(std::vector<std::shared_ptr<Sensor>> availableSensors);
|
||||
DeserializeFans(std::vector<std::shared_ptr<Sensor>> availableSensors);
|
||||
|
||||
void SerializeTempSensors(std::vector<std::shared_ptr<Sensor>> senors);
|
||||
std::vector<std::shared_ptr<Sensor>>
|
||||
DeserializeTempSensors(std::vector<std::shared_ptr<Sensor>> availableSensors);
|
||||
|
||||
private:
|
||||
void WriteJson(json o);
|
||||
|
||||
@@ -18,22 +18,18 @@ Serializer::Serializer() {
|
||||
}
|
||||
}
|
||||
|
||||
void Serializer::Serialize(vector<shared_ptr<Fan>> fans) {
|
||||
json fansArr;
|
||||
|
||||
for (auto f : fans) {
|
||||
fansArr.emplace_back(f->toJson());
|
||||
}
|
||||
|
||||
void Serializer::SerializeFans(vector<shared_ptr<Fan>> fans) {
|
||||
json obj;
|
||||
|
||||
obj["fans"] = fansArr;
|
||||
for (auto f : fans) {
|
||||
obj["fans"].push_back(f->toJson());
|
||||
}
|
||||
|
||||
WriteJson(obj);
|
||||
}
|
||||
|
||||
vector<shared_ptr<Fan>>
|
||||
Serializer::Deserialize(vector<shared_ptr<Sensor>> availableSensors) {
|
||||
Serializer::DeserializeFans(vector<shared_ptr<Sensor>> availableSensors) {
|
||||
vector<shared_ptr<Fan>> mapping;
|
||||
|
||||
// Create a for the sensors first, then searching becomes cheaper
|
||||
@@ -57,11 +53,35 @@ Serializer::Deserialize(vector<shared_ptr<Sensor>> 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<shared_ptr<Sensor>> sensors) {
|
||||
json obj;
|
||||
|
||||
for (auto s : sensors) {
|
||||
obj["tempSensors"].push_back(s->toJson());
|
||||
}
|
||||
|
||||
WriteJson(obj);
|
||||
}
|
||||
vector<shared_ptr<Sensor>>
|
||||
DeserializeTempSensors(vector<shared_ptr<Sensor>> availableSensors) {
|
||||
return vector<shared_ptr<Sensor>>();
|
||||
}
|
||||
|
||||
@@ -26,10 +26,10 @@ int main() {
|
||||
std::vector<std::shared_ptr<Fan>> 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) {
|
||||
|
||||
1
doc/Application Overview.drawio
Normal file
1
doc/Application Overview.drawio
Normal file
@@ -0,0 +1 @@
|
||||
<mxfile host="app.diagrams.net" modified="2022-09-24T19:31:05.408Z" agent="5.0 (X11)" etag="F8WQQZ1xw24pL79IvZh_" version="20.2.2" type="device"><diagram id="bxDzWbPEviacuxaYKsiD" name="Page-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</diagram></mxfile>
|
||||
BIN
doc/Application Overview.jpg
Normal file
BIN
doc/Application Overview.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
Reference in New Issue
Block a user