This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

HID structure development

Hi,

Recently, I was trying to use the hid sample to development specific application.

I just view there was the report map inside the reference file.

I am curious about how can I use the below concept into the project? Especially the shorthand mode.

Frankly speaking, I am not clear about where is the structure used in the sample code.

Parents
  • Hello,

    How about downloading the nRF sniffer (recommend v2 beta) to view the BLE packets:
    https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF-Sniffer/(language)/eng-GB 

    Unless you want to change the report map, you may simply call ble_hids_inp_rep_send() to send key press and release.

    Best regards,
    Kenneth

  • Hi Kenneth,

    I actually want to  change the report map thus I would like to know where can I see the structure in the code if I want to use the shorthand mode.

    From the map in sample code below, I couldn't find where should I put 0xFE.

        static uint8_t report_map_data[] =
        {
            0x05, 0x01,                 // Usage Page (Generic Desktop)
            0x09, 0x06,                 // Usage (Keyboard)
            0xA1, 0x01,                 // Collection (Application)
            0x05, 0x07,                 //     Usage Page (Key Codes)
            0x19, 0xe0,                 //     Usage Minimum (224)
            0x29, 0xe7,                 //     Usage Maximum (231)
            0x15, 0x00,                 //     Logical Minimum (0)
            0x25, 0x01,                 //     Logical Maximum (1)
            0x75, 0x01,                 //     Report Size (1)
            0x95, 0x08,                 //     Report Count (8)
            0x81, 0x02,                 //     Input (Data, Variable, Absolute)
    
            0x95, 0x01,                 //     Report Count (1)
            0x75, 0x08,                 //     Report Size (8)
            0x81, 0x01,                 //     Input (Constant) reserved byte(1)
    
            0x95, 0x05,                 //     Report Count (5)
            0x75, 0x01,                 //     Report Size (1)
            0x05, 0x08,                 //     Usage Page (Page# for LEDs)
            0x19, 0x01,                 //     Usage Minimum (1)
            0x29, 0x05,                 //     Usage Maximum (5)
            0x91, 0x02,                 //     Output (Data, Variable, Absolute), Led report
            0x95, 0x01,                 //     Report Count (1)
            0x75, 0x03,                 //     Report Size (3)
            0x91, 0x01,                 //     Output (Data, Variable, Absolute), Led report padding
    
            0x95, 0x06,                 //     Report Count (6)
            0x75, 0x08,                 //     Report Size (8)
            0x15, 0x00,                 //     Logical Minimum (0)
            0x25, 0x65,                 //     Logical Maximum (101)
            0x05, 0x07,                 //     Usage Page (Key codes)
            0x19, 0x00,                 //     Usage Minimum (0)
            0x29, 0x65,                 //     Usage Maximum (101)
            0x81, 0x00,                 //     Input (Data, Array) Key array(6 bytes)
    
            0x09, 0x05,                 //     Usage (Vendor Defined)
            0x15, 0x00,                 //     Logical Minimum (0)
            0x26, 0xFF, 0x00,           //     Logical Maximum (255)
            0x75, 0x08,                 //     Report Count (2)
            0x95, 0x02,                 //     Report Size (8 bit)
            0xB1, 0x02,                 //     Feature (Data, Variable, Absolute)
    
            0xC0                        // End Collection (Application)
        };
    

    And I would like to make sure it is possible to use the command below:

    send[6]={0xFE,0x3,0x00,0x4,0x5,0x06}

    Is it can be used and work in the code which means the library can identify it automatically?

Reply
  • Hi Kenneth,

    I actually want to  change the report map thus I would like to know where can I see the structure in the code if I want to use the shorthand mode.

    From the map in sample code below, I couldn't find where should I put 0xFE.

        static uint8_t report_map_data[] =
        {
            0x05, 0x01,                 // Usage Page (Generic Desktop)
            0x09, 0x06,                 // Usage (Keyboard)
            0xA1, 0x01,                 // Collection (Application)
            0x05, 0x07,                 //     Usage Page (Key Codes)
            0x19, 0xe0,                 //     Usage Minimum (224)
            0x29, 0xe7,                 //     Usage Maximum (231)
            0x15, 0x00,                 //     Logical Minimum (0)
            0x25, 0x01,                 //     Logical Maximum (1)
            0x75, 0x01,                 //     Report Size (1)
            0x95, 0x08,                 //     Report Count (8)
            0x81, 0x02,                 //     Input (Data, Variable, Absolute)
    
            0x95, 0x01,                 //     Report Count (1)
            0x75, 0x08,                 //     Report Size (8)
            0x81, 0x01,                 //     Input (Constant) reserved byte(1)
    
            0x95, 0x05,                 //     Report Count (5)
            0x75, 0x01,                 //     Report Size (1)
            0x05, 0x08,                 //     Usage Page (Page# for LEDs)
            0x19, 0x01,                 //     Usage Minimum (1)
            0x29, 0x05,                 //     Usage Maximum (5)
            0x91, 0x02,                 //     Output (Data, Variable, Absolute), Led report
            0x95, 0x01,                 //     Report Count (1)
            0x75, 0x03,                 //     Report Size (3)
            0x91, 0x01,                 //     Output (Data, Variable, Absolute), Led report padding
    
            0x95, 0x06,                 //     Report Count (6)
            0x75, 0x08,                 //     Report Size (8)
            0x15, 0x00,                 //     Logical Minimum (0)
            0x25, 0x65,                 //     Logical Maximum (101)
            0x05, 0x07,                 //     Usage Page (Key codes)
            0x19, 0x00,                 //     Usage Minimum (0)
            0x29, 0x65,                 //     Usage Maximum (101)
            0x81, 0x00,                 //     Input (Data, Array) Key array(6 bytes)
    
            0x09, 0x05,                 //     Usage (Vendor Defined)
            0x15, 0x00,                 //     Logical Minimum (0)
            0x26, 0xFF, 0x00,           //     Logical Maximum (255)
            0x75, 0x08,                 //     Report Count (2)
            0x95, 0x02,                 //     Report Size (8 bit)
            0xB1, 0x02,                 //     Feature (Data, Variable, Absolute)
    
            0xC0                        // End Collection (Application)
        };
    

    And I would like to make sure it is possible to use the command below:

    send[6]={0xFE,0x3,0x00,0x4,0x5,0x06}

    Is it can be used and work in the code which means the library can identify it automatically?

Children
No Data
Related