Contents
Intro
USB Basics
Uses and limits
Evolution of an interface
Bus components
Division of labor
Developing a device
USB 3.1 essentials
Inside USB Transfers
Transfer basics
Elements of a transfer
USB 2.0 transactions
Ensuring successful transfers
Enhanced SuperSpeed transactions
Transfer Type for every Purpose
Control transfers
Bulk transfers
Interrupt transfers
Isochronous transfers
More about time-critical transfers
Enumeration - Host learns about Devices
Events and requests
Descriptors
Control Transfers - Structured Requests for Critical Data
Elements of a control transfer
Standard requests
Other requests
Chip Choices
Components of a USB device
Simplifying device development
USB microcontrollers
Controllers that interface to CPUs
Device Classes
Purpose
Defined classes
Implementing non-standard functions
Host Communicates
Device drivers
Inside the layers
Low-level host drivers
Writing drivers
Using GUIDs
Matching Driver to Device
Using Device Manager
Device information in the registry
Using INF files
Using device identification strings
Tools and diagnostic aids
Detecting Devices
A brief guide to calling API functions
Finding a device
Obtaining a handle
Detecting device attachment and removal
Human Interface Devices - Capabilities
What is a HID?
Descriptors
HID-specific requests
Transferring data
Human Interface Devices - Reports
Report structure
The Main item type
The Global item type
The Local item type
Human Interface Devices - Host Application
HIDClass support routines
Identifying a device
Sending and receiving reports
WinUSB for Vendor-defined Functions
Capabilities and limits
Accessing the device
WinUSB’s System INF File
Microsoft OS 1.0 descriptors
Microsoft OS 2.0 descriptors
Hubs to extend & expand the Bus
USB 2.0
USB 3.1
The hub class
Managing Power
Power options
Hub power
Conserving power
Advanced power delivery capabilities
Power management under Windows
Battery charging
Tools
Testing & Debugging
Compliance testing
Windows hardware certification
Packets on the Bus
USB 2.0
USB 3.1
Electrical & Mechanical Interface
USB 2.0
USB 3.1
USB Type-C cables
Other ways to connect
Hosts for Embedded Systems
The Targeted Host
Embedded Hosts
OTG devices
Choosing a development platform
Index