22#define T_LED_SYNC_DEFAULT_RESYNC_TIME (time_duration_ns)(U_TIME_1S_IN_NS * 5LL)
27 T_LED_SYNC_REFINEMENT_FLAGS_NONE = 0,
147 } binary_search_state;
156 } blink_time_refinement_state;
u_logging_level
Logging level enum.
Definition u_logging.h:45
int64_t timepoint_ns
Integer timestamp type.
Definition u_time.h:77
int64_t time_duration_ns
Integer duration type in nanoseconds.
Definition u_time.h:88
Wrapper around OS threading native functions.
A wrapper around a native mutex.
Definition os_threading.h:69
Definition t_constellation.h:306
Options for the LED sync refinement.
Definition t_led_sync_refinement.h:34
time_duration_ns time_to_resync_ns
Time to wait after the last visually seen sample before resyncing.
Definition t_led_sync_refinement.h:47
time_duration_ns min_blink_duration_ns
The minimum duration to use for the LED blinks, if using reduction.
Definition t_led_sync_refinement.h:42
uint32_t settle_frames
Frames to wait after the sample was applied to let the device settle.
Definition t_led_sync_refinement.h:49
time_duration_ns max_blink_duration_ns
The maximum duration to use for the LED blinks, if using reduction.
Definition t_led_sync_refinement.h:44
enum t_led_sync_refinement_flags flags
The flags to use when refining.
Definition t_led_sync_refinement.h:36
time_duration_ns initial_blink_duration_ns
How long the LEDs should be initially blinking for, in nanoseconds.
Definition t_led_sync_refinement.h:39
Definition t_led_sync_refinement.h:81
uint32_t frames_since_last_visually_seen
The amount of frames since the controller was last visually seen.
Definition t_led_sync_refinement.h:128
time_duration_ns found_left_edge_ns
The found left edge of the exposure, -1 if not found yet.
Definition t_led_sync_refinement.h:137
time_duration_ns found_right_edge_ns
The found right edge of the exposure, -1 if not found yet.
Definition t_led_sync_refinement.h:139
time_duration_ns right_bound_ns
The current right bound of the binary search, if we're in a find edge phase.
Definition t_led_sync_refinement.h:146
bool has_sample_for_driver
Whether we have a sample ready to be sent to the driver/device.
Definition t_led_sync_refinement.h:104
time_duration_ns left_bound_ns
The current left bound of the binary search, if we're in a find edge phase.
Definition t_led_sync_refinement.h:144
time_duration_ns current_latency_offset_ns
The current estimated latency offset between the device and the host, in nanoseconds.
Definition t_led_sync_refinement.h:117
uint32_t current_sequence_id
The sequence ID of the latest timing event we processed.
Definition t_led_sync_refinement.h:131
bool sample_applied
Whether the sample has been applied.
Definition t_led_sync_refinement.h:108
bool backing_off
Whether we're currently trying to back off a lower blink duration.
Definition t_led_sync_refinement.h:155
struct t_led_sync_sample sample_for_driver
The sample to be sent to the driver/device on it's next convenience.
Definition t_led_sync_refinement.h:106
time_duration_ns last_good_blink_duration_ns
The last blink duration that didn't cause the device to become unstable.
Definition t_led_sync_refinement.h:152
time_duration_ns exposure_time_ns
The known time the frame was exposed for.
Definition t_led_sync_refinement.h:98
time_duration_ns current_blink_duration_ns
How long the LEDs blink for, each frame.
Definition t_led_sync_refinement.h:125
enum t_led_sync_phase phase
The current search phase.
Definition t_led_sync_refinement.h:111
bool initialized
Whether the structure has been fully initialized.
Definition t_led_sync_refinement.h:83
time_duration_ns current_blink_fudge_ns
The amount of fudge between the latency offset and the actual blink start time, in nanoseconds,...
Definition t_led_sync_refinement.h:122
timepoint_ns last_sample_apply_time_ns
The time the latest sample was applied to the driver/device.
Definition t_led_sync_refinement.h:134
bool has_exposure_time
Whether we know the actual exposure time of the frames.
Definition t_led_sync_refinement.h:96
time_duration_ns exposure_interval_ns
The known interval between frames.
Definition t_led_sync_refinement.h:101
struct t_led_sync_refinement_options options
The options to use for refinement.
Definition t_led_sync_refinement.h:88
A sample read out from the driver, to pass to the device in question.
Definition t_led_sync_refinement.h:54
time_duration_ns fudge_offset_ns
The latency offset to apply to fudge the blink to line up as best as possible with the exposure.
Definition t_led_sync_refinement.h:59
time_duration_ns device_host_latency_ns
The latency offset from the device timestamps to the host.
Definition t_led_sync_refinement.h:56
time_duration_ns blink_duration_ns
The duration to make the LEDs blink for, in nanoseconds.
Definition t_led_sync_refinement.h:61
Marks beginning of a camera exposure, pushed from the source to the sink.
Definition t_time_sync.h:29
Header defining the tracking system integration in Monado.
t_led_sync_refinement_flags
Flags to control the behavior of the LED sync refinement routine.
Definition t_led_sync_refinement.h:26
@ T_LED_SYNC_REFINEMENT_FLAGS_BLINK_DURATION
Whether to try to optimize the blink duration after finding an offset, to lessen power usage.
Definition t_led_sync_refinement.h:29
t_led_sync_phase
Definition t_led_sync_refinement.h:65
@ T_LED_SYNC_SEARCH_PHASE_REFINE_BLINK_DURATION
We've found an offset, now we can optimize the blink duration to something that keeps it tracking.
Definition t_led_sync_refinement.h:75
@ T_LED_SYNC_SEARCH_PHASE_FIND_LEFT_EDGE
Trying to align the falling edge of the LED blinks with the rising edge of the camera exposure.
Definition t_led_sync_refinement.h:73
@ T_LED_SYNC_SEARCH_PHASE_INIT
The initial phase, where we haven't made any adjustments yet.
Definition t_led_sync_refinement.h:67
@ T_LED_SYNC_SEARCH_PHASE_FIND_INITIAL_OFFSET
Trying to find some offset that gets us in sync at all.
Definition t_led_sync_refinement.h:69
@ T_LED_SYNC_SEARCH_PHASE_FIND_RIGHT_EDGE
Trying to align the rising edge of the LED blinks with the falling edge of the camera exposure.
Definition t_led_sync_refinement.h:71
@ T_LED_SYNC_SEARCH_PHASE_MAINTAIN_OFFSET
We've found an offset and optimized the center of the LED blink to the center of the exposure.
Definition t_led_sync_refinement.h:77
Header defining interfaces for time synchronization in Monado.
Basic logging functionality.
Time-keeping: a clock that is steady, convertible to system time, and ideally high-resolution.