zephyr/samples
Florian Grandel a4cd5cee40 drivers: ieee802154: consistent high res timestamps
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>
2023-07-28 09:06:35 +00:00
..
application_development cmake: align Zephyr module variable to EXTRA_ZEPHYR_MODULES 2023-05-23 16:40:21 +02:00
arch boards: xtensa: esp32 board split 2023-07-25 18:12:33 +02:00
basic drivers: pwm: Add driver for xmc4xxx using ccu8 module 2023-07-26 15:09:41 +02:00
bluetooth boards: xtensa: esp32 board split 2023-07-25 18:12:33 +02:00
boards soc: xtensa,riscv: esp32xx: refactor folder structure 2023-07-25 18:12:33 +02:00
compression tests/samples: use integration_platforms more where it makes sense 2023-05-26 17:52:02 -04:00
cpp doc: fix :zephyr-app: paths 2023-07-17 16:51:16 -04:00
drivers samples: drivers: mbox: Support the new board adp_xc7k_ae350 2023-07-26 10:51:41 +02:00
fuel_gauge drivers: fuel_gauge: Add support for RSOC and ASOC 2023-05-19 13:40:19 -04:00
hello_world samples, tests: Switch main return type from void to int 2023-04-14 07:49:41 +09:00
kernel tests: add kernel tag to all benchmarks and samples 2023-06-02 04:47:06 -04:00
modules tests: cleanup metadata and filtering 2023-06-13 09:38:27 -04:00
net drivers: ieee802154: consistent high res timestamps 2023-07-28 09:06:35 +00:00
philosophers tests/samples: set ram/rom limits on some samples/tests 2023-06-13 09:38:27 -04:00
posix samples: posix: add sample for uname 2023-07-09 16:57:16 -04:00
sensor boards: xtensa: esp32 board split 2023-07-25 18:12:33 +02:00
shields samples: shields: npm1300_ek: Added LED to example 2023-06-23 08:55:13 +00:00
subsys sample/tests: remove CONFIG_USB_COMPOSITE_DEVICE usage 2023-07-26 14:37:15 +02:00
synchronization tests: synchronization: do not build on all 2023-06-13 09:38:27 -04:00
tfm_integration samples/tfm_integration: Remove 'noreturn' attribute from main 2023-06-17 07:28:42 -04:00
userspace samples/userspace: Set common malloc arena size to zero for syscall_perf 2023-06-17 07:28:42 -04:00
classic.rst
index.rst drivers: Added fuel gauge max17048 2023-03-22 14:51:33 -04:00
sample_definition_and_criteria.rst Bluetooth: Remove point 6 of Samples Guidelines 2023-02-06 10:43:31 +01:00