USB is not a peer to peer protocol, like TCP/IP. There is one master, called the host, and one or more slaves, called devices or peripherals. If you want to connect USB devices, such as USB disk drives, USB printers, etc. to your embedded device, then you need a USB host stack, such as smxUSBH. On the other hand, if you want to connect your embedded device to a PC and look like a USB device, then you need a USB device stack, such as smxUSBD. OTG is for embedded devices that need to be able to connect to other OTG devices and switch roles of themselves and their peer. We support this with smxUSBO.
Our USB products can be used with other RTOSs or standalone. When used with our smx multitasking kernel, they operate out-of-the-box on supported processors and include USB awareness. USB controller drivers are available for all processors supported by smx and for several processor families not supported by smx (see sidebar). Royalty-free prices include full source code, no per-seat charges, and three months of support.