CLASSES

Base library

* C2DGraphics: Software graphics library with VSync and hardware-accelerated double buffering.
* CActLED: Switch the Act LED on and off, checks the Raspberry Pi model to use the right LED pin.
* CBcm54213Device: Driver for BCM54213PE Gigabit Ethernet Transceiver of Raspberry Pi 4.
* CBcmFrameBuffer: Frame buffer initialization, setting color palette for 8 bit depth.
* CBcmMailBox: Simple GPU mailbox interface, currently used for the property interface.
* CBcmPCIeHostBridge: Driver for PCIe Host Bridge(s) of Raspberry Pi 4 and 5.
* CBcmPropertyTags: Get several information from the GPU side or control something on this side.
* CBcmRandomNumberGenerator: Driver for the built-in hardware random number generator.
* CBcmWatchdog: Driver for the BCM2835 watchdog device.
* CCharGenerator: Gives pixel information for console font
* CClassAllocator: Support class for the class-specific allocation of objects
* CCPUThrottle: Manages CPU clock rate depending on user requirements and SoC temperature.
* CDevice: Base class for all devices
* CDeviceNameService: Devices can be registered by name and retrieved later by this name
* CDeviceTreeBlob: Simple Devicetree blob parser
* CDisplay: Base class for dot-matrix display drivers.
* CDMA4Channel: Platform DMA4 "large address" controller support (helper class).
* CDMAChannel: Platform DMA controller support (I/O read/write, memory copy).
* CDMAChannelRP1: RP1 platform DMA controller support (for Raspberry Pi 5).
* CExceptionHandler: Generates a stack-trace and a panic message if an abort exception occurs.
* CGPIOClock: Using GPIO clocks, initialize, start and stop it.
* CGPIOManager: Interrupt multiplexer for CGPIOPin (only required if GPIO interrupt is used).
* CGPIOPin: Encapsulates a GPIO pin, can be read, write or inverted. Supports interrupts. Simple initialization.
* CGPIOPinFIQ: GPIO fast interrupt pin (only one allowed in the system).
* CGenericLock: Locks a resource with or without scheduler.
* CHeapAllocator: Allocates blocks from a flat memory region.
* CI2CMaster: Driver for I2C master devices.
* CI2CMasterIRQ: Driver for I2C master devices - async using IRQ.
* CI2CSlave: Driver for I2C slave device.
* CInterruptSystem: Connecting to interrupts, an interrupt handler will be called on interrupt.
* CKernelOptions: Providing kernel options from file cmdline.txt (see doc/cmdline.txt).
* CLatencyTester: Measures the IRQ latency of the running code.
* CLogger: Writing logging messages to a target device
* CMACAddress: Encapsulates an Ethernet MAC address.
* CMACBDevice: Driver for MACB/GEM Ethernet NIC of Raspberry Pi 5.
* CMachineInfo: Helper class to get different information about the running computer.
* CMemorySystem: Enabling MMU if requested, switching page tables (not used here).
* CMPHIDevice: A driver, which uses the MPHI device to generate an IRQ.
* CMultiCoreSupport: Implements multi-core support on the Raspberry Pi 2.
* CNetDevice: Base class (interface) of net devices.
* CNullDevice: Character device which ignores sent data and returns 0 bytes on read.
* CNumberPool: Allocation pool for (device) numbers.
* CPageAllocator: Allocates aligned pages from a flat memory region.
* CPageTable: Encapsulates a page table to be used by MMU (AArch32).
* CPtrArray: Container class. Dynamic array of pointers.
* CPtrList: Container class. List of pointers.
* CPtrListFIQ: Container class. List of pointers, usable from FIQ_LEVEL.
* CPWMOutput: Pulse Width Modulator output (2 channels).
* CSouthbridge: Driver for the RP1 multi-function device of the Raspberry Pi 5.
* CScreenDevice: Writing characters to screen, some escape sequences (some are not yet implemented)
* CSerialDevice: Driver for PL011 UART, interrupt or polling mode
* CSMIMaster: Driver for the Second Memory Interface.
* CSpinLock: Encapsulates a spin lock for synchronizing the concurrent access to a resource from multiple cores.
* CSPIMaster: Driver for (non-AUX) SPI master device. Synchronous polling operation.
* CSPIMasterAUX: Driver for the auxiliary SPI master (SPI1).
* CSPIMasterDMA: Driver for SPI0 master device. Asynchronous DMA operation.
* CString: Simple string manipulation class, Format() method works like printf() (but has less formating options)
* CTerminalDevice: Terminal support for dot-matrix displays.
* CTime: Holds, makes and breaks the time.
* CTimer: Manages the system clock, supports kernel timers and a calibrated delay loop.
* CTracer: Collects tracing events in a ring buffer for debugging and dumps them to the logger later.
* CTranslationTable: Encapsulates a translation table to be used by MMU (AArch64).
* CUserTimer: Fine grained user programmable interrupt timer (based on ARM_IRQ_TIMER1)
* CVirtualGPIOPin: Encapsulates a "virtual" GPIO pin controlled by the VideoCore (Output only).
* CWindowDisplay: Non-overlapping window on a display.
* CWriteBufferDevice: Filter for buffered write to (e.g. screen) device.

