USB Embedded Hosts: The Developer's Guide