nuttx-apps/netutils/ptpd/Kconfig
Petteri Aimonen 5a992d4e18 Add basic IEEE-1588 PTP server/client
What works:
- Basic server & client operation
- Transmission and reception of announce, sync and follow-up

Still missing:
- SO_TIMINGS for getting more precise packet timestamps
- Implementation of delay_req and delay_resp packets
- Status and stop interfaces for the daemon
2023-10-06 17:25:23 +08:00

168 lines
4.3 KiB
Plaintext

#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
config NETUTILS_PTPD
bool "PTPD client/server"
default n
depends on NET_IPv4
depends on NET_IGMP
depends on NET_UDP
---help---
Build a minimal implementation of IEEE-1588 precision time protocol.
Uses system gettimeofday() and adjtime() calls to synchronize clock
with a master clock through network, or to provide a master clock to
other systems.
if NETUTILS_PTPD
config NETUTILS_PTPD_DEBUG
bool "Enable PTP debug messages"
default n
depends on DEBUG_INFO
---help---
Enable PTP debug messages even if CONFIG_DEBUG_NET_INFO is not enabled.
config NETUTILS_PTPD_CLIENT
bool "Enable client support"
default y
---help---
Act as a PTP client, synchronizing the NuttX clock to a remote master
clock.
config NETUTILS_PTPD_SERVER
bool "Enable server support"
default n
---help---
Act as a PTP server, providing NuttX clock time to other systems.
Both server and client can be simultaneously enabled. NuttX will then
synchronize to a higher priority master clock, or act as a master
clock itself if it has the highest priority.
Refer to Best Master Clock algorithm in IEEE-1588 for details.
config NETUTILS_PTPD_STACKSIZE
int "PTP daemon stack stack size"
default DEFAULT_TASK_STACKSIZE
config NETUTILS_PTPD_SERVERPRIO
int "PTP daemon priority"
default 100
config NETUTILS_PTPD_DOMAIN
int "PTP domain selection"
default 0
range 0 127
---help---
Set PTP domain to participate in. Default domain is 0, other domains
can be used to isolate reference clocks from each other.
if NETUTILS_PTPD_SERVER
config NETUTILS_PTPD_PRIORITY1
int "PTP server priority1"
default 128
range 0 255
---help---
Set clock priority to announce when acting as a PTP server.
Lower value is higher priority.
A higher priority1 clock will be selected without regard to announced
clock quality fields.
Refer to Best Master Clock algorithm in IEEE-1588 for details.
config NETUTILS_PTPD_PRIORITY2
int "PTP server priority2"
default 128
range 0 255
---help---
Set clock subpriority to announce when acting as a PTP server.
This will distinguish between two clocks that are equivalent in
priority1, class and accuracy values.
Lower value is higher priority.
config NETUTILS_PTPD_CLASS
int "PTP server class"
default 248
range 0 255
---help---
Set master clock class to announce when acting as a PTP server.
Lower value means higher quality clock source.
248 is the default for unknown class.
config NETUTILS_PTPD_ACCURACY
int "PTP server accuracy"
default 254
range 0 255
---help---
Set master clock accuracy to announce when acting as a PTP server.
Logarithmic scale is defined in IEEE-1588:
32: +- 25 ns
33: +- 100 ns
34: +- 250 ns
35: +- 1 us
36: +- 2.5 us
37: +- 10 us
38: +- 25 us
39: +- 100 us
40: +- 250 us
41: +- 1 ms
42: +- 2.5 ms
43: +- 10 ms
44: +- 25 ms
45: +- 100 ms
46: +- 250 ms
47: +- 1 s
48: +- 10 s
49: +- more than 10 s
254: Unknown
config NETUTILS_PTPD_CLOCKSOURCE
int "PTP server clock source type"
default 160
range 0 255
---help---
Set clock source type to announce when acting as a PTP server.
Common values:
32: GPS
64: PTP
80: NTP
144: Other
160: Internal oscillator
config NETUTILS_PTPD_SYNC_INTERVAL_MSEC
int "PTP server sync transmit interval (ms)"
default 1000
---help---
How often to transmit sync packets in server mode.
config NETUTILS_PTPD_ANNOUNCE_INTERVAL_MSEC
int "PTP server announce transmit interval (ms)"
default 10000
---help---
How often to transmit announce packets in server mode.
endif # NETUTILS_PTPD_SERVER
if NETUTILS_PTPD_CLIENT
config NETUTILS_PTPD_TIMEOUT_MS
int "PTP client timeout for changing clock source (ms)"
default 60000
---help---
If no packets are being received from currently chosen clock source,
fall back to next best clock source after this many seconds.
config NETUTILS_PTPD_SETTIME_THRESHOLD_MS
int "PTP client threshold for changing system time (ms)"
default 1000
---help---
If difference between local and remote clock exceeds this threshold,
time is reset with settimeofday() instead of changing the rate with
adjtime().
endif # NETUTILS_PTPD_CLIENT
endif # NETUTILS_PTPD