USB library

* CDWHCICompletionQueue: Queues USB requests ready for completion (with USE_USB_FIQ enabled).
* CDWHCIDevice: USB host controller interface (HCI) driver for Raspberry Pi 1-3.
* CDWHCIFrameScheduler: Base class for a simple micro frame scheduler
* CDWHCIFrameSchedulerIsochronous: Schedules the transmission of isochronous split frames to non-high-speed devices
* CDWHCIFrameSchedulerNonPeriodic: Schedules the transmission of non-interrupt split frames to non-high-speed devices
* CDWHCIFrameSchedulerNoSplit: Schedules the transmission of frames to direct attached non-high-speed devices
* CDWHCIFrameSchedulerPeriodic: Schedules the transmission of interrupt split frames to non-high-speed devices
* CDWHCIRegister: Supporting class for CDWHCIDevice, encapsulates a register of the HCI.
* CDWHCIRootPort: Supporting class for CDWHCIDevice, initializes the root port.
* CDWHCITransactionQueue: Queues coming USB transactions (with USE_USB_SOF_INTR enabled).
* CDWHCITransferStageData: Holds all the data needed for a transfer stage on one HCI channel.
* CLAN7800Device: Driver for the on-board USB Gigabit Ethernet device of the Raspberry Pi 3 B+.
* CSMSC951xDevice: Driver for the on-board USB Ethernet device.
* CUSBAudioControlDevice: Driver for USB audio control devices.
* CUSBAudioStreamingDevice: Low-level driver for USB audio streaming devices.
* CUSBAudioFunctionTopology: Topology parser for USB audio class devices.
* CUSBBluetoothDevice: Bluetooth HCI transport driver for USB Bluetooth BR/EDR dongles.
* CUSBBulkOnlyMassStorageDevice: Driver for USB mass storage devices (bulk only)
* CUSBCDCEthernetDevice: Driver for the USB CDC Ethernet device implemented in QEMU.
* CUSBConfigurationParser: Parses and validates an USB configuration descriptor.
* CUSBController: Generic USB (host or gadget) controller
* CUSBDevice: Encapsulates a general USB device (detects the functions of this device).
* CUSBDeviceFactory: Creates the function objects of the different supported USB functions.
* CUSBEndpoint: Encapsulates an endpoint of an USB device (supports control, bulk and interrupt EPs).
* CUSBFloppyDiskDevice: Driver for USB floppy disk devices (CBI transport).
* CUSBFunction: Encapsulates a function (represented by an interface descriptor) of an USB device.
* CUSBGamePadDevice: Base class for USB gamepad drivers
* CUSBGamePadPS3Device: Driver for PS3 gamepad
* CUSBGamePadPS4Device: Driver for PS4 gamepad
* CUSBGamePadStandardDevice: Driver for USB gamepads with USB HID class report interface (3-0-0)
* CUSBGamePadSwitchProDevice: Driver for Nintendo Switch Pro gamepad
* CUSBGamePadXbox360Device: Driver for Xbox 360 Wired gamepad
* CUSBGamePadXboxOneDevice: Driver for Xbox One gamepad
* CUSBHCIDevice: Alias for CDWHCIDevice, CXHCIDevice or CUSBSubSystem, depending on Raspberry Pi model.
* CUSBHCIRootPort: Base class, which represents an USB HCI root port.
* CUSBHIDDevice: General USB HID device (e.g. keyboard, mouse, gamepad)
* CUSBHostController: Base class of USB host controllers.
* CUSBKeyboardDevice: Driver for USB keyboards
* CUSBMIDIDevice: Interface device for USB Audio Class MIDI 1.0 devices
* CUSBMIDIHostDevice: Host driver for USB Audio Class MIDI 1.0 devices
* CUSBMouseDevice: Driver for USB mice
* CUSBPrinterDevice: Simple communications driver for USB printers (back-channel is not used).
* CUSBRequest: A request to an USB device (URB).
* CUSBSerialDevice: Interface device for USB serial devices.
* CUSBSerialCDCDevice: Driver for USB CDC serial devices (e.g. micro:bit)
* CUSBSerialCH341Device: Driver for CH341 based USB serial devices
* CUSBSerialCP210xDevice: Driver for CP210x based USB serial devices
* CUSBSerialDevice: Base class and interface for USB serial device drivers
* CUSBSerialFT231XDevice: Driver for FTDI based USB serial devices
* CUSBSerialHostDevice: Generic host driver for USB serial devices
* CUSBSerialPL2303Device: Driver for PL2303 based USB serial devices
* CUSBStandardHub: USB hub driver for LAN9512/9514 and external hubs (max. 8 ports)
* CUSBString: Encapsulates a string descriptor, available on an USB device.
* CUSBSubSystem: USB sub-system of the Raspberry Pi 5.
* CUSBTouchScreenDevice: Driver for USB HID-class touchscreens.
* CXHCICommandManager: Synchronous xHC command execution for the xHCI driver.
* CXHCIDevice: USB host controller interface (xHCI) driver for Raspberry Pi 4.
* CXHCIEndpoint: Encapsulates a single endpoint of an USB device for the xHCI driver.
* CXHCIEventManager: xHC event handling for the xHCI driver.
* CXHCIMMIOSpace: Provides access to the memory-mapped I/O registers of the xHCI controller.
* CXHCIRing: Encapsulates a transfer, command or event ring for communication with the xHCI controller.
* CXHCIRootHub: Initializes the available USB root ports of the xHCI controller.
* CXHCIRootPort: Encapsulates an USB root port of the xHCI controller.
* CXHCISharedMemAllocator: Shared memory allocation for the xHCI driver.
* CXHCISlotManager: Manages the USB device slots of the xHCI controller.
* CXHCIUSBDevice: Encapsulates a single USB device, attached to the xHCI controller.

