USBLib is a set of data types and functions for creating USB device, host or On-The-Go (OTG) applications on TM4C123x microcontroller-based boards. The contents of the USB library and its associated header files fall into four main groups. The first of these is general purpose USB functions, used by both device and host applications. These include functions to parse USB descriptors and set the operating mode of the application. The second group is device specific functions, providing the class-independent features required by all USB device applications such as host connection signaling and responding to standard descriptor requests. The next group is host specific functions, providing class-independent features required by all USB host applications such as device detection and enumeration and endpoint management. Finally, the fourth group, the class specific functions aids development of applications in conforming to several commonly-used USB classes. The advantage of this structure is that the developer can modify a complete, very specific USB application to handle a new feature, or create a completely new application based on the examples while retaining the advantage of already-written code in both cases.