···4849WARN_IF_UNDOCUMENTED = @DOXYGEN_WARN_UNDOCUMENTED@
50EXTRACT_ALL = @DOXYGEN_EXTRACT_ALL@
05152# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
53# path mentioned in the documentation of a class, which tells the reader which
···2243# and usage relations if the target is undocumented or is not a class.
2244# The default value is: YES.
22452246-HIDE_UNDOC_RELATIONS = YES
22472248# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
2249# available from the path. This tool is part of Graphviz (see:
···4849WARN_IF_UNDOCUMENTED = @DOXYGEN_WARN_UNDOCUMENTED@
50EXTRACT_ALL = @DOXYGEN_EXTRACT_ALL@
51+HIDE_UNDOC_RELATIONS = NO
5253# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
54# path mentioned in the documentation of a class, which tells the reader which
···2244# and usage relations if the target is undocumented or is not a class.
2245# The default value is: YES.
22462247+# HIDE_UNDOC_RELATIONS = YES
22482249# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
2250# available from the path. This tool is part of Graphviz (see:
+1
doc/changes/xrt/mr.365.md
···0
···1+Improve Doxygen documentation of interfaces. Now the inheritance structure and implementation of interfaces is shown in the docs, and helper functions that call through function pointers are listed as "member functions", to help developers understand the internal structure of Monado better.
+1
src/xrt/auxiliary/os/os_ble.h
···202122/*!
023 * Representing a single ble notify attribute on a device.
24 *
25 * @ingroup aux_os
···202122/*!
23+ * @interface os_ble_device
24 * Representing a single ble notify attribute on a device.
25 *
26 * @ingroup aux_os
···28 *
29 */
3031+/*!
32+ * An implementation of @ref os_ble_device using a DBus connection to BlueZ.
33+ * @implements os_ble_device
34+ */
35struct ble_notify
36{
37 struct os_ble_device base;
+17
src/xrt/auxiliary/os/os_hid.h
···212223/*!
0024 * Representing a single hid interface on a device.
25 */
26struct os_hid_device
···56 *
57 * If milliseconds are negative, this call blocks indefinitely, 0 polls,
58 * and positive will block for that amount of milliseconds.
0059 */
60static inline int
61os_hid_read(struct os_hid_device *hid_dev,
···6869/*!
70 * Write an output report to the given device.
0071 */
72static inline int
73os_hid_write(struct os_hid_device *hid_dev, const uint8_t *data, size_t size)
···80 *
81 * If the device doesn't have more than one feature report, just request
82 * report 0.
0083 */
84static inline int
85os_hid_get_feature(struct os_hid_device *hid_dev,
···9293/*!
94 * Get a feature report with a timeout.
0095 */
96static inline int
97os_hid_get_feature_timeout(struct os_hid_device *hid_dev,
···107 *
108 * The first byte of the buffer is the report number, to be followed by
109 * the data of the report.
00110 */
111static inline int
112os_hid_set_feature(struct os_hid_device *hid_dev,
···118119/*!
120 * Close and free the given device.
00121 */
122static inline void
123os_hid_destroy(struct os_hid_device *hid_dev)
···128#ifdef XRT_OS_LINUX
129/*!
130 * Open the given path as a hidraw device.
000131 */
132int
133os_hid_open_hidraw(const char *path, struct os_hid_device **out_hid);
···212223/*!
24+ * @interface os_hid_device
25+ *
26 * Representing a single hid interface on a device.
27 */
28struct os_hid_device
···58 *
59 * If milliseconds are negative, this call blocks indefinitely, 0 polls,
60 * and positive will block for that amount of milliseconds.
61+ *
62+ * @public @memberof os_hid_device
63 */
64static inline int
65os_hid_read(struct os_hid_device *hid_dev,
···7273/*!
74 * Write an output report to the given device.
75+ *
76+ * @public @memberof os_hid_device
77 */
78static inline int
79os_hid_write(struct os_hid_device *hid_dev, const uint8_t *data, size_t size)
···86 *
87 * If the device doesn't have more than one feature report, just request
88 * report 0.
89+ *
90+ * @public @memberof os_hid_device
91 */
92static inline int
93os_hid_get_feature(struct os_hid_device *hid_dev,
···100101/*!
102 * Get a feature report with a timeout.
103+ *
104+ * @public @memberof os_hid_device
105 */
106static inline int
107os_hid_get_feature_timeout(struct os_hid_device *hid_dev,
···117 *
118 * The first byte of the buffer is the report number, to be followed by
119 * the data of the report.
120+ *
121+ * @public @memberof os_hid_device
122 */
123static inline int
124os_hid_set_feature(struct os_hid_device *hid_dev,
···130131/*!
132 * Close and free the given device.
133+ *
134+ * @public @memberof os_hid_device
135 */
136static inline void
137os_hid_destroy(struct os_hid_device *hid_dev)
···142#ifdef XRT_OS_LINUX
143/*!
144 * Open the given path as a hidraw device.
145+ *
146+ * @public @memberof hid_hidraw
147+ * @relatesalso os_hid_device
148 */
149int
150os_hid_open_hidraw(const char *path, struct os_hid_device **out_hid);
···27#define HSV2_WIN "HSV Channel #3 (Blue)"
28#define HSV3_WIN "HSV Channel #4 (White)"
2930+/*!
31+ * An @ref xrt_frame_sink that can be used to debug the behavior of
32+ * @ref t_hsv_filter.
33+ * @implements xrt_frame_sink
34+ * @implements xrt_frame_node
35+ */
36class DebugHSVFilter
37{
38public:
+6
src/xrt/auxiliary/tracking/t_debug_hsv_picker.cpp
···28#define max(a, b) (a > b ? a : b)
29#define min(a, b) (a < b ? a : b)
3000000031class DebugHSVPicker
32{
33public:
···28#define max(a, b) (a > b ? a : b)
29#define min(a, b) (a < b ? a : b)
3031+/*!
32+ * An @ref xrt_frame_sink that can be used to select HSV thresholds
33+ * interactively.
34+ * @implements xrt_frame_sink
35+ * @implements xrt_frame_node
36+ */
37class DebugHSVPicker
38{
39public:
···47};
4849/*!
50- * Generator struct for building meshes, can be implemented by drivers for
0051 * special meshes.
52 *
53 * @ingroup aux_util
···67 * Given a @ref u_uv_generator generates num_views meshes, populates target.
68 *
69 * @ingroup aux_util
0070 */
71void
72u_distortion_mesh_from_gen(struct u_uv_generator *,
···78 * values into it. This probably isn't the function you want.
79 *
80 * @ingroup aux_util
081 */
82void
83u_distortion_mesh_generator_from_panotools(
···90 * This is probably the function you want.
91 *
92 * @ingroup aux_util
093 */
94void
95u_distortion_mesh_from_panotools(const struct u_panotools_values *left,
···100 * Create two distortion meshes with no distortion.
101 *
102 * @ingroup aux_util
0103 */
104void
105u_distortion_mesh_none(struct xrt_hmd_parts *target);
···47};
4849/*!
50+ * @interface u_uv_generator
51+ *
52+ * Generator interface for building meshes, can be implemented by drivers for
53 * special meshes.
54 *
55 * @ingroup aux_util
···69 * Given a @ref u_uv_generator generates num_views meshes, populates target.
70 *
71 * @ingroup aux_util
72+ * @public @memberof u_uv_generator
73+ * @relatesalso xrt_hmd_parts
74 */
75void
76u_distortion_mesh_from_gen(struct u_uv_generator *,
···82 * values into it. This probably isn't the function you want.
83 *
84 * @ingroup aux_util
85+ * @see u_distortion_mesh_from_panotools
86 */
87void
88u_distortion_mesh_generator_from_panotools(
···95 * This is probably the function you want.
96 *
97 * @ingroup aux_util
98+ * @relates xrt_hmd_parts
99 */
100void
101u_distortion_mesh_from_panotools(const struct u_panotools_values *left,
···106 * Create two distortion meshes with no distortion.
107 *
108 * @ingroup aux_util
109+ * @relates xrt_hmd_parts
110 */
111void
112u_distortion_mesh_none(struct xrt_hmd_parts *target);
···23 */
2425/*!
0026 * Wraps the real compositor swapchain providing a OpenGL based interface.
27 *
28 * Almost a one to one mapping to a OpenXR swapchain.
29 *
30 * @ingroup comp_client
031 */
32struct client_gl_swapchain
33{
···37};
3839/*!
0040 * Wraps the real compositor providing a OpenGL based interface.
41 *
42 * @ingroup comp_client
043 */
44struct client_gl_compositor
45{
···56 */
5758/*!
59- * Convenience function to convert a xrt_swapchain to a client_gl_swapchain.
060 */
61static inline struct client_gl_swapchain *
62client_gl_swapchain(struct xrt_swapchain *xsc)
···65}
6667/*!
68- * Convenience function to convert a xrt_compositor to a client_gl_compositor.
069 */
70static inline struct client_gl_compositor *
71client_gl_compositor(struct xrt_compositor *xc)
···7980/*!
81 * Fill in a client_gl_compositor and do common OpenGL sanity checking.
00000082 */
83bool
84client_gl_compositor_init(struct client_gl_compositor *c,
···23 */
2425/*!
26+ * @class client_gl_swapchain
27+ *
28 * Wraps the real compositor swapchain providing a OpenGL based interface.
29 *
30 * Almost a one to one mapping to a OpenXR swapchain.
31 *
32 * @ingroup comp_client
33+ * @implements xrt_swapchain_gl
34 */
35struct client_gl_swapchain
36{
···40};
4142/*!
43+ * @class client_gl_compositor
44+ *
45 * Wraps the real compositor providing a OpenGL based interface.
46 *
47 * @ingroup comp_client
48+ * @implements xrt_compositor_gl
49 */
50struct client_gl_compositor
51{
···62 */
6364/*!
65+ * Down-cast helper.
66+ * @private @memberof client_gl_swapchain
67 */
68static inline struct client_gl_swapchain *
69client_gl_swapchain(struct xrt_swapchain *xsc)
···72}
7374/*!
75+ * Down-cast helper.
76+ * @private @memberof client_gl_compositor
77 */
78static inline struct client_gl_compositor *
79client_gl_compositor(struct xrt_compositor *xc)
···8788/*!
89 * Fill in a client_gl_compositor and do common OpenGL sanity checking.
90+ *
91+ * OpenGL can have multiple backing window systems we have to interact with, so
92+ * there isn't just one unified OpenGL client constructor.
93+ *
94+ * @public @memberof client_gl_compositor
95+ * @relatesalso xrt_compositor_fd
96 */
97bool
98client_gl_compositor_init(struct client_gl_compositor *c,
+6-4
src/xrt/compositor/client/comp_gl_xlib_client.h
···181920/*!
021 * A client facing xlib OpenGL base compositor.
22 *
23 * @ingroup comp_client
024 */
25struct client_gl_xlib_compositor
26{
···29};
3031/*!
32- * Convenience function to convert a xrt_compositor to a
33- * client_gl_xlib_compositor.
34 *
35- * @ingroup comp_client
36 */
37static inline struct client_gl_xlib_compositor *
38client_gl_xlib_compositor(struct xrt_compositor *xc)
···43/*!
44 * Create a new client_gl_xlib_compositor.
45 *
46- * @ingroup comp_client
047 */
48struct client_gl_xlib_compositor *
49client_gl_xlib_compositor_create(struct xrt_compositor_fd *xcfd,
···154 * A Razer Hydra system containing two controllers.
155 *
156 * @ingroup drv_hydra
0157 */
158struct hydra_system
159{
···191 * A Razer Hydra device, representing just a single controller.
192 *
193 * @ingroup drv_hydra
0194 */
195struct hydra_device
196{
···154 * A Razer Hydra system containing two controllers.
155 *
156 * @ingroup drv_hydra
157+ * @extends xrt_tracking_origin
158 */
159struct hydra_system
160{
···192 * A Razer Hydra device, representing just a single controller.
193 *
194 * @ingroup drv_hydra
195+ * @implements xrt_device
196 */
197struct hydra_device
198{
+2
src/xrt/drivers/north_star/ns_hmd.h
···118 * Information about the whole North Star headset.
119 *
120 * @ingroup drv_ns
0121 */
122struct ns_hmd
123{
···139 * The mesh generator for the North Star distortion.
140 *
141 * @ingroup drv_ns
0142 */
143struct ns_mesh
144{
···118 * Information about the whole North Star headset.
119 *
120 * @ingroup drv_ns
121+ * @implements xrt_device
122 */
123struct ns_hmd
124{
···140 * The mesh generator for the North Star distortion.
141 *
142 * @ingroup drv_ns
143+ * @implements u_uv_generator
144 */
145struct ns_mesh
146{
···440 * Translated to axis that means the ball is on the Y+ axis, the buttons on the
441 * Z+ axis, the trigger on the Z- axis, the USB port on the Y- axis, the start
442 * button on the X+ axis, select button on the X- axis.
00443 */
444struct psmv_device
445{
···440 * Translated to axis that means the ball is on the Y+ axis, the buttons on the
441 * Z+ axis, the trigger on the Z- axis, the USB port on the Y- axis, the start
442 * button on the X+ axis, select button on the X- axis.
443+ *
444+ * @implements xrt_device
445 */
446struct psmv_device
447{
+1
src/xrt/drivers/psvr/psvr_device.c
···49 * Private struct for the @ref drv_psvr device.
50 *
51 * @ingroup drv_psvr
052 */
53struct psvr_device
54{
···26 */
2728/*!
0029 * This interface acts as a root object for Monado.
30 * It typically either wraps an @ref xrt_prober or forms a connection to an
31 * out-of-process XR service.
···37 * interface, which is exposed by implementing xrt_instance_create().
38 *
39 * Additional information can be found in @ref md_targets
0040 */
41struct xrt_instance
42{
···130};
131132/*!
133- * @name Method call helpers for xrt_instance
134- * Calling code should prefer using these instead of directly using the function
135- * pointer members.
136- * @{
137- */
138-/*!
139- * Helper function for @ref xrt_instance::select.
140 *
141- * See @ref xrt_instance::select for documentation.
142 *
143- * @relates xrt_instance
144 */
145static inline int
146xrt_instance_select(struct xrt_instance *xinst,
···151}
152153/*!
154- * Helper function for @ref xrt_instance::create_fd_compositor.
155 *
156- * See @ref xrt_instance::create_fd_compositor for documentation.
157 *
158- * @relates xrt_instance
159 */
160static inline int
161xrt_instance_create_fd_compositor(struct xrt_instance *xinst,
···167}
168169/*!
170- * Helper function for @ref xrt_instance::get_prober.
171 *
172- * See @ref xrt_instance::get_prober for documentation.
173 *
174- * @relates xrt_instance
175 */
176static inline int
177xrt_instance_get_prober(struct xrt_instance *xinst, struct xrt_prober **out_xp)
···180}
181182/*!
183- * Helper function for @ref xrt_instance::destroy.
184 *
185 * @param[in,out] xinst_ptr A pointer to your instance implementation pointer.
186 *
187 * Will destroy the instance if *xinst_ptr is not NULL. Will then set *xinst_ptr
188 * to NULL.
189 *
190- * @relates xrt_instance
191 */
192static inline void
193xrt_instance_destroy(struct xrt_instance **xinst_ptr)
···200 xinst->destroy(xinst);
201 *xinst_ptr = NULL;
202}
203-/*!
204- * @}
205- */
206-207208/*!
209 * @name Factory
···26 */
2728/*!
29+ * @interface xrt_instance
30+ *
31 * This interface acts as a root object for Monado.
32 * It typically either wraps an @ref xrt_prober or forms a connection to an
33 * out-of-process XR service.
···39 * interface, which is exposed by implementing xrt_instance_create().
40 *
41 * Additional information can be found in @ref md_targets
42+ *
43+ * @sa ipc_instance_create
44 */
45struct xrt_instance
46{
···134};
135136/*!
137+ * @copydoc xrt_instance::select
000000138 *
139+ * Helper for calling through the function pointer.
140 *
141+ * @public @memberof xrt_instance
142 */
143static inline int
144xrt_instance_select(struct xrt_instance *xinst,
···149}
150151/*!
152+ * @copydoc xrt_instance::create_fd_compositor
153 *
154+ * Helper for calling through the function pointer.
155 *
156+ * @public @memberof xrt_instance
157 */
158static inline int
159xrt_instance_create_fd_compositor(struct xrt_instance *xinst,
···165}
166167/*!
168+ * @copydoc xrt_instance::get_prober
169 *
170+ * Helper for calling through the function pointer.
171 *
172+ * @public @memberof xrt_instance
173 */
174static inline int
175xrt_instance_get_prober(struct xrt_instance *xinst, struct xrt_prober **out_xp)
···178}
179180/*!
181+ * Destroy an xrt_instance - helper function.
182 *
183 * @param[in,out] xinst_ptr A pointer to your instance implementation pointer.
184 *
185 * Will destroy the instance if *xinst_ptr is not NULL. Will then set *xinst_ptr
186 * to NULL.
187 *
188+ * @public @memberof xrt_instance
189 */
190static inline void
191xrt_instance_destroy(struct xrt_instance **xinst_ptr)
···198 xinst->destroy(xinst);
199 *xinst_ptr = NULL;
200}
0000201202/*!
203 * @name Factory
+18-21
src/xrt/include/xrt/xrt_prober.h
···224/*!
225 * Helper function for @ref xrt_prober::probe.
226 *
227- * @ingroup xrt_iface
228- * @relates xrt_prober
229 */
230static inline int
231xrt_prober_probe(struct xrt_prober *xp)
···236/*!
237 * Helper function for @ref xrt_prober::dump.
238 *
239- * @ingroup xrt_iface
240- * @relates xrt_prober
241 */
242static inline int
243xrt_prober_dump(struct xrt_prober *xp)
···248/*!
249 * Helper function for @ref xrt_prober::select.
250 *
251- * @ingroup xrt_iface
252- * @relates xrt_prober
253 */
254static inline int
255xrt_prober_select(struct xrt_prober *xp,
···262/*!
263 * Helper function for @ref xrt_prober::open_hid_interface.
264 *
265- * @ingroup xrt_iface
266- * @relates xrt_prober
267 */
268static inline int
269xrt_prober_open_hid_interface(struct xrt_prober *xp,
···277/*!
278 * Helper function for @ref xrt_prober::get_string_descriptor.
279 *
280- * @ingroup xrt_iface
281- * @relates xrt_prober
282 */
283static inline int
284xrt_prober_get_string_descriptor(struct xrt_prober *xp,
···294/*!
295 * Helper function for @ref xrt_prober::can_open.
296 *
297- * @ingroup xrt_iface
298- * @relates xrt_prober
299 */
300static inline bool
301xrt_prober_can_open(struct xrt_prober *xp, struct xrt_prober_device *xpdev)
···307/*!
308 * Helper function for @ref xrt_prober::xrt_prober_open_video_device.
309 *
310- * @ingroup xrt_iface
311- * @relates xrt_prober
312 */
313static inline int
314xrt_prober_open_video_device(struct xrt_prober *xp,
···322/*!
323 * Helper function for @ref xrt_prober::list_video_devices.
324 *
325- * @ingroup xrt_iface
326- * @relates xrt_prober
327 */
328static inline int
329xrt_prober_list_video_devices(struct xrt_prober *xp,
···336/*!
337 * Helper function for @ref xrt_prober::destroy.
338 *
339- * @ingroup xrt_iface
340- * @relates xrt_prober
341 */
342static inline void
343xrt_prober_destroy(struct xrt_prober **xp_ptr)
···360 * created xrt_prober instance.
361 * @param[in] list Prober entry list
362 *
363- * @ingroup xrt_iface
364- * @relates xrt_prober
365 */
366int
367xrt_prober_create_with_lists(struct xrt_prober **out_xp,
368 struct xrt_prober_entry_lists *list);
369000370bool
371xrt_prober_match_string(struct xrt_prober *xp,
372 struct xrt_prober_device *dev,
···380 */
381382/*!
383- * A simple prober to probe for a HMD device connected to the system.
0000384 *
385 * @ingroup xrt_iface
386 */
···224/*!
225 * Helper function for @ref xrt_prober::probe.
226 *
227+ * @public @memberof xrt_prober
0228 */
229static inline int
230xrt_prober_probe(struct xrt_prober *xp)
···235/*!
236 * Helper function for @ref xrt_prober::dump.
237 *
238+ * @public @memberof xrt_prober
0239 */
240static inline int
241xrt_prober_dump(struct xrt_prober *xp)
···246/*!
247 * Helper function for @ref xrt_prober::select.
248 *
249+ * @public @memberof xrt_prober
0250 */
251static inline int
252xrt_prober_select(struct xrt_prober *xp,
···259/*!
260 * Helper function for @ref xrt_prober::open_hid_interface.
261 *
262+ * @public @memberof xrt_prober
0263 */
264static inline int
265xrt_prober_open_hid_interface(struct xrt_prober *xp,
···273/*!
274 * Helper function for @ref xrt_prober::get_string_descriptor.
275 *
276+ * @public @memberof xrt_prober
0277 */
278static inline int
279xrt_prober_get_string_descriptor(struct xrt_prober *xp,
···289/*!
290 * Helper function for @ref xrt_prober::can_open.
291 *
292+ * @public @memberof xrt_prober
0293 */
294static inline bool
295xrt_prober_can_open(struct xrt_prober *xp, struct xrt_prober_device *xpdev)
···301/*!
302 * Helper function for @ref xrt_prober::xrt_prober_open_video_device.
303 *
304+ * @public @memberof xrt_prober
0305 */
306static inline int
307xrt_prober_open_video_device(struct xrt_prober *xp,
···315/*!
316 * Helper function for @ref xrt_prober::list_video_devices.
317 *
318+ * @public @memberof xrt_prober
0319 */
320static inline int
321xrt_prober_list_video_devices(struct xrt_prober *xp,
···328/*!
329 * Helper function for @ref xrt_prober::destroy.
330 *
331+ * @public @memberof xrt_prober
0332 */
333static inline void
334xrt_prober_destroy(struct xrt_prober **xp_ptr)
···351 * created xrt_prober instance.
352 * @param[in] list Prober entry list
353 *
354+ * @public @memberof xrt_prober
0355 */
356int
357xrt_prober_create_with_lists(struct xrt_prober **out_xp,
358 struct xrt_prober_entry_lists *list);
359360+/*!
361+ * @public @memberof xrt_prober
362+ */
363bool
364xrt_prober_match_string(struct xrt_prober *xp,
365 struct xrt_prober_device *dev,
···373 */
374375/*!
376+ * @interface xrt_auto_prober
377+ *
378+ * An interface to be exposed by a device driver that should probe for the
379+ * existence of its own device on the system, rather than using shared probers
380+ * with vendor/product IDs, etc.
381 *
382 * @ingroup xrt_iface
383 */
+13
src/xrt/include/xrt/xrt_tracking.h
···4950/*!
51 * A tracking system or device origin.
0052 */
53struct xrt_tracking_origin
54{
···66};
6768/*!
069 * Tracking factory.
70 */
71struct xrt_tracking_factory
···98};
99100/*!
00101 * A single tracked PS Move controller, camera and ball are not synced.
102 *
103 * @todo How do we communicate ball colour change?
···140};
141142/*!
00143 * A tracked PSVR headset.
144 *
145 * @todo How do we communicate led lighting status?
···180 *
181 */
1820183static inline void
184xrt_tracked_psmv_get_tracked_pose(struct xrt_tracked_psmv *psmv,
185 enum xrt_input_name name,
···189 psmv->get_tracked_pose(psmv, name, when_ns, out_relation);
190}
1910192static inline void
193xrt_tracked_psmv_push_imu(struct xrt_tracked_psmv *psmv,
194 timepoint_ns timestamp_ns,
···197 psmv->push_imu(psmv, timestamp_ns, sample);
198}
1990200static inline void
201xrt_tracked_psmv_destroy(struct xrt_tracked_psmv **xtmv_ptr)
202{
···209 *xtmv_ptr = NULL;
210}
2110212static inline void
213xrt_tracked_psvr_get_tracked_pose(struct xrt_tracked_psvr *psvr,
214 timepoint_ns when_ns,
···217 psvr->get_tracked_pose(psvr, when_ns, out_relation);
218}
2190220static inline void
221xrt_tracked_psvr_push_imu(struct xrt_tracked_psvr *psvr,
222 timepoint_ns timestamp_ns,
···225 psvr->push_imu(psvr, timestamp_ns, sample);
226}
2270228static inline void
229xrt_tracked_psvr_destroy(struct xrt_tracked_psvr **xtvr_ptr)
230{
···4950/*!
51 * A tracking system or device origin.
52+ *
53+ * Tracking systems will typically extend this structure.
54 */
55struct xrt_tracking_origin
56{
···68};
6970/*!
71+ * @interface xrt_tracking_factory
72 * Tracking factory.
73 */
74struct xrt_tracking_factory
···101};
102103/*!
104+ * @interface xrt_tracked_psmv
105+ *
106 * A single tracked PS Move controller, camera and ball are not synced.
107 *
108 * @todo How do we communicate ball colour change?
···145};
146147/*!
148+ * @interface xrt_tracked_psvr
149+ *
150 * A tracked PSVR headset.
151 *
152 * @todo How do we communicate led lighting status?
···187 *
188 */
189190+//! @public @memberof xrt_tracked_psmv
191static inline void
192xrt_tracked_psmv_get_tracked_pose(struct xrt_tracked_psmv *psmv,
193 enum xrt_input_name name,
···197 psmv->get_tracked_pose(psmv, name, when_ns, out_relation);
198}
199200+//! @public @memberof xrt_tracked_psmv
201static inline void
202xrt_tracked_psmv_push_imu(struct xrt_tracked_psmv *psmv,
203 timepoint_ns timestamp_ns,
···206 psmv->push_imu(psmv, timestamp_ns, sample);
207}
208209+//! @public @memberof xrt_tracked_psmv
210static inline void
211xrt_tracked_psmv_destroy(struct xrt_tracked_psmv **xtmv_ptr)
212{
···219 *xtmv_ptr = NULL;
220}
221222+//! @public @memberof xrt_tracked_psmv
223static inline void
224xrt_tracked_psvr_get_tracked_pose(struct xrt_tracked_psvr *psvr,
225 timepoint_ns when_ns,
···228 psvr->get_tracked_pose(psvr, when_ns, out_relation);
229}
230231+//! @public @memberof xrt_tracked_psmv
232static inline void
233xrt_tracked_psvr_push_imu(struct xrt_tracked_psvr *psvr,
234 timepoint_ns timestamp_ns,
···237 psvr->push_imu(psvr, timestamp_ns, sample);
238}
239240+//! @public @memberof xrt_tracked_psmv
241static inline void
242xrt_tracked_psvr_destroy(struct xrt_tracked_psvr **xtvr_ptr)
243{
···1516static ImVec2 button_dims = {256, 0};
1718+/*!
19+ * A main menu GUI scene allowing selection of which scene to proceed to.
20+ * @implements gui_scene
21+ */
22struct main_menu
23{
24 struct gui_scene base;
···18#include "gui_imgui.h"
192021+/*!
22+ * A GUI scene that lets the user select a user device.
23+ * @implements gui_scene
24+ */
25struct video_select
26{
27 struct gui_scene base;
+81-1
src/xrt/state_trackers/prober/p_prober.h
···80#endif
8182/*!
83- * A prober device.
0084 */
85struct prober_device
86{
···127#endif
128};
129000130struct prober
131{
132 struct xrt_prober base;
···180181/*!
182 * Load the JSON config file.
00183 */
184void
185p_json_open_or_create_main_file(struct prober *p);
186187/*!
188 * Extract tracking settings from the JSON.
000189 */
190bool
191p_json_get_tracking_settings(struct prober *p, struct xrt_settings_tracking *s);
192193/*!
194 * Dump the given device to stdout.
00195 */
196void
197p_dump_device(struct prober *p, struct prober_device *pdev, int id);
198199/*!
200 * Get or create a @ref prober_device from the device.
00201 */
202int
203p_dev_get_usb_dev(struct prober *p,
···209210/*!
211 * Get or create a @ref prober_device from the device.
00212 */
213int
214p_dev_get_bluetooth_dev(struct prober *p,
···218 struct prober_device **out_pdev);
219220/*!
0000221 * Init the tracking factory.
000222 */
223int
224p_tracking_init(struct prober *p);
225226/*!
227 * Teardown the tracking factory.
000228 */
229void
230p_tracking_teardown(struct prober *p);
2310000232#ifdef XRT_HAVE_LIBUSB
0000000233int
234p_libusb_init(struct prober *p);
235000236void
237p_libusb_teardown(struct prober *p);
238000239int
240p_libusb_probe(struct prober *p);
241000242int
243p_libusb_get_string_descriptor(struct prober *p,
244 struct prober_device *pdev,
···246 unsigned char *buffer,
247 int length);
248000249bool
250p_libusb_can_open(struct prober *p, struct prober_device *pdev);
0000251#endif
252253#ifdef XRT_HAVE_LIBUVC
0000000254int
255p_libuvc_init(struct prober *p);
256000257void
258p_libuvc_teardown(struct prober *p);
259000260int
261p_libuvc_probe(struct prober *p);
0000262#endif
263264#ifdef XRT_HAVE_LIBUDEV
0000000265int
266p_udev_probe(struct prober *p);
000267#endif
···22 *
23 */
2425+/*!
26+ * Main "real" instance implementation.
27+ *
28+ * Used in instances both with and without compositor access.
29+ *
30+ * @implements xrt_instance
31+ */
32struct t_instance
33{
34 struct xrt_instance base;
+6-5
src/xrt/targets/gui/gui_sdl2.h
···29 * Common struct holding state for the GUI interface.
30 *
31 * @ingroup gui
032 */
33struct sdl2_program
34{
···43/*!
44 * Init SDL2, create and show a window and bring up any other structs needed.
45 *
46- * @ingroup gui
47 */
48int
49gui_sdl2_init(struct sdl2_program *p);
5051/*!
52- * Loop until user request quit and show Imgui interface.
53 *
54- * @ingroup gui
55 */
56void
57gui_sdl2_imgui_loop(struct sdl2_program *p);
···59/*!
60 * Loop until quit signal has been received.
61 *
62- * @ingroup gui
63 */
64void
65gui_sdl2_loop(struct sdl2_program *p);
···67/*!
68 * Destroy all SDL things and quit SDL.
69 *
70- * @ingroup gui
71 */
72void
73gui_sdl2_quit(struct sdl2_program *p);
···29 * Common struct holding state for the GUI interface.
30 *
31 * @ingroup gui
32+ * @extends gui_program
33 */
34struct sdl2_program
35{
···44/*!
45 * Init SDL2, create and show a window and bring up any other structs needed.
46 *
47+ * @public @memberof sdl2_program
48 */
49int
50gui_sdl2_init(struct sdl2_program *p);
5152/*!
53+ * Loop until user requests quit, and show Imgui interface.
54 *
55+ * @public @memberof sdl2_program
56 */
57void
58gui_sdl2_imgui_loop(struct sdl2_program *p);
···60/*!
61 * Loop until quit signal has been received.
62 *
63+ * @public @memberof sdl2_program
64 */
65void
66gui_sdl2_loop(struct sdl2_program *p);
···68/*!
69 * Destroy all SDL things and quit SDL.
70 *
71+ * @public @memberof sdl2_program
72 */
73void
74gui_sdl2_quit(struct sdl2_program *p);
+1
src/xrt/targets/openxr/oxr_sdl2_hack.c
···4849/*!
50 * Common struct holding state for the GUI interface.
051 */
52struct sdl2_program
53{
···4849/*!
50 * Common struct holding state for the GUI interface.
51+ * @extends gui_program
52 */
53struct sdl2_program
54{