SatCat5
satcat5::util::TimeRef Class Referenceabstract

Detailed Description

The TimeRef API provides access to a monotonic time-counter.

SatCat5 system timer concepts.

If your project uses a custom time reference, make a custom class derived from the TimeRef base-class, and override the raw() method. To set that clock as the primary reference, call the timekeeper set_clock(...) or suggest_clock(...) methods. (See polling.h)

Definition at line 142 of file timeref.h.

#include <timeref.h>

Inheritance diagram for satcat5::util::TimeRef:
[legend]

Public Member Functions

virtual u32 raw ()=0
 Read current time in arbitrary "ticks". More...
 
TimeVal now ()
 Create a TimeVal object using the tick-count from raw().
 
TimeVal checkpoint_usec (unsigned usec)
 Create an oven-timer, set N microseconds from now. More...
 
TimeVal checkpoint_msec (unsigned msec)
 Create an oven-timer, set N milliseconds from now. More...
 
void busywait_usec (unsigned usec)
 If timer resolution allows, busywait for X microseconds. More...
 
u32 ticks_per_sec () const
 Stable accessors for unit conversion. More...
 
u32 ticks_per_msec () const
 Stable accessors for unit conversion. More...
 
u32 ticks_per_usec () const
 Stable accessors for unit conversion. More...
 

Protected Member Functions

constexpr TimeRef (u64 ticks_per_sec)
 Constructor accepts a scale-factor for conversion to real-time. More...
 

Private Attributes

u64 const m_msec_per_tick
 
u64 const m_usec_per_tick
 
u64 const m_tick_per_msec
 
u64 const m_tick_per_usec
 

Constructor & Destructor Documentation

◆ TimeRef()

constexpr satcat5::util::TimeRef::TimeRef ( u64  ticks_per_sec)
inlineexplicitconstexprprotected

Constructor accepts a scale-factor for conversion to real-time.

(Only children should create or destroy the base class.)

Definition at line 146 of file timeref.h.

Member Function Documentation

◆ busywait_usec()

void TimeRef::busywait_usec ( unsigned  usec)

If timer resolution allows, busywait for X microseconds.

(May return immediately if backing reference is too coarse.)

Definition at line 93 of file timeref.cc.

◆ checkpoint_msec()

TimeVal TimeRef::checkpoint_msec ( unsigned  msec)

Create an oven-timer, set N milliseconds from now.

An over-timer TimeVal is a timestamp a short time in the future. To use it, create the TimeVal and then poll checkpoint_elapsed(). (The returned TimeVal is intended to be used exactly once.)

Definition at line 73 of file timeref.cc.

◆ checkpoint_usec()

TimeVal TimeRef::checkpoint_usec ( unsigned  usec)

Create an oven-timer, set N microseconds from now.

An over-timer TimeVal is a timestamp a short time in the future. To use it, create the TimeVal and then poll checkpoint_elapsed(). (The returned TimeVal is intended to be used exactly once.)

Definition at line 69 of file timeref.cc.

◆ raw()

virtual u32 satcat5::util::TimeRef::raw ( )
pure virtual

Read current time in arbitrary "ticks".

Tick-count MUST roll-over from UINT32_MAX to zero. Roll-over MUST NOT occur more than once per second. (Child class MUST define this method.)

Implemented in satcat5::util::TimeRegister, satcat5::util::NullTimer, satcat5::cfg::Timer, satcat5::test::TimerSimulation, satcat5::test::FastPosixTimer, satcat5::sam::SysTickTimer, satcat5::util::PosixTimer, and satcat5::freertos::TickTimer.

◆ ticks_per_msec()

u32 satcat5::util::TimeRef::ticks_per_msec ( ) const
inline

Stable accessors for unit conversion.

If the tick rate is low, these may return zero.

Definition at line 179 of file timeref.h.

◆ ticks_per_sec()

u32 satcat5::util::TimeRef::ticks_per_sec ( ) const
inline

Stable accessors for unit conversion.

If the tick rate is low, these may return zero.

Definition at line 177 of file timeref.h.

◆ ticks_per_usec()

u32 satcat5::util::TimeRef::ticks_per_usec ( ) const
inline

Stable accessors for unit conversion.

If the tick rate is low, these may return zero.

Definition at line 181 of file timeref.h.


The documentation for this class was generated from the following files: