demostration for TimeoutAbs

Dependencies:   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.

Committer:
Wayne Roberts
Date:
Mon Nov 26 14:37:06 2018 -0800
Revision:
0:3985faffb331
initial commit

Who changed what in which revision?

UserRevisionLine numberNew 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 }