26 #include "rcl/macros.h"
28 #include "rcl/visibility_control.h"
29 #include "rcutils/time.h"
32 #define RCL_S_TO_NS RCUTILS_S_TO_NS
34 #define RCL_MS_TO_NS RCUTILS_MS_TO_NS
36 #define RCL_US_TO_NS RCUTILS_US_TO_NS
39 #define RCL_NS_TO_S RCUTILS_NS_TO_S
41 #define RCL_NS_TO_MS RCUTILS_NS_TO_MS
43 #define RCL_NS_TO_US RCUTILS_NS_TO_US
rcutils_allocator_t rcl_allocator_t
Encapsulation of an allocator.
Encapsulation of a time source.
rcl_jump_callback_info_t * jump_callbacks
An array of added jump callbacks.
void * data
Clock storage.
rcl_allocator_t allocator
Custom allocator used for internal allocations.
rcl_ret_t(* get_now)(void *data, rcl_time_point_value_t *now)
Pointer to get_now function.
rcl_clock_type_t type
Clock type.
size_t num_jump_callbacks
Number of callbacks in jump_callbacks.
A duration of time, measured in nanoseconds and its source.
rcl_duration_value_t nanoseconds
Duration in nanoseconds and its source.
Struct to describe an added callback.
void * user_data
Pointer passed to the callback.
rcl_jump_threshold_t threshold
Threshold to decide when to call the callback.
rcl_jump_callback_t callback
Callback to fucntion.
Describe the prerequisites for calling a time jump callback.
rcl_duration_t min_forward
bool on_clock_change
True to call callback when the clock type changes.
rcl_duration_t min_backward
Struct to describe a jump in time.
rcl_clock_change_t clock_change
Indicate whether or not the source of time changed.
rcl_duration_t delta
The new time minus the last time before the jump.
A single point in time, measured in nanoseconds, the reference point is based on the source.
rcl_clock_type_t clock_type
Clock type of the point in time.
rcl_time_point_value_t nanoseconds
Nanoseconds of the point in time.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_ros_clock_init(rcl_clock_t *clock, rcl_allocator_t *allocator)
Initialize a clock as a RCL_ROS_TIME time source.
enum rcl_clock_type_e rcl_clock_type_t
Time source type, used to indicate the source of a time measurement.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_steady_clock_init(rcl_clock_t *clock, rcl_allocator_t *allocator)
Initialize a clock as a RCL_STEADY_TIME time source.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_enable_ros_time_override(rcl_clock_t *clock)
Enable the ROS time abstraction override.
struct rcl_clock_s rcl_clock_t
Encapsulation of a time source.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_difference_times(const rcl_time_point_t *start, const rcl_time_point_t *finish, rcl_duration_t *delta)
Compute the difference between two time points.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_steady_clock_fini(rcl_clock_t *clock)
Finalize a clock as a RCL_STEADY_TIME time source.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_clock_get_now(rcl_clock_t *clock, rcl_time_point_value_t *time_point_value)
Fill the time point value with the current value of the associated clock.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_clock_fini(rcl_clock_t *clock)
Finalize a clock.
struct rcl_duration_s rcl_duration_t
A duration of time, measured in nanoseconds and its source.
rcl_clock_change_e
Enumeration to describe the type of time jump.
@ RCL_ROS_TIME_DEACTIVATED
The source switched to SYSTEM_TIME from ROS_TIME.
@ RCL_SYSTEM_TIME_NO_CHANGE
The source before and after the jump is SYSTEM_TIME.
@ RCL_ROS_TIME_NO_CHANGE
The source before and after the jump is ROS_TIME.
@ RCL_ROS_TIME_ACTIVATED
The source switched to ROS_TIME from SYSTEM_TIME.
rcutils_time_point_value_t rcl_time_point_value_t
A single point in time, measured in nanoseconds since the Unix epoch.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_system_clock_init(rcl_clock_t *clock, rcl_allocator_t *allocator)
Initialize a clock as a RCL_SYSTEM_TIME time source.
RCL_PUBLIC RCL_WARN_UNUSED bool rcl_clock_time_started(rcl_clock_t *clock)
Check if the clock has started.
struct rcl_time_jump_s rcl_time_jump_t
Struct to describe a jump in time.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_ros_clock_fini(rcl_clock_t *clock)
Finalize a clock as a RCL_ROS_TIME time source.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_disable_ros_time_override(rcl_clock_t *clock)
Disable the ROS time abstraction override.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_clock_add_jump_callback(rcl_clock_t *clock, rcl_jump_threshold_t threshold, rcl_jump_callback_t callback, void *user_data)
Add a callback to be called when a time jump exceeds a threshold.
void(* rcl_jump_callback_t)(const rcl_time_jump_t *time_jump, bool before_jump, void *user_data)
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_is_enabled_ros_time_override(rcl_clock_t *clock, bool *is_enabled)
Check if the RCL_ROS_TIME time source has the override enabled.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_clock_remove_jump_callback(rcl_clock_t *clock, rcl_jump_callback_t callback, void *user_data)
Remove a previously added time jump callback.
struct rcl_jump_callback_info_s rcl_jump_callback_info_t
Struct to describe an added callback.
struct rcl_time_point_s rcl_time_point_t
A single point in time, measured in nanoseconds, the reference point is based on the source.
rcl_clock_type_e
Time source type, used to indicate the source of a time measurement.
@ RCL_ROS_TIME
Use ROS time.
@ RCL_SYSTEM_TIME
Use system time.
@ RCL_CLOCK_UNINITIALIZED
Clock uninitialized.
@ RCL_STEADY_TIME
Use a steady clock time.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_system_clock_fini(rcl_clock_t *clock)
Finalize a clock as a RCL_SYSTEM_TIME time source.
rcutils_duration_value_t rcl_duration_value_t
A duration of time, measured in nanoseconds.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_set_ros_time_override(rcl_clock_t *clock, rcl_time_point_value_t time_value)
Set the current time for this RCL_ROS_TIME time source.
enum rcl_clock_change_e rcl_clock_change_t
Enumeration to describe the type of time jump.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_clock_init(rcl_clock_type_t clock_type, rcl_clock_t *clock, rcl_allocator_t *allocator)
Initialize a clock based on the passed type.
struct rcl_jump_threshold_s rcl_jump_threshold_t
Describe the prerequisites for calling a time jump callback.
RCL_PUBLIC RCL_WARN_UNUSED bool rcl_clock_valid(rcl_clock_t *clock)
Check if the clock has valid values.
rmw_ret_t rcl_ret_t
The type that holds an rcl return code.