a4cd5cee40
The IEEE 802.15.4 API and networking subsystem were using several inconsistent timestamp resolutions and types. This change defines all timestamps with nanosecond resolution and reduces the number of available types to represent timestamps to two: * `struct net_ptp_time` for PTP timestamps * `net_time_t` for all other high resolution timestamps All timestamps (including PTP timestamps) are now referred to a "virtual" local network subsystem clock source based on the well-defined types above. It is the responsibility of network subsystem L2/driver implementations (notably Ethernet and IEEE 802.15.4 L2 stacks) to ensure consistency of all timestamps and radio timer values exposed by the driver API to such a network subsystem uptime reference clock independent of internal implementation details. The "virtual" network clock source may be implemented based on arbitrary hardware peripherals (e.g. a coarse low power RTC counter during sleep time plus a high resolution/high precision radio timer while receiving or sending). Such implementation details must be hidden from API clients, as if the driver used a single high resolution clock source instead. For IEEE 802.15.4, whenever timestamps refer to packet send or receive times, they are measured when the end of the IEEE 802.15.4 SFD (message timestamp point) is present at the local antenna (reference plane). Due to its limited range of ~290 years, net_time_t timestamps (and therefore net_pkt timestamps and times) must not be used to represent absolute points in time referred to an external epoch independent of system uptime (e.g. UTC, TAI, PTP, NTP, ...). Signed-off-by: Florian Grandel <fgrandel@code-for-humans.de> |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
ieee802154_b91.c | ||
ieee802154_b91.h | ||
ieee802154_cc13xx_cc26xx.c | ||
ieee802154_cc13xx_cc26xx.h | ||
ieee802154_cc13xx_cc26xx_subg.c | ||
ieee802154_cc13xx_cc26xx_subg.h | ||
ieee802154_cc1200.c | ||
ieee802154_cc1200.h | ||
ieee802154_cc1200_regs.h | ||
ieee802154_cc1200_rf.h | ||
ieee802154_cc2520.c | ||
ieee802154_cc2520.h | ||
ieee802154_cc2520_regs.h | ||
ieee802154_dw1000.c | ||
ieee802154_dw1000_regs.h | ||
ieee802154_kw41z.c | ||
ieee802154_mcr20a.c | ||
ieee802154_mcr20a.h | ||
ieee802154_mcr20a_regs.h | ||
ieee802154_nrf5.c | ||
ieee802154_nrf5.h | ||
ieee802154_rf2xx.c | ||
ieee802154_rf2xx.h | ||
ieee802154_rf2xx_iface.c | ||
ieee802154_rf2xx_iface.h | ||
ieee802154_rf2xx_regs.h | ||
ieee802154_uart_pipe.c | ||
ieee802154_uart_pipe.h | ||
Kconfig | ||
Kconfig.b91 | ||
Kconfig.cc13xx_cc26xx | ||
Kconfig.cc1200 | ||
Kconfig.cc2520 | ||
Kconfig.dw1000 | ||
Kconfig.kw41z | ||
Kconfig.mcr20a | ||
Kconfig.nrf5 | ||
Kconfig.rf2xx | ||
Kconfig.uart_pipe |