mirror of
https://gitlab.freedesktop.org/monado/monado.git
synced 2025-01-29 01:48:31 +00:00
ipc: Add support for xrt_device::is_form_factor_available
This commit is contained in:
parent
b93d1ea8b8
commit
693641b70b
|
@ -139,6 +139,17 @@ ipc_client_hmd_get_view_poses(struct xrt_device *xdev,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
ipc_client_hmd_is_form_factor_available(struct xrt_device *xdev, enum xrt_form_factor form_factor)
|
||||||
|
{
|
||||||
|
struct ipc_client_hmd *ich = ipc_client_hmd(xdev);
|
||||||
|
bool available = false;
|
||||||
|
xrt_result_t r = ipc_call_device_is_form_factor_available(ich->ipc_c, ich->device_id, form_factor, &available);
|
||||||
|
if (r != XRT_SUCCESS) {
|
||||||
|
IPC_ERROR(ich->ipc_c, "Error calling is available!");
|
||||||
|
}
|
||||||
|
return available;
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @public @memberof ipc_client_hmd
|
* @public @memberof ipc_client_hmd
|
||||||
|
@ -159,6 +170,7 @@ ipc_client_hmd_create(struct ipc_connection *ipc_c, struct xrt_tracking_origin *
|
||||||
ich->base.get_tracked_pose = ipc_client_hmd_get_tracked_pose;
|
ich->base.get_tracked_pose = ipc_client_hmd_get_tracked_pose;
|
||||||
ich->base.get_view_poses = ipc_client_hmd_get_view_poses;
|
ich->base.get_view_poses = ipc_client_hmd_get_view_poses;
|
||||||
ich->base.destroy = ipc_client_hmd_destroy;
|
ich->base.destroy = ipc_client_hmd_destroy;
|
||||||
|
ich->base.is_form_factor_available = ipc_client_hmd_is_form_factor_available;
|
||||||
|
|
||||||
// Start copying the information from the isdev.
|
// Start copying the information from the isdev.
|
||||||
ich->base.tracking_origin = xtrack;
|
ich->base.tracking_origin = xtrack;
|
||||||
|
@ -213,6 +225,7 @@ ipc_client_hmd_create(struct ipc_connection *ipc_c, struct xrt_tracking_origin *
|
||||||
ich->base.device_type = isdev->device_type;
|
ich->base.device_type = isdev->device_type;
|
||||||
ich->base.hand_tracking_supported = isdev->hand_tracking_supported;
|
ich->base.hand_tracking_supported = isdev->hand_tracking_supported;
|
||||||
ich->base.force_feedback_supported = isdev->force_feedback_supported;
|
ich->base.force_feedback_supported = isdev->force_feedback_supported;
|
||||||
|
ich->base.form_factor_check_supported = isdev->form_factor_check_supported;
|
||||||
|
|
||||||
return &ich->base;
|
return &ich->base;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1155,3 +1155,16 @@ ipc_handle_device_set_output(volatile struct ipc_client_state *ics,
|
||||||
|
|
||||||
return XRT_SUCCESS;
|
return XRT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xrt_result_t
|
||||||
|
ipc_handle_device_is_form_factor_available(volatile struct ipc_client_state *ics,
|
||||||
|
uint32_t id,
|
||||||
|
enum xrt_form_factor form_factor,
|
||||||
|
bool *out_available)
|
||||||
|
{
|
||||||
|
// To make the code a bit more readable.
|
||||||
|
uint32_t device_id = id;
|
||||||
|
struct xrt_device *xdev = get_xdev(ics, device_id);
|
||||||
|
*out_available = xrt_device_is_form_factor_available(xdev, form_factor);
|
||||||
|
return XRT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
|
@ -288,6 +288,7 @@ init_shm(struct ipc_server *s)
|
||||||
isdev->device_type = xdev->device_type;
|
isdev->device_type = xdev->device_type;
|
||||||
isdev->hand_tracking_supported = xdev->hand_tracking_supported;
|
isdev->hand_tracking_supported = xdev->hand_tracking_supported;
|
||||||
isdev->force_feedback_supported = xdev->force_feedback_supported;
|
isdev->force_feedback_supported = xdev->force_feedback_supported;
|
||||||
|
isdev->form_factor_check_supported = xdev->form_factor_check_supported;
|
||||||
|
|
||||||
// Is this a HMD?
|
// Is this a HMD?
|
||||||
if (xdev->hmd != NULL) {
|
if (xdev->hmd != NULL) {
|
||||||
|
|
|
@ -125,6 +125,7 @@ struct ipc_shared_device
|
||||||
bool position_tracking_supported;
|
bool position_tracking_supported;
|
||||||
bool hand_tracking_supported;
|
bool hand_tracking_supported;
|
||||||
bool force_feedback_supported;
|
bool force_feedback_supported;
|
||||||
|
bool form_factor_check_supported;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
|
@ -252,5 +252,15 @@
|
||||||
{"name": "name", "type": "enum xrt_output_name"},
|
{"name": "name", "type": "enum xrt_output_name"},
|
||||||
{"name": "value", "type": "union xrt_output_value"}
|
{"name": "value", "type": "union xrt_output_value"}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
"device_is_form_factor_available": {
|
||||||
|
"in": [
|
||||||
|
{"name": "id", "type": "uint32_t"},
|
||||||
|
{"name": "form_factor", "type": "enum xrt_form_factor"}
|
||||||
|
],
|
||||||
|
"out": [
|
||||||
|
{"name": "available", "type": "bool"}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue