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