summaryrefslogtreecommitdiff
path: root/bsp/allwinner/libraries/sunxi-hal/hal/source/usb/hid/Client/Mouse/UsbMouse.h
blob: 488615cf9b025b1a8983cb35ba3ed8be6e07d382 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/*
********************************************************************************
*                                USB Hid Driver
*
*                (c) Copyright 2006-2010, All winners Co,Ld.
*                        All Right Reserved
*
* FileName      :  usbMouse.h
*
* Author        :  Javen
*
* Date          :  2010.06.02
*
* Description   :  USB Mouse
*
* Others        :  NULL
*
* History:
*       <time>      <version >      <author>        <desc>
*      2010.06.02      1.0           Javen          build this file
*
********************************************************************************
*/
#ifndef  __USBMOUSE_H__
#define  __USBMOUSE_H__
#include "mod_usbhost.h"
#include "drivers/sys_device.h"

#ifndef DATA_TYPE_X___hdle
#define DATA_TYPE_X___hdle
typedef unsigned int        __hdle;
#endif
#define  USB_OS_HANDLE  __hdle      //epos的handle

#define  USB_HID_MOUSE_DATA_LEN     64      /* 鼠标数据的最大长度    */
#define  USB_HID_MOUSE_DITHER_AREA  127     /* 鼠标去抖动范围      */

/* mouse report */
#define  USB_HID_MOUSE_REPORT_BUTTON_LEFT_BIT   0   /* 鼠标左键 */
#define  USB_HID_MOUSE_REPORT_BUTTON_RIGHT_BIT  1   /* 鼠标右键 */
#define  USB_HID_MOUSE_REPORT_BUTTON_MIDDLE_BIT 2   /* 鼠标中键,中间滚轮向下产生的按键 */
#define  USB_HID_MOUSE_REPORT_BUTTON_SIDE_BIT   3
#define  USB_HID_MOUSE_REPORT_BUTTON_EXTRA_BIT  4

#if  0
#define DMSG_MOUSE_TEST   hal_log_info
#else
#define DMSG_MOUSE_TEST(...)
#endif


/* 从鼠标取回来数据的定义 */
typedef struct _usbMouseDataDef{
    usbHidEvnetExcursion_t Button;  /* button   */
    usbHidEvnetExcursion_t X;       /* X        */
    usbHidEvnetExcursion_t Y;       /* Y        */
    usbHidEvnetExcursion_t Wheel;   /* Wheel    */
}usbMouseDataDef_t;

#define  USB_HID_DEV_MAGIC    0x5a13d099
typedef struct _usbMouse{
    unsigned int Magic;                 /* 表示设备是否合法                 */

    HidDev_t *HidDev;
    unsigned int DevNo;                 /* 此设备号                         */
    unsigned char  ClassName[32];           /* 设备类名, 如"disk"                */
    unsigned char  DevName[32];             /* 此设备名, 如"SCSI_DISK_000"       */

    /* Disk information */
    unsigned int used;                     /* 打开设备计数                    */
    __dev_devop_t MouseOp;          /* 设备操作函数                   */

    /* Disk manager */
    USB_OS_HANDLE MouseParaHdle;    /* open时的句柄                     */
    USB_OS_HANDLE MouseRegHdle;     /* reg时的句柄                      */

    unsigned char Vendor[256];
    unsigned char Product[256];
    unsigned char Serial[32];

    void *MouseThdId;                       /* 接收鼠标事件线程的ID          */
    hal_sem_t MouseThreadSemi;
    hal_sem_t notify_complete;  /* 同步thread创建/删除                */

    HidRequest_t HidReq;                    /* hid传输请求                      */
    unsigned char Data[USB_HID_MOUSE_DATA_LEN];     /* 接收鼠标返回的数据                */
    usbMouseDataDef_t DataDef;              /* 鼠标数据的定义                  */
    unsigned int StopWork;                          /* 鼠标停止工作。在close时调用         */

    /* test */
    unsigned int USBMouseTestFlag;                  /* 测试标志 */
    USBHMouseTest_t *USBHMouseTest;

    USBHMouseEvent_t MouseEvent;            /* 当前发给app的鼠标事件 */
    USBHMouse_CallBack CallBack;

    void *Extern;                           /* 扩展结构,如MouseDriftControl_t */
}usbMouse_t;

#endif   //__USBMOUSE_H__