13#ifndef ZEPHYR_INCLUDE_NET_GPTP_H_ 
   14#define ZEPHYR_INCLUDE_NET_GPTP_H_ 
   33#define GPTP_OFFSET_SCALED_LOG_VAR_UNKNOWN 0x436A 
   35#define GPTP_PRIORITY1_NON_GM_CAPABLE      255 
   36#define GPTP_PRIORITY1_GM_CAPABLE          248 
   38#if defined(CONFIG_NET_GPTP_BMCA_PRIORITY2) 
   39#define GPTP_PRIORITY2_DEFAULT             CONFIG_NET_GPTP_BMCA_PRIORITY2 
   41#define GPTP_PRIORITY2_DEFAULT             248 
   70#if defined(CONFIG_NEWLIB_LIBC) 
   73#define GPTP_POW2(exp) pow(2, exp) 
   76static inline double gptp_pow2(
int exp)
 
   93#define GPTP_POW2(exp) gptp_pow2(exp) 
   98#define GPTP_POW2_16    65536.0 
  100#define GPTP_POW2_41    2199023255552.0 
  105#define GPTP_SYNC_MESSAGE                0x00 
  106#define GPTP_DELAY_REQ_MESSAGE           0x01 
  107#define GPTP_PATH_DELAY_REQ_MESSAGE      0x02 
  108#define GPTP_PATH_DELAY_RESP_MESSAGE     0x03 
  109#define GPTP_FOLLOWUP_MESSAGE            0x08 
  110#define GPTP_DELAY_RESP_MESSAGE          0x09 
  111#define GPTP_PATH_DELAY_FOLLOWUP_MESSAGE 0x0a 
  112#define GPTP_ANNOUNCE_MESSAGE            0x0b 
  113#define GPTP_SIGNALING_MESSAGE           0x0c 
  114#define GPTP_MANAGEMENT_MESSAGE          0x0d 
  116#define GPTP_IS_EVENT_MSG(msg_type)      (!((msg_type) & BIT(3))) 
  118#define GPTP_CLOCK_ID_LEN                8 
  189#define GPTP_GET_CURRENT_TIME_USCALED_NS(port, uscaled_ns_ptr)          \ 
  191                (uscaled_ns_ptr)->low =                                 \ 
  192                        gptp_get_current_time_nanosecond(port) << 16;   \ 
  193                (uscaled_ns_ptr)->high = 0;                             \ 
  215        double *last_gm_freq_change);
 
void gptp_foreach_port(gptp_port_cb_t cb, void *user_data)
Go through all the gPTP ports and call callback for each of them.
 
void(* gptp_port_cb_t)(int port, struct net_if *iface, void *user_data)
Callback used while iterating over gPTP ports.
Definition gptp.h:304
 
void(* gptp_phase_dis_callback_t)(uint8_t *gm_identity, uint16_t *time_base, struct gptp_scaled_ns *last_gm_ph_change, double *last_gm_freq_change)
Define callback that is called after a phase discontinuity has been sent by the grandmaster.
Definition gptp.h:211
 
void gptp_call_phase_dis_cb(void)
Call a phase discontinuity callback function.
 
char * gptp_sprint_clock_id(const uint8_t *clk_id, char *output, size_t output_len)
Utility function to print clock id to a user supplied buffer.
 
void gptp_unregister_phase_dis_cb(struct gptp_phase_dis_cb *phase_dis)
Unregister a phase discontinuity callback.
 
struct gptp_hdr * gptp_get_hdr(struct net_pkt *pkt)
Return pointer to gPTP packet header in network packet.
 
int gptp_event_capture(struct net_ptp_time *slave_time, bool *gm_present)
Get gPTP time.
 
void gptp_clk_src_time_invoke(struct gptp_clk_src_time_invoke_params *arg)
This interface is used by the ClockSource entity to provide time to the ClockMaster entity of a time-...
 
void gptp_register_phase_dis_cb(struct gptp_phase_dis_cb *phase_dis, gptp_phase_dis_callback_t cb)
Register a phase discontinuity callback.
 
struct gptp_domain * gptp_get_domain(void)
Get gPTP domain.
 
struct _snode sys_snode_t
Single-linked list node structure.
Definition slist.h:39
 
Network core definitions.
 
flags
Definition parser.h:96
 
Public functions for the Precision Time Protocol time specification.
 
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
 
__INT32_TYPE__ int32_t
Definition stdint.h:74
 
__UINT64_TYPE__ uint64_t
Definition stdint.h:91
 
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
 
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
 
__INT64_TYPE__ int64_t
Definition stdint.h:75
 
__INT8_TYPE__ int8_t
Definition stdint.h:72
 
ClockSourceTime.invoke function parameters.
Definition gptp.h:238
 
struct net_ptp_extended_time src_time
The time this function is invoked.
Definition gptp.h:243
 
double last_gm_freq_change
Frequency change on the last Time Base Indicator Change.
Definition gptp.h:240
 
struct gptp_scaled_ns last_gm_phase_change
Phase change on the last Time Base Indicator Change.
Definition gptp.h:246
 
uint16_t time_base_indicator
Time Base - changed only if Phase or Frequency changes.
Definition gptp.h:249
 
uint16_t all
Whole field access.
Definition gptp.h:139
 
uint8_t octets[2]
Byte access.
Definition gptp.h:136
 
int64_t correction_field
Correction Field.
Definition gptp.h:169
 
uint8_t domain_number
Domain number, always 0.
Definition gptp.h:160
 
uint16_t sequence_id
Sequence Id.
Definition gptp.h:178
 
int8_t log_msg_interval
Message Interval in Log2 for Sync and Announce messages.
Definition gptp.h:184
 
uint8_t control
Control value.
Definition gptp.h:181
 
struct gptp_port_identity port_id
Port Identity of the sender.
Definition gptp.h:175
 
uint8_t ptp_version
Version of the PTP, always 2.
Definition gptp.h:151
 
uint16_t message_length
Total length of the message from the header to the last TLV.
Definition gptp.h:157
 
uint32_t reserved2
Reserved field.
Definition gptp.h:172
 
uint8_t transport_specific
Transport specific, always 1.
Definition gptp.h:148
 
uint8_t message_type
Type of the message.
Definition gptp.h:145
 
uint8_t reserved1
Reserved field.
Definition gptp.h:163
 
uint8_t reserved0
Reserved field.
Definition gptp.h:154
 
Phase discontinuity callback structure.
Definition gptp.h:225
 
gptp_phase_dis_callback_t cb
Phase discontinuity callback.
Definition gptp.h:230
 
sys_snode_t node
Node information for the slist.
Definition gptp.h:227
 
Port Identity.
Definition gptp.h:125
 
uint16_t port_number
Number of the port.
Definition gptp.h:130
 
uint8_t clk_id[GPTP_CLOCK_ID_LEN]
Clock identity of the port.
Definition gptp.h:127
 
Scaled Nanoseconds.
Definition gptp.h:49
 
int64_t low
Low half.
Definition gptp.h:54
 
int32_t high
High half.
Definition gptp.h:51
 
UScaled Nanoseconds.
Definition gptp.h:60
 
uint32_t high
High half.
Definition gptp.h:62
 
uint64_t low
Low half.
Definition gptp.h:65
 
Network Interface structure.
Definition net_if.h:595
 
Network packet.
Definition net_pkt.h:63
 
Generalized Precision Time Protocol Extended Timestamp format.
Definition ptp_time.h:147
 
(Generalized) Precision Time Protocol Timestamp format.
Definition ptp_time.h:109
 
static const intptr_t user_data[5]
Definition main.c:588