aboutsummaryrefslogtreecommitdiff
path: root/embassy-time/README.md
diff options
context:
space:
mode:
authorUlf Lilleengen <[email protected]>2022-08-23 13:57:45 +0200
committerUlf Lilleengen <[email protected]>2022-08-23 13:58:57 +0200
commit189d4137ccff37fc9bbf889652f634f511f8cf83 (patch)
tree5793e876ab37f8d2395151159e3c6f98fa86c625 /embassy-time/README.md
parent7b3ae0446c7300e257db398c96ed21694bc002c4 (diff)
Add readme for embassy-time
Diffstat (limited to 'embassy-time/README.md')
-rw-r--r--embassy-time/README.md43
1 files changed, 43 insertions, 0 deletions
diff --git a/embassy-time/README.md b/embassy-time/README.md
new file mode 100644
index 000000000..2be80ff9c
--- /dev/null
+++ b/embassy-time/README.md
@@ -0,0 +1,43 @@
1# embassy-time
2
3Timekeeping, delays and timeouts.
4
5Timekeeping is done with elapsed time since system boot. Time is represented in
6ticks, where the tick rate is defined by the current driver, usually to match
7the tick rate of the hardware.
8
9Tick counts are 64 bits. At the highest supported tick rate of 1Mhz this supports
10representing time spans of up to ~584558 years, which is big enough for all practical
11purposes and allows not having to worry about overflows.
12
13[`Instant`] represents a given instant of time (relative to system boot), and [`Duration`]
14represents the duration of a span of time. They implement the math operations you'd expect,
15like addition and substraction.
16
17# Delays and timeouts
18
19[`Timer`] allows performing async delays. [`Ticker`] allows periodic delays without drifting over time.
20
21An implementation of the `embedded-hal` delay traits is provided by [`Delay`], for compatibility
22with libraries from the ecosystem.
23
24# Wall-clock time
25
26The `time` module deals exclusively with a monotonically increasing tick count.
27Therefore it has no direct support for wall-clock time ("real life" datetimes
28like `2021-08-24 13:33:21`).
29
30If persistence across reboots is not needed, support can be built on top of
31`embassy_time` by storing the offset between "seconds elapsed since boot"
32and "seconds since unix epoch".
33
34# Time driver
35
36The `time` module is backed by a global "time driver" specified at build time.
37Only one driver can be active in a program.
38
39All methods and structs transparently call into the active driver. This makes it
40possible for libraries to use `embassy_time` in a driver-agnostic way without
41requiring generic parameters.
42
43For more details, check the [`driver`] module.