NanoTime¶
Utilities for handling time periods at nanosecond resolution.
-
namespace
NanoTime¶ Enums
Functions
-
const char *
unitToLongString(Unit unit)¶ Get a long string identifying the given time units, e.g. “seconds”.
-
template<uint64_t
time, UnitunitsFrom, UnitunitsTo, typenameR= std::ratio_divide<UnitTickRatio<unitsTo>, UnitTickRatio<unitsFrom>>>
constexpr uint64_tconvert()¶ Function template to convert a constant time quantity from one unit to another.
- Note
example:
uint32_t micros = convert<50, Milliseconds, Microseconds>();
- Template Parameters
time: The time to convertunitsFrom: Units fortimeparameterunitsTo: Units for return value
- Return Value
TimeType: Converted time
-
template<typename
TimeType>
TimeTypeconvert(const TimeType &time, Unit unitsFrom, Unit unitsTo)¶ Function template to convert a time quantity from one unit to another.
- Template Parameters
TimeType: Variable type to use for calculation
- Parameters
time: The time to convertunitsFrom: Units fortimeparameterunitsTo: Units for return value
- Return Value
TimeType: Converted time, returns TimeType(-1) if calculation overflowed
-
template<typename
T>
Time<T>time(Unit unit, T value)¶ Helper function to create a Time and deduce the type.
-
template<Unit
unitsFrom, UnitunitsTo, typenameTimeType>
TimeTypeconvert(const TimeType &time)¶ Function template to convert a time quantity from one unit to another.
- Template Parameters
unitsFrom: Units fortimeparameterunitsTo: Units for return valueTimeType: Variable type to use for calculation
- Parameters
time: The time to convert
- Return Value
TimeType: Converted time, returns TimeType(-1) if calculation overflowed
Variables
-
constexpr BasicRatio32 NanoTime::unitTicks[UnitMax+1]= { {1000000000, 1}, {1000000, 1}, {1000, 1}, {1, 1}, {1, 60}, {1, 60 * 60}, {1, 24 * 60 * 60}, } List of clock ticks for each supported unit of time.
-
template<typename
ClockDef, uint32_tfrequency_, typenameTickType_, TickType_maxTicks_>
structClock¶ - #include <NanoTime.h>
Class template representing a physical Clock with fixed timing characteristics.
- Note
Physical clocks are implemented using this as a base. The provided frequency accounts for any prescaler setting in force. Fixing this at compile time helps to avoid expensive runtime calculations and permits static range checks.
- See
Use
TimeSourceto work with a Clock in specific time units- Template Parameters
Subclassed by NanoTime::TimeSource< Clock, unit_, TimeType >
-
struct
Frequency¶ - #include <NanoTime.h>
Class to represent a frequency.
-
template<typename
Clock_, typenameT>
structTicks¶ - #include <NanoTime.h>
Class to handle a tick value associated with a clock.
-
template<class
Clock_, uint64_tticks_>
structTicksConst¶ - #include <NanoTime.h>
Class template representing a fixed clock tick count.
- Note
Includes compile-time range checking
- Template Parameters
Source_:ticks_:
-
template<typename
T>
structTime¶ - #include <NanoTime.h>
Class to handle a simple time value with associated unit.
-
template<class
Clock_, Unitunit_, uint64_ttime_>
structTimeConst¶ - #include <NanoTime.h>
Class template to represent a fixed time value for a specific Clock.
- Note
Includes compile-time range checking. Time is taken as reference for conversions.
- Template Parameters
Clock_:unit_:time_:
-
template<class
Clock_, Unitunit_, typenameTimeType_>
structTimeSource: public Clock_¶ - #include <NanoTime.h>
Class template for accessing a Clock in specific time units.
- Note
Includes compile-time range checking. Time is taken as reference for conversions.
- Template Parameters
Clock_:units_:TimeType_: Limits range of calculations
-
struct
TimeValue¶ - #include <NanoTime.h>
A time time broken into its constituent elements.
- Note
Useful for analysing and printing time values
-
template<Unit
unit>
structUnitTickRatio¶ - #include <NanoTime.h>
Class template to define tick std::ratio type.
- Note
This would be preferable:
template <Unit unit> using UnitTickRatio = std::ratio<unitTicks[unit].num, unitTicks[unit].den>;But GCC 4.8 doesn’t like it (lvalue required as unary ‘&’ operand)- Template Parameters
unit:
- Return Value
std::ratio: Ticks per second
-
const char *