| # |
| # 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. |
| |
| config NETUTILS_PTPD_TWOSTEP_SYNC |
| bool "PTP server sends two-step synchronization packets" |
| default y |
| ---help--- |
| If enabled, sends a follow-up packet after every sync packet. |
| This helps compensate for the time taken to initiate the transmission. |
| |
| config NETUTILS_PTPD_DELAYRESP_INTERVAL |
| int "PTP server suggested interval of delay requests" |
| range 0 255 |
| default 4 |
| ---help--- |
| When responding to a delay request, the server can inform the client |
| how often it should test path delay. This is done using header field |
| logMessageInterval. The delay will be 2^N seconds. |
| |
| Default value 4 results in 16 second interval. |
| |
| 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(). |
| |
| config NETUTILS_PTPD_MULTICAST_TIMEOUT_MS |
| int "PTP client timeout to rejoin multicast group (ms)" |
| default 30000 |
| ---help--- |
| If no PTP multicast packets are being received, attempt to rejoin the |
| multicast group. This can be necessary if network topology changes, or |
| depending on hardware, after some error recovery events. |
| Set to 0 to disable. |
| |
| config NETUTILS_PTPD_DRIFT_AVERAGE_S |
| int "PTP client clock drift rate averaging time (s)" |
| default 600 |
| range 10 86400 |
| ---help--- |
| Clock drift rate is averaged over this time pediod. Larger value |
| gives more stable estimate but reacts slower to crystal oscillator speed |
| changes (such as caused by temperature changes). |
| |
| config NETUTILS_PTPD_SEND_DELAYREQ |
| bool "PTP client enable delay requests" |
| default n |
| ---help--- |
| If enabled, sends delay request messages to measure the network delay |
| to server. If disabled, assumes zero delay. |
| |
| if NETUTILS_PTPD_SEND_DELAYREQ |
| |
| config NETUTILS_PTPD_MAX_PATH_DELAY_NS |
| int "PTP client maximum path delay (ns)" |
| default 100000 |
| range 1 1000000000 |
| ---help--- |
| Measured path delay longer than this is ignored. Delay requests are |
| also not transmitted until clock synchronization is better than this. |
| |
| config NETUTILS_PTPD_DELAYREQ_AVGCOUNT |
| int "PTP client path delay averaging count" |
| default 100 |
| ---help--- |
| Measured path delay is averaged over this many samples. |
| |
| endif # NETUTILS_PTPD_SEND_DELAYREQ |
| |
| endif # NETUTILS_PTPD_CLIENT |
| |
| endif # NETUTILS_PTPD |