Shared/Architecture.txt

Class hierarchies
-----------------
 
MIDIDriver
    USBMIDIDriverBase
        USBVendorMIDIDriver
            CompanyA_USBMIDIDriver
            CompanyB_USBMIDIDriver
            etc.
        USBMIDIClassDriver
    SerialMIDIDriverBase *
        StandardSerialMIDIDriver
        CompanyC_SerialMIDIDriver
        CompanyD_SerialMIDIDriver
        etc.
 
MIDIDriverDevice  (was: InterfaceState)
    USBMIDIDevice
    SerialMIDIDevice *
 
IOServiceManager
    USBDeviceManager
        USBMIDIDeviceManager
    USBInterfaceManager
        USBMIDIClassInterfaceManager
    SerialDeviceManager *
 
* doesn't exist yet
 
Vendor-specific drivers not supplied by Apple.
 
 
 
Object ownership hierarchy
--------------------------
USBVendorMIDIDriver
    USBMIDIDeviceManager
        array of USBMIDIDevice
 
with ALL vendor-specific overrides implemented in the driver class
although the device may also be subclassed in special cases