Maybe I've overlooked something obvious, but are there any guides/samples to follow when using HID output reports to send data from central to the peripheral (to control LEDs, motors, etc).
I see a reference to it in the keyboard sample in the mentioned LEDs but nothing fleshed out to work from.
( ~/arduino-BLEPeripheral/examples/HID/HID_keyboard/ )
Also, is there a pointer on how to receive the data from the second or third (etc) HID report?
I ask because my reverse engineering attempts on this gaming controller at the point now where the primary button/joystick inputs in the first report work perfectly, but now I want to (attempt to) send force feedback rumble commands.
Here is the (USB derived) descriptor i'm working with if anyone's curious.
0x05, 0x01, // Usage Page (Generic Desktop Ctrls)
0x09, 0x05, // Usage (Game Pad)
0xA1, 0x01, // Collection (Application)
0xA1, 0x02, // Collection (Logical)
0x85, 0x01, // Report ID (1)
0x75, 0x08, // Report Size (8)
0x95, 0x04, // Report Count (4)
0x15, 0x00, // Logical Minimum (0)
0x26, 0xFF, 0x00, // Logical Maximum (255)
0x35, 0x00, // Physical Minimum (0)
0x46, 0xFF, 0x00, // Physical Maximum (255)
0x09, 0x30, // Usage (X)
0x09, 0x31, // Usage (Y)
0x09, 0x32, // Usage (Z)
0x09, 0x35, // Usage (Rz)
0x81, 0x02, // **Input** (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x75, 0x04, // Report Size (4)
0x95, 0x01, // Report Count (1)
0x25, 0x07, // Logical Maximum (7)
0x46, 0x3B, 0x01, // Physical Maximum (315)
0x66, 0x14, 0x00, // Unit (System: English Rotation, Length: Centimeter)
0x09, 0x39, // Usage (Hat switch)
0x81, 0x42, // **Input** (Data,Var,Abs,No Wrap,Linear,Preferred State,Null State)
0x66, 0x00, 0x00, // Unit (None)
0x75, 0x01, // Report Size (1)
0x95, 0x0C, // Report Count (12)
0x25, 0x01, // Logical Maximum (1)
0x45, 0x01, // Physical Maximum (1)
0x05, 0x09, // Usage Page (Button)
0x19, 0x01, // Usage Minimum (0x01)
0x29, 0x0C, // Usage Maximum (0x0C)
0x81, 0x02, // **Input** (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x01, // Report Count (1)
0x75, 0x08, // Report Size (8)
0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00)
0x26, 0xFF, 0x00, // Logical Maximum (255)
0x46, 0xFF, 0x00, // Physical Maximum (255)
0x09, 0x00, // Usage (0x00)
0x81, 0x02, // **Input** (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0, // End Collection
0xA1, 0x02, // Collection (Logical)
0x85, 0x02, // Report ID (2)
0x95, 0x07, // Report Count (7)
0x75, 0x08, // Report Size (8)
0x26, 0xFF, 0x00, // Logical Maximum (255)
0x46, 0xFF, 0x00, // Physical Maximum (255)
0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00)
0x09, 0x03, // Usage (0x03)
0x81, 0x02, // **Input** (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0, // End Collection
0xA1, 0x02, // Collection (Logical)
0x85, 0x03, // Report ID (3)
0x09, 0x04, // Usage (0x04)
0x91, 0x02, // **_Output_** (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0, // End Collection
0xC0, // End Collection
// 119 bytes
// best guess: USB HID Report Descriptor
Thanks for the great work on this library, without it I would have still be stuck fighting the losing battle against nrfgo studio