Is their not an easier way to do this?
In step #4 I cannot find which USB_CFG_HAVE_INTRIN_ENDPOINT you are talking about, because it appears multiple times in the file.
Also these steps look like they are modifying the driver, which documentation says not to do, so I assume their is a way to do this without modifying the driver files?
Also why would the "USB_CFG_IMPLEMENT_FN_WRITEOUT" define not just add what is needed to the usbDescriptorConfiguration so that at least 1 output report would be added, I assumed this is how everything worked, but after testing discovered this is not the case.
Is their anyone that has got Interrupt-Out to work and can assist?
My usbHidReportDescriptor is below, many thanks!
Code: Select all
PROGMEM const char usbHidReportDescriptor[] = /* USB report descriptor */
{
//[Endpoint 0]
0x06, 0xa0, 0xff, // USAGE_PAGE (Vendor Defined Page 1)
0x09, 0x01, // USAGE (Vendor Usage 1)
0xa1, 0x01, // COLLECTION (Application)
//[Endpoint 1] Interrupt-In (used to send data to the host spontaneously)
// Input Report
0x09, 0x02, // Usage ID - vendor defined usage2
0x15, 0x00, // Logical Minimum (0)
0x26, 0xFF, 0x00, // Logical Maximum (255)
0x75, 0x08, // Report Size (8 bits)
0x95, 0x08, // Report Count (8 fields)
0x81, 0x02, // Input (Data, Variable, Absolute)
//[Endpoint 2] Interrupt-Out ***DOES NOT WORK YET***
// Output Report (we get data from PC)
//0x09, 0x03, // Usage ID - vendor defined usage3
//0x15, 0x00, // Logical Minimum (0)
//0x26, 0xFF, 0x00, // Logical Maximum (255)
//0x75, 0x08, // Report Size (8 bits)
//0x95, 0x08, // Report Count (8 fields)
//0x91, 0x02, // Output (Data, Variable, Absolute)
0xc0 // END_COLLECTION
};