libptpmgmt  1.3
libptpmgmt library that provides the functionality of linuxptp pmc
json.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: LGPL-3.0-or-later
2  SPDX-FileCopyrightText: Copyright © 2021 Erez Geva <ErezGeva2@gmail.com> */
3 
12 #ifndef __PTPMGMT_JSON_H
13 #define __PTPMGMT_JSON_H
14 
15 #ifdef __cplusplus
16 #include "msg.h"
17 
18 __PTPMGMT_NAMESPACE_BEGIN
19 
26 std::string msg2json(const Message &message, int indent = 0);
27 
35 std::string tlv2json(mng_vals_e managementId, const BaseMngTlv *tlv,
36  int indent = 0);
37 
43 class Json2msg
44 {
45  private:
46  std::unique_ptr<BaseMngTlv> m_tlvData;
47  /* Mandatory */
48  mng_vals_e m_managementId;
49  actionField_e m_action;
50  /* optional */
51  enum {
52  have_unicastFlag,
53  have_PTPProfileSpecific,
54  have_domainNumber,
55  have_versionPTP,
56  have_minorVersionPTP,
57  have_sequenceId,
58  have_sdoId,
59  have_srcPort,
60  have_dstPort,
61  have_limit,
62  };
63  bool m_have[have_limit];
64  bool m_unicastFlag;
65  uint8_t m_PTPProfileSpecific, m_domainNumber, m_versionPTP, m_minorVersionPTP;
66  uint16_t m_sequenceId;
67  uint32_t m_sdoId;
68  PortIdentity_t m_srcPort, m_dstPort;
69  public:
70  Json2msg();
71  ~Json2msg();
83  static bool selectLib(const std::string &libName);
90  static const char *loadLibrary();
95  static bool isLibShared();
101  bool fromJson(const std::string &json);
111  bool fromJsonObj(const void *jobj);
116  mng_vals_e managementId() const { return m_managementId; }
122  const BaseMngTlv *dataField() const { return m_tlvData.get(); }
127  actionField_e actionField() const { return m_action; }
132  bool isUnicast() const { return m_unicastFlag; }
137  bool haveIsUnicast() const { return m_have[have_unicastFlag]; }
142  uint8_t PTPProfileSpecific() const { return m_PTPProfileSpecific; }
147  bool havePTPProfileSpecific() const { return m_have[have_PTPProfileSpecific]; }
152  uint8_t domainNumber() const { return m_domainNumber; }
157  bool haveDomainNumber() const { return m_have[have_domainNumber]; }
162  uint8_t versionPTP() const { return m_versionPTP; }
167  bool haveVersionPTP() const { return m_have[have_versionPTP]; }
172  uint8_t minorVersionPTP() const { return m_minorVersionPTP; }
177  bool haveMinorVersionPTP() const { return m_have[have_minorVersionPTP]; }
182  uint16_t sequenceId() const { return m_sequenceId; }
187  bool haveSequenceId() const { return m_have[have_sequenceId]; }
192  uint32_t sdoId() const { return m_sdoId; }
197  bool haveSdoId() const { return m_have[have_sdoId]; }
202  const PortIdentity_t &srcPort() const { return m_srcPort; }
207  bool haveSrcPort() const { return m_have[have_srcPort]; }
212  const PortIdentity_t &dstPort() const { return m_dstPort; }
217  bool haveDstPort() const { return m_have[have_dstPort]; }
222  bool setAction(Message &message) const {
223  return message.setAction(m_action, m_managementId, m_tlvData.get());
224  }
225 };
226 
227 __PTPMGMT_NAMESPACE_END
228 #else /* __cplusplus */
229 #include "c/json.h"
230 #endif /* __cplusplus */
231 
232 #endif /* __PTPMGMT_JSON_H */
Convert a management or a signalling message to JSON.
Create and parse PTP management messages.
Definition: json.h:44
mng_vals_e managementId() const
Definition: json.h:116
bool haveVersionPTP() const
Definition: json.h:167
uint32_t sdoId() const
Definition: json.h:192
bool haveSdoId() const
Definition: json.h:197
actionField_e actionField() const
Definition: json.h:127
bool haveDomainNumber() const
Definition: json.h:157
uint8_t PTPProfileSpecific() const
Definition: json.h:142
uint8_t versionPTP() const
Definition: json.h:162
bool havePTPProfileSpecific() const
Definition: json.h:147
uint8_t domainNumber() const
Definition: json.h:152
bool fromJsonObj(const void *jobj)
bool isUnicast() const
Definition: json.h:132
bool haveSequenceId() const
Definition: json.h:187
bool fromJson(const std::string &json)
static bool isLibShared()
const PortIdentity_t & srcPort() const
Definition: json.h:202
bool haveSrcPort() const
Definition: json.h:207
bool setAction(Message &message) const
Definition: json.h:222
const BaseMngTlv * dataField() const
Definition: json.h:122
static bool selectLib(const std::string &libName)
const PortIdentity_t & dstPort() const
Definition: json.h:212
static const char * loadLibrary()
uint16_t sequenceId() const
Definition: json.h:182
bool haveMinorVersionPTP() const
Definition: json.h:177
bool haveDstPort() const
Definition: json.h:217
uint8_t minorVersionPTP() const
Definition: json.h:172
bool haveIsUnicast() const
Definition: json.h:137
Handle PTP management message.
Definition: msg.h:58
bool setAction(actionField_e actionField, mng_vals_e tlv_id, const BaseMngTlv *dataSend=nullptr)
__PTPMGMT_NAMESPACE_BEGIN std::string msg2json(const Message &message, int indent=0)
std::string tlv2json(mng_vals_e managementId, const BaseMngTlv *tlv, int indent=0)
mng_vals_e
Management TLVs ID.
Definition: mngIds.h:29
Definition: types.h:962
Definition: types.h:717
actionField_e
Definition: types.h:191