mod_usbhost.h 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. /*
  2. ********************************************************************************************************************
  3. * usb host driver
  4. *
  5. * (c) Copyright 2007-2010, javen.China
  6. * All Rights Reserved
  7. *
  8. * File Name : drv_host.h
  9. *
  10. * Author : javen
  11. *
  12. * Version : 2.0
  13. *
  14. * Date : 2009.07.17
  15. *
  16. * Description :
  17. *
  18. * History :
  19. *
  20. *
  21. ********************************************************************************************************************
  22. */
  23. #ifndef __DRV_HOST_H__
  24. #define __DRV_HOST_H__
  25. #include <typedef.h>
  26. //---------------------------------------------------------
  27. // Device Name
  28. //---------------------------------------------------------
  29. #define USB_DEVICE_INFO_NAME "USB_DEV_INFO" /* USB设备信息 */
  30. #define USB_STORAGE_DEV_NAME "SCSI_DISK" /* USB 存储类设备名 */
  31. #define USB_CDROM_DEV_NAME "USB_CDROM" /* USB 光驱设备 */
  32. //---------------------------------------------------------
  33. // USB HOST IOCTRL COMMAND MASK
  34. //---------------------------------------------------------
  35. #define USB_USER_CTRL_CMD_MASK 0x0f0000
  36. #define USB_USER_CTRL_CMD_DEVICE_INFO_MASK (USB_USER_CTRL_CMD_MASK | 0x1000)
  37. #define USB_USER_CTRL_CMD_STORAGE_MASK (USB_USER_CTRL_CMD_MASK | 0x2000)
  38. #define USB_USER_CTRL_CMD_HID_MASK (USB_USER_CTRL_CMD_MASK | 0x3000)
  39. //---------------------------------------------------------
  40. // USB 存储类设备扩展的控制设备
  41. //---------------------------------------------------------
  42. #define USB_DEVICE_INFO_USER_CMD_GET_DISK_STATUS (USB_USER_CTRL_CMD_DEVICE_INFO_MASK | 0x00) /* 读取当前所有lun的读写状态 */
  43. #define USB_DEVICE_INFO_USER_CMD_GET_DEVICE_INFO (USB_USER_CTRL_CMD_DEVICE_INFO_MASK | 0x01) /* 获得设备的信息 */
  44. #define USB_STORAGE_DEVICE_STATUS_IDLE 0x00 /* USB处于空闲状态 */
  45. #define USB_STORAGE_DEVICE_STATUS_READ 0x01 /* USB处于读状态 */
  46. #define USB_STORAGE_DEVICE_STATUS_WRITE 0x02 /* USB处于写状态 */
  47. /* 设备类型。如移动硬盘、U盘、光驱等 */
  48. typedef enum _USBStorDevType
  49. {
  50. USB_STORAGE_DEVICE_TYPE_UNKOWN = 0, /* 未知设备 */
  51. USB_STORAGE_DEVICE_TYPE_HDD, /* 移动磁盘 */
  52. USB_STORAGE_DEVICE_TYPE_UDISK, /* U盘、读卡器 */
  53. USB_STORAGE_DEVICE_TYPE_CDROM /* USB光驱 */
  54. } USBStorDevType_t;
  55. #define USB_HOST_MAX_STRING_LEN 128
  56. typedef struct _usbhDeivceInfo
  57. {
  58. char Vender[USB_HOST_MAX_STRING_LEN]; /* 设备厂商名 */
  59. char Product[USB_HOST_MAX_STRING_LEN]; /* 设备产品名 */
  60. char Serial[USB_HOST_MAX_STRING_LEN]; /* 序列号 */
  61. unsigned int HubPortNo; /* 设备所在的Hub端口号. 0~7: Hub端口号,8~15: Hub级数,16~31: 保留。
  62. Hub级数为0,表示没有hub接入 */
  63. unsigned int DeviceType; /* 设备类型。参考USBStorDevType_t */
  64. unsigned char res[508];
  65. } usbhDeivceInfo_t;
  66. //---------------------------------------------------------
  67. // USB HOST STORAGE Class Driver IOCTRL COMMAND
  68. //---------------------------------------------------------
  69. #define USB_STORAGE_USER_CTRL_CMD_GET_CDROM_INFO (USB_USER_CTRL_CMD_STORAGE_MASK | 0x01) /* 获得光驱状态 */
  70. #define USB_STORAGE_USER_CTRL_CMD_CDROM_PALY (USB_USER_CTRL_CMD_STORAGE_MASK | 0x02) /* 让光驱从指定的MSF位置开始播放 */
  71. #define USB_STORAGE_USER_CTRL_CMD_CDROM_STOP (USB_USER_CTRL_CMD_STORAGE_MASK | 0x03) /* 停止播放 */
  72. #define USB_STORAGE_USER_CTRL_CMD_CDROM_EJECT (USB_USER_CTRL_CMD_STORAGE_MASK | 0x04) /* 弹出光驱 */
  73. #define USB_STORAGE_USER_CTRL_CMD_CDROM_LOAD (USB_USER_CTRL_CMD_STORAGE_MASK | 0x05) /* 装载光碟进光驱 */
  74. #define USB_STORAGE_USER_CTRL_CMD_CDROM_PREVENT_MEDIUM_REMOVAL (USB_USER_CTRL_CMD_STORAGE_MASK | 0x06) /* 禁止介质移动 */
  75. #define USB_STORAGE_USER_CTRL_CMD_CDROM_ALLOW_MEDIUM_REMOVAL (USB_USER_CTRL_CMD_STORAGE_MASK | 0x07) /* 允许介质移动 */
  76. #define USB_STORAGE_USER_CTRL_CMD_CDROM_GET_DRIVE_STATUS (USB_USER_CTRL_CMD_STORAGE_MASK | 0x08) /* 获得光驱的状态 */
  77. /* 光驱的类型 */
  78. #define USBH_CDROM_DRIVER_TYPE_UNKOWN 0x00 /* 未知 */
  79. #define USBH_CDROM_DRIVER_TYPE_CDR_RD 0x01 /* CD-R Read Only */
  80. #define USBH_CDROM_DRIVER_TYPE_CDR_WR 0x02 /* CD-R WR */
  81. #define USBH_CDROM_DRIVER_TYPE_CDE_RD 0x04 /* CD-E Read Only */
  82. #define USBH_CDROM_DRIVER_TYPE_CDE_WR 0x08 /* CD-E WR */
  83. #define USBH_CDROM_DRIVER_TYPE_DVD_ROM_RD 0x10 /* DVD-ROM Read Only */
  84. #define USBH_CDROM_DRIVER_TYPE_DVDR_RD 0x20 /* DVD-R Read Only */
  85. #define USBH_CDROM_DRIVER_TYPE_DVDR_WR 0x40 /* DVD-R WR */
  86. #define USBH_CDROM_DRIVER_TYPE_DVD_RAM_RD 0x80 /* DVD-RAM Read Only */
  87. #define USBH_CDROM_DRIVER_TYPE_DVD_RAM_WR 0x100 /* DVD-RAM WR */
  88. /* 光碟的类型 */
  89. #define USBH_MEDIUM_CD_UNKOWN 0x00 /* 未知 */
  90. #define USBH_MEDIUM_CD_DATA_ONLY 0x01 /* 数据光碟 */
  91. #define USBH_MEDIUM_CD_AUDIO_ONLY 0x02 /* 音乐光碟 */
  92. #define USBH_MEDIUM_CD_DATA_AUDIO_COMBINED 0x03 /* 数据音乐混合光碟 */
  93. #define USBH_MEDIUM_CD_PHOTO_CD 0x04 /* 图片光碟 */
  94. /* 光驱的状态 */
  95. #define USBH_CDROM_DRIVE_STATUS_NO_INFORMATION 0x00 /* 缺省值,未知的光驱状态 */
  96. #define USBH_CDROM_DRIVE_STATUS_NO_DISC 0x01 /* 光驱关闭,但是没有光碟 */
  97. #define USBH_CDROM_DRIVE_STATUS_TRAY_OPEN 0x02 /* 光驱已经打开 */
  98. #define USBH_CDROM_DRIVE_STATUS_NOT_READY 0x03 /* 光碟已经装载,但是介质未就绪 */
  99. #define USBH_CDROM_DRIVE_STATUS_DISK_OK 0x04 /* 光碟已经装载,并且介质就绪 */
  100. /* USB 光驱和光碟信息 */
  101. typedef struct _usbh_CDROM_Info
  102. {
  103. __u32 DriveType; /* 光驱的类型,每个bit都自己的含义 */
  104. __u32 DiscType; /* 光碟的类型 */
  105. __u8 res[504];
  106. } usbh_CDROM_Info_t;
  107. //---------------------------------------------------------
  108. // USB HOST HID Class Driver IOCTRL COMMAND
  109. //---------------------------------------------------------
  110. typedef s32 (* USBHMouse_CallBack)(void *p_arg);
  111. typedef void (* USBHJoystick_CallBack)(void *arg, __s32 *buttom, __s32 *stickX, __s32 *stickY, __s32 *reserve);
  112. /* USB鼠标测试专用 */
  113. #define USBH_HID_USER_CTRL_CMD_TEST_START (USB_USER_CTRL_CMD_HID_MASK | 0x00) /* USB鼠标测试命令. 开始 */
  114. #define USBH_HID_USER_CTRL_CMD_TEST_STOP (USB_USER_CTRL_CMD_HID_MASK | 0x01) /* USB鼠标测试命令. 结束 */
  115. typedef struct _USBHMouseTest
  116. {
  117. void *buffer;
  118. USBHMouse_CallBack CallBack;
  119. } USBHMouseTest_t;
  120. /* 用户专用 */
  121. #define USBH_HID_USER_CTRL_CMD_REG (USB_USER_CTRL_CMD_HID_MASK | 0x10) /* 向USB注册回调函数 */
  122. #define USBH_HID_USER_CTRL_CMD_UNREG (USB_USER_CTRL_CMD_HID_MASK | 0x11) /* 向USB注销回调函数 */
  123. typedef struct _USBHMouseEvent
  124. {
  125. struct
  126. {
  127. __u8 LeftButton : 1; /* 鼠标左键 */
  128. __u8 RightButton : 1; /* 鼠标右键 */
  129. __u8 MiddleButton : 1; /* 鼠标中键 */
  130. __u8 Button4 : 1;
  131. __u8 Button5 : 1;
  132. __u8 Button6 : 1;
  133. __u8 Button7 : 1;
  134. __u8 Button8 : 1;
  135. } Button;
  136. __s8 X; /* X 坐标, 相对坐标 */
  137. __s8 Y; /* Y 坐标, 相对坐标 */
  138. __s8 Wheel; /* 鼠标滚轮, >0表示向上滚动, <0表示向下滚动 */
  139. __u8 res[4];
  140. } USBHMouseEvent_t;
  141. //手柄
  142. #define USBH_HID_USER_CTRL_CMD_JOYSTICK_FUN (USB_USER_CTRL_CMD_HID_MASK | 0x12) /* 得到手柄键值函数*/
  143. #define USBH_HID_USER_CTRL_CMD_JOYSTICK_ARG (USB_USER_CTRL_CMD_HID_MASK | 0x13) /* 得到回调函数参数 */
  144. #endif //__DRV_UDISK_H__