drivers/input:support mouse driver

Implement mouse driver lower upper

Signed-off-by: liuhongchao <liuhongchao@xiaomi.com>
This commit is contained in:
liuhongchao
2023-07-13 18:58:05 +08:00
committed by Xiang Xiao
parent 99c2a6ffbe
commit 69b655f4b2
4 changed files with 440 additions and 9 deletions
+69 -9
View File
@@ -47,31 +47,91 @@
#define MOUSE_BUTTON_1 (1 << 0) /* True: Left mouse button pressed */
#define MOUSE_BUTTON_2 (1 << 1) /* True: Right mouse button pressed */
#define MOUSE_BUTTON_3 (1 << 2) /* True: Middle mouse button pressed */
#define MOUSE_BUTTON_4 (1 << 3) /* True: Left mouse button released */
#define MOUSE_BUTTON_5 (1 << 4) /* True: Right mouse button released */
#define MOUSE_BUTTON_6 (1 << 5) /* True: Middle mouse button released */
/****************************************************************************
* Public Types
****************************************************************************/
/* This structure contains information about the current mouse button states
* and mouse position. Positional units are device specific and determined
* by mouse configuration settings.
/* This structure contains information about the current mouse button
* states and mouse position. Positional units are device specific
* and determined by mouseconfiguration settings.
*/
struct mouse_report_s
{
uint8_t buttons; /* See TOUCH_* definitions above */
/* Possibly padded with 1 byte here */
int16_t x; /* X coordinate of the mouse position */
int16_t y; /* Y coordinate of the mouse position */
uint8_t buttons; /* See MOUSE_* definitions above */
/* Possibly padded with 1 byte here */
int16_t x; /* X coordinate of the mouse position */
int16_t y; /* Y coordinate of the mouse position */
#ifdef CONFIG_INPUT_MOUSE_WHEEL
int16_t wheel; /* Mouse wheel position */
int16_t wheel; /* Mouse wheel position */
#endif
};
/* This structure is for mouse lower half driver */
struct mouse_lowerhalf_s
{
FAR void *priv; /* Save the upper half pointer */
};
/****************************************************************************
* Public Data
* Public Function Prototypes
****************************************************************************/
/****************************************************************************
* Name: mouse_event
*
* Description:
* The lower half driver pushes mouse events through this interface,
* provided by mouse upper half.
*
* Arguments:
* priv - Upper half driver handle.
* sample - pointer to data of mouse point event.
****************************************************************************/
void mouse_event(FAR void *priv, FAR const struct mouse_report_s *sample);
/****************************************************************************
* Name: mouse_register
*
* Description:
* This function registers a mouse device, the upper half binds
* with hardware device through the lower half instance.
*
* Arguments:
* lower - A pointer of lower half instance.
* path - The path of mouse device. such as "/dev/mouse0"
* nums - Number of the mouse points structure.
*
* Return:
* OK if the driver was successfully registered; A negated errno value is
* returned on any failure.
*
****************************************************************************/
int mouse_register(FAR struct mouse_lowerhalf_s *lower,
FAR const char *path, uint8_t nums);
/****************************************************************************
* Name: mouse_unregister
*
* Description:
* This function is used to mouse driver to unregister and
* release the occupied resources.
*
* Arguments:
* lower - A pointer to an insatnce of mouse lower half driver.
* path - The path of mouse device. such as "/dev/mouse0"
****************************************************************************/
void mouse_unregister(FAR struct mouse_lowerhalf_s *lower,
FAR const char *path);
#ifdef __cplusplus
#define EXTERN extern "C"
extern "C"