13#ifndef ZEPHYR_INCLUDE_ZEPHYR_PRECISION_TIMING_PRECISION_CLOCK_H_
14#define ZEPHYR_INCLUDE_ZEPHYR_PRECISION_TIMING_PRECISION_CLOCK_H_
36#define PRECISION_CLOCK_SCALED_PPM_SHIFT 16
39#define PRECISION_CLOCK_SCALED_PPM_ONE (INT64_C(1) << PRECISION_CLOCK_SCALED_PPM_SHIFT)
int precision_clock_ppb_to_scaled_ppm(double ppb, int64_t *scaled_ppm)
Convert parts per billion to scaled parts per million.
int precision_clock_adjust_rate(const struct precision_clock *precision_clk, int64_t scaled_ppm)
Set the rate offset of a precision clock.
int precision_clock_set(const struct precision_clock *precision_clk, precision_time_t time_ns)
Set a precision clock.
int precision_clock_adjust_phase(const struct precision_clock *precision_clk, precision_time_t phase_ns)
Apply a phase adjustment to a precision clock.
int precision_clock_read(const struct precision_clock *precision_clk, precision_time_t *time_ns)
Read a precision clock.
int64_t precision_time_t
Signed precision time value expressed in nanoseconds.
Definition precision_time.h:40
Signed precision time arithmetic.
__INT64_TYPE__ int64_t
Definition stdint.h:75
Operations implemented by a precision clock adapter.
Definition precision_clock.h:47
int(* adjust_rate)(const struct precision_clock *precision_clk, int64_t scaled_ppm)
Set the clock rate offset from its nominal frequency.
Definition precision_clock.h:55
int(* adjust_phase)(const struct precision_clock *precision_clk, precision_time_t phase_ns)
Apply a signed phase adjustment in nanoseconds.
Definition precision_clock.h:53
int(* read)(const struct precision_clock *precision_clk, precision_time_t *time_ns)
Read the current clock value.
Definition precision_clock.h:49
int(* set)(const struct precision_clock *precision_clk, precision_time_t time_ns)
Set the current clock value.
Definition precision_clock.h:51
Protocol-neutral precision clock instance.
Definition precision_clock.h:59
void * data
Adapter-specific data passed to each operation.
Definition precision_clock.h:63
const struct precision_clock_api * api
Adapter operations.
Definition precision_clock.h:61