none
HID Driver for Embedded Compact 7 RRS feed

  • Question

  • Greetings,

    I'm writing an HID driver for a device on CE7 using kbdhid as a template. It's mostly going good so far (driver is loaded, HIDDeviceAttach is called, PCHID_FUNCS pHidFuncs routines work). The only issue I'm having is sending interrupt output reports to the device on the correct endpoint (1). If I use pHidFuncs->lpSetReport, the reports always go to the control endpoint (0). If I try to use WriteFile with the same device handle, it always fails and GetLastError returns 6 (ERROR_INVALID_HANDLE). I've tried WriteFile with both an OVERLAPPED structure and without, but still the same thing. Any idea how to send a report to the correct endpoint in CE7?

    Kindest Regards,

    Andrew

    Thursday, February 7, 2019 9:34 PM

Answers

  • After studying the HID class code, it is apparent this functionality is not supported on Windows CE as-is.

    In C:\WINCE700\public\common\oak\drivers\usb\class\hid\hidclass\UsbPdd\setup.cpp::SetUsbInterface()

    else if (USB_ENDPOINT_DIRECTION_OUT(pEPDesc>bEndpointAddress))
    {            
        DEBUGMSG(ZONE_WARNING, (_T("%s: USB HID Driver does not support optional Interrupt Out\r\n"), pszFname));
    }

    I'll have to modify the UsbPdd code and roll a new OS to be able to use this HID compliant device.

    Monday, February 11, 2019 2:49 PM