USB gadget library

* CUSBCDCGadget: USB serial CDC gadget
* CUSBCDCGadgetEndpoint: Endpoint of the USB serial CDC gadget
* CDWUSBGadget: DW USB gadget on Raspberry Pi (3)A(+), Zero (2) (W), 4B
* CDWUSBGadgetEndpoint: Endpoint of a DW USB gadget
* CDWUSBGadgetEndpoint0: Endpoint 0 of a DW USB gadget
* CUSBMIDIGadget: USB MIDI (v1.0) gadget
* CUSBMIDIGadgetEndpoint: Endpoint of the USB MIDI gadget
* CUSBMSDGadget: USB mass storage device gadget
* CUSBMSDGadgetEndpoint: Endpoint of the USB mass storage gadget

Input library

* CConsole: Console device using screen/USB keyboard or alternate device (e.g. CSerialDevice)
* CKeyboardBehaviour: Generic keyboard function
* CKeyboardBuffer: Buffers characters entered on the USB keyboard
* CKeyMap: Keyboard translation map (six selectable default maps at the moment)
* CLineDiscipline: Implements line editor function
* CMouseBehaviour: Generic mouse function, handles the mouse cursor
* CMouseDevice: Generic mouse interface device
* CRPiTouchScreen: Driver for the official Raspberry Pi touch screen
* CTouchScreenDevice: Generic touch screen interface device
* CXPT2046TouchScreen: Driver for XPT2046-based touch screens

FS library

* CPartition: Derived from CDevice, restricts access to a storage partition inside its boundaries.
* CPartitionManager: Creates a CPartition object for each primary (non-EFI) partition.

FAT FS library

* CFAT: Encapsulates the File Allocation Table structure of a FAT storage partition.
* CFATInfo: Encapsulates the configuration information describing a FAT storage partition (from BPB and FS Info).
* CFATDirectory: Encapsulates a directory on a FAT partition (currently 8.3-names in the root directory only).
* CFATFileSystem: File system driver for FAT16 and FAT32 storage partitions.
* CFATCache: Sector cache for FAT storage partitions.

Scheduler library

* CMutex: Provides a method to provide mutual exclusion (critical sections) across tasks.
* CPipe: Unidirectional interprocess communication channel using a FIFO.
* CPipeFile: Read or Write endpoint of a CPipe channel.
* CTask: Overload this class, define the Run() method to implement your own task and call new on it to start it.
* CScheduler: Cooperative non-preemptive scheduler which controls which task runs at a time.
* CSemaphore: Implements a semaphore synchronization class.
* CSynchronizationEvent: Provides a method to synchronize the execution of a task with an event.

Net library

* CARPHandler: Resolves IP addresses to Ethernet MAC addresses and responds to ARP requests.
* CChecksumCalculator: Calculates checksums in several TCP/IP packets.
* CDHCPClient: DHCP client task. Gets and maintains an IP address lease for the network device.
* CDNSClient: Resolves hostnames to IP addresses.
* CHTTPClient: Requests documents from HTTP webservers.
* CHTTPDaemon: Simple HTTP server class.
* CICMPHandler: ICMP error message handler and echo (ping) responder.
* CIGMPHandler: IGMP version 2 protocol handler.
* CIPAddress: Encapsulates an IP address.
* CLinkLayer: Encapsulates the Ethernet MAC layer.
* CmDNSDaemon: mDNS responder task.
* CmDNSPublisher: mDNS / Bonjour client task.
* CMQTTClient: Client for the MQTT IoT protocol.
* CMQTTReceivePacket: MQTT helper class.
* CMQTTSendPacket: MQTT helper class.
* CNetBuffer: Generic frame/packet buffer for network protocol handling.
* CNetBufferQueue: FIFO queue for CNetBuffer objects.
* CNetConfig: Encapsulates the network configuration.
* CNetConnection: Virtual transport layer connection (UDP or TCP (not yet available)).
* CNetDeviceLayer: Encapsulates the network device support layer. Queues TX/RX frames before/after transmission.
* CNetQueue: Encapsulates a network packet queue.
* CNetSocket: Base class of networking sockets.
* CNetSubSystem: The main network subsystem class. Create an instance of it in the CKernel class.
* CNetTask: The main networking task running in the background. Processes the different network layers.
* CNetworkLayer: Encapsulates the IP network layer. Does not support packet fragmentation so far.
* CNTPClient: A NTP client which gets the current time from an Internet time server.
* CNTPDaemon: Background task which uses CNTPClient to update the system time every 15 minutes.
* CPHYTask: Background task which continuously updates the PHY of the used net device.
* CReassemblyQueue: Reassembly queue for the TCP receiver.
* CRetransmissionTimeoutCalculator: Calculates the TCP retransmission timeout according to RFC 6298.
* CRouteCache: Caches special routes, received via ICMP redirect requests.
* CSocket: Network application interface (socket) class.
* CSysLogDaemon: Syslog sender task according to RFC5424 and RFC5426 (UDP transport only).
* CTCPConnection: Encapsulates a TCP connection. Derived from CNetConnection.
* CTCPRejector: Rejects TCP segments which do not address an open connection. Derived from CNetConnection.
* CTFTPDaemon: TFTP server task.
* CTransportLayer: Encapsulates the TCP/UDP transport layer.
* CUDPConnection: Encapsulates a (virtual) UDP connection. Derived from CNetConnection.

Sound library

* CDMASoundBuffers: Concatenated DMA buffers to be used by sound device drivers.
* CHDMISoundBaseDevice: Low level access to the HDMI sound device (without VCHIQ).
* CI2SSoundBaseDevice: Low level access to the I2S sound device.
* CPCM512xSoundController: Sound controller for PCM512x.
* CPWMSoundDevice: Using the PWM device to playback sound samples in different formats.
* CPWMSoundBaseDevice: Low level access to the PWM device to generate sounds on the 3.5mm headphone jack.
* CSoundBaseDevice: Base class of sound devices, converts several sound formats.
* CSoundController: Optional controller of a sound device.
* CUSBSoundBaseDevice: High-level driver for USB audio streaming devices.
* CUSBSoundController: Sound controller for USB sound devices.
* CWM8960SoundController: Sound controller for WM8960.
