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 ptp_reset(); // this is mandatory, exactly as it is for the delay mechanism below
74}
75
77 S.profile.delayMechanism = dm;
78 ptp_reset(); // this is mandatory
79}
80
82 return S.profile.delayMechanism;
83}
84
86 S.profile.transportSpecific = tspec;
87 ptp_reset(); // this is mandatory
88}
89
91 return S.profile.transportSpecific;
92}
93
94void ptp_set_profile_flags(uint8_t flags) {
95 S.profile.flags = flags;
96 ptp_reset();
97}
98
100 return S.profile.flags;
101}
102
103void ptp_set_tlv_chain_by_name(const char * tlvSet) {
104 strncpy(S.profile.tlvSet, tlvSet, PTP_MAX_TLV_PRESET_NAME_LENGTH);
105 ptp_reset();
106}
107
109 return S.profile.tlvSet;
110}
111
112
113void ptp_load_profile(const PtpProfile * pProfile) {
114 S.profile = *pProfile;
115 ptp_reset();
116}
118 return S.profile.logDelayReqPeriod;
119}
120
122 S.profile.logDelayReqPeriod = drlp;
123 ptp_reset();
124}
125
127 return S.profile.logSyncPeriod;
128}
129
130void ptp_set_sync_log_period(int8_t slp) {
131 S.profile.logSyncPeriod = slp;
132 ptp_reset();
133}
134
136 return S.profile.logAnnouncePeriod;
137}
138
140 S.profile.logAnnouncePeriod = alp;
141 ptp_reset();
142}
143
144void ptp_set_coarse_threshold(uint64_t ns) {
145 S.slave.coarseLimit = ns;
146}
147
149 return S.slave.coarseLimit;
150}
151
152void ptp_set_priority1(uint8_t p1) {
153 S.capabilities.priority1 = p1;
154 ptp_reset();
155}
156
158 return S.capabilities.priority1;
159}
160
161void ptp_set_priority2(uint8_t p2) {
162 S.capabilities.priority2 = p2;
163 ptp_reset();
164}
165
167 return S.capabilities.priority2;
168}
169
171 S.capabilities.grandmasterClockClass = cc;
172}
173
175 return S.capabilities.grandmasterClockClass;
176}
177
179 S.capabilities.grandmasterClockAccuracy = ca;
180}
181
183 return S.capabilities.grandmasterClockAccuracy;
184}
185
186void ptp_set_clock_variance(uint16_t var) {
187 S.capabilities.grandmasterClockVariance = var;
188}
189
191 return S.capabilities.grandmasterClockVariance;
192}
193
194void ptp_set_local_steps_removed(uint16_t lsr) {
195 S.capabilities.localStepsRemoved = lsr;
196}
197
199 return S.capabilities.localStepsRemoved;
200}
201
203 PTP_HW_GET_TIME(pT);
204}
205
207 PTP_SET_CLOCK(pT->sec, pT->nanosec);
208}
209
211 TimestampU tu;
212 ptp_time(&tu);
213 TimestampI ti;
214 tsUToI(&ti, &tu);
215 addTime(&ti, &ti, dt);
216 tsIToU(&tu, &ti);
217 ptp_set_time(&tu);
218}
#define PTP_SET_CLOCK(s, ns)
#define PTP_HW_GET_TIME(pt)
void ptp_reset()
Definition: ptp_core.c:242
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:205
PtpClockAccuracy
Standard clock accuracy definitions.
Definition: ptp_types.h:221
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:509
PTP profile structure.
Definition: ptp_types.h:357
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.