You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.7 KiB
76 lines
1.7 KiB
/* |
|
* Copyright (c) 2018 Oticon A/S |
|
* |
|
* SPDX-License-Identifier: Apache-2.0 |
|
*/ |
|
|
|
/** |
|
* @file |
|
* @brief API to the native_posix (Real) Time Clock |
|
*/ |
|
|
|
|
|
#ifndef _NATIVE_POSIX_RTC_H |
|
#define _NATIVE_POSIX_RTC_H |
|
|
|
#include "hw_models_top.h" |
|
#include <stdbool.h> |
|
#include <zephyr/types.h> |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
|
|
/* |
|
* Types of clocks this RTC provides: |
|
*/ |
|
/** Time since boot, cannot be offset. Microsecond resolution */ |
|
#define RTC_CLOCK_BOOT 0 |
|
/** Persistent clock, can be offset. Microsecond resolution */ |
|
#define RTC_CLOCK_REALTIME 1 |
|
/** |
|
* Pseudo-host real time clock (Please see documentation). |
|
* Nanosecond resolution |
|
*/ |
|
#define RTC_CLOCK_PSEUDOHOSTREALTIME 2 |
|
|
|
/** |
|
* @brief Get the value of a clock in microseconds |
|
* |
|
* @param clock_type Which clock to measure from |
|
* |
|
* @return Number of microseconds |
|
*/ |
|
uint64_t native_rtc_gettime_us(int clock_type); |
|
|
|
/** |
|
* @brief Get the value of a clock split in in nsec and seconds |
|
* |
|
* @param clock_type Which clock to measure from |
|
* @param nsec Pointer to store the nanoseconds |
|
* @param nsec Pointer to store the seconds |
|
*/ |
|
void native_rtc_gettime(int clock_type, uint32_t *nsec, uint64_t *sec); |
|
|
|
/** |
|
* @brief Offset the real time clock by a number of microseconds. |
|
* Note that this only affects the RTC_CLOCK_REALTIME and |
|
* RTC_CLOCK_PSEUDOHOSTREALTIME clocks. |
|
* |
|
* @param delta_us Number of microseconds to offset. The value is added to all |
|
* offsetable clocks. |
|
*/ |
|
void native_rtc_offset(int64_t delta_us); |
|
|
|
/** |
|
* @brief Adjust the speed of the clock source by a multiplicative factor |
|
* |
|
* @param clock_correction Factor by which to correct the clock speed |
|
*/ |
|
void native_rtc_adjust_clock(double clock_correction); |
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif |
|
|
|
#endif /* _NATIVE_POSIX_RTC_H */
|
|
|