monado/src/xrt/drivers/qwerty/qwerty_device.h

98 lines
2.4 KiB
C
Raw Normal View History

// Copyright 2021, Mateo de Mayo.
// SPDX-License-Identifier: BSL-1.0
/*!
* @file
* @brief Internal header for qwerty_device and its friends.
* @author Mateo de Mayo <mateodemayo@gmail.com>
* @ingroup drv_qwerty
*/
#pragma once
2021-03-11 15:30:51 +00:00
#include "xrt/xrt_device.h"
#define QWERTY_HMD_STR "Qwerty HMD"
#define QWERTY_HMD_TRACKER_STR QWERTY_HMD_STR " Tracker"
#ifdef __cplusplus
extern "C" {
#endif
/*!
* @addtogroup drv_qwerty
* @{
*/
//! Fake device that modifies its tracked pose through its methods.
2021-03-11 15:30:51 +00:00
//! @implements xrt_device
struct qwerty_device
{
struct xrt_device base;
struct xrt_pose pose; //!< Internal pose state
float movement_speed; //!< In meters per frame
bool left_pressed;
bool right_pressed;
bool forward_pressed;
bool backward_pressed;
bool up_pressed;
bool down_pressed;
float look_speed; //!< In radians per frame
bool look_left_pressed;
bool look_right_pressed;
bool look_up_pressed;
bool look_down_pressed;
2021-03-11 15:30:51 +00:00
};
/*!
* @name Qwerty Device
* @memberof qwerty_device
* qwerty_device public methods
* @{
*/
//! @public @memberof qwerty_device <!-- Trick for doxygen -->
2021-03-11 15:30:51 +00:00
//! Cast to qwerty_device. Ensures returning a valid device or crashing.
struct qwerty_device *
qwerty_device(struct xrt_device *xd);
//! Create qwerty_hmd. Crash on failure.
struct qwerty_device *
qwerty_hmd_create(void);
// clang-format off
void qwerty_press_left(struct qwerty_device *qd);
void qwerty_release_left(struct qwerty_device *qd);
void qwerty_press_right(struct qwerty_device *qd);
void qwerty_release_right(struct qwerty_device *qd);
void qwerty_press_forward(struct qwerty_device *qd);
void qwerty_release_forward(struct qwerty_device *qd);
void qwerty_press_backward(struct qwerty_device *qd);
void qwerty_release_backward(struct qwerty_device *qd);
void qwerty_press_up(struct qwerty_device *qd);
void qwerty_release_up(struct qwerty_device *qd);
void qwerty_press_down(struct qwerty_device *qd);
void qwerty_release_down(struct qwerty_device *qd);
void qwerty_press_look_left(struct qwerty_device *qd);
void qwerty_release_look_left(struct qwerty_device *qd);
void qwerty_press_look_right(struct qwerty_device *qd);
void qwerty_release_look_right(struct qwerty_device *qd);
void qwerty_press_look_up(struct qwerty_device *qd);
void qwerty_release_look_up(struct qwerty_device *qd);
void qwerty_press_look_down(struct qwerty_device *qd);
void qwerty_release_look_down(struct qwerty_device *qd);
// clang-format on
/*!
* @}
*/
/*!
* @}
*/
#ifdef __cplusplus
}
#endif