virtual_touchpad_client.h revision de1cdaebc9b8fdbc5348e6c07f849b74bacc485d
14199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa#ifndef ANDROID_DVR_VIRTUAL_TOUCHPAD_C_CLIENT_H
24199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa#define ANDROID_DVR_VIRTUAL_TOUCHPAD_C_CLIENT_H
34199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
44199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa#ifdef __cplusplus
54199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaextern "C" {
64199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa#endif
74199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
84199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawatypedef struct DvrVirtualTouchpad DvrVirtualTouchpad;
94199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
104199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaenum {
114199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa  DVR_VIRTUAL_TOUCHPAD_PRIMARY = 0,
124199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa  DVR_VIRTUAL_TOUCHPAD_VIRTUAL = 1,
134199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa};
144199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
154199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa// Creates a new virtual touchpad client.
164199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa//
174199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa// @return Pointer to the created virtual touchpad client; nullptr on failure.
184199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa//
194199c54c527330ac01699b176e7bca186a3aa3a4Daisuke MiyakawaDvrVirtualTouchpad* dvrVirtualTouchpadCreate();
204199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
214199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa// Destroys a virtual touchpad client.
224199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa//
234199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa// @param client Pointer to the virtual touchpad client to be destroyed.
244199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa//
254199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawavoid dvrVirtualTouchpadDestroy(DvrVirtualTouchpad* client);
264199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
274199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa// Initialize the virtual touchpad.
28677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa//
291de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa// In the current server implementation, attachment creates and configures
304199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa// the kernel virtual touchpad device(s). A single client may be attached
314199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa// and detached repeatedly, e.g. on entering and leaving VR mode.
32677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa//
331de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa// @param client Pointer to the virtual touchpad client to be attached.
344199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa// @return Zero on success, status_t-style error code on failure.
354199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa//
36677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawaint dvrVirtualTouchpadAttach(DvrVirtualTouchpad* client);
371de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa
384199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa// Shut down the virtual touchpad.
394199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa//
40677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa// @param client Pointer to the virtual touchpad client to be detached.
411de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa// @return Zero on success, status_t-style error code on failure.
424199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa//
434199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaint dvrVirtualTouchpadDetach(DvrVirtualTouchpad* client);
444199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
45677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa// Generate a simulated touch event.
461de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa//
47677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa// @param client Pointer to the virtual touchpad client.
484199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa// @param touchpad Selects touchpad.
49// @param x Horizontal touch position.
50// @param y Vertical touch position.
51// @param pressure Touch pressure; use 0.0 for no touch (lift or hover).
52// @return Zero on success, status_t-style error code on failure.
53//
54int dvrVirtualTouchpadTouch(DvrVirtualTouchpad* client, int touchpad, float x,
55                            float y, float pressure);
56
57// Generate a simulated touchpad button state event.
58//
59// @param client Pointer to the virtual touchpad client.
60// @param touchpad Selects touchpad.
61// @param buttons A union of MotionEvent BUTTON_* values.
62// @return Zero on success, status_t-style error code on failure.
63//
64int dvrVirtualTouchpadButtonState(DvrVirtualTouchpad* client, int touchpad,
65                                  int buttons);
66
67#ifdef __cplusplus
68}  // extern "C"
69#endif
70
71#endif  // ANDROID_DVR_VIRTUAL_TOUCHPAD_CLIENT_H
72