An app note (PDF!) on Microchips’ FlexConnect:
The USB protocol calls for rigid system roles to maintain order. One processor acts as the Host which issues commands to the Device. In turn, the Devices respond to the Host’s commands. This implementation operates well where there is one central processor controlling a wide variety of support devices. However, as technology has progressed, microprocessors have become embedded in many new and unique applications. With the proliferation of tablet PCs, laptops, ultrabooks, and smartphones, the system Host may not be the same device in every application. Microchip’s FlexConnect feature has been developed to allow the system to adapt to these new applications.