VirtualBox

Changeset 26965 in vbox


Ignore:
Timestamp:
Mar 2, 2010 6:16:45 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
58260
Message:

UsbMouse: Implemented GET_STATUS request processing (for happy lsusb).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Input/UsbMouse.cpp

    r26935 r26965  
    990990            }
    991991
     992            case VUSB_REQ_GET_STATUS:
     993            {
     994                uint16_t    wRet = 0;
     995   
     996                if (pSetup->wLength != 2)
     997                {
     998                    Log(("usbHid: Bad GET_STATUS req: wLength=%#x\n", pSetup->wLength));
     999                    break;
     1000                }
     1001                Assert(pSetup->wValue == 0);
     1002                switch (pSetup->bmRequestType)
     1003                {
     1004                    case VUSB_TO_DEVICE | VUSB_REQ_STANDARD | VUSB_DIR_TO_HOST:
     1005                    {
     1006                        Assert(pSetup->wIndex == 0);
     1007                        Log(("usbHid: GET_STATUS (device)\n"));
     1008                        wRet = 0;   /* Not self-powered, no remote wakeup. */
     1009                        memcpy(&pUrb->abData[sizeof(*pSetup)], &wRet, sizeof(wRet));
     1010                        return usbHidCompleteOk(pThis, pUrb, sizeof(wRet) + sizeof(*pSetup));
     1011                    }
     1012   
     1013                    case VUSB_TO_INTERFACE | VUSB_REQ_STANDARD | VUSB_DIR_TO_HOST:
     1014                    {
     1015                        if (pSetup->wIndex == 0)
     1016                        {
     1017                            memcpy(&pUrb->abData[sizeof(*pSetup)], &wRet, sizeof(wRet));
     1018                            return usbHidCompleteOk(pThis, pUrb, sizeof(wRet) + sizeof(*pSetup));
     1019                        }
     1020                        else
     1021                        {
     1022                            Log(("usbHid: GET_STATUS (interface) invalid, wIndex=%#x\n", pSetup->wIndex));
     1023                        }
     1024                        break;
     1025                    }
     1026   
     1027                    case VUSB_TO_ENDPOINT | VUSB_REQ_STANDARD | VUSB_DIR_TO_HOST:
     1028                    {
     1029                        if (pSetup->wIndex < RT_ELEMENTS(pThis->aEps))
     1030                        {
     1031                            wRet = pThis->aEps[pSetup->wIndex].fHalted ? 1 : 0;
     1032                            memcpy(&pUrb->abData[sizeof(*pSetup)], &wRet, sizeof(wRet));
     1033                            return usbHidCompleteOk(pThis, pUrb, sizeof(wRet) + sizeof(*pSetup));
     1034                        }
     1035                        else
     1036                        {
     1037                            Log(("usbHid: GET_STATUS (endpoint) invalid, wIndex=%#x\n", pSetup->wIndex));
     1038                        }
     1039                        break;
     1040                    }
     1041   
     1042                    default:
     1043                        Log(("usbHid: Bad GET_STATUS req: bmRequestType=%#x\n", pSetup->bmRequestType));
     1044                        return usbHidCompleteStall(pThis, pEp, pUrb, "Bad GET_STATUS");
     1045                }
     1046                break;
     1047            }
     1048   
    9921049            case VUSB_REQ_CLEAR_FEATURE:
    9931050                break;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette