Aktualizr
C++ SOTA Client
versionreport.h
1 #ifndef OPCUABRIDGE_VERSIONREPORT_H_
2 #define OPCUABRIDGE_VERSIONREPORT_H_
3 
4 #include <utility>
5 
6 #include "ecuversionmanifest.h"
7 
8 #include "common.h"
9 
10 namespace opcuabridge {
12  public:
13  VersionReport() = default;
14  virtual ~VersionReport() = default;
15 
16  const int& getTokenForTimeServer() const { return tokenForTimeServer_; }
17  void setTokenForTimeServer(const int& tokenForTimeServer) { tokenForTimeServer_ = tokenForTimeServer; }
18  ECUVersionManifest& getEcuVersionManifest() { return ecuVersionManifest_; }
19  const ECUVersionManifest& getEcuVersionManifest() const { return ecuVersionManifest_; }
20  void setEcuVersionManifest(const ECUVersionManifest& ecuVersionManifest) { ecuVersionManifest_ = ecuVersionManifest; }
21  INITSERVERNODESET_FUNCTION_DEFINITION(VersionReport) // InitServerNodeset(UA_Server*)
22  CLIENTREAD_FUNCTION_DEFINITION() // ClientRead(UA_Client*)
23  CLIENTWRITE_FUNCTION_DEFINITION() // ClientWrite(UA_Client*)
24 
25  void setOnBeforeReadCallback(MessageOnBeforeReadCallback<VersionReport>::type cb) {
26  on_before_read_cb_ = std::move(cb);
27  }
28  void setOnAfterWriteCallback(MessageOnAfterWriteCallback<VersionReport>::type cb) {
29  on_after_write_cb_ = std::move(cb);
30  }
31 
32  protected:
33  int tokenForTimeServer_{};
34  ECUVersionManifest ecuVersionManifest_;
35 
36  MessageOnBeforeReadCallback<VersionReport>::type on_before_read_cb_;
37  MessageOnAfterWriteCallback<VersionReport>::type on_after_write_cb_;
38 
39  private:
40  static const char* node_id_;
41 
42  Json::Value wrapMessage() const {
43  Json::Value v;
44  v["tokenForTimeServer"] = getTokenForTimeServer();
45  v["ecuVersionManifest"] = getEcuVersionManifest().wrapMessage();
46  return v;
47  }
48  void unwrapMessage(Json::Value v) {
49  setTokenForTimeServer(v["tokenForTimeServer"].asInt());
51  vm.unwrapMessage(v["ecuVersionManifest"]);
52  setEcuVersionManifest(vm);
53  }
54 
55  WRAPMESSAGE_FUCTION_DEFINITION(VersionReport)
56  UNWRAPMESSAGE_FUCTION_DEFINITION(VersionReport)
57  READ_FUNCTION_FRIEND_DECLARATION(VersionReport)
58  WRITE_FUNCTION_FRIEND_DECLARATION(VersionReport)
59  INTERNAL_FUNCTIONS_FRIEND_DECLARATION(VersionReport)
60 
61 #ifdef OPCUABRIDGE_ENABLE_SERIALIZATION
62  SERIALIZE_FUNCTION_FRIEND_DECLARATION
63 
64  DEFINE_SERIALIZE_METHOD() {
65  SERIALIZE_FIELD(ar, "tokenForTimeServer_", tokenForTimeServer_);
66  SERIALIZE_FIELD(ar, "ecuVersionManifest_", ecuVersionManifest_);
67  }
68 #endif // OPCUABRIDGE_ENABLE_SERIALIZATION
69 };
70 } // namespace opcuabridge
71 
72 #endif // OPCUABRIDGE_VERSIONREPORT_H_