An abstract interface representing a SystemClock.
This interface allows decoupling code that uses time from the code that creates a point in time. You can use this to your advantage by injecting Clocks into interfaces rather than having implementations call SystemClock::now() directly. However, this comes at a cost of a vtable per implementation and more importantly passing and maintaining references to the VirtualClock for all of the users.
The VirtualSystemClock::RealClock() function returns a reference to the real global SystemClock.
Example:
This interface is thread and IRQ safe.
Public Member Functions | |
| virtual SystemClock::time_point | now ()=0 |
| Returns the current time. | |
Static Public Member Functions | |
| static VirtualClock< SystemClock > & | RealClock () |
| Returns a reference to the real system clock to aid instantiation. | |