Monado OpenXR Runtime
Loading...
Searching...
No Matches
wmr_camera.h
Go to the documentation of this file.
1// Copyright 2021 Jan Schmidt <jan@centricular.com>
2// SPDX-License-Identifier: BSL-1.0
3/*!
4 * @file
5 * @brief Interface to read WMR cameras
6 * @author Jan Schmidt <jan@centricular.com>
7 * @ingroup drv_wmr
8 */
9
10#pragma once
11
12#include "util/u_debug.h"
13#include "util/u_logging.h"
14#include "xrt/xrt_config_have.h"
15#include "xrt/xrt_frame.h"
16#include "xrt/xrt_prober.h"
17
18#include "wmr_config.h"
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
24struct wmr_camera;
25
27{
28 struct xrt_prober_device *dev_holo;
29 struct wmr_camera_config **tcam_confs; //!< Pointers to tracking cameras. Will be copied.
30 struct xrt_frame_sink **tcam_sinks; //!< Sinks for tracking cameras
31 int tcam_count; //!< Tracking camera count
32 int slam_cam_count; //!< Number of tracking cameras to use for SLAM
33 enum u_logging_level log_level;
34};
35
36#ifdef XRT_HAVE_LIBUSB
37
38struct wmr_camera *
39wmr_camera_open(struct wmr_camera_open_config *config);
40void
41wmr_camera_free(struct wmr_camera *cam);
42
43/*!
44 * Starts the cameras.
45 */
46bool
47wmr_camera_start(struct wmr_camera *cam);
48bool
49wmr_camera_stop(struct wmr_camera *cam);
50
51/*!
52 * Set manual exposure and gain values
53 *
54 * @param cam Camera container
55 * @param camera_id Which camera to affect
56 * @param exposure Time the shutter is open, observed values 60-6000.
57 * @param gain Amplification of the analog signal, observed values: 16-255.
58 */
59int
60wmr_camera_set_exposure_gain(struct wmr_camera *cam, uint8_t camera_id, uint16_t exposure, uint8_t gain);
61
62#else
63
64/* Stubs to disable camera functions without libusb */
65static inline struct wmr_camera *
66wmr_camera_open(struct wmr_camera_open_config *config)
67{
68 (void)config;
69 return NULL;
70}
71static inline void
72wmr_camera_free(struct wmr_camera *cam)
73{
74 (void)cam;
75}
76static inline bool
78{
79 (void)cam;
80 return false;
81}
82static inline bool
83wmr_camera_stop(struct wmr_camera *cam)
84{
85 (void)cam;
86 return false;
87}
88static inline int
89wmr_camera_set_exposure_gain(struct wmr_camera *cam, uint8_t camera_id, uint16_t exposure, uint8_t gain)
90{
91 (void)cam;
92 (void)camera_id;
93 (void)exposure;
94 (void)gain;
95 return -1;
96}
97
98#endif
99
100#ifdef __cplusplus
101}
102#endif
u_logging_level
Logging level enum.
Definition u_logging.h:45
Definition wmr_config.h:94
Definition wmr_camera.h:27
struct xrt_frame_sink ** tcam_sinks
Sinks for tracking cameras.
Definition wmr_camera.h:30
int tcam_count
Tracking camera count.
Definition wmr_camera.h:31
struct wmr_camera_config ** tcam_confs
Pointers to tracking cameras.
Definition wmr_camera.h:29
int slam_cam_count
Number of tracking cameras to use for SLAM.
Definition wmr_camera.h:32
Definition wmr_camera.c:91
A object that is sent frames.
Definition xrt_frame.h:58
A probed device, may or may not be opened.
Definition xrt_prober.h:89
Small debug helpers.
Basic logging functionality.
__le16 exposure
observed 60 to 6000 (but supports up to ~9000)
Definition wmr_camera.c:4
__le16 gain
observed 16 to 255
Definition wmr_camera.c:5
int wmr_camera_set_exposure_gain(struct wmr_camera *cam, uint8_t camera_id, uint16_t exposure, uint8_t gain)
Set manual exposure and gain values.
Definition wmr_camera.c:736
bool wmr_camera_start(struct wmr_camera *cam)
Starts the cameras.
Definition wmr_camera.c:614
WMR and MS HoloLens configuration structures.
Data frame header.
Common interface to probe for devices.