10#ifndef FLEXPTP_PTP_DEFS_H_
11#define FLEXPTP_PTP_DEFS_H_
15#include <flexptp_options.h>
22#define PTP_IGMP_DEFAULT_STR ("224.0.1.129")
23#define PTP_IGMP_PEER_DELAY_STR ("224.0.0.107")
26#include <netinet/in.h>
37#define PTP_ETHERTYPE (0x88F7)
38#define ETHERTYPE_PTP (PTP_ETHERTYPE)
45#define PTP_PORT_EVENT (319)
46#define PTP_PORT_GENERAL (320)
48#define PTP_HEADER_LENGTH (34)
49#define PTP_TIMESTAMP_LENGTH (10)
50#define PTP_PORT_ID_LENGTH (10)
51#define PTP_ANNOUNCE_BODY_LENGTH (20)
53#define PTP_PCKT_SIZE_SYNC (PTP_HEADER_LENGTH + PTP_TIMESTAMP_LENGTH)
54#define PTP_PCKT_SIZE_FOLLOW_UP (PTP_HEADER_LENGTH + PTP_TIMESTAMP_LENGTH)
55#define PTP_PCKT_SIZE_DELAY_REQ (PTP_HEADER_LENGTH + PTP_TIMESTAMP_LENGTH)
56#define PTP_PCKT_SIZE_DELAY_RESP (PTP_HEADER_LENGTH + PTP_TIMESTAMP_LENGTH + PTP_PORT_ID_LENGTH)
57#define PTP_PCKT_PDELAY_RESERVED_END (10)
58#define PTP_PCKT_SIZE_PDELAY_REQ (PTP_HEADER_LENGTH + PTP_TIMESTAMP_LENGTH + PTP_PCKT_PDELAY_RESERVED_END)
59#define PTP_PCKT_SIZE_PDELAY_RESP (PTP_HEADER_LENGTH + PTP_TIMESTAMP_LENGTH + PTP_PORT_ID_LENGTH)
60#define PTP_PCKT_SIZE_PDELAY_RESP_FOLLOW_UP (PTP_HEADER_LENGTH + PTP_TIMESTAMP_LENGTH + PTP_PORT_ID_LENGTH)
61#define PTP_PCKT_SIZE_ANNOUNCE (PTP_HEADER_LENGTH + PTP_TIMESTAMP_LENGTH + PTP_ANNOUNCE_BODY_LENGTH)
65#define PTP_MAX_PROFILE_NAME_LENGTH (7)
66#define PTP_MAX_TLV_PRESET_NAME_LENGTH PTP_MAX_PROFILE_NAME_LENGTH
71#if !defined(PTP_ADDEND_INTERFACE) && !defined(PTP_HLT_INTERFACE)
72#define PTP_ADDEND_INTERFACE
76#if defined(PTP_ADDEND_INTERFACE)
77#define PTP_ADDEND_INIT (((double)(0x100000000)) / (((double)(PTP_MAIN_OSCILLATOR_FREQ_HZ)) / ((double)(PTP_CLOCK_TICK_FREQ_HZ))))
78#define PTP_ADDEND_CORR_PER_PPB_F (((double)0x100000000) / ((double)PTP_INCREMENT_NSEC * PTP_MAIN_OSCILLATOR_FREQ_HZ))
81#define PTP_CLOCK_TICK_FREQ_HZ (1000000000 / PTP_INCREMENT_NSEC)
85#if !defined(FLEXPTP_FREERTOS) && !defined(FLEXPTP_CMSIS_OS2) && !defined(FLEXPTP_LINUX) && !defined(FLEXPTP_OSLESS)
86#define FLEXPTP_FREERTOS (1)
89#ifdef FLEXPTP_FREERTOS
94#elif defined(FLEXPTP_CMSIS_OS2)
95#include <cmsis_compiler.h>
97#elif defined(FLEXPTP_LINUX)
100#include <semaphore.h>
103#elif defined(FLEXPTP_OSLESS)
107#if defined(FLEXPTP_FREERTOS) || defined(FLEXPTP_CMSIS_OS2)
108#define FLEXPTP_NON_LINUX_OS (1)
111#if defined(FLEXPTP_OSLESS) && !defined(FLEXPTP_OSLESS_LOCK)
112#error "FLEXPTP_OSLESS_LOCK must be defined to use FLEXPTP_OSLESS mode!"
115#ifndef FLEXPTP_TASK_PRIORITY
116#ifdef FLEXPTP_FREERTOS
117#define FLEXPTP_TASK_PRIORITY (configMAX_PRIORITIES / 2)
118#elif defined(FLEXPTP_CMSIS_OS2)
119#define FLEXPTP_TASK_PRIORITY osPriorityNormal
123#ifndef FLEXPTP_TASK_STASK_SIZE
124#define FLEXPTP_TASK_STACK_SIZE (2048)
127#ifndef PTP_HEARTBEAT_TICKRATE_MS
128#define PTP_HEARTBEAT_TICKRATE_MS (62)
132#define PTP_PORT_ID (1)
135#ifndef PTP_ACCURACY_LIMIT_NS
136#define PTP_ACCURACY_LIMIT_NS (100)
139#ifndef PTP_DEFAULT_SERVO_OFFSET
140#define PTP_DEFAULT_SERVO_OFFSET (0)
143#ifndef PTP_DEFAULT_COARSE_TRIGGER_NS
144#define PTP_DEFAULT_COARSE_TRIGGER_NS (20000000)
147#ifndef PTP_BMCA_LISTENING_TIMEOUT_MS
148#define PTP_BMCA_LISTENING_TIMEOUT_MS (3000)
151#ifndef PTP_MASTER_QUALIFICATION_TIMEOUT
152#define PTP_MASTER_QUALIFICATION_TIMEOUT (4)
155#ifndef PTP_ANNOUNCE_RECEIPT_TIMEOUT
156#define PTP_ANNOUNCE_RECEIPT_TIMEOUT (3)
159#ifndef PTP_ENABLE_MASTER_OPERATION
160#define PTP_ENABLE_MASTER_OPERATION (0)
163#ifndef PTP_CLOCK_PRIORITY1
164#define PTP_CLOCK_PRIORITY1 (128)
167#ifndef PTP_CLOCK_PRIORITY2
168#define PTP_CLOCK_PRIORITY2 (128)
173#ifndef PTP_BEST_CLOCK_CLASS
174#define PTP_BEST_CLOCK_CLASS (PTP_CC_DEFAULT)
177#ifndef PTP_WORST_ACCURACY
178#define PTP_WORST_ACCURACY (PTP_CA_UNKNOWN)
181#ifndef PTP_TIME_SOURCE
182#define PTP_TIME_SOURCE (PTP_TSRC_INTERNAL_OSCILLATOR)
185#ifndef PTP_FALLBACK_UTC_OFFSET
186#define PTP_FALLBACK_UTC_OFFSET (37)
191#ifndef PTP_PDELAY_SLAVE_QUALIFICATION
192#define PTP_PDELAY_SLAVE_QUALIFICATION (3)
195#ifndef PTP_PDELAY_DROPOUT
196#define PTP_PDELAY_DROPOUT PTP_PDELAY_SLAVE_QUALIFICATION
203#ifndef PTP_CUSTOM_COLORS
204#define PTP_COLOR_RED "\x1b[31m"
205#define PTP_COLOR_BRED "\x1b[91m"
206#define PTP_COLOR_GREEN "\x1b[32m"
207#define PTP_COLOR_BGREEN "\x1b[92m"
208#define PTP_COLOR_YELLOW "\x1b[33m"
209#define PTP_COLOR_BYELLOW "\x1b[93m"
210#define PTP_COLOR_BLUE "\x1b[34m"
211#define PTP_COLOR_MAGENTA "\x1b[35m"
212#define PTP_COLOR_BMAGENTA "\x1b[95m"
213#define PTP_COLOR_CYAN "\x1b[36m"
214#define PTP_COLOR_RESET "\x1b[0m"
222#define FLEXPTP_htonl(a) \
223 ((((a) >> 24) & 0x000000ff) | \
224 (((a) >> 8) & 0x0000ff00) | \
225 (((a) << 8) & 0x00ff0000) | \
226 (((a) << 24) & 0xff000000))
228#define FLEXPTP_ntohl(a) FLEXPTP_htonl((a))
230#define FLEXPTP_htons(a) \
231 ((((a) >> 8) & 0x00ff) | \
232 (((a) << 8) & 0xff00))
234#define FLEXPTP_ntohs(a) FLEXPTP_htons((a))
238#define FLEXPTP_MS_TO_TICKS(ms) ((ms + (PTP_HEARTBEAT_TICKRATE_MS - 1)) / PTP_HEARTBEAT_TICKRATE_MS)
240#define FLEXPTP_RANDOM_TAGGED_MESSAGE_TTL_TICKS (20)
const ip_addr_t PTP_IGMP_PRIMARY
Primary IGMP address.
const uint8_t PTP_ETHERNET_PEER_DELAY[6]
PTP's L2 Peer_Delay Ethernet address.
const uint8_t PTP_ETHERNET_PRIMARY[6]
PTP's L2 Primary Ethernet address.
const ip_addr_t PTP_IGMP_PEER_DELAY
Peer_Delay IGMP address.