AnsweredAssumed Answered

Custom hid device only send report after 200ms

Question asked by Quoc Khai Trang on Jun 6, 2018

Hi all,

I'm trying to create a custom keyboard with STM32F103C8, for the first version, i use HID class. Then i figured out that i can not update leds status. So, i changed to Custom HID class. And i hit this issue. Seem like i only can send one report after 200ms.

This is my code:

 

Clear_HID_Report();
keyboardHID.keys[0] = 0x15;
USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, &keyboardHID, sizeof(keyboardHID_t));
HAL_Delay(100);
Clear_HID_Report();
keyboardHID.keys[0] = 0x17;
tmp = USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, &keyboardHID, sizeof(keyboardHID_t));
HAL_Delay(100);
Clear_HID_Report();
keyboardHID.keys[0] = 0x10;
USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, &keyboardHID, sizeof(keyboardHID_t));
HAL_Delay(200);
Clear_HID_Report();
USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, &keyboardHID, sizeof(keyboardHID_t));

This code return: "rm", "t" are missing.

Then i increase the delay time to 200ms for all HAL_Delay, and i receive "rtm". Is there anyone can help me?

I event try this 

do {
tmp = USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, &keyboardHID, sizeof(keyboardHID_t));
} while (tmp != USBD_OK);

It's not help, too.

Outcomes