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, Unit unitsFrom, Unit unitsTo, typename R = std::ratio_divide<UnitTickRatio<unitsTo>, UnitTickRatio<unitsFrom>>>
constexpr uint64_t convert() 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 convert
unitsFrom – Units for
time
parameterunitsTo – Units for return value
- Returns
TimeType – Converted time
-
template<typename TimeType>
TimeType convert(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 convert
unitsFrom – Units for
time
parameterunitsTo – Units for return value
- Returns
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, Unit unitsTo, typename TimeType>
TimeType convert(const TimeType &time) Function template to convert a time quantity from one unit to another.
- Template Parameters
unitsFrom – Units for
time
parameterunitsTo – Units for return value
TimeType – Variable type to use for calculation
- Parameters
time – The time to convert
- Returns
TimeType – Converted time, returns TimeType(-1) if calculation overflowed
Variables
-
template<typename ClockDef, uint32_t frequency_, typename TickType_, TickType_ maxTicks_>
struct Clock - #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
TimeSource
to work with a Clock in specific time units
-
struct Frequency
- #include <NanoTime.h>
Class to represent a frequency.
-
template<typename Clock_, typename T>
struct Ticks - #include <NanoTime.h>
Class to handle a tick value associated with a clock.
-
template<class Clock_, uint64_t ticks_>
struct TicksConst - #include <NanoTime.h>
Class template representing a fixed clock tick count.
Note
Includes compile-time range checking
- tparam Source_
- tparam ticks_
-
template<typename T>
struct Time - #include <NanoTime.h>
Class to handle a simple time value with associated unit.
-
template<class Clock_, Unit unit_, uint64_t time_>
struct TimeConst - #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.
- tparam Clock_
- tparam unit_
- tparam time_
-
template<class Clock_, Unit unit_, typename TimeType_>
struct TimeSource - #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.
- tparam Clock_
- tparam units_
- tparam 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>
struct UnitTickRatio - #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)- tparam unit
- returns std::ratio
Ticks per second
-
const char *unitToLongString(Unit unit)