Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: UAVCAN UAVCAN_Subscriber
SystemClock Class Reference
Linux system clock driver. More...
#include <clock.hpp>
Inherits uavcan::ISystemClock.
Public Member Functions | |
| SystemClock (ClockAdjustmentMode adj_mode=detectPreferredClockAdjustmentMode()) | |
| By default, the clock adjustment mode will be selected automatically - global if root, private otherwise. | |
| uavcan::MonotonicTime | getMonotonic () const override |
| Returns monotonic timestamp from librt. | |
| uavcan::UtcTime | getUtc () const override |
| Returns wall time from gettimeofday(). | |
| void | adjustUtc (const uavcan::UtcDuration adjustment) override |
| Adjusts the wall clock. | |
| void | setGradualAdjustmentLimit (uavcan::UtcDuration limit) |
| Sets the maximum phase error to use adjtime(). | |
| uavcan::UtcDuration | getPrivateAdjustment () const |
| This is only applicable if the selected clock adjustment mode is private. | |
| std::uint64_t | getStepAdjustmentCount () const |
| Statistics that allows to evaluate clock sync preformance. | |
Static Public Member Functions | |
| static ClockAdjustmentMode | detectPreferredClockAdjustmentMode () |
| This static method decides what is the optimal clock sync adjustment mode for the current configuration. | |
Detailed Description
Linux system clock driver.
Requires librt.
Definition at line 33 of file drivers/linux/include/uavcan_linux/clock.hpp.
Constructor & Destructor Documentation
| SystemClock | ( | ClockAdjustmentMode | adj_mode = detectPreferredClockAdjustmentMode() ) |
[explicit] |
By default, the clock adjustment mode will be selected automatically - global if root, private otherwise.
Definition at line 72 of file drivers/linux/include/uavcan_linux/clock.hpp.
Member Function Documentation
| void adjustUtc | ( | const uavcan::UtcDuration | adjustment ) | [override, virtual] |
Adjusts the wall clock.
Behavior depends on the selected clock adjustment mode - ClockAdjustmentMode. Clock adjustment mode can be set only once via constructor.
If the system wide adjustment mode is selected, two ways for performing adjustment exist:
- Gradual adjustment using adjtime(), if the phase error is less than gradual adjustment limit.
- Step adjustment using settimeofday(), if the phase error is above gradual adjustment limit. The gradual adjustment limit can be configured at any time via the setter method.
- Exceptions:
-
uavcan_linux::Exception.
Implements ISystemClock.
Definition at line 124 of file drivers/linux/include/uavcan_linux/clock.hpp.
| static ClockAdjustmentMode detectPreferredClockAdjustmentMode | ( | ) | [static] |
This static method decides what is the optimal clock sync adjustment mode for the current configuration.
It selects system wide mode if the application is running as root; otherwise it prefers the private adjustment mode because the system wide mode requires root privileges.
Definition at line 189 of file drivers/linux/include/uavcan_linux/clock.hpp.
| uavcan::MonotonicTime getMonotonic | ( | ) | const [override, virtual] |
Returns monotonic timestamp from librt.
- Exceptions:
-
uavcan_linux::Exception.
Implements ISystemClock.
Definition at line 83 of file drivers/linux/include/uavcan_linux/clock.hpp.
| uavcan::UtcDuration getPrivateAdjustment | ( | ) | const |
This is only applicable if the selected clock adjustment mode is private.
In system wide mode this method will always return zero duration.
Definition at line 172 of file drivers/linux/include/uavcan_linux/clock.hpp.
| std::uint64_t getStepAdjustmentCount | ( | ) | const |
Statistics that allows to evaluate clock sync preformance.
Definition at line 177 of file drivers/linux/include/uavcan_linux/clock.hpp.
| uavcan::UtcTime getUtc | ( | ) | const [override, virtual] |
Returns wall time from gettimeofday().
- Exceptions:
-
uavcan_linux::Exception.
Implements ISystemClock.
Definition at line 97 of file drivers/linux/include/uavcan_linux/clock.hpp.
| void setGradualAdjustmentLimit | ( | uavcan::UtcDuration | limit ) |
Sets the maximum phase error to use adjtime().
If the phase error exceeds this value, settimeofday() will be used instead.
Definition at line 155 of file drivers/linux/include/uavcan_linux/clock.hpp.
Generated on Tue Jul 12 2022 17:17:38 by
1.7.2