flexPTP 1.0
An IEEE 1588 PTP implementation designed for microcontrollers
Loading...
Searching...
No Matches
settings_interface.c
Go to the documentation of this file.
2
3#include "ptp_defs.h"
4#include "timeutils.h"
5#include "ptp_types.h"
6#include "ptp_core.h"
7#include <string.h>
8
9#include <flexptp_options.h>
10
12extern PtpCoreState gPtpCoreState;
13#define S (gPtpCoreState)
15
16void ptp_set_clock_offset(int32_t offset) {
17 nsToTsI(&S.hwoptions.offset, offset);
18}
19
21 return nsI(&S.hwoptions.offset);
22}
23
24void ptp_prefer_master_clock(uint64_t clockId) {
25 S.bmca.preventMasterSwitchOver = true;
26 S.bmca.masterProps.grandmasterClockIdentity = clockId;
27}
28
30 S.bmca.preventMasterSwitchOver = false;
31}
32
34 return S.bmca.masterProps.grandmasterClockIdentity;
35}
36
38 return S.hwoptions.clockIdentity;
39}
40
41void ptp_set_domain(uint8_t domain) {
42 S.profile.domainNumber = domain;
43}
44
45uint8_t ptp_get_domain() {
46 return S.profile.domainNumber;
47}
48
49#ifdef PTP_ADDEND_INTERFACE
50void ptp_set_addend(uint32_t addend) {
51 S.hwclock.addend = addend;
52}
53
54uint32_t ptp_get_addend() {
55 return S.hwclock.addend;
56}
57#elif defined(PTP_HLT_INTERFACE)
58void ptp_set_tuning(float tuning_ppb) {
59 S.hwclock.tuning_ppb = tuning_ppb;
60}
61
62float ptp_get_tuning() {
63 return S.hwclock.tuning_ppb;
64}
65#endif
66
68 return S.profile.transportType;
69}
70
72 S.profile.transportType = tp;
73}
74
76 S.profile.delayMechanism = dm;
77 ptp_reset(); // this is mandatory
78}
79
81 return S.profile.delayMechanism;
82}
83
85 S.profile.transportSpecific = tspec;
86 ptp_reset(); // this is mandatory
87}
88
90 return S.profile.transportSpecific;
91}
92
93void ptp_set_profile_flags(uint8_t flags) {
94 S.profile.flags = flags;
95 ptp_reset();
96}
97
99 return S.profile.flags;
100}
101
102void ptp_set_tlv_chain_by_name(const char * tlvSet) {
103 strncpy(S.profile.tlvSet, tlvSet, PTP_MAX_TLV_PRESET_NAME_LENGTH);
104 ptp_reset();
105}
106
108 return S.profile.tlvSet;
109}
110
111
112void ptp_load_profile(const PtpProfile * pProfile) {
113 S.profile = *pProfile;
114 ptp_reset();
115}
117 return S.profile.logDelayReqPeriod;
118}
119
121 S.profile.logDelayReqPeriod = drlp;
122 ptp_reset();
123}
124
126 return S.profile.logSyncPeriod;
127}
128
129void ptp_set_sync_log_period(int8_t slp) {
130 S.profile.logSyncPeriod = slp;
131 ptp_reset();
132}
133
135 return S.profile.logAnnouncePeriod;
136}
137
139 S.profile.logAnnouncePeriod = alp;
140 ptp_reset();
141}
142
143void ptp_set_coarse_threshold(uint64_t ns) {
144 S.slave.coarseLimit = ns;
145}
146
148 return S.slave.coarseLimit;
149}
150
151void ptp_set_priority1(uint8_t p1) {
152 S.capabilities.priority1 = p1;
153 ptp_reset();
154}
155
157 return S.capabilities.priority1;
158}
159
160void ptp_set_priority2(uint8_t p2) {
161 S.capabilities.priority2 = p2;
162 ptp_reset();
163}
164
166 return S.capabilities.priority2;
167}
168
170 S.capabilities.grandmasterClockClass = cc;
171}
172
174 return S.capabilities.grandmasterClockClass;
175}
176
178 S.capabilities.grandmasterClockAccuracy = ca;
179}
180
182 return S.capabilities.grandmasterClockAccuracy;
183}
184
185void ptp_set_clock_variance(uint16_t var) {
186 S.capabilities.grandmasterClockVariance = var;
187}
188
190 return S.capabilities.grandmasterClockVariance;
191}
192
193void ptp_set_local_steps_removed(uint16_t lsr) {
194 S.capabilities.localStepsRemoved = lsr;
195}
196
198 return S.capabilities.localStepsRemoved;
199}
200
202 PTP_HW_GET_TIME(pT);
203}
204
206 PTP_SET_CLOCK(pT->sec, pT->nanosec);
207}
208
210 TimestampU tu;
211 ptp_time(&tu);
212 TimestampI ti;
213 tsUToI(&ti, &tu);
214 addTime(&ti, &ti, dt);
215 tsIToU(&tu, &ti);
216 ptp_set_time(&tu);
217}
#define PTP_SET_CLOCK(s, ns)
#define PTP_HW_GET_TIME(pt)
void ptp_reset()
Definition: ptp_core.c:234
Core of the PTP implementation. Defines functions for message processing, clock tuning,...
In here reside a multitude of fundamental PTP-related constants and definitions.
#define PTP_MAX_TLV_PRESET_NAME_LENGTH
Maximum TLV preset name length.
Definition: ptp_defs.h:66
This module defines the fundamental PTP message and state machine type, flags, bitfields and the PTP ...
PtpTransportType
PTP transport type enumeration.
Definition: ptp_types.h:136
PtpClockClass
Standard PTP clock classes.
Definition: ptp_types.h:204
PtpClockAccuracy
Standard clock accuracy definitions.
Definition: ptp_types.h:220
PtpDelayMechanism
PTP Delay mechanism enumeration.
Definition: ptp_types.h:144
PtpTransportSpecific
PTP transport specific enumeration.
Definition: ptp_types.h:152
void ptp_time(TimestampU *pT)
uint16_t ptp_get_local_steps_removed()
void ptp_set_delay_mechanism(PtpDelayMechanism dm)
uint64_t ptp_get_coarse_threshold()
void ptp_set_clock_variance(uint16_t var)
void ptp_set_announce_log_period(int8_t alp)
PtpDelayMechanism ptp_get_delay_mechanism()
void ptp_set_delay_req_log_period(int8_t drlp)
PtpClockClass ptp_get_clock_class()
int8_t ptp_get_announce_log_period()
void ptp_set_transport_type(PtpTransportType tp)
void ptp_set_clock_offset(int32_t offset)
void ptp_set_time(TimestampU *pT)
PtpTransportType ptp_get_transport_type()
uint8_t ptp_get_priority2()
uint8_t ptp_get_profile_flags()
uint64_t ptp_get_current_master_clock_identity()
int8_t ptp_get_sync_log_period()
uint8_t ptp_get_priority1()
int8_t ptp_get_delay_req_log_period()
int32_t ptp_get_clock_offset()
uint8_t ptp_get_domain()
void ptp_set_domain(uint8_t domain)
void ptp_set_local_steps_removed(uint16_t lsr)
PtpClockAccuracy ptp_get_clock_accuracy()
void ptp_set_priority2(uint8_t p2)
void ptp_set_addend(uint32_t addend)
PtpTransportSpecific ptp_get_transport_specific()
void ptp_set_sync_log_period(int8_t slp)
void ptp_set_transport_specific(PtpTransportSpecific tspec)
void ptp_unprefer_master_clock()
void ptp_prefer_master_clock(uint64_t clockId)
uint64_t ptp_get_own_clock_identity()
void ptp_set_clock_accuracy(PtpClockAccuracy ca)
void ptp_set_tlv_chain_by_name(const char *tlvSet)
void ptp_set_clock_class(PtpClockClass cc)
void ptp_set_priority1(uint8_t p1)
uint16_t ptp_get_clock_variance()
void ptp_set_profile_flags(uint8_t flags)
void ptp_update_time(TimestampI *dt)
const char * ptp_get_loaded_tlv_chain()
uint32_t ptp_get_addend()
void ptp_load_profile(const PtpProfile *pProfile)
void ptp_set_coarse_threshold(uint64_t ns)
This module features functions to tweak around the PTP engine's almost every property.
float ptp_get_tuning()
void ptp_set_tuning(float tuning_ppb)
Giant PTP core state object.
Definition: ptp_types.h:501
PTP profile structure.
Definition: ptp_types.h:356
Timestamp (signed)
Definition: timeutils.h:33
Timestamp (unsigned)
Definition: timeutils.h:24
uint32_t nanosec
nanoseconds
Definition: timeutils.h:26
uint64_t sec
seconds
Definition: timeutils.h:25
TimestampU * tsIToU(TimestampU *tu, const TimestampI *ti)
Definition: timeutils.c:15
TimestampI * addTime(TimestampI *r, const TimestampI *a, const TimestampI *b)
Definition: timeutils.c:24
TimestampI * nsToTsI(TimestampI *r, int64_t ns)
Definition: timeutils.c:69
TimestampI * tsUToI(TimestampI *ti, const TimestampU *tu)
Definition: timeutils.c:8
int64_t nsI(const TimestampI *t)
Definition: timeutils.c:52
This module defines storage classes for timestamps and operations on time values.