1 /*
2 ********************************************************************************
3 *                                USB Hid Driver
4 *
5 *                (c) Copyright 2006-2010, All winners Co,Ld.
6 *                        All Right Reserved
7 *
8 * FileName      :  usbMouse.h
9 *
10 * Author        :  Javen
11 *
12 * Date          :  2010.06.02
13 *
14 * Description   :  USB Mouse
15 *
16 * Others        :  NULL
17 *
18 * History:
19 *       <time>      <version >      <author>        <desc>
20 *      2010.06.02      1.0           Javen          build this file
21 *
22 ********************************************************************************
23 */
24 #ifndef  __USBMOUSE_H__
25 #define  __USBMOUSE_H__
26 #include "mod_usbhost.h"
27 #include "drivers/sys_device.h"
28 
29 #ifndef DATA_TYPE_X___hdle
30 #define DATA_TYPE_X___hdle
31 typedef unsigned int        __hdle;
32 #endif
33 #define  USB_OS_HANDLE  __hdle      //epos的handle
34 
35 #define  USB_HID_MOUSE_DATA_LEN     64      /* 鼠标数据的最大长度    */
36 #define  USB_HID_MOUSE_DITHER_AREA  127     /* 鼠标去抖动范围      */
37 
38 /* mouse report */
39 #define  USB_HID_MOUSE_REPORT_BUTTON_LEFT_BIT   0   /* 鼠标左键 */
40 #define  USB_HID_MOUSE_REPORT_BUTTON_RIGHT_BIT  1   /* 鼠标右键 */
41 #define  USB_HID_MOUSE_REPORT_BUTTON_MIDDLE_BIT 2   /* 鼠标中键,中间滚轮向下产生的按键 */
42 #define  USB_HID_MOUSE_REPORT_BUTTON_SIDE_BIT   3
43 #define  USB_HID_MOUSE_REPORT_BUTTON_EXTRA_BIT  4
44 
45 #if  0
46 #define DMSG_MOUSE_TEST   hal_log_info
47 #else
48 #define DMSG_MOUSE_TEST(...)
49 #endif
50 
51 
52 /* 从鼠标取回来数据的定义 */
53 typedef struct _usbMouseDataDef{
54     usbHidEvnetExcursion_t Button;  /* button   */
55     usbHidEvnetExcursion_t X;       /* X        */
56     usbHidEvnetExcursion_t Y;       /* Y        */
57     usbHidEvnetExcursion_t Wheel;   /* Wheel    */
58 }usbMouseDataDef_t;
59 
60 #define  USB_HID_DEV_MAGIC    0x5a13d099
61 typedef struct _usbMouse{
62     unsigned int Magic;                 /* 表示设备是否合法                 */
63 
64     HidDev_t *HidDev;
65     unsigned int DevNo;                 /* 此设备号                         */
66     unsigned char  ClassName[32];           /* 设备类名, 如"disk"                */
67     unsigned char  DevName[32];             /* 此设备名, 如"SCSI_DISK_000"       */
68 
69     /* Disk information */
70     unsigned int used;                     /* 打开设备计数                    */
71     __dev_devop_t MouseOp;          /* 设备操作函数                   */
72 
73     /* Disk manager */
74     USB_OS_HANDLE MouseParaHdle;    /* open时的句柄                     */
75     USB_OS_HANDLE MouseRegHdle;     /* reg时的句柄                      */
76 
77     unsigned char Vendor[256];
78     unsigned char Product[256];
79     unsigned char Serial[32];
80 
81     void *MouseThdId;                       /* 接收鼠标事件线程的ID          */
82     hal_sem_t MouseThreadSemi;
83     hal_sem_t notify_complete;  /* 同步thread创建/删除                */
84 
85     HidRequest_t HidReq;                    /* hid传输请求                      */
86     unsigned char Data[USB_HID_MOUSE_DATA_LEN];     /* 接收鼠标返回的数据                */
87     usbMouseDataDef_t DataDef;              /* 鼠标数据的定义                  */
88     unsigned int StopWork;                          /* 鼠标停止工作。在close时调用         */
89 
90     /* test */
91     unsigned int USBMouseTestFlag;                  /* 测试标志 */
92     USBHMouseTest_t *USBHMouseTest;
93 
94     USBHMouseEvent_t MouseEvent;            /* 当前发给app的鼠标事件 */
95     USBHMouse_CallBack CallBack;
96 
97     void *Extern;                           /* 扩展结构,如MouseDriftControl_t */
98 }usbMouse_t;
99 
100 #endif   //__USBMOUSE_H__
101 
102