Hi
My device is self-powered, usb connection is optional, so user may connect/disconnect it many times in the run time.
Previously I use MDK421, EP1 in is used, pc software use interrupt transfer to read EP1 data, usbd_hid_get_report() gets called every "Endpoint polling interval" ms, after I connect to pc, I can use bushound (usb monitor) to see windows driver is polling continously.
However, when moved to MDK423, after connect to pc, below usbd_hid_get_report() never gets called with USBD_HID_REQ_EP_INT?
In fact, what I want is to ask windows driver polling the EP1 data every 32 ms (can be seen in bushound), because my old pc software was sitting there waiting for that data, I know it is not efficient, but it was designed to work in that way.
int usbd_hid_get_report (U8 rtype, U8 rid, U8 *buf, U8 req) {
switch (rtype) { case HID_REPORT_INPUT: switch (rid) { case 0: switch (req) { case USBD_HID_REQ_EP_CTRL: case USBD_HID_REQ_PERIOD_UPDATE: buf[0] = 1; return (1); case USBD_HID_REQ_EP_INT: break; } break; } break; case HID_REPORT_FEATURE: buf[0] = feat; return (1); } return (0); }
Thanks.
Confirmed with NXP LPC1769 (running example Boards/keil/MCB1700/RL/USB/RTX/Device/HID) I am using the KEIL HID Client program that modifies LEDs and reads buttons.
I set a breakpoint on the first switch(rtype) which never gets hit.... According to the callgraph it should get called by USBD_HID_GetReport and USBD_HID_EP_INTIN_Event but it isn't - I can't cause any event that would call the function...