cancel
Showing results for 
Search instead for 
Did you mean: 

STM32F303 USB HID Output Report

R. L.
Associate
Posted on December 12, 2017 at 20:26

Hello,

i have a functioning USB HID Keyboard on my STM32F303 with an Output Report. I used the STM32Cube Software to create the standard mouse device and created my project on that Base. Now I want to send something to the Keyboard with the created Output Report but I dont know where I can get the Data on the STM32.

I use the VB.Net HIDLibrary to send the data to the Keyboard and that works fine without any errors, I just dont know where I can get the received data from. I also found this (

https://community.st.com/message/72155

?) example and followed the solution B but in my usbd_def.h in the USBD_HandleTypeDef the pClassData variable is defined as void and the compiler dosen't know hhid->RxBuffer and hhid->RxLength.

Could someone tell me how to receive data from the host in a output report?

This is my Description

__ALIGN_BEGIN static uint8_t HID_CUSTOM_ReportDesc[HID_CUSTOM_REPORT_DESC_SIZE]  __ALIGN_END = {

// 78 bytes

  0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)

  0x09, 0x06,        // Usage (Keyboard)

  0xA1, 0x01,        // Collection (Application)

  0x85, 0x01,        //   Report ID (1)

  0x05, 0x07,        //   Usage Page (Kbrd/Keypad)

  0x75, 0x01,        //   Report Size (1)

  0x95, 0x08,        //   Report Count (8)

  0x19, 0xE0,        //   Usage Minimum (0xE0)

  0x29, 0xE7,        //   Usage Maximum (0xE7)

  0x15, 0x00,        //   Logical Minimum (0)

  0x25, 0x01,        //   Logical Maximum (1)

  0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)

  0x95, 0x03,        //   Report Count (3)

  0x75, 0x08,        //   Report Size (8)

  0x15, 0x00,        //   Logical Minimum (0)

  0x25, 0x64,        //   Logical Maximum (100)

  0x05, 0x07,        //   Usage Page (Kbrd/Keypad)

  0x19, 0x00,        //   Usage Minimum (0x00)

  0x29, 0x65,        //   Usage Maximum (0x65)

  0x81, 0x00,        //   Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)

  0xC0,              // End Collection

  0x05, 0x0C,        // Usage Page (Consumer)

  0x09, 0x01,        // Usage (Consumer Control)

  0xA1, 0x01,        // Collection (Application)

  0x85, 0x02,        //   Report ID (2)

  0x05, 0x0C,        //   Usage Page (Consumer)

  0x15, 0x00,        //   Logical Minimum (0)

  0x25, 0x01,        //   Logical Maximum (1)

  0x75, 0x01,        //   Report Size (1)

  0x95, 0x08,        //   Report Count (8)

  0x09, 0xB5,        //   Usage (Scan Next Track)

  0x09, 0xB6,        //   Usage (Scan Previous Track)

  0x09, 0xB7,        //   Usage (Stop)

  0x09, 0xB8,        //   Usage (Eject)

  0x09, 0xCD,        //   Usage (Play/Pause)

  0x09, 0xE2,        //   Usage (Mute)

  0x09, 0xE9,        //   Usage (Volume Increment)

  0x09, 0xEA,        //   Usage (Volume Decrement)

  0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)

  0xC0,              // End Collection //78

  0x06, 0x00, 0xff,  // USAGE_PAGE (Vendor Defined Page 1)

  0x09, 0x01,        // USAGE (Vendor Usage  1)

  0xa1, 0x01,        // COLLECTION (Application)

// ------- common globals --------

  0x15, 0x00,        //   LOGICAL_MINIMUM (0)

  0x26, 0xff, 0x00,  //   LOGICAL_MAXIMUM (255)

  0x75, 0x08,        //   REPORT_SIZE (8)

// ------- 420 bytes report --------

  0x85, 0x20,        //   REPORT_ID (3)

  0x96, 0xA4, 0x01,  //   REPORT_COUNT (420)

  0x09, 0x01,        //   USAGE (Vendor Usage  1)

  0x81, 0x02,        //   INPUT (Data,Var,Abs)

  0x09, 0x01,        //   USAGE (Vendor Usage  1)

  0x91, 0x02,        //   OUTPUT (Data,Var,Abs)

  0xc0               // END_COLLECTION

};

#hid-output-report #usb-hid #stm32f3 #stm32f303
0 REPLIES 0