|
Monado OpenXR Runtime
|
A routine to automatically refine latency offsets of LED blink times using constellation samples. More...
#include "util/u_time.h"#include "util/u_logging.h"#include "os/os_threading.h"#include "tracking/t_time_sync.h"#include "tracking/t_constellation.h"
Go to the source code of this file.
Data Structures | |
| struct | t_led_sync_refinement_options |
| Options for the LED sync refinement. More... | |
| struct | t_led_sync_sample |
| A sample read out from the driver, to pass to the device in question. More... | |
| struct | t_led_sync_refinement |
Macros | |
| #define | T_LED_SYNC_DEFAULT_RESYNC_TIME (time_duration_ns)(U_TIME_1S_IN_NS * 5LL) |
| 10 seconds after last visually seen sample to resync | |
Enumerations | |
| enum | t_led_sync_refinement_flags { T_LED_SYNC_REFINEMENT_FLAGS_NONE = 0 , T_LED_SYNC_REFINEMENT_FLAGS_BLINK_DURATION = 1 << 0 , T_LED_SYNC_REFINEMENT_FLAGS_OPTICAL_DRIVEN_OFFSET = 1 << 1 , T_LED_SYNC_REFINEMENT_FLAGS_HAS_LATENCY_CAP = 1 << 2 } |
| Flags to control the behavior of the LED sync refinement routine. More... | |
| enum | t_led_sync_sample_timestamp_mode { T_LED_SYNC_SAMPLE_TIMESTAMP_MODE_INVALID = 0 , T_LED_SYNC_SAMPLE_TIMESTAMP_MODE_DEVICE_HOST_LATENCY = 1 , T_LED_SYNC_SAMPLE_TIMESTAMP_MODE_HOST_DEVICE_CLOCK_OFFSET = 2 } |
| enum | t_led_sync_phase { T_LED_SYNC_SEARCH_PHASE_INIT = 0 , T_LED_SYNC_SEARCH_PHASE_FIND_INITIAL_OFFSET = 1 , T_LED_SYNC_SEARCH_PHASE_FIND_RIGHT_EDGE = 2 , T_LED_SYNC_SEARCH_PHASE_FIND_LEFT_EDGE = 3 , T_LED_SYNC_SEARCH_PHASE_REFINE_BLINK_DURATION = 4 , T_LED_SYNC_SEARCH_PHASE_MAINTAIN_OFFSET = 5 } |
Functions | |
| int | t_led_sync_refinement_init (struct t_led_sync_refinement *refinement, const struct t_led_sync_refinement_options *options) |
| void | t_led_sync_refinement_destroy (struct t_led_sync_refinement *refinement) |
| void | t_led_sync_push_timing_event (struct t_led_sync_refinement *refinement, const struct t_timing_event_camera_exposure_start *event) |
| void | t_led_sync_push_constellation_sample (struct t_led_sync_refinement *refinement, const struct t_constellation_tracker_sample *sample) |
| bool | t_led_sync_get_sample (struct t_led_sync_refinement *refinement, struct t_led_sync_sample *out_sample) |
| void | t_led_sync_mark_latest_sample_applied (struct t_led_sync_refinement *refinement, timepoint_ns apply_time_ns) |
| void | t_led_sync_push_host_device_clock_offset (struct t_led_sync_refinement *refinement, time_duration_ns clock_offset_ns) |
| Pushes a clock offset to the refinement routine, this is the offset from the host to the device. | |
A routine to automatically refine latency offsets of LED blink times using constellation samples.
| #define T_LED_SYNC_DEFAULT_RESYNC_TIME (time_duration_ns)(U_TIME_1S_IN_NS * 5LL) |
10 seconds after last visually seen sample to resync
| enum t_led_sync_phase |
Flags to control the behavior of the LED sync refinement routine.
| void t_led_sync_push_host_device_clock_offset | ( | struct t_led_sync_refinement * | refinement, |
| time_duration_ns | clock_offset_ns | ||
| ) |
Pushes a clock offset to the refinement routine, this is the offset from the host to the device.
To convert a timestamp from host -> device domain, you would do: device_timestamp = host_timestamp + clock_offset_ns
References t_led_sync_refinement::driver_host_device_clock_offset_ns, and t_led_sync_refinement::initialized.
Referenced by pssense_add_clock_offset_sample().