···48484949WARN_IF_UNDOCUMENTED = @DOXYGEN_WARN_UNDOCUMENTED@
5050EXTRACT_ALL = @DOXYGEN_EXTRACT_ALL@
5151+HIDE_UNDOC_RELATIONS = NO
51525253# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
5354# path mentioned in the documentation of a class, which tells the reader which
···22432244# and usage relations if the target is undocumented or is not a class.
22442245# The default value is: YES.
2245224622462246-HIDE_UNDOC_RELATIONS = YES
22472247+# HIDE_UNDOC_RELATIONS = YES
2247224822482249# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
22492250# available from the path. This tool is part of Graphviz (see:
+1
doc/changes/xrt/mr.365.md
···11+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
···202021212222/*!
2323+ * @interface os_ble_device
2324 * Representing a single ble notify attribute on a device.
2425 *
2526 * @ingroup aux_os
+4
src/xrt/auxiliary/os/os_ble_dbus.c
···2828 *
2929 */
30303131+/*!
3232+ * An implementation of @ref os_ble_device using a DBus connection to BlueZ.
3333+ * @implements os_ble_device
3434+ */
3135struct ble_notify
3236{
3337 struct os_ble_device base;
+17
src/xrt/auxiliary/os/os_hid.h
···212122222323/*!
2424+ * @interface os_hid_device
2525+ *
2426 * Representing a single hid interface on a device.
2527 */
2628struct os_hid_device
···5658 *
5759 * If milliseconds are negative, this call blocks indefinitely, 0 polls,
5860 * and positive will block for that amount of milliseconds.
6161+ *
6262+ * @public @memberof os_hid_device
5963 */
6064static inline int
6165os_hid_read(struct os_hid_device *hid_dev,
···68726973/*!
7074 * Write an output report to the given device.
7575+ *
7676+ * @public @memberof os_hid_device
7177 */
7278static inline int
7379os_hid_write(struct os_hid_device *hid_dev, const uint8_t *data, size_t size)
···8086 *
8187 * If the device doesn't have more than one feature report, just request
8288 * report 0.
8989+ *
9090+ * @public @memberof os_hid_device
8391 */
8492static inline int
8593os_hid_get_feature(struct os_hid_device *hid_dev,
···9210093101/*!
94102 * Get a feature report with a timeout.
103103+ *
104104+ * @public @memberof os_hid_device
95105 */
96106static inline int
97107os_hid_get_feature_timeout(struct os_hid_device *hid_dev,
···107117 *
108118 * The first byte of the buffer is the report number, to be followed by
109119 * the data of the report.
120120+ *
121121+ * @public @memberof os_hid_device
110122 */
111123static inline int
112124os_hid_set_feature(struct os_hid_device *hid_dev,
···118130119131/*!
120132 * Close and free the given device.
133133+ *
134134+ * @public @memberof os_hid_device
121135 */
122136static inline void
123137os_hid_destroy(struct os_hid_device *hid_dev)
···128142#ifdef XRT_OS_LINUX
129143/*!
130144 * Open the given path as a hidraw device.
145145+ *
146146+ * @public @memberof hid_hidraw
147147+ * @relatesalso os_hid_device
131148 */
132149int
133150os_hid_open_hidraw(const char *path, struct os_hid_device **out_hid);
···2727#define HSV2_WIN "HSV Channel #3 (Blue)"
2828#define HSV3_WIN "HSV Channel #4 (White)"
29293030+/*!
3131+ * An @ref xrt_frame_sink that can be used to debug the behavior of
3232+ * @ref t_hsv_filter.
3333+ * @implements xrt_frame_sink
3434+ * @implements xrt_frame_node
3535+ */
3036class DebugHSVFilter
3137{
3238public:
+6
src/xrt/auxiliary/tracking/t_debug_hsv_picker.cpp
···2828#define max(a, b) (a > b ? a : b)
2929#define min(a, b) (a < b ? a : b)
30303131+/*!
3232+ * An @ref xrt_frame_sink that can be used to select HSV thresholds
3333+ * interactively.
3434+ * @implements xrt_frame_sink
3535+ * @implements xrt_frame_node
3636+ */
3137class DebugHSVPicker
3238{
3339public:
+5
src/xrt/auxiliary/tracking/t_debug_hsv_viewer.cpp
···23232424#define HSV_WIN "HSV Filter Tester"
25252626+/*!
2727+ * An @ref xrt_frame_sink related to debug viewing of HSV.
2828+ * @implements xrt_frame_sink
2929+ * @implements xrt_frame_node
3030+ */
2631class DebugHSVViewer
2732{
2833public:
+5
src/xrt/auxiliary/tracking/t_hsv_filter.c
···132132133133#define NUM_CHANNELS 4
134134135135+/*!
136136+ * An @ref xrt_frame_sink that splits the input based on hue.
137137+ * @implements xrt_frame_sink
138138+ * @implements xrt_frame_node
139139+ */
135140struct t_hsv_filter
136141{
137142 struct xrt_frame_sink base;
···2323 */
24242525/*!
2626+ * @class client_gl_swapchain
2727+ *
2628 * Wraps the real compositor swapchain providing a OpenGL based interface.
2729 *
2830 * Almost a one to one mapping to a OpenXR swapchain.
2931 *
3032 * @ingroup comp_client
3333+ * @implements xrt_swapchain_gl
3134 */
3235struct client_gl_swapchain
3336{
···3740};
38413942/*!
4343+ * @class client_gl_compositor
4444+ *
4045 * Wraps the real compositor providing a OpenGL based interface.
4146 *
4247 * @ingroup comp_client
4848+ * @implements xrt_compositor_gl
4349 */
4450struct client_gl_compositor
4551{
···5662 */
57635864/*!
5959- * Convenience function to convert a xrt_swapchain to a client_gl_swapchain.
6565+ * Down-cast helper.
6666+ * @private @memberof client_gl_swapchain
6067 */
6168static inline struct client_gl_swapchain *
6269client_gl_swapchain(struct xrt_swapchain *xsc)
···6572}
66736774/*!
6868- * Convenience function to convert a xrt_compositor to a client_gl_compositor.
7575+ * Down-cast helper.
7676+ * @private @memberof client_gl_compositor
6977 */
7078static inline struct client_gl_compositor *
7179client_gl_compositor(struct xrt_compositor *xc)
···79878088/*!
8189 * Fill in a client_gl_compositor and do common OpenGL sanity checking.
9090+ *
9191+ * OpenGL can have multiple backing window systems we have to interact with, so
9292+ * there isn't just one unified OpenGL client constructor.
9393+ *
9494+ * @public @memberof client_gl_compositor
9595+ * @relatesalso xrt_compositor_fd
8296 */
8397bool
8498client_gl_compositor_init(struct client_gl_compositor *c,
···154154 * A Razer Hydra system containing two controllers.
155155 *
156156 * @ingroup drv_hydra
157157+ * @extends xrt_tracking_origin
157158 */
158159struct hydra_system
159160{
···191192 * A Razer Hydra device, representing just a single controller.
192193 *
193194 * @ingroup drv_hydra
195195+ * @implements xrt_device
194196 */
195197struct hydra_device
196198{
+2
src/xrt/drivers/north_star/ns_hmd.h
···118118 * Information about the whole North Star headset.
119119 *
120120 * @ingroup drv_ns
121121+ * @implements xrt_device
121122 */
122123struct ns_hmd
123124{
···139140 * The mesh generator for the North Star distortion.
140141 *
141142 * @ingroup drv_ns
143143+ * @implements u_uv_generator
142144 */
143145struct ns_mesh
144146{
···440440 * Translated to axis that means the ball is on the Y+ axis, the buttons on the
441441 * Z+ axis, the trigger on the Z- axis, the USB port on the Y- axis, the start
442442 * button on the X+ axis, select button on the X- axis.
443443+ *
444444+ * @implements xrt_device
443445 */
444446struct psmv_device
445447{
···2626 */
27272828/*!
2929+ * @interface xrt_instance
3030+ *
2931 * This interface acts as a root object for Monado.
3032 * It typically either wraps an @ref xrt_prober or forms a connection to an
3133 * out-of-process XR service.
···3739 * interface, which is exposed by implementing xrt_instance_create().
3840 *
3941 * Additional information can be found in @ref md_targets
4242+ *
4343+ * @sa ipc_instance_create
4044 */
4145struct xrt_instance
4246{
···130134};
131135132136/*!
133133- * @name Method call helpers for xrt_instance
134134- * Calling code should prefer using these instead of directly using the function
135135- * pointer members.
136136- * @{
137137- */
138138-/*!
139139- * Helper function for @ref xrt_instance::select.
137137+ * @copydoc xrt_instance::select
140138 *
141141- * See @ref xrt_instance::select for documentation.
139139+ * Helper for calling through the function pointer.
142140 *
143143- * @relates xrt_instance
141141+ * @public @memberof xrt_instance
144142 */
145143static inline int
146144xrt_instance_select(struct xrt_instance *xinst,
···151149}
152150153151/*!
154154- * Helper function for @ref xrt_instance::create_fd_compositor.
152152+ * @copydoc xrt_instance::create_fd_compositor
155153 *
156156- * See @ref xrt_instance::create_fd_compositor for documentation.
154154+ * Helper for calling through the function pointer.
157155 *
158158- * @relates xrt_instance
156156+ * @public @memberof xrt_instance
159157 */
160158static inline int
161159xrt_instance_create_fd_compositor(struct xrt_instance *xinst,
···167165}
168166169167/*!
170170- * Helper function for @ref xrt_instance::get_prober.
168168+ * @copydoc xrt_instance::get_prober
171169 *
172172- * See @ref xrt_instance::get_prober for documentation.
170170+ * Helper for calling through the function pointer.
173171 *
174174- * @relates xrt_instance
172172+ * @public @memberof xrt_instance
175173 */
176174static inline int
177175xrt_instance_get_prober(struct xrt_instance *xinst, struct xrt_prober **out_xp)
···180178}
181179182180/*!
183183- * Helper function for @ref xrt_instance::destroy.
181181+ * Destroy an xrt_instance - helper function.
184182 *
185183 * @param[in,out] xinst_ptr A pointer to your instance implementation pointer.
186184 *
187185 * Will destroy the instance if *xinst_ptr is not NULL. Will then set *xinst_ptr
188186 * to NULL.
189187 *
190190- * @relates xrt_instance
188188+ * @public @memberof xrt_instance
191189 */
192190static inline void
193191xrt_instance_destroy(struct xrt_instance **xinst_ptr)
···200198 xinst->destroy(xinst);
201199 *xinst_ptr = NULL;
202200}
203203-/*!
204204- * @}
205205- */
206206-207201208202/*!
209203 * @name Factory
+18-21
src/xrt/include/xrt/xrt_prober.h
···224224/*!
225225 * Helper function for @ref xrt_prober::probe.
226226 *
227227- * @ingroup xrt_iface
228228- * @relates xrt_prober
227227+ * @public @memberof xrt_prober
229228 */
230229static inline int
231230xrt_prober_probe(struct xrt_prober *xp)
···236235/*!
237236 * Helper function for @ref xrt_prober::dump.
238237 *
239239- * @ingroup xrt_iface
240240- * @relates xrt_prober
238238+ * @public @memberof xrt_prober
241239 */
242240static inline int
243241xrt_prober_dump(struct xrt_prober *xp)
···248246/*!
249247 * Helper function for @ref xrt_prober::select.
250248 *
251251- * @ingroup xrt_iface
252252- * @relates xrt_prober
249249+ * @public @memberof xrt_prober
253250 */
254251static inline int
255252xrt_prober_select(struct xrt_prober *xp,
···262259/*!
263260 * Helper function for @ref xrt_prober::open_hid_interface.
264261 *
265265- * @ingroup xrt_iface
266266- * @relates xrt_prober
262262+ * @public @memberof xrt_prober
267263 */
268264static inline int
269265xrt_prober_open_hid_interface(struct xrt_prober *xp,
···277273/*!
278274 * Helper function for @ref xrt_prober::get_string_descriptor.
279275 *
280280- * @ingroup xrt_iface
281281- * @relates xrt_prober
276276+ * @public @memberof xrt_prober
282277 */
283278static inline int
284279xrt_prober_get_string_descriptor(struct xrt_prober *xp,
···294289/*!
295290 * Helper function for @ref xrt_prober::can_open.
296291 *
297297- * @ingroup xrt_iface
298298- * @relates xrt_prober
292292+ * @public @memberof xrt_prober
299293 */
300294static inline bool
301295xrt_prober_can_open(struct xrt_prober *xp, struct xrt_prober_device *xpdev)
···307301/*!
308302 * Helper function for @ref xrt_prober::xrt_prober_open_video_device.
309303 *
310310- * @ingroup xrt_iface
311311- * @relates xrt_prober
304304+ * @public @memberof xrt_prober
312305 */
313306static inline int
314307xrt_prober_open_video_device(struct xrt_prober *xp,
···322315/*!
323316 * Helper function for @ref xrt_prober::list_video_devices.
324317 *
325325- * @ingroup xrt_iface
326326- * @relates xrt_prober
318318+ * @public @memberof xrt_prober
327319 */
328320static inline int
329321xrt_prober_list_video_devices(struct xrt_prober *xp,
···336328/*!
337329 * Helper function for @ref xrt_prober::destroy.
338330 *
339339- * @ingroup xrt_iface
340340- * @relates xrt_prober
331331+ * @public @memberof xrt_prober
341332 */
342333static inline void
343334xrt_prober_destroy(struct xrt_prober **xp_ptr)
···360351 * created xrt_prober instance.
361352 * @param[in] list Prober entry list
362353 *
363363- * @ingroup xrt_iface
364364- * @relates xrt_prober
354354+ * @public @memberof xrt_prober
365355 */
366356int
367357xrt_prober_create_with_lists(struct xrt_prober **out_xp,
368358 struct xrt_prober_entry_lists *list);
369359360360+/*!
361361+ * @public @memberof xrt_prober
362362+ */
370363bool
371364xrt_prober_match_string(struct xrt_prober *xp,
372365 struct xrt_prober_device *dev,
···380373 */
381374382375/*!
383383- * A simple prober to probe for a HMD device connected to the system.
376376+ * @interface xrt_auto_prober
377377+ *
378378+ * An interface to be exposed by a device driver that should probe for the
379379+ * existence of its own device on the system, rather than using shared probers
380380+ * with vendor/product IDs, etc.
384381 *
385382 * @ingroup xrt_iface
386383 */
+13
src/xrt/include/xrt/xrt_tracking.h
···49495050/*!
5151 * A tracking system or device origin.
5252+ *
5353+ * Tracking systems will typically extend this structure.
5254 */
5355struct xrt_tracking_origin
5456{
···6668};
67696870/*!
7171+ * @interface xrt_tracking_factory
6972 * Tracking factory.
7073 */
7174struct xrt_tracking_factory
···98101};
99102100103/*!
104104+ * @interface xrt_tracked_psmv
105105+ *
101106 * A single tracked PS Move controller, camera and ball are not synced.
102107 *
103108 * @todo How do we communicate ball colour change?
···140145};
141146142147/*!
148148+ * @interface xrt_tracked_psvr
149149+ *
143150 * A tracked PSVR headset.
144151 *
145152 * @todo How do we communicate led lighting status?
···180187 *
181188 */
182189190190+//! @public @memberof xrt_tracked_psmv
183191static inline void
184192xrt_tracked_psmv_get_tracked_pose(struct xrt_tracked_psmv *psmv,
185193 enum xrt_input_name name,
···189197 psmv->get_tracked_pose(psmv, name, when_ns, out_relation);
190198}
191199200200+//! @public @memberof xrt_tracked_psmv
192201static inline void
193202xrt_tracked_psmv_push_imu(struct xrt_tracked_psmv *psmv,
194203 timepoint_ns timestamp_ns,
···197206 psmv->push_imu(psmv, timestamp_ns, sample);
198207}
199208209209+//! @public @memberof xrt_tracked_psmv
200210static inline void
201211xrt_tracked_psmv_destroy(struct xrt_tracked_psmv **xtmv_ptr)
202212{
···209219 *xtmv_ptr = NULL;
210220}
211221222222+//! @public @memberof xrt_tracked_psmv
212223static inline void
213224xrt_tracked_psvr_get_tracked_pose(struct xrt_tracked_psvr *psvr,
214225 timepoint_ns when_ns,
···217228 psvr->get_tracked_pose(psvr, when_ns, out_relation);
218229}
219230231231+//! @public @memberof xrt_tracked_psmv
220232static inline void
221233xrt_tracked_psvr_push_imu(struct xrt_tracked_psvr *psvr,
222234 timepoint_ns timestamp_ns,
···225237 psvr->push_imu(psvr, timestamp_ns, sample);
226238}
227239240240+//! @public @memberof xrt_tracked_psmv
228241static inline void
229242xrt_tracked_psvr_destroy(struct xrt_tracked_psvr **xtvr_ptr)
230243{
+8-2
src/xrt/ipc/ipc_client.h
···86868787} ipc_connection_t;
88888989-8989+/*!
9090+ * @name IPC low-level interface
9191+ * These functions are called by generated IPC client code.
9292+ * @{
9393+ */
9094ipc_result_t
9195ipc_client_send_message(ipc_connection_t *ipc_c, void *message, size_t size);
9296···105109 size_t reply_size,
106110 int *fds,
107111 size_t num_fds);
108108-112112+/*!
113113+ * @}
114114+ */
109115110116/*
111117 *
+8-1
src/xrt/ipc/ipc_client_compositor.c
···3232 * Internal structs and helpers.
3333 *
3434 */
3535-3535+/*!
3636+ * Client proxy for an xrt_compositor_fd implementation over IPC.
3737+ * @implements xrt_compositor_fd
3838+ */
3639struct ipc_client_compositor
3740{
3841 struct xrt_compositor_fd base;
···5053 } layers;
5154};
52555656+/*!
5757+ * Client proxy for an xrt_swapchain_fd implementation over IPC.
5858+ * @implements xrt_swapchain_fd
5959+ */
5360struct ipc_client_swapchain
5461{
5562 struct xrt_swapchain_fd base;
···31313232#include <float.h>
33333434+/*!
3535+ * A GUI scene showing the variable tracking provided by @ref util/u_var.h
3636+ * @implements gui_scene
3737+ */
3438struct debug_scene
3539{
3640 struct gui_scene base;
+4
src/xrt/state_trackers/gui/gui_scene_main_menu.c
···15151616static ImVec2 button_dims = {256, 0};
17171818+/*!
1919+ * A main menu GUI scene allowing selection of which scene to proceed to.
2020+ * @implements gui_scene
2121+ */
1822struct main_menu
1923{
2024 struct gui_scene base;
+4
src/xrt/state_trackers/gui/gui_scene_video.c
···1818#include "gui_imgui.h"
191920202121+/*!
2222+ * A GUI scene that lets the user select a user device.
2323+ * @implements gui_scene
2424+ */
2125struct video_select
2226{
2327 struct gui_scene base;
···2222 *
2323 */
24242525+/*!
2626+ * Main "real" instance implementation.
2727+ *
2828+ * Used in instances both with and without compositor access.
2929+ *
3030+ * @implements xrt_instance
3131+ */
2532struct t_instance
2633{
2734 struct xrt_instance base;
+6-5
src/xrt/targets/gui/gui_sdl2.h
···2929 * Common struct holding state for the GUI interface.
3030 *
3131 * @ingroup gui
3232+ * @extends gui_program
3233 */
3334struct sdl2_program
3435{
···4344/*!
4445 * Init SDL2, create and show a window and bring up any other structs needed.
4546 *
4646- * @ingroup gui
4747+ * @public @memberof sdl2_program
4748 */
4849int
4950gui_sdl2_init(struct sdl2_program *p);
50515152/*!
5252- * Loop until user request quit and show Imgui interface.
5353+ * Loop until user requests quit, and show Imgui interface.
5354 *
5454- * @ingroup gui
5555+ * @public @memberof sdl2_program
5556 */
5657void
5758gui_sdl2_imgui_loop(struct sdl2_program *p);
···5960/*!
6061 * Loop until quit signal has been received.
6162 *
6262- * @ingroup gui
6363+ * @public @memberof sdl2_program
6364 */
6465void
6566gui_sdl2_loop(struct sdl2_program *p);
···6768/*!
6869 * Destroy all SDL things and quit SDL.
6970 *
7070- * @ingroup gui
7171+ * @public @memberof sdl2_program
7172 */
7273void
7374gui_sdl2_quit(struct sdl2_program *p);
+1
src/xrt/targets/openxr/oxr_sdl2_hack.c
···48484949/*!
5050 * Common struct holding state for the GUI interface.
5151+ * @extends gui_program
5152 */
5253struct sdl2_program
5354{