Something went wrong. Try again.
The open source OpenXR runtime
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889// Copyright 2026, NVIDIA CORPORATION.// SPDX-License-Identifier: BSL-1.0/*! * @file * @brief IPC client @ref xrt_hand_tracker proxy. * @ingroup ipc_client */
#include "client/ipc_client.h"#include "client/ipc_client_hand_tracker.h"
#include "ipc_client_generated.h"
#include "util/u_misc.h"
struct ipc_client_hand_tracker{ struct xrt_hand_tracker base;
struct ipc_connection *ipc_c;
uint32_t id;};
static inline struct ipc_client_hand_tracker *ipc_client_hand_tracker(struct xrt_hand_tracker *xht){ return (struct ipc_client_hand_tracker *)xht;}
static xrt_result_thand_tracker_locate(struct xrt_hand_tracker *xht, struct xrt_space_overseer *xso, struct xrt_space *base_space, const struct xrt_pose *base_offset, int64_t at_timestamp_ns, struct xrt_hand_tracker_location *out_location){ struct ipc_client_hand_tracker *icht = ipc_client_hand_tracker(xht); uint32_t base_space_id = ipc_client_space_get_id(base_space); (void)xso;
return ipc_call_hand_tracker_locate( // icht->ipc_c, // icht->id, // base_space_id, // base_offset, // at_timestamp_ns, // out_location); //}
static xrt_result_thand_tracker_set_output(struct xrt_hand_tracker *xht, enum xrt_output_name name, const struct xrt_output_value *value){ struct ipc_client_hand_tracker *icht = ipc_client_hand_tracker(xht);
return ipc_call_hand_tracker_set_output(icht->ipc_c, icht->id, name, value);}
static voidhand_tracker_destroy(struct xrt_hand_tracker *xht){ struct ipc_client_hand_tracker *icht = ipc_client_hand_tracker(xht);
ipc_call_hand_tracker_destroy(icht->ipc_c, icht->id);
free(icht);}
xrt_result_tipc_client_hand_tracker_create(struct ipc_connection *ipc_c, uint32_t id, struct xrt_hand_tracker **out_xht){ struct ipc_client_hand_tracker *icht = U_TYPED_CALLOC(struct ipc_client_hand_tracker); if (icht == NULL) { return XRT_ERROR_ALLOCATION; }
icht->base.locate = hand_tracker_locate; icht->base.set_output = hand_tracker_set_output; icht->base.destroy = hand_tracker_destroy; icht->ipc_c = ipc_c; icht->id = id;
*out_xht = &icht->base;
return XRT_SUCCESS;}