There are about 125 APIs in the USBLib, and for further clarification, they can be classified into four key categories or levels. Each category indicates the level of abstraction that API provides to the end user. At the top layer of the USB library, there are application interfaces that provide easy access to the various types of peripherals that are supported by the USB library. Below this layer are the USB host controller’s device interfaces that handle the specifics of each type of device and how to communicate with the USB host class driver.