diff --git a/libraries/AP_HAL_Linux/Util.cpp b/libraries/AP_HAL_Linux/Util.cpp index e47cd4cab5..4f3741d37e 100644 --- a/libraries/AP_HAL_Linux/Util.cpp +++ b/libraries/AP_HAL_Linux/Util.cpp @@ -5,6 +5,7 @@ #include #include #include +#include extern const AP_HAL::HAL& hal; @@ -50,4 +51,13 @@ void LinuxUtil::_toneAlarm_timer_tick(){ } } + +void LinuxUtil::set_system_clock(uint64_t time_utc_usec) +{ + timespec ts; + ts.tv_sec = time_utc_usec/1.0e6; + ts.tv_nsec = (time_utc_usec % 1000000) * 1000; + clock_settime(CLOCK_REALTIME, &ts); +} + #endif // CONFIG_HAL_BOARD == HAL_BOARD_LINUX diff --git a/libraries/AP_HAL_Linux/Util.h b/libraries/AP_HAL_Linux/Util.h index 66ad1ce6bc..83d6ecf311 100644 --- a/libraries/AP_HAL_Linux/Util.h +++ b/libraries/AP_HAL_Linux/Util.h @@ -26,6 +26,11 @@ public: void _toneAlarm_timer_tick(); + /* + set system clock in UTC microseconds + */ + void set_system_clock(uint64_t time_utc_usec); + private: static Linux::ToneAlarm _toneAlarm; int saved_argc;