clkmgr 2.0
Clock Manager API library to receive events from the PTP service
Loading...
Searching...
No Matches
timebase_configs.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 SPDX-FileCopyrightText: Copyright © 2025 Intel Corporation. */
3
12#ifndef CLIENT_TIMEBASE_CONFIGS_H
13#define CLIENT_TIMEBASE_CONFIGS_H
14
15#include "pub/clkmgr/utility.h"
16#include "pub/clkmgr/types.h"
17#include <map>
18#include <string>
19
21
22class ClientConnectMessage;
23class TimeBaseRecord;
25struct TimeBaseCfg;
26
30class PTPCfg
31{
32 private:
33 std::string m_ifName;
34 uint8_t m_transportSpecific = 1;
35 uint8_t m_domainNumber = 0;
36 int m_ifIndex = -1;
37 int m_ptpIndex = -1;
39 protected:
41 friend class TimeBaseConfigurations;
42 friend class TimeBaseRecord;
43 PTPCfg() = default;
52 PTPCfg(const std::string &ifName, uint8_t transportSpecific,
53 uint8_t domainNumber, int ifIndex = -1, int ptpIndex = -1);
56 public:
61 const std::string &ifName() const;
66 const char *ifName_c() const;
71 int ifIndex() const;
76 int ptpIndex() const;
81 uint8_t transportSpecific() const;
86 uint8_t domainNumber() const;
87};
88
93{
94 private:
95 size_t m_index = 0;
96 std::string m_name;
97 bool m_have_ptp = false;
98 PTPCfg m_ptp;
99 bool m_have_sys = false;
101 protected:
102 #ifndef SWIG
104 friend class TimeBaseConfigurations;
110 TimeBaseRecord(size_t index, const std::string &name);
115 void setPtp(PTPCfg &&ptp);
117 #endif /* SWIG */
118
119 public:
120 TimeBaseRecord() = default;
125 size_t index() const;
130 const std::string &name() const;
135 const char *name_c() const;
140 bool havePtp() const;
145 const PTPCfg &ptp() const;
150 bool haveSysClock() const;
151};
152
157{
158 private:
159 std::map<size_t, TimeBaseRecord> m_cfgs;
163 TimeBaseConfigurations() = default;
168 static TimeBaseConfigurations &getInstWr();
169
170 protected:
172 friend class ClientConnectMessage;
177 static void addTimeBaseCfg(const struct TimeBaseCfg &cfg);
180 public:
181 #ifndef SWIG
183 class iterator
184 {
185 private:
186 std::map<size_t, TimeBaseRecord>::const_iterator it;
187 protected:
188 iterator(const std::map<size_t, TimeBaseRecord>::const_iterator &it);
189 friend class TimeBaseConfigurations;
190 public:
191 /* iterator need to support these following operators */
192 iterator &operator++(); /* prefix increment */
193 iterator &operator++(int); /* postfix increment */
194 const TimeBaseRecord &operator*();
195 bool operator!=(iterator &o);
196 };
198 #endif /* SWIG */
209 static const TimeBaseRecord &getRecord(size_t timeBaseIndex);
215 static bool isTimeBaseIndexPresent(size_t timeBaseIndex);
222 static bool BaseNameToBaseIndex(const std::string &timeBaseName,
223 size_t &timeBaseIndex);
228 static size_t size();
229 #ifndef SWIG
235 static iterator begin();
241 static iterator end();
242 #endif /* SWIG */
243};
244
246
247#endif /* CLIENT_TIMEBASE_CONFIGS_H */
Definition timebase_configs.h:31
const std::string & ifName() const
uint8_t domainNumber() const
int ptpIndex() const
uint8_t transportSpecific() const
const char * ifName_c() const
int ifIndex() const
Definition timebase_configs.h:157
static const TimeBaseRecord & getRecord(size_t timeBaseIndex)
static iterator end()
static size_t size()
static bool isTimeBaseIndexPresent(size_t timeBaseIndex)
static bool BaseNameToBaseIndex(const std::string &timeBaseName, size_t &timeBaseIndex)
static const TimeBaseConfigurations & getInstance()
static iterator begin()
Definition timebase_configs.h:93
const std::string & name() const
bool haveSysClock() const
bool havePtp() const
const PTPCfg & ptp() const
size_t index() const
const char * name_c() const
Enumerator types.
Helper macros.
#define __CLKMGR_NAMESPACE_BEGIN
Definition utility.h:19
#define __CLKMGR_NAMESPACE_END
Definition utility.h:21