]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Renamed remotely
authorxli24 <xli24@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 31 Dec 2008 07:45:28 +0000 (07:45 +0000)
committerxli24 <xli24@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 31 Dec 2008 07:45:28 +0000 (07:45 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7164 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Bus/Usb/UsbMouseAbsolutePointerDxe/MouseHid.c [new file with mode: 0644]
MdeModulePkg/Bus/Usb/UsbMouseAbsolutePointerDxe/mousehid.c [deleted file]

diff --git a/MdeModulePkg/Bus/Usb/UsbMouseAbsolutePointerDxe/MouseHid.c b/MdeModulePkg/Bus/Usb/UsbMouseAbsolutePointerDxe/MouseHid.c
new file mode 100644 (file)
index 0000000..e0112dd
--- /dev/null
@@ -0,0 +1,281 @@
+/** @file\r
+  Helper functions to parse HID report descriptor and items.\r
+\r
+Copyright (c) 2004 - 2008, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+\r
+#include "UsbMouseAbsolutePointer.h"\r
+\r
+\r
+/**\r
+  Get next HID item from report descriptor.\r
+\r
+  This function retrieves next HID item from report descriptor, according to\r
+  the start position.\r
+  According to USB HID Specification, An item is piece of information\r
+  about the device. All items have a one-byte prefix that contains\r
+  the item tag, item type, and item size.\r
+  There are two basic types of items: short items and long items.\r
+  If the item is a short item, its optional data size may be 0, 1, 2, or 4 bytes.\r
+  Only short item is supported here.\r
+\r
+  @param  StartPos          Start position of the HID item to get.\r
+  @param  EndPos            End position of the range to get the the next HID item.\r
+  @param  HidItem           Buffer for the HID Item to return.\r
+\r
+  @return Pointer to end of the HID item returned.\r
+          NULL if no HID item retrieved.\r
+\r
+**/\r
+UINT8 *\r
+GetNextHidItem (\r
+  IN  UINT8    *StartPos,\r
+  IN  UINT8    *EndPos,\r
+  OUT HID_ITEM *HidItem\r
+  )\r
+{\r
+  UINT8 Temp;\r
+\r
+  if (EndPos <= StartPos) {\r
+    return NULL;\r
+  }\r
+\r
+  Temp = *StartPos;\r
+  StartPos++;\r
+\r
+  //\r
+  // Bit format of prefix byte:\r
+  // Bits 0-1: Size\r
+  // Bits 2-3: Type\r
+  // Bits 4-7: Tag\r
+  //\r
+  HidItem->Type = BitFieldRead8 (Temp, 2, 3);\r
+  HidItem->Tag  = BitFieldRead8 (Temp, 4, 7);\r
+\r
+  if (HidItem->Tag == HID_ITEM_TAG_LONG) {\r
+    //\r
+    // Long Items are not supported, although we try to parse it.\r
+    //\r
+    HidItem->Format = HID_ITEM_FORMAT_LONG;\r
+\r
+    if ((EndPos - StartPos) >= 2) {\r
+      HidItem->Size = *StartPos++;\r
+      HidItem->Tag  = *StartPos++;\r
+\r
+      if ((EndPos - StartPos) >= HidItem->Size) {\r
+        HidItem->Data.LongData = StartPos;\r
+        StartPos += HidItem->Size;\r
+        return StartPos;\r
+      }\r
+    }\r
+  } else {\r
+    HidItem->Format = HID_ITEM_FORMAT_SHORT;\r
+    HidItem->Size   = BitFieldRead8 (Temp, 0, 1);\r
+\r
+    switch (HidItem->Size) {\r
+    case 0:\r
+      //\r
+      // No data\r
+      //\r
+      return StartPos;\r
+\r
+    case 1:\r
+      //\r
+      // 1-byte data\r
+      //\r
+      if ((EndPos - StartPos) >= 1) {\r
+        HidItem->Data.U8 = *StartPos++;\r
+        return StartPos;\r
+      }\r
+\r
+    case 2:\r
+      //\r
+      // 2-byte data\r
+      //\r
+      if ((EndPos - StartPos) >= 2) {\r
+        CopyMem (&HidItem->Data.U16, StartPos, sizeof (UINT16));\r
+        StartPos += 2;\r
+        return StartPos;\r
+      }\r
+\r
+    case 3:\r
+      //\r
+      // 4-byte data, adjust size\r
+      //\r
+      HidItem->Size = 4;\r
+      if ((EndPos - StartPos) >= 4) {\r
+        CopyMem (&HidItem->Data.U32, StartPos, sizeof (UINT32));\r
+        StartPos += 4;\r
+        return StartPos;\r
+      }\r
+    }\r
+  }\r
+\r
+  return NULL;\r
+}\r
+\r
+\r
+/**\r
+  Get data from HID item.\r
+\r
+  This function retrieves data from HID item.\r
+  It only supports short items, which has 4 types of data:\r
+  0, 1, 2, or 4 bytes.\r
+\r
+  @param  HidItem       Pointer to the HID item.\r
+\r
+  @return The data of HID item.\r
+\r
+**/\r
+UINT32\r
+GetItemData (\r
+  IN  HID_ITEM *HidItem\r
+  )\r
+{\r
+  //\r
+  // Get data from HID item.\r
+  //\r
+  switch (HidItem->Size) {\r
+  case 1:\r
+    return HidItem->Data.U8;\r
+  case 2:\r
+    return HidItem->Data.U16;\r
+  case 4:\r
+    return HidItem->Data.U32;\r
+  }\r
+  return 0;\r
+}\r
+\r
+/**\r
+  Parse HID item from report descriptor.\r
+\r
+  There are three item types: Main, Global, and Local.\r
+  This function parses these types of HID items according\r
+  to tag info.\r
+\r
+  @param  UsbMouse          The instance of USB_MOUSE_ABSOLUTE_POINTER_DEV\r
+  @param  HidItem           The HID item to parse\r
+\r
+**/\r
+VOID\r
+ParseHidItem (\r
+  IN  USB_MOUSE_ABSOLUTE_POINTER_DEV   *UsbMouse,\r
+  IN  HID_ITEM                         *HidItem\r
+  )\r
+{\r
+  UINT8  Data;\r
+\r
+  switch (HidItem->Type) {\r
+\r
+  case HID_ITEM_TYPE_MAIN:\r
+    //\r
+    // we don't care any main items, just skip\r
+    //\r
+    return ;\r
+\r
+  case HID_ITEM_TYPE_GLOBAL:\r
+    //\r
+    // For global items, we only care Usage Page tag for Button Page here\r
+    //\r
+    if (HidItem->Tag == HID_GLOBAL_ITEM_TAG_USAGE_PAGE) {\r
+      Data = (UINT8) GetItemData (HidItem);\r
+      if (Data == 0x09) {\r
+        //\r
+        // Button Page\r
+        //\r
+        UsbMouse->PrivateData.ButtonDetected = TRUE;\r
+      }\r
+  }\r
+    return;\r
+\r
+  case HID_ITEM_TYPE_LOCAL:\r
+    if (HidItem->Size == 0) {\r
+    //\r
+      // No expected data for local item\r
+    //\r
+    return ;\r
+    }\r
+\r
+    Data = (UINT8) GetItemData (HidItem);\r
+\r
+    switch (HidItem->Tag) {\r
+    case HID_LOCAL_ITEM_TAG_USAGE_MINIMUM:\r
+      if (UsbMouse->PrivateData.ButtonDetected) {\r
+        UsbMouse->PrivateData.ButtonMinIndex = Data;\r
+    }\r
+    return ;\r
+\r
+    case HID_LOCAL_ITEM_TAG_USAGE_MAXIMUM:\r
+    {\r
+      if (UsbMouse->PrivateData.ButtonDetected) {\r
+        UsbMouse->PrivateData.ButtonMaxIndex = Data;\r
+      }\r
+      return ;\r
+    }\r
+\r
+    default:\r
+        return ;\r
+      }\r
+  }\r
+}\r
+\r
+\r
+/**\r
+  Parse Mouse Report Descriptor.\r
+\r
+  According to USB HID Specification, report descriptors are\r
+  composed of pieces of information. Each piece of information\r
+  is called an Item. This function retrieves each item from\r
+  the report descriptor and updates USB_MOUSE_ABSOLUTE_POINTER_DEV.\r
+\r
+  @param  UsbMouseAbsolutePointer  The instance of USB_MOUSE_ABSOLUTE_POINTER_DEV\r
+  @param  ReportDescriptor         Report descriptor to parse\r
+  @param  ReportSize               Report descriptor size\r
+\r
+  @retval EFI_SUCCESS              Report descriptor successfully parsed.\r
+  @retval EFI_UNSUPPORTED          Report descriptor contains long item.\r
+\r
+**/\r
+EFI_STATUS\r
+ParseMouseReportDescriptor (\r
+  OUT USB_MOUSE_ABSOLUTE_POINTER_DEV   *UsbMouseAbsolutePointer,\r
+  IN  UINT8                            *ReportDescriptor,\r
+  IN  UINTN                            ReportSize\r
+  )\r
+{\r
+  UINT8     *DescriptorEnd;\r
+  UINT8     *Ptr;\r
+  HID_ITEM  HidItem;\r
+\r
+  DescriptorEnd = ReportDescriptor + ReportSize;\r
+\r
+  Ptr = GetNextHidItem (ReportDescriptor, DescriptorEnd, &HidItem);\r
+  while (Ptr != NULL) {\r
+    if (HidItem.Format != HID_ITEM_FORMAT_SHORT) {\r
+      //\r
+      // Long Item is not supported at current HID revision\r
+      //\r
+      return EFI_UNSUPPORTED;\r
+    }\r
+\r
+    ParseHidItem (UsbMouseAbsolutePointer, &HidItem);\r
+\r
+    Ptr = GetNextHidItem (Ptr, DescriptorEnd, &HidItem);\r
+  }\r
+\r
+  UsbMouseAbsolutePointer->NumberOfButtons = (UINT8) (UsbMouseAbsolutePointer->PrivateData.ButtonMaxIndex - UsbMouseAbsolutePointer->PrivateData.ButtonMinIndex + 1);\r
+  UsbMouseAbsolutePointer->XLogicMax = 1023;\r
+  UsbMouseAbsolutePointer->YLogicMax = 1023;\r
+  UsbMouseAbsolutePointer->XLogicMin = -1023;\r
+  UsbMouseAbsolutePointer->YLogicMin = -1023;\r
+\r
+  return EFI_SUCCESS;\r
+}\r
diff --git a/MdeModulePkg/Bus/Usb/UsbMouseAbsolutePointerDxe/mousehid.c b/MdeModulePkg/Bus/Usb/UsbMouseAbsolutePointerDxe/mousehid.c
deleted file mode 100644 (file)
index e0112dd..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-/** @file\r
-  Helper functions to parse HID report descriptor and items.\r
-\r
-Copyright (c) 2004 - 2008, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-#include "UsbMouseAbsolutePointer.h"\r
-\r
-\r
-/**\r
-  Get next HID item from report descriptor.\r
-\r
-  This function retrieves next HID item from report descriptor, according to\r
-  the start position.\r
-  According to USB HID Specification, An item is piece of information\r
-  about the device. All items have a one-byte prefix that contains\r
-  the item tag, item type, and item size.\r
-  There are two basic types of items: short items and long items.\r
-  If the item is a short item, its optional data size may be 0, 1, 2, or 4 bytes.\r
-  Only short item is supported here.\r
-\r
-  @param  StartPos          Start position of the HID item to get.\r
-  @param  EndPos            End position of the range to get the the next HID item.\r
-  @param  HidItem           Buffer for the HID Item to return.\r
-\r
-  @return Pointer to end of the HID item returned.\r
-          NULL if no HID item retrieved.\r
-\r
-**/\r
-UINT8 *\r
-GetNextHidItem (\r
-  IN  UINT8    *StartPos,\r
-  IN  UINT8    *EndPos,\r
-  OUT HID_ITEM *HidItem\r
-  )\r
-{\r
-  UINT8 Temp;\r
-\r
-  if (EndPos <= StartPos) {\r
-    return NULL;\r
-  }\r
-\r
-  Temp = *StartPos;\r
-  StartPos++;\r
-\r
-  //\r
-  // Bit format of prefix byte:\r
-  // Bits 0-1: Size\r
-  // Bits 2-3: Type\r
-  // Bits 4-7: Tag\r
-  //\r
-  HidItem->Type = BitFieldRead8 (Temp, 2, 3);\r
-  HidItem->Tag  = BitFieldRead8 (Temp, 4, 7);\r
-\r
-  if (HidItem->Tag == HID_ITEM_TAG_LONG) {\r
-    //\r
-    // Long Items are not supported, although we try to parse it.\r
-    //\r
-    HidItem->Format = HID_ITEM_FORMAT_LONG;\r
-\r
-    if ((EndPos - StartPos) >= 2) {\r
-      HidItem->Size = *StartPos++;\r
-      HidItem->Tag  = *StartPos++;\r
-\r
-      if ((EndPos - StartPos) >= HidItem->Size) {\r
-        HidItem->Data.LongData = StartPos;\r
-        StartPos += HidItem->Size;\r
-        return StartPos;\r
-      }\r
-    }\r
-  } else {\r
-    HidItem->Format = HID_ITEM_FORMAT_SHORT;\r
-    HidItem->Size   = BitFieldRead8 (Temp, 0, 1);\r
-\r
-    switch (HidItem->Size) {\r
-    case 0:\r
-      //\r
-      // No data\r
-      //\r
-      return StartPos;\r
-\r
-    case 1:\r
-      //\r
-      // 1-byte data\r
-      //\r
-      if ((EndPos - StartPos) >= 1) {\r
-        HidItem->Data.U8 = *StartPos++;\r
-        return StartPos;\r
-      }\r
-\r
-    case 2:\r
-      //\r
-      // 2-byte data\r
-      //\r
-      if ((EndPos - StartPos) >= 2) {\r
-        CopyMem (&HidItem->Data.U16, StartPos, sizeof (UINT16));\r
-        StartPos += 2;\r
-        return StartPos;\r
-      }\r
-\r
-    case 3:\r
-      //\r
-      // 4-byte data, adjust size\r
-      //\r
-      HidItem->Size = 4;\r
-      if ((EndPos - StartPos) >= 4) {\r
-        CopyMem (&HidItem->Data.U32, StartPos, sizeof (UINT32));\r
-        StartPos += 4;\r
-        return StartPos;\r
-      }\r
-    }\r
-  }\r
-\r
-  return NULL;\r
-}\r
-\r
-\r
-/**\r
-  Get data from HID item.\r
-\r
-  This function retrieves data from HID item.\r
-  It only supports short items, which has 4 types of data:\r
-  0, 1, 2, or 4 bytes.\r
-\r
-  @param  HidItem       Pointer to the HID item.\r
-\r
-  @return The data of HID item.\r
-\r
-**/\r
-UINT32\r
-GetItemData (\r
-  IN  HID_ITEM *HidItem\r
-  )\r
-{\r
-  //\r
-  // Get data from HID item.\r
-  //\r
-  switch (HidItem->Size) {\r
-  case 1:\r
-    return HidItem->Data.U8;\r
-  case 2:\r
-    return HidItem->Data.U16;\r
-  case 4:\r
-    return HidItem->Data.U32;\r
-  }\r
-  return 0;\r
-}\r
-\r
-/**\r
-  Parse HID item from report descriptor.\r
-\r
-  There are three item types: Main, Global, and Local.\r
-  This function parses these types of HID items according\r
-  to tag info.\r
-\r
-  @param  UsbMouse          The instance of USB_MOUSE_ABSOLUTE_POINTER_DEV\r
-  @param  HidItem           The HID item to parse\r
-\r
-**/\r
-VOID\r
-ParseHidItem (\r
-  IN  USB_MOUSE_ABSOLUTE_POINTER_DEV   *UsbMouse,\r
-  IN  HID_ITEM                         *HidItem\r
-  )\r
-{\r
-  UINT8  Data;\r
-\r
-  switch (HidItem->Type) {\r
-\r
-  case HID_ITEM_TYPE_MAIN:\r
-    //\r
-    // we don't care any main items, just skip\r
-    //\r
-    return ;\r
-\r
-  case HID_ITEM_TYPE_GLOBAL:\r
-    //\r
-    // For global items, we only care Usage Page tag for Button Page here\r
-    //\r
-    if (HidItem->Tag == HID_GLOBAL_ITEM_TAG_USAGE_PAGE) {\r
-      Data = (UINT8) GetItemData (HidItem);\r
-      if (Data == 0x09) {\r
-        //\r
-        // Button Page\r
-        //\r
-        UsbMouse->PrivateData.ButtonDetected = TRUE;\r
-      }\r
-  }\r
-    return;\r
-\r
-  case HID_ITEM_TYPE_LOCAL:\r
-    if (HidItem->Size == 0) {\r
-    //\r
-      // No expected data for local item\r
-    //\r
-    return ;\r
-    }\r
-\r
-    Data = (UINT8) GetItemData (HidItem);\r
-\r
-    switch (HidItem->Tag) {\r
-    case HID_LOCAL_ITEM_TAG_USAGE_MINIMUM:\r
-      if (UsbMouse->PrivateData.ButtonDetected) {\r
-        UsbMouse->PrivateData.ButtonMinIndex = Data;\r
-    }\r
-    return ;\r
-\r
-    case HID_LOCAL_ITEM_TAG_USAGE_MAXIMUM:\r
-    {\r
-      if (UsbMouse->PrivateData.ButtonDetected) {\r
-        UsbMouse->PrivateData.ButtonMaxIndex = Data;\r
-      }\r
-      return ;\r
-    }\r
-\r
-    default:\r
-        return ;\r
-      }\r
-  }\r
-}\r
-\r
-\r
-/**\r
-  Parse Mouse Report Descriptor.\r
-\r
-  According to USB HID Specification, report descriptors are\r
-  composed of pieces of information. Each piece of information\r
-  is called an Item. This function retrieves each item from\r
-  the report descriptor and updates USB_MOUSE_ABSOLUTE_POINTER_DEV.\r
-\r
-  @param  UsbMouseAbsolutePointer  The instance of USB_MOUSE_ABSOLUTE_POINTER_DEV\r
-  @param  ReportDescriptor         Report descriptor to parse\r
-  @param  ReportSize               Report descriptor size\r
-\r
-  @retval EFI_SUCCESS              Report descriptor successfully parsed.\r
-  @retval EFI_UNSUPPORTED          Report descriptor contains long item.\r
-\r
-**/\r
-EFI_STATUS\r
-ParseMouseReportDescriptor (\r
-  OUT USB_MOUSE_ABSOLUTE_POINTER_DEV   *UsbMouseAbsolutePointer,\r
-  IN  UINT8                            *ReportDescriptor,\r
-  IN  UINTN                            ReportSize\r
-  )\r
-{\r
-  UINT8     *DescriptorEnd;\r
-  UINT8     *Ptr;\r
-  HID_ITEM  HidItem;\r
-\r
-  DescriptorEnd = ReportDescriptor + ReportSize;\r
-\r
-  Ptr = GetNextHidItem (ReportDescriptor, DescriptorEnd, &HidItem);\r
-  while (Ptr != NULL) {\r
-    if (HidItem.Format != HID_ITEM_FORMAT_SHORT) {\r
-      //\r
-      // Long Item is not supported at current HID revision\r
-      //\r
-      return EFI_UNSUPPORTED;\r
-    }\r
-\r
-    ParseHidItem (UsbMouseAbsolutePointer, &HidItem);\r
-\r
-    Ptr = GetNextHidItem (Ptr, DescriptorEnd, &HidItem);\r
-  }\r
-\r
-  UsbMouseAbsolutePointer->NumberOfButtons = (UINT8) (UsbMouseAbsolutePointer->PrivateData.ButtonMaxIndex - UsbMouseAbsolutePointer->PrivateData.ButtonMinIndex + 1);\r
-  UsbMouseAbsolutePointer->XLogicMax = 1023;\r
-  UsbMouseAbsolutePointer->YLogicMax = 1023;\r
-  UsbMouseAbsolutePointer->XLogicMin = -1023;\r
-  UsbMouseAbsolutePointer->YLogicMin = -1023;\r
-\r
-  return EFI_SUCCESS;\r
-}\r