The careful partitioning of the layers in Belcarra's Composite Device Framework significantly reduces the complexity of individual functions while combining management capabilities that do not relate to specific functions and allowing easy portability to new architectures and operating systems:
a. composite
b. class
c. interface
Composite Core
a. USB Function API
b. Composite Management API
c. OS Abstraction
Hardware Drivers
a. Bus and PCD Driver library
b. Architecture Specific Files
c. Platform Specific Files and Configuration
Logically there is a 4th layer that is used for management:
Management Software
a. usbadmin
b. /proc/usb-functions
c. /proc/trace_otg