QUOTE(meenn @ Jan 14 2022, 06:21 PM)
So I want to start coding for USB, but I found out so many versions in USB.
In early years, maybe 1994~96, there is UHCI.
Then OHCI,
EHCI - USB 2.0
XHCI - USB 3.0
They even have AHCI, but couldn't find it on official site.
Well, the purpose of this thread is to let coders familiar with USB versioning of different standard or specification.
For example, one can download HID( USB 1.11) spec in PDFs from USB official site:
usb.org/documents?search=hid&items_per_page=50
So, I still haven't figure out UHCI ealier, or OHCI earlier.
Writing a USB driver and HID parser is not easy, and there is also Report Descriptor, example header like this:
This is for wheel mouse: (a bit outdated)
Just a correction, there's no AHCI. That's a SATA standard.In early years, maybe 1994~96, there is UHCI.
Then OHCI,
EHCI - USB 2.0
XHCI - USB 3.0
They even have AHCI, but couldn't find it on official site.
Well, the purpose of this thread is to let coders familiar with USB versioning of different standard or specification.
For example, one can download HID( USB 1.11) spec in PDFs from USB official site:
usb.org/documents?search=hid&items_per_page=50
So, I still haven't figure out UHCI ealier, or OHCI earlier.
Writing a USB driver and HID parser is not easy, and there is also Report Descriptor, example header like this:
This is for wheel mouse: (a bit outdated)
CODE
char ReportDescriptor[118] = {
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x02, // USAGE (Mouse)
0xa1, 0x01, // COLLECTION (Application)
0x09, 0x02, // USAGE (Mouse)
0xa1, 0x02, // COLLECTION (Logical)
0x09, 0x01, // USAGE (Pointer)
0xa1, 0x00, // COLLECTION (Physical)
// ------------------------------ Buttons
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x05, // USAGE_MAXIMUM (Button 5)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1)
........
......
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x02, // USAGE (Mouse)
0xa1, 0x01, // COLLECTION (Application)
0x09, 0x02, // USAGE (Mouse)
0xa1, 0x02, // COLLECTION (Logical)
0x09, 0x01, // USAGE (Pointer)
0xa1, 0x00, // COLLECTION (Physical)
// ------------------------------ Buttons
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x05, // USAGE_MAXIMUM (Button 5)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1)
........
......