system: switch czechlight-system to pull ops data

Czechlight-system YANG model's operational data are currently pushed
into Sysrepo. However, we want to implement also an overview of current
firmware slot status (see next commit). We can't attach to any D-Bus
signal that would inform us about changes, because the RAUC slot status
data are provided by the GetSlotStatus function [1] and the data might be
changed externally (e.g. by marking the slot good or bad) any time.

It would be hard to follow the changes and propagate them, so let's just
switch everything here to pulling ops data. The next commit will add the
actual slot status retrieval.

Also note, that we have two separate subscriptions here. One for the RPC
and one for the operational data. This is due to Sysrepo limitation
described here [2].

[1] https://rauc.readthedocs.io/en/v1.4/reference.html#gdbus-method-de-pengutronix-rauc-installer-getslotstatus
[2] https://netopeer.liberouter.org/doc/sysrepo/master/html/subs.html

Change-Id: Ie7c84381f20d4ba0a41b0a3b1c1cea9585f99749
diff --git a/src/system/Firmware.h b/src/system/Firmware.h
index 32fce53..6ab030e 100644
--- a/src/system/Firmware.h
+++ b/src/system/Firmware.h
@@ -7,6 +7,7 @@
 #pragma once
 
 #include <filesystem>
+#include <mutex>
 #include <sdbus-c++/sdbus-c++.h>
 #include <sysrepo-cpp/Session.hpp>
 #include "system/RAUC.h"
@@ -20,9 +21,11 @@
 
 private:
     std::shared_ptr<::sysrepo::Connection> m_srConn;
-    std::shared_ptr<::sysrepo::Session> m_srSession;
-    std::shared_ptr<::sysrepo::Subscribe> m_srSubscribe;
+    std::shared_ptr<::sysrepo::Session> m_srSessionOps, m_srSessionRPC;
+    std::shared_ptr<::sysrepo::Subscribe> m_srSubscribeOps, m_srSubscribeRPC;
     std::shared_ptr<RAUC> m_rauc;
+    std::mutex m_mtx; //! @brief locks access to cached elements that are shared from multiple threads
+    std::string m_installStatus, m_installMessage;
     velia::Log m_log;
 };
 }