demostration for TimeoutAbs
Demo absolute timeout.
Event occurs at absolute time instead of relative to when attach()
called. Random delay is added to show independence from when attach()
is called.
main.cpp@0:3985faffb331, 2018-11-26 (annotated)
- Committer:
- Wayne Roberts
- Date:
- Mon Nov 26 14:37:06 2018 -0800
- Revision:
- 0:3985faffb331
initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Wayne Roberts |
0:3985faffb331 | 1 | #include "mbed.h" |
Wayne Roberts |
0:3985faffb331 | 2 | #include "LowPowerTimeoutAbs.h" |
Wayne Roberts |
0:3985faffb331 | 3 | |
Wayne Roberts |
0:3985faffb331 | 4 | volatile bool ev; |
Wayne Roberts |
0:3985faffb331 | 5 | Timer t; |
Wayne Roberts |
0:3985faffb331 | 6 | |
Wayne Roberts |
0:3985faffb331 | 7 | LowPowerTimeoutAbs tabs; |
Wayne Roberts |
0:3985faffb331 | 8 | |
Wayne Roberts |
0:3985faffb331 | 9 | void my_callback() |
Wayne Roberts |
0:3985faffb331 | 10 | { |
Wayne Roberts |
0:3985faffb331 | 11 | ev = true; |
Wayne Roberts |
0:3985faffb331 | 12 | } |
Wayne Roberts |
0:3985faffb331 | 13 | |
Wayne Roberts |
0:3985faffb331 | 14 | us_timestamp_t tabs_started_at; |
Wayne Roberts |
0:3985faffb331 | 15 | |
Wayne Roberts |
0:3985faffb331 | 16 | int main() |
Wayne Roberts |
0:3985faffb331 | 17 | { |
Wayne Roberts |
0:3985faffb331 | 18 | unsigned prev; |
Wayne Roberts |
0:3985faffb331 | 19 | t.start(); |
Wayne Roberts |
0:3985faffb331 | 20 | tabs_started_at = tabs.read_us(); |
Wayne Roberts |
0:3985faffb331 | 21 | tabs.attach_us(my_callback, tabs_started_at + 100000); |
Wayne Roberts |
0:3985faffb331 | 22 | prev = t.read_us(); |
Wayne Roberts |
0:3985faffb331 | 23 | printf("tabs_started_at:%llu prev:%u\r\n", tabs_started_at, prev); |
Wayne Roberts |
0:3985faffb331 | 24 | for (;;) { |
Wayne Roberts |
0:3985faffb331 | 25 | unsigned now; |
Wayne Roberts |
0:3985faffb331 | 26 | if (ev) { |
Wayne Roberts |
0:3985faffb331 | 27 | unsigned late; |
Wayne Roberts |
0:3985faffb331 | 28 | now = t.read_us(); |
Wayne Roberts |
0:3985faffb331 | 29 | tabs_started_at += 1000000; |
Wayne Roberts |
0:3985faffb331 | 30 | late = rand() % 200000; |
Wayne Roberts |
0:3985faffb331 | 31 | printf("time %u\t", now - prev); |
Wayne Roberts |
0:3985faffb331 | 32 | fflush(stdout); |
Wayne Roberts |
0:3985faffb331 | 33 | wait_us(late); |
Wayne Roberts |
0:3985faffb331 | 34 | printf("late:%u\r\n", late); |
Wayne Roberts |
0:3985faffb331 | 35 | tabs.attach_us(my_callback, tabs_started_at); |
Wayne Roberts |
0:3985faffb331 | 36 | prev = now; |
Wayne Roberts |
0:3985faffb331 | 37 | ev = false; |
Wayne Roberts |
0:3985faffb331 | 38 | } |
Wayne Roberts |
0:3985faffb331 | 39 | } |
Wayne Roberts |
0:3985faffb331 | 40 | } |