Timeout driver for event at absolute time

Dependents:   demo_TimeoutAbs i2c_lora_slave

Timeout driver for generating event at absolute time, i.e. alarm at 12:00PM instead of alarm in 5 minutes.

This is the same concept as TIMER_ABSTIME in clock_nanosleep().

The purpose is to remove dependency on when attach() is called, so the event occurs at correct time regardless of any latency in calling attach().

This driver doesnt add any functionality over mbed-os library; it only skips the call to ticker_read_us() in Ticker::setup(), which just changes a relative time to absolute time.

example use here.

Committer:
Wayne Roberts
Date:
Mon Nov 26 14:22:55 2018 -0800
Revision:
0:900163d530ae
initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wayne Roberts 0:900163d530ae 1 #ifndef MBED_LPABS_H
Wayne Roberts 0:900163d530ae 2 #define MBED_LPABS_H
Wayne Roberts 0:900163d530ae 3
Wayne Roberts 0:900163d530ae 4 #include "platform/platform.h"
Wayne Roberts 0:900163d530ae 5 #include "TimeoutAbs.h"
Wayne Roberts 0:900163d530ae 6 #include "platform/NonCopyable.h"
Wayne Roberts 0:900163d530ae 7
Wayne Roberts 0:900163d530ae 8 #if defined (DEVICE_LPTICKER) || defined(DOXYGEN_ONLY)
Wayne Roberts 0:900163d530ae 9
Wayne Roberts 0:900163d530ae 10 #include "hal/lp_ticker_api.h"
Wayne Roberts 0:900163d530ae 11
Wayne Roberts 0:900163d530ae 12 namespace mbed {
Wayne Roberts 0:900163d530ae 13
Wayne Roberts 0:900163d530ae 14 class LowPowerTimeoutAbs : public TimeoutAbs, private NonCopyable<LowPowerTimeoutAbs> {
Wayne Roberts 0:900163d530ae 15
Wayne Roberts 0:900163d530ae 16 public:
Wayne Roberts 0:900163d530ae 17 LowPowerTimeoutAbs() : TimeoutAbs(get_lp_ticker_data())
Wayne Roberts 0:900163d530ae 18 {
Wayne Roberts 0:900163d530ae 19 }
Wayne Roberts 0:900163d530ae 20
Wayne Roberts 0:900163d530ae 21 virtual ~LowPowerTimeoutAbs ()
Wayne Roberts 0:900163d530ae 22 {
Wayne Roberts 0:900163d530ae 23 }
Wayne Roberts 0:900163d530ae 24 };
Wayne Roberts 0:900163d530ae 25
Wayne Roberts 0:900163d530ae 26 } // namespace mbed
Wayne Roberts 0:900163d530ae 27
Wayne Roberts 0:900163d530ae 28 #endif
Wayne Roberts 0:900163d530ae 29 #endif
Wayne Roberts 0:900163d530ae 30