This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

HID Report Description Size Limit

Other Parts Discussed in Thread: CC2540

I am using the CC2540 keyfob and the TI BLE stack to develop a HID Sensor device that will communicate with a Windows 8 platform.  Windows 8 transforms a HID Sensor to a Windows Sensor via the Windows HID Class driver.

The Windows Sensor API provides fixed HID Report data items, namely SENSOR_DATA_TYPE_CUSTOM_VALUE_1 through SENSOR_DATA_TYPE_CUSTOM_VALUE_28.

My problem is that up to and include SENSOR_DATA_TYPE_CUSTOM_VALUE_15, my sensor device communicates with the Windows 8 platform as expected.  Adding ...VALUE_16, generates unpredicatable behavior.  Removing ...VALUE_16, restores back to expected behavior.

I want to send as many data as possible in a single input report for a HID custom sensor.

There appears to be a issue that I suspect may be a size limit.

Is there a size limitation of the HID report descriptor in the TI BLE stack?

  • My HID knowledge here is a bit limited. A quick search on hid length (looking for a 1 byte limitation) didn't yield much.

    /* Attribute value lengths */
    #define HID_PROTOCOL_MODE_LEN 1 // HID Protocol Mode
    #define HID_INFORMATION_LEN 4 // HID Information
    #define HID_REPORT_REF_LEN 2 // HID Report Reference Descriptor
    #define HID_EXT_REPORT_REF_LEN 2 // External Report Reference Descriptor

    ctrl-shift-f to find referenced which may help.

    BR,

    -Greg

  • Greg,

    Thanks for answering and sorry to take so long to respond.

    My problem is associated with the size of hidReportMap, initialized in hidkbdservice.c.  Beyond a limit (of about 500 bytes if I recall correctly), the connection between the device and my Windows bluetooth 4.0  workstation is not established.  The size of hidReportMap is originally saved in a byte variable but I changed the variable to 16bit integer since the size was >255.