Files
PX4-Autopilot/libuavcan/include/uavcan/driver/system_clock.hpp
T

50 lines
1.3 KiB
C++

/*
* System clock driver interface.
* Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
*/
#ifndef UAVCAN_DRIVER_SYSTEM_CLOCK_HPP_INCLUDED
#define UAVCAN_DRIVER_SYSTEM_CLOCK_HPP_INCLUDED
#include <uavcan/std.hpp>
#include <uavcan/build_config.hpp>
#include <uavcan/time.hpp>
namespace uavcan
{
/**
* System clock interface - monotonic and UTC.
*/
class UAVCAN_EXPORT ISystemClock
{
public:
virtual ~ISystemClock() { }
/**
* Monototic system clock.
* This shall never jump during UTC timestamp adjustments; the base time is irrelevant.
* On POSIX systems use clock_gettime() with CLOCK_MONOTONIC.
*/
virtual MonotonicTime getMonotonic() const = 0;
/**
* UTC clock.
* This can jump when the UTC timestamp is being adjusted.
* Return 0 if the UTC time is not available yet (e.g. the device just started up with no battery clock).
* On POSIX systems use gettimeofday().
*/
virtual UtcTime getUtc() const = 0;
/**
* Set the UTC system clock.
* @param [in] adjustment Amount of time to add to the clock value.
* For POSIX refer to adjtime(), settimeofday().
*/
virtual void adjustUtc(UtcDuration adjustment) = 0;
};
}
#endif // UAVCAN_DRIVER_SYSTEM_CLOCK_HPP_INCLUDED