Unit Devices
Return to Unit Reference
Description
Ultibo Device interface unit
To be documented
Constants
 DEVICE_* | DEVICE_NAME_PREFIX = 'Device'; | Name prefix for Devices | 
 
 DEVICE_SIGNATURE_* | DEVICE_SIGNATURE = $AD03FE3C; | 
 DEVICE_BUS_* | NONE = 0; | |
| DEVICE_BUS_PCI = 1; | |
| DEVICE_BUS_USB = 2; | |
| DEVICE_BUS_ISA = 3; | |
| DEVICE_BUS_PS2 = 4; | |
| DEVICE_BUS_FIREWIRE = 5; | |
| DEVICE_BUS_SD = 6; | SD/SDHC/SDXC/SDIO etc | 
| DEVICE_BUS_MMC = 7; | MMC/eMMC etc | 
| DEVICE_BUS_ATA = 8; | |
| DEVICE_BUS_IDE = 9; | |
| DEVICE_BUS_SCSI = 10; | |
| DEVICE_BUS_ATAPI = 11; | |
| DEVICE_BUS_SATA = 12; | |
| DEVICE_BUS_SERIAL = 13; | |
| DEVICE_BUS_SPI = 14; | Serial Peripheral Interface device | 
| DEVICE_BUS_MMIO = 15; | Memory Mapped IO device (No Bus) | 
| DEVICE_BUS_PCIE = 16; | |
| DEVICE_BUS_I2C = 17; | I2C connected device | 
| DEVICE_BUS_MAX = 17; | |
 DEVICE_STATE_* | DEVICE_STATE_UNREGISTERED = 0; | |
| DEVICE_STATE_REGISTERED = 1; | |
| DEVICE_STATE_MAX = 1; | |
 
 DEVICE_ID_* | DEVICE_ID_ANY = $FFFFFFFF; | Any Device (Pass to DeviceFind to match all devices) | 
 DEVICE_CLASS_* | DEVICE_CLASS_NONE = 0; | No Device | 
| DEVICE_CLASS_USBHOST = 1; | A USB Host Controller (eg XHCI/EHCI/UHCI/OHCI or DWCOTG etc) (Implementing a standard USB host interface) | 
| DEVICE_CLASS_PCIHOST = 2; | A PCI Host Controller (eg AHCI etc) (Implementing a standard PCI host interface) | 
| DEVICE_CLASS_USB = 3; | A USB Device (eg Hub/Keyboard/Mouse/Mass Storage/Vendor Specific etc) (Implementing a standard USB device interface) | 
| DEVICE_CLASS_PCI = 4; | A PCI Device (eg Graphics/Controller etc) (Implementing a standard PCI device interface) | 
| DEVICE_CLASS_NETWORK = 5; | A Network Device (Implementing a standard Network device interface). May also be a USB or PCI device | 
| DEVICE_CLASS_STORAGE = 6; | A Storage Device (Implementing a standard Storage device interface). May also be a USB, PCI, MMC, SCSI or ATA device | 
| DEVICE_CLASS_BLOCK = DEVICE_CLASS_STORAGE; | |
| DEVICE_CLASS_FILESYSTEM = 7; | A FileSystem Device (eg FAT/NTFS/CDFS/EXTFS etc)(Implementing a standard FileSystem device interface) | 
| DEVICE_CLASS_PROTOCOL = 8; | A Protocol Device (eg TCP/UDP/IP/ICMP etc) (Implementing a standard Protocol device interface) | 
| DEVICE_CLASS_TRANSPORT = DEVICE_CLASS_PROTOCOL; | |
| DEVICE_CLASS_KEYBOARD = 9; | A Keyboard Device (Implementing a standard Keyboard device interface) | 
| DEVICE_CLASS_MOUSE = 10; | A Mouse Device (Implementing a standard Mouse device interface) | 
| DEVICE_CLASS_BLUETOOTH = 11; | A Bluetooth Device (Implementing a standard Bluetooth device interface) | 
| DEVICE_CLASS_SERIAL = 12; | A Serial Device (Implementing a standard Serial device interface) | 
| DEVICE_CLASS_AUDIO = 13; | An Audio Device (Implementing a standard Audio device interface) | 
| DEVICE_CLASS_VIDEO = 14; | A Video Device (Implementing a standard Video device interface) | 
| DEVICE_CLASS_SCSI = 15; | A SCSI Device (Implementing a standard SCSI device interface). May also be a PCI device | 
| DEVICE_CLASS_ATA = 16; | An ATA/ATAPI Device (Implementing a standard ATA/ATAPI device interface). May also be a PCI device | 
| DEVICE_CLASS_IDE = DEVICE_CLASS_ATA; | |
| DEVICE_CLASS_ATAPI = DEVICE_CLASS_ATA; | |
| DEVICE_CLASS_IMAGE = 17; | An Image Device (eg Camera) (Implementing a standard Image device interface) | 
| DEVICE_CLASS_PRINTER = 18; | A Printer Device (Implementing a standard Printer device interface) | 
| DEVICE_CLASS_COMMUNICATIONS = 19; | A Communications Device (Implementing a standard Communications device interface) | 
| DEVICE_CLASS_SMART_CARD = 20; | A Smart Card Device (Implementing a standard Smart Card device interface) | 
| DEVICE_CLASS_MONITOR = 21; | A Monitor Device (Implementing a standard Monitor device interface) | 
| DEVICE_CLASS_DISPLAY = 22; | A Display Device (eg Billboard) (Implementing a standard Display device interface) | 
| DEVICE_CLASS_AUDIOVIDEO = 23; | An Audio/Video Device (Implementing a standard Audio/Video device interface) | 
| DEVICE_CLASS_IRDA = 24; | An Infrared Device (Implementing a standard Infrared device interface) | 
| DEVICE_CLASS_SPI = 25; | An SPI Device (Implementing a standard SPI device interface) | 
| DEVICE_CLASS_I2C = 26; | An I2C Device (Implementing a standard I2C device interface) | 
| DEVICE_CLASS_UART = 27; | A UART Device (Implementing a standard UART device interface) | 
| DEVICE_CLASS_MMC = 28; | An MMC Device (Implementing a standard MMC device interface) | 
| DEVICE_CLASS_SD = 29; | An SD Device (Implementing a standard SD device interface) | 
| DEVICE_CLASS_SDHCI = 30; | An SD/MMC Host Controller (Implementing a standard SDHCI device interface) | 
| DEVICE_CLASS_SDHOST = DEVICE_CLASS_SDHCI; | |
| DEVICE_CLASS_DFU = 31; | A Device Firmware Update Device (Implementing a standard DFU device interface) | 
| DEVICE_CLASS_GPIO = 32; | A GPIO Device (Implementing a standard GPIO device interface) | 
| DEVICE_CLASS_MAILBOX = 33; | A Mailbox Device | 
| DEVICE_CLASS_OPENGL = 34; | An OpenGL Device | 
| DEVICE_CLASS_DVB = 35; | A Digital Video Broadcast (DVB) Device | 
| DEVICE_CLASS_DAB = 36; | A Digital Audio Broadcast (DAB) Device | 
| DEVICE_CLASS_DMA = 37; | A DMA Controller Device (Implementing a standard DMA controller interface) | 
| DEVICE_CLASS_SCSIHOST = 38; | A SCSI Host Device (Implementing a standard SCSI host interface) | 
| DEVICE_CLASS_ATAHOST = 39; | An ATA Host Device (Implementing a standard ATA host interface) | 
| DEVICE_CLASS_TIMER = 40; | A Timer or Counter Device | 
| DEVICE_CLASS_RANDOM = 41; | A Random Number Generator Device | 
| DEVICE_CLASS_FRAMEBUFFER = 42; | A Frame Buffer Device | 
| DEVICE_CLASS_WATCHDOG = 43; | A Watchdog Timer Device | 
| DEVICE_CLASS_CLOCK = 44; | A Clock (Date/Time) Device | 
| DEVICE_CLASS_CONSOLE = 45; | A Console Device | 
| DEVICE_CLASS_RTC = 46; | A Real Time Clock (Battery Backed) Device | 
| DEVICE_CLASS_USBHUB = 47; | A USB Hub (Implementing a standard USB hub interface) | 
| DEVICE_CLASS_LOGGING = 48; | A Logging Device (Implementing a standard Logging device interface) | 
| DEVICE_CLASS_PCM = 49; | A PCM Sound Device (Implementing a standard PCM device interface) | 
| DEVICE_CLASS_I2S = DEVICE_CLASS_PCM; | |
| DEVICE_CLASS_PWM = 50; | A Pulse Width Modulation (PWM) Device | 
| DEVICE_CLASS_1WIRE = 51; | A 1-Wire Device (Implementing a standard W1 device interface) | 
| DEVICE_CLASS_CLOCK_MANAGER = 52; | A Clock Manager Device | 
| DEVICE_CLASS_CODEC = 53; | A CODEC Device (eg Audio or Video) | 
| DEVICE_CLASS_TOUCH = 54; | A Touch Device | 
| DEVICE_CLASS_MAX = 54; | |
| DEVICE_CLASS_ANY = $FFFFFFFF; | Any Device (Pass to DeviceFind or DeviceEnumerate to match all devices) | 
 DEVICE_NOTIFICATION_* | DEVICE_NOTIFICATION_NONE = $00000000; | Pass to DeviceNotification to cancel an existing Notification | 
| DEVICE_NOTIFICATION_REGISTER = $00000001; | |
| DEVICE_NOTIFICATION_DEREGISTER = $00000002; | |
| DEVICE_NOTIFICATION_OPEN = $00000004; | |
| DEVICE_NOTIFICATION_CLOSE = $00000008; | |
| DEVICE_NOTIFICATION_UP = $00000010; | |
| DEVICE_NOTIFICATION_DOWN = $00000020; | |
| DEVICE_NOTIFICATION_INSERT = $00000040; | |
| DEVICE_NOTIFICATION_EJECT = $00000080; | |
| DEVICE_NOTIFICATION_ATTACH = $00000100; | |
| DEVICE_NOTIFICATION_DETACH = $00000200; | |
| DEVICE_NOTIFICATION_ENABLE = $00000400; | |
| DEVICE_NOTIFICATION_DISABLE = $00000800; | |
| DEVICE_NOTIFICATION_BIND = $00001000; | |
| DEVICE_NOTIFICATION_UNBIND = $00002000; | |
| DEVICE_NOTIFICATION_ATTACHING = $00004000; | |
| DEVICE_NOTIFICATION_DETACHING = $00008000; | |
| DEVICE_NOTIFICATION_INSERTING = $00010000; | |
| DEVICE_NOTIFICATION_EJECTING = $00020000; | |
| DEVICE_NOTIFICATION_OPENING = $00040000; | |
| DEVICE_NOTIFICATION_CLOSING = $00080000; | |
| DEVICE_NOTIFICATION_RESIZE = $00100000; | |
| DEVICE_NOTIFICATION_RESIZING = $00200000; | 
 NOTIFIER_SIGNATURE_* | NOTIFIER_SIGNATURE = $6FA1BEC9; | 
 
 NOTIFIER_STATE_* | NOTIFIER_STATE_UNREGISTERED = 0; | |
| NOTIFIER_STATE_REGISTERED = 1; | 
 
 NOTIFIER_FLAG_* | NOTIFIER_FLAG_NONE = $00000000; | |
| NOTIFIER_FLAG_WORKER = $00000001; | If set, notification callback event will be scheduled on a worker thread | 
 
 DEVICE_LOG_* | DEVICE_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG; | Device debugging messages | 
| DEVICE_LOG_LEVEL_INFO = LOG_LEVEL_INFO; | Device informational messages, such as a device being attached or detached | 
| DEVICE_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR; | Device error messages | 
| DEVICE_LOG_LEVEL_NONE = LOG_LEVEL_NONE; | No Device messages | 
 
 DRIVER_* | DRIVER_NAME_PREFIX = 'Driver'; | Name prefix for Drivers | 
 DRIVER_SIGNATURE_* | DRIVER_SIGNATURE = $1EB4980A; | 
 
 DRIVER_STATE_* | DRIVER_STATE_UNREGISTERED = 0; | |
| DRIVER_STATE_REGISTERED = 1; | |
| DRIVER_STATE_MAX = 1; | |
 
 DRIVER_ID_* | DRIVER_ID_ANY = $FFFFFFFF; | Any Driver (Pass to DriverFind to match all drivers) | 
  
 DRIVER_CLASS_* | DRIVER_CLASS_NONE = 0; | No Driver | 
| DRIVER_CLASS_USB = 1; | A USB Driver (Implementing a standard USB driver interface) | 
| DRIVER_CLASS_PCI = 2; | A PCI Driver (Implementing a standard PCI driver interface) | 
| DRIVER_CLASS_SDIO = 3; | An SDIO Driver (Implementing a standard SDIO driver interface) | 
| DRIVER_CLASS_BLUETOOTH = 4; | A Bluetooth Driver (Implementing a standard Bluetooth driver interface) | 
| DRIVER_CLASS_MAX = 4; | |
| DRIVER_CLASS_ANY = $FFFFFFFF; | Any Driver (Pass to DriverFind or DriverEnumerate to match all drivers) | 
 HOST_* | HOST_NAME_PREFIX = 'Host'; | Name prefix for Hosts | 
 
 HOST_SIGNATURE_* | HOST_SIGNATURE = $F45D30FE; | 
 
 HOST_STATE_* | HOST_STATE_UNREGISTERED = 0; | |
| HOST_STATE_REGISTERED = 1; | 
 
 HOST_ID_* | HOST_ID_ANY = $FFFFFFFF; | Any Host (Pass to HostFind to match all hosts) | 
 
 HOST_CLASS_* | HOST_CLASS_NONE = 0; | No Host} | 
| HOST_CLASS_USB = 1; | A USB Host (eg XHCI/EHCI/UHCI/OHCI or DWCOTG etc) (Implementing a standard USB host interface) | 
| HOST_CLASS_PCI = 2; | A PCI Host (eg AHCI etc) (Implementing a standard PCI host interface) | 
| HOST_CLASS_SD = 3; | An SD Host (eg MMC/SDIO etc) (Implementing a standard SD host interface) | 
| HOST_CLASS_BLUETOOTH = 4; | A Bluetooth Host (Implementing a standard Bluetooth host interface) | 
| HOST_CLASS_MAX = 4; | |
| HOST_CLASS_ANY = $FFFFFFFF; | Any Host (Pass to HostFind or HostEnumerate to match all hosts) | 
 
 CLOCK_* | CLOCK_NAME_PREFIX = 'Clock'; | Name prefix for Clock Devices | 
 
 CLOCK_TYPE_* | CLOCK_TYPE_NONE = 0; | |
| CLOCK_TYPE_HARDWARE = 1; | 
 
 CLOCK_STATE_* | CLOCK_STATE_DISABLED = 0; | |
| CLOCK_STATE_ENABLED = 1; | 
 
 CLOCK_FLAG_* | CLOCK_FLAG_NONE = $00000000; | |
| CLOCK_FLAG_WRITABLE = $00000001; | Device supports writing the clock value | 
| CLOCK_FLAG_VARIABLE = $00000002; | Device supports setting the clock rate | 
 
 TIMER_* | TIMER_NAME_PREFIX = 'Timer'; | Name prefix for Timer Devices | 
 
 TIMER_TYPE_* | TIMER_TYPE_NONE = 0; | |
| TIMER_TYPE_HARDWARE = 1; | 
 
 TIMER_STATE_* | TIMER_STATE_DISABLED = 0; | |
| TIMER_STATE_ENABLED = 1; | 
 
 TIMER_FLAG_* | TIMER_FLAG_NONE = $00000000; | |
| TIMER_FLAG_WRAPPING = $00000001; | Device provides a wrapping or self reloading counter | 
| TIMER_FLAG_COUNTER = $00000002; | Device will appear as a continuously incrementing counter when read | 
| TIMER_FLAG_DOWN = $00000004; | Device counts down from the starting value to zero (And optionally triggers an event) | 
 
 TIMER_EVENT_FLAG_* | TIMER_EVENT_FLAG_NONE = $00000000; | |
| TIMER_EVENT_FLAG_REPEAT = $00000001; | Event will be repeated until cancelled | 
| TIMER_EVENT_FLAG_INTERRUPT = $00000002; | Event will be dispatched by interrupt handler (If applicable). Caution: Events called by the interrupt handler must obey interrupt rules with regard to locks, memory allocation and latency. | 
 RANDOM_* | RANDOM_NAME_PREFIX = 'Random'; | Name prefix for Random Devices | 
 RANDOM_TYPE_* | RANDOM_TYPE_NONE = 0; | |
| RANDOM_TYPE_HARDWARE = 1; | |
| RANDOM_TYPE_SOFTWARE = 2; | 
 
 RANDOM_STATE_* | RANDOM_STATE_DISABLED = 0; | |
| RANDOM_STATE_ENABLED = 1; | 
 RANDOM_FLAG_* | RANDOM_FLAG_NONE = $00000000; | 
 
 MAILBOX_* | MAILBOX_NAME_PREFIX = 'Mailbox'; | Name prefix for Mailbox Devices | 
 
 MAILBOX_TYPE_* | MAILBOX_TYPE_NONE = 0; | |
| MAILBOX_TYPE_GPU = 1; | |
| MAILBOX_TYPE_LOCAL = 2; | 
 
 MAILBOX_STATE_* | MAILBOX_STATE_DISABLED = 0; | |
| MAILBOX_STATE_ENABLED = 1; | 
 
 MAILBOX_FLAG_* | MAILBOX_FLAG_NONE = $00000000; | 
 
 WATCHDOG_* | WATCHDOG_NAME_PREFIX = 'Watchdog'; | Name prefix for Watchdog Devices | 
 
 WATCHDOG_TYPE_* | WATCHDOG_TYPE_NONE = 0; | |
| WATCHDOG_TYPE_HARDWARE = 1; | 
 
 WATCHDOG_STATE_* | WATCHDOG_STATE_DISABLED = 0; | |
| WATCHDOG_STATE_ENABLED = 1; | 
 WATCHDOG_FLAG_* | WATCHDOG_FLAG_NONE = $00000000; | 
   
Type definitions
To be documented
Public variables
Device logging
| DEVICE_DEFAULT_LOG_LEVEL:LongWord = DEVICE_LOG_LEVEL_DEBUG; | Minimum level for Device messages. Only messages with level greater than or equal to this will be printed. | 
| DEVICE_LOG_ENABLED:Boolean; | 
 
Function declarations
Initialization functions
procedure DevicesInit;
| Note | Called only during system startup | 
|---|
Device functions
function DeviceCreate:PDevice;
| Return | Pointer to new Device entry or nil if device could not be created | 
|---|
function DeviceCreateEx(Size:LongWord):PDevice;
| Size | Size in bytes to allocate for new device (Including the device entry) | 
|---|---|
| Return | Pointer to new Device entry or nil if device could not be created | 
function DeviceDestroy(Device:PDevice):LongWord;
| Device | The device to destroy | 
|---|---|
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function DeviceGetName(Device:PDevice):String;
| Device | The device to get the name from | 
|---|---|
| Return | The name of the device or a blank string on error | 
function DeviceSetName(Device:PDevice; const Name:String):LongWord;
| Device | The device to set the name for | 
|---|---|
| Name | The device name to set | 
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function DeviceGetDescription(Device:PDevice):String;
| Device | The device to get the description from | 
|---|---|
| Return | The description of the device or a blank string on error | 
function DeviceSetDescription(Device:PDevice; const Description:String):LongWord;
| Device | The device to set the description for | 
|---|---|
| Description | The device description to set | 
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function DeviceRegister(Device:PDevice):LongWord;
| Device | The device to register | 
|---|---|
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function DeviceDeregister(Device:PDevice):LongWord;
| Device | The device to deregister | 
|---|---|
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function DeviceFind(DeviceClass,DeviceId:LongWord):PDevice;
| DeviceClass | The class of the device to find (DEVICE_CLASS_ANY for all classes) | 
|---|---|
| DeviceId | The ID number of the device to find | 
| Return | Pointer to device entry or nil if not found | 
function DeviceFindByName(const Name:String):PDevice;
| Name | The name of the device to find (eg Timer0) | 
|---|---|
| Return | Pointer to device entry or nil if not found | 
function DeviceFindByDescription(const Description:String):PDevice;
| Description | The description of the device to find (eg BCM2836 ARM Timer) | 
|---|---|
| Return | Pointer to device entry or nil if not found | 
function DeviceEnumerate(DeviceClass:LongWord; Callback:TDeviceEnumerate; Data:Pointer):LongWord;
| DeviceClass | The class of device to enumerate (DEVICE_CLASS_ANY for all classes) | 
|---|---|
| Callback | The callback function to call for each device in the table | 
| Data | A private data pointer to pass to callback for each device in the table | 
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function DeviceNotification(Device:PDevice; DeviceClass:LongWord; Callback:TDeviceNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
| Device | The device to notify changes for (Optional, pass nil for all devices) | 
|---|---|
| DeviceClass | The class of device to notify changes for (DEVICE_CLASS_ANY for all classes) | 
| Callback | The function to call when a notification event occurs | 
| Data | A private data pointer to pass to callback when a notification event occurs | 
| Notification | The events to register for notification of (eg DEVICE_NOTIFICATION_REGISTER) | 
| Flags | The flags to control the notification (eg NOTIFIER_FLAG_WORKER) | 
function NotifierAllocate(Device:PDevice; DeviceClass:LongWord; Callback:TDeviceNotification; Data:Pointer; Notification,Flags:LongWord):PNotifier;
| Note | None documented | 
|---|
function NotifierRelease(Notifier:PNotifier):LongWord;
| Note | None documented | 
|---|
function NotifierFind(Device:PDevice; DeviceClass:LongWord; Callback:TDeviceNotification; Data:Pointer):PNotifier;
| Note | None documented | 
|---|
function NotifierNotify(Device:PDevice; Notification:LongWord):LongWord;
| Note | None documented | 
|---|
Driver functions
function DriverCreate:PDriver;
| Return | Pointer to new Driver entry or nil if driver could not be created | 
|---|
function DriverCreateEx(Size:LongWord):PDriver;
| Size | Size in bytes to allocate for new driver (Including the driver entry) | 
|---|---|
| Return | Pointer to new Driver entry or nil if driver could not be created | 
function DriverDestroy(Driver:PDriver):LongWord;
| Driver | The driver to destroy | 
|---|---|
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function DriverGetName(Driver:PDriver):String;
| Driver | The driver to get the name from | 
|---|---|
| Return | The name of the driver or a blank string on error | 
function DriverSetName(Driver:PDriver; const Name:String):LongWord;
| Driver | The driver to set the name for | 
|---|---|
| Name | The driver name to set | 
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function DriverRegister(Driver:PDriver):LongWord;
| Driver | The driver to register | 
|---|---|
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function DriverDeregister(Driver:PDriver):LongWord;
| Driver | The driver to deregister | 
|---|---|
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function DriverFind(DriverClass,DriverId:LongWord):PDriver;
| DriverClass | The class of the driver to find (DRIVER_CLASS_ANY for all classes) | 
|---|---|
| DriverId | The ID number of the driver to find | 
| Return | Pointer to driver entry or nil if not found | 
function DriverFindByName(const Name:String):PDriver;
| Name | The name of the driver to find (eg USB Hub Driver) | 
|---|---|
| Return | Pointer to driver entry or nil if not found | 
function DriverEnumerate(DriverClass:LongWord; Callback:TDriverEnumerate; Data:Pointer):LongWord;
| DriverClass | The class of driver to enumerate (DRIVER_CLASS_ANY for all classes) | 
|---|---|
| Callback | The callback function to call for each driver in the table | 
| Data | A private data pointer to pass to callback for each driver in the table | 
| Return | ERROR_SUCCESS if completed or another error code on failure | 
Clock device functions
function ClockDeviceStart(Clock:PClockDevice):LongWord;
| Clock | The Clock device to start | 
|---|---|
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function ClockDeviceStop(Clock:PClockDevice):LongWord;
| Clock | The Clock device to stop | 
|---|---|
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function ClockDeviceRead(Clock:PClockDevice):LongWord;
| Clock | The Clock device to read from | 
|---|---|
| Return | The 32 bit counter value of the clock or 0 on failure | 
function ClockDeviceRead64(Clock:PClockDevice):Int64;
| Clock | The Clock device to read from | 
|---|---|
| Return | The 64 bit counter value of the clock or 0 on failure | 
function ClockDeviceWrite64(Clock:PClockDevice; const Value:Int64):LongWord;
| Clock | The Clock device to write to | 
|---|---|
| Value | The counter value to write | 
| Return | ERROR_SUCCESS if the counter was set or another error code on failure | 
| Note | Not all clock devices support setting the counter value, will return an error if unsupported. | 
function ClockDeviceGetRate(Clock:PClockDevice):LongWord;
| Clock | The Clock device to get the rate from | 
|---|---|
| Return | The current clock rate in Hz or 0 on failure | 
function ClockDeviceSetRate(Clock:PClockDevice; Rate:LongWord):LongWord;
| Clock | The Clock device to set the rate for | 
|---|---|
| Rate | The clock rate in Hz to set | 
| Return | ERROR_SUCCESS if the clock rate was set or another error code on failure | 
| Note | Not all clock devices support setting the clock rate, will return an error if unsupported. | 
function ClockDeviceProperties(Clock:PClockDevice; Properties:PClockProperties):LongWord;
| Clock | The Clock device to get properties from | 
|---|---|
| Properties | Pointer to a TClockProperties structure to fill in | 
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function ClockDeviceCreate:PClockDevice;
| Return | Pointer to new Clock entry or nil if Clock could not be created | 
|---|
function ClockDeviceCreateEx(Size:LongWord):PClockDevice;
| Size | Size in bytes to allocate for new Clock (Including the Clock entry) | 
|---|---|
| Return | Pointer to new Clock entry or nil if Clock could not be created | 
function ClockDeviceDestroy(Clock:PClockDevice):LongWord;
| Clock | The clock device to destroy | 
|---|---|
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function ClockDeviceRegister(Clock:PClockDevice):LongWord;
| Clock | The clock device to register | 
|---|---|
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function ClockDeviceDeregister(Clock:PClockDevice):LongWord;
| Clock | The clock device to deregister | 
|---|---|
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function ClockDeviceFind(ClockId:LongWord):PClockDevice;
| TimerId | The ID number of the clock to find | 
|---|---|
| Return | Pointer to clock device entry or nil if not found | 
function ClockDeviceFindByName(const Name:String):PClockDevice; inline;
| Name | The name of the clock to find (eg Clock0) | 
|---|---|
| Return | Pointer to clock device entry or nil if not found | 
function ClockDeviceFindByDescription(const Description:String):PClockDevice; inline;
| Description | The description of the clock to find (eg BCM2836 ARM Timer Clock) | 
|---|---|
| Return | Pointer to clock device entry or nil if not found | 
function ClockDeviceEnumerate(Callback:TClockEnumerate; Data:Pointer):LongWord;
| Callback | The callback function to call for each clock in the table | 
|---|---|
| Data | A private data pointer to pass to callback for each clock in the table | 
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function ClockDeviceNotification(Clock:PClockDevice; Callback:TClockNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
| Clock | The clock device to notify changes for (Optional, pass nil for all clocks) | 
|---|---|
| Callback | The function to call when a notification event occurs | 
| Data | A private data pointer to pass to callback when a notification event occurs | 
| Notification | The events to register for notification of (eg DEVICE_NOTIFICATION_REGISTER) | 
| Flags | The flags to control the notification (eg NOTIFIER_FLAG_WORKER) | 
Timer device functions
function TimerDeviceStart(Timer:PTimerDevice):LongWord;
| Timer | The Timer device to start | 
|---|---|
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function TimerDeviceStop(Timer:PTimerDevice):LongWord;
| Timer | The Timer device to stop | 
|---|---|
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function TimerDeviceRead(Timer:PTimerDevice):LongWord;
| Timer | The Timer device to read from | 
|---|---|
| Return | The 32 bit current value of the timer or 0 on failure | 
function TimerDeviceRead64(Timer:PTimerDevice):Int64;
| Timer | The Timer device to read from | 
|---|---|
| Return | The 64 bit current value of the timer or 0 on failure | 
function TimerDeviceWait(Timer:PTimerDevice):LongWord;
| Timer | The Timer device to wait for | 
|---|---|
| Return | ERROR_SUCCESS if the interval expired or another error code on failure | 
function TimerDeviceEvent(Timer:PTimerDevice; Flags:LongWord; Callback:TTimerCallback; Data:Pointer):LongWord;
| Timer | The Timer device to schedule the callback for | 
|---|---|
| Callback | The function to be called when the interval expires | 
| Data | A pointer to be pass to the function when the interval expires (Optional) | 
| Return | ERROR_SUCCESS if the callback was scheduled successfully or another error code on failure | 
function TimerDeviceCancel(Timer:PTimerDevice):LongWord;
| Timer | The Timer device to cancel the callback for | 
|---|---|
| Return | ERROR_SUCCESS if the callback was cancelled successfully or another error code on failure | 
function TimerDeviceGetRate(Timer:PTimerDevice):LongWord;
| Timer | The Timer device to get the rate from | 
|---|---|
| Return | The current clock rate in Hz or 0 on failure | 
function TimerDeviceSetRate(Timer:PTimerDevice; Rate:LongWord):LongWord;
| Timer | The Timer device to set the rate for | 
|---|---|
| Rate | The clock rate in Hz to set | 
| Return | ERROR_SUCCESS if the clock rate was set or another error code on failure | 
function TimerDeviceGetInterval(Timer:PTimerDevice):LongWord;
| Timer | The Timer device to get the interval from | 
|---|---|
| Return | The current interval in ticks or 0 on failure (or not set) | 
| Note | The tick rate is determined by the clock rate | 
function TimerDeviceSetInterval(Timer:PTimerDevice; Interval:LongWord):LongWord;
| Timer | The Timer device to set the interval for | 
|---|---|
| Interval | The interval in ticks to set | 
| Return | ERROR_SUCCESS if the interval was set or another error code on failure | 
| Note | The tick rate is determined by the clock rate | 
function TimerDeviceProperties(Timer:PTimerDevice; Properties:PTimerProperties):LongWord;
| Timer | The Timer device to get properties from | 
|---|---|
| Properties | Pointer to a TTimerProperties structure to fill in | 
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function TimerDeviceCreate:PTimerDevice;
| Return | Pointer to new Timer entry or nil if Timer could not be created | 
|---|
function TimerDeviceCreateEx(Size:LongWord):PTimerDevice;
| Size | Size in bytes to allocate for new Timer (Including the Timer entry) | 
|---|---|
| Return | Pointer to new Timer entry or nil if Timer could not be created | 
function TimerDeviceDestroy(Timer:PTimerDevice):LongWord;
| Timer | The timer device to destroy | 
|---|---|
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function TimerDeviceRegister(Timer:PTimerDevice):LongWord;
| Timer | The timer device to register | 
|---|---|
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function TimerDeviceDeregister(Timer:PTimerDevice):LongWord;
| Timer | The timer device to deregister | 
|---|---|
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function TimerDeviceFind(TimerId:LongWord):PTimerDevice;
| TimerId | The ID number of the timer to find | 
|---|---|
| Return | Pointer to timer device entry or nil if not found | 
function TimerDeviceFindByName(const Name:String):PTimerDevice; inline;
| Name | The name of the timer to find (eg Timer0) | 
|---|---|
| Return | Pointer to timer device entry or nil if not found | 
function TimerDeviceFindByDescription(const Description:String):PTimerDevice; inline;
| Description | The description of the timer to find (eg BCM2836 ARM Timer) | 
|---|---|
| Return | Pointer to timer device entry or nil if not found | 
function TimerDeviceEnumerate(Callback:TTimerEnumerate; Data:Pointer):LongWord;
| Callback | The callback function to call for each timer in the table | 
|---|---|
| Data | A private data pointer to pass to callback for each timer in the table | 
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function TimerDeviceNotification(Timer:PTimerDevice; Callback:TTimerNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
| Timer | The timer device to notify changes for (Optional, pass nil for all timers) | 
|---|---|
| Callback | The function to call when a notification event occurs | 
| Data | A private data pointer to pass to callback when a notification event occurs | 
| Notification | The events to register for notification of (eg DEVICE_NOTIFICATION_REGISTER) | 
| Flags | The flags to control the notification (eg NOTIFIER_FLAG_WORKER) | 
Random device functions
function RandomDeviceStart(Random:PRandomDevice):LongWord;
| Note | None documented | 
|---|
function RandomDeviceStop(Random:PRandomDevice):LongWord;
| Note | None documented | 
|---|
function RandomDeviceSeed(Random:PRandomDevice; Seed:LongWord):LongWord;
| Note | None documented | 
|---|
function RandomDeviceReadByte(Random:PRandomDevice):Byte;
| Note | None documented | 
|---|
function RandomDeviceReadWord(Random:PRandomDevice):Word;
| Note | None documented | 
|---|
function RandomDeviceReadLongWord(Random:PRandomDevice):LongWord;
| Note | None documented | 
|---|
function RandomDeviceReadQuadWord(Random:PRandomDevice):Int64;
| Note | None documented | 
|---|
function RandomDeviceReadExtended(Random:PRandomDevice):Extended;
| Note | None documented | 
|---|
function RandomDeviceCreate:PRandomDevice;
| Return | Pointer to new Random entry or nil if Random could not be created | 
|---|
function RandomDeviceCreateEx(Size:LongWord):PRandomDevice;
| Size | Size in bytes to allocate for new Random (Including the Random entry) | 
|---|---|
| Return | Pointer to new Random entry or nil if Random could not be created | 
function RandomDeviceDestroy(Random:PRandomDevice):LongWord;
| Note | None documented | 
|---|
function RandomDeviceRegister(Random:PRandomDevice):LongWord;
| Note | None documented | 
|---|
function RandomDeviceDeregister(Random:PRandomDevice):LongWord;
| Note | None documented | 
|---|
function RandomDeviceFind(RandomId:LongWord):PRandomDevice;
| Note | None documented | 
|---|
function RandomDeviceFindByName(const Name:String):PRandomDevice; inline;
| Note | None documented | 
|---|
function RandomDeviceFindByDescription(const Description:String):PRandomDevice; inline;
| Note | None documented | 
|---|
function RandomDeviceEnumerate(Callback:TRandomEnumerate; Data:Pointer):LongWord;
| Note | None documented | 
|---|
function RandomDeviceNotification(Random:PRandomDevice; Callback:TRandomNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
| Note | None documented | 
|---|
Mailbox device functions
function MailboxDeviceStart(Mailbox:PMailboxDevice):LongWord;
| Note | None documented | 
|---|
function MailboxDeviceStop(Mailbox:PMailboxDevice):LongWord;
| Note | None documented | 
|---|
function MailboxDeviceReceive(Mailbox:PMailboxDevice; Channel:LongWord):LongWord;
| Note | None documented | 
|---|
function MailboxDeviceSend(Mailbox:PMailboxDevice; Channel,Data:LongWord):LongWord;
| Note | None documented | 
|---|
function MailboxDeviceCall(Mailbox:PMailboxDevice; Channel,Data:LongWord; var Response:LongWord):LongWord;
| Note | None documented | 
|---|
function MailboxDeviceGetTimeout(Mailbox:PMailboxDevice):LongWord;
| Note | None documented | 
|---|
function MailboxDeviceSetTimeout(Mailbox:PMailboxDevice; Timeout:LongWord):LongWord;
| Note | None documented | 
|---|
function MailboxDeviceCreate:PMailboxDevice;
| Return | Pointer to new Mailbox entry or nil if Mailbox could not be created | 
|---|
function MailboxDeviceCreateEx(Size:LongWord):PMailboxDevice;
| Size | Size in bytes to allocate for new Mailbox (Including the Mailbox entry) | 
|---|---|
| Return | Pointer to new Mailbox entry or nil if Mailbox could not be created | 
function MailboxDeviceDestroy(Mailbox:PMailboxDevice):LongWord;
| Note | None documented | 
|---|
function MailboxDeviceRegister(Mailbox:PMailboxDevice):LongWord;
| Note | None documented | 
|---|
function MailboxDeviceDeregister(Mailbox:PMailboxDevice):LongWord;
| Note | None documented | 
|---|
function MailboxDeviceFind(MailboxId:LongWord):PMailboxDevice;
| Note | None documented | 
|---|
function MailboxDeviceFindByName(const Name:String):PMailboxDevice; inline;
| Note | None documented | 
|---|
function MailboxDeviceFindByDescription(const Description:String):PMailboxDevice; inline;
| Note | None documented | 
|---|
function MailboxDeviceEnumerate(Callback:TMailboxEnumerate; Data:Pointer):LongWord;
| Note | None documented | 
|---|
function MailboxDeviceNotification(Mailbox:PMailboxDevice; Callback:TMailboxNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
| Note | None documented | 
|---|
Watchdog device functions
function WatchdogDeviceStart(Watchdog:PWatchdogDevice):LongWord;
| Note | None documented | 
|---|
function WatchdogDeviceStop(Watchdog:PWatchdogDevice):LongWord;
| Note | None documented | 
|---|
function WatchdogDeviceRefresh(Watchdog:PWatchdogDevice):LongWord;
| Note | None documented | 
|---|
function WatchdogDeviceGetRemain(Watchdog:PWatchdogDevice):LongWord;
| Note | None documented | 
|---|
function WatchdogDeviceGetTimeout(Watchdog:PWatchdogDevice):LongWord;
| Note | None documented | 
|---|
function WatchdogDeviceSetTimeout(Watchdog:PWatchdogDevice; Timeout:LongWord):LongWord;
| Note | None documented | 
|---|
function WatchdogDeviceCreate:PWatchdogDevice;
| Return | Pointer to new Watchdog entry or nil if Watchdog could not be created | 
|---|
function WatchdogDeviceCreateEx(Size:LongWord):PWatchdogDevice;
| Size | Size in bytes to allocate for new Watchdog (Including the Watchdog entry) | 
|---|---|
| Return | Pointer to new Watchdog entry or nil if Watchdog could not be created | 
function WatchdogDeviceDestroy(Watchdog:PWatchdogDevice):LongWord;
| Note | None documented | 
|---|
function WatchdogDeviceRegister(Watchdog:PWatchdogDevice):LongWord;
| Note | None documented | 
|---|
function WatchdogDeviceDeregister(Watchdog:PWatchdogDevice):LongWord;
| Note | None documented | 
|---|
function WatchdogDeviceFind(WatchdogId:LongWord):PWatchdogDevice;
| Note | None documented | 
|---|
function WatchdogDeviceFindByName(const Name:String):PWatchdogDevice; inline;
| Note | None documented | 
|---|
function WatchdogDeviceFindByDescription(const Description:String):PWatchdogDevice; inline;
| Note | None documented | 
|---|
function WatchdogDeviceEnumerate(Callback:TWatchdogEnumerate; Data:Pointer):LongWord;
| Note | None documented | 
|---|
function WatchdogDeviceNotification(Watchdog:PWatchdogDevice; Callback:TWatchdogNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
| Note | None documented | 
|---|
RTL clock functions
function SysClockRead:LongWord;
| Note | None documented | 
|---|
function SysClockRead64:Int64;
| Note | None documented | 
|---|
RTL timer (counter) functions
function SysTimerAvailable:Boolean;
| Note | None documented | 
|---|
function SysTimerRead:LongWord;
| Return | The 32 bit current value of the counter or 0 on failure | 
|---|
function SysTimerRead64:Int64;
| Return | The 64 bit current value of the counter or 0 on failure | 
|---|
function SysTimerWait:LongWord;
| Return | ERROR_SUCCESS if the interval expired or another error code on failure | 
|---|
function SysTimerEvent(Callback:TTimerCallback; Data:Pointer):LongWord;
| Callback | The function to be called when the interval expires | 
|---|---|
| Data | A pointer to be pass to the function when the interval expires (Optional) | 
| Return | ERROR_SUCCESS if the callback was scheduled successfully or another error code on failure | 
function SysTimerCancel:LongWord;
| Return | ERROR_SUCCESS if the callback was cancelled successfully or another error code on failure | 
|---|
function SysTimerGetRate:LongWord;
| Return | The current clock rate in Hz or 0 on failure | 
|---|
function SysTimerSetRate(Rate:LongWord):LongWord;
| Rate | The clock rate in Hz to set | 
|---|---|
| Return | ERROR_SUCCESS if the clock rate was set or another error code on failure | 
function SysTimerGetInterval:LongWord;
| Return | The current interval in ticks or 0 on failure (or not set) | 
|---|---|
| Note | The tick rate is determined by the clock rate | 
function SysTimerSetInterval(Interval:LongWord):LongWord;
| Interval | The interval in ticks to set | 
|---|---|
| Return | ERROR_SUCCESS if the interval was set or another error code on failure | 
| Note | The tick rate is determined by the clock rate | 
RTL random functions
function SysRandomAvailable:Boolean;
| Note | None documented | 
|---|
procedure SysRandomize;
| Note | None documented | 
|---|
procedure SysRandomSeed(Seed:LongWord);
| Note | None documented | 
|---|
function SysRandomReadLongInt(Limit:LongInt):LongInt;
| Note | None documented | 
|---|
function SysRandomReadInt64(Limit:Int64):Int64;
| Note | None documented | 
|---|
function SysRandomReadExtended:Extended;
| Note | None documented | 
|---|
RTL watchdog functions
function SysWatchdogAvailable:Boolean;
| Note | None documented | 
|---|
function SysWatchdogStart(Milliseconds:LongWord):LongWord;
| Note | None documented | 
|---|
function SysWatchdogStop:LongWord;
| Note | None documented | 
|---|
function SysWatchdogRefresh(Milliseconds:LongWord):LongWord;
| Note | None documented | 
|---|
Device helper functions
function DeviceGetCount:LongWord; inline;
| Note | None documented | 
|---|
function DeviceCheck(Device:PDevice):PDevice;
| Note | None documented | 
|---|
function NotifierGetCount:LongWord; inline;
| Note | None documented | 
|---|
function NotifierCheck(Notifier:PNotifier):PNotifier;
| Note | None documented | 
|---|
function DeviceBusToString(DeviceBus:LongWord):String;
| Note | None documented | 
|---|
function DeviceStateToString(DeviceState:LongWord):String;
| Note | None documented | 
|---|
function DeviceClassToString(DeviceClass:LongWord):String;
| Note | None documented | 
|---|
function NotificationToString(Notification:LongWord):String;
| Note | None documented | 
|---|
procedure DeviceLog(Level:LongWord; Device:PDevice; const AText:String);
| Note | None documented | 
|---|
procedure DeviceLogInfo(Device:PDevice; const AText:String);
| Note | None documented | 
|---|
procedure DeviceLogError(Device:PDevice; const AText:String);
| Note | None documented | 
|---|
procedure DeviceLogDebug(Device:PDevice; const AText:String);
| Note | None documented | 
|---|
Driver helper functions
function DriverGetCount:LongWord; inline;
| Note | None documented | 
|---|
function DriverCheck(Driver:PDriver):PDriver;
| Note | None documented | 
|---|
function DriverStateToString(DriverState:LongWord):String;
| Note | None documented | 
|---|
function DriverClassToString(DriverClass:LongWord):String;
| Note | None documented | 
|---|
Clock device helper functions
function ClockDeviceGetCount:LongWord; inline;
| Note | None documented | 
|---|
function ClockDeviceGetDefault:PClockDevice; inline;
| Note | None documented | 
|---|
function ClockDeviceSetDefault(Clock:PClockDevice):LongWord;
| Note | None documented | 
|---|
function ClockDeviceCheck(Clock:PClockDevice):PClockDevice;
| Note | None documented | 
|---|
Timer device helper functions
function TimerDeviceGetCount:LongWord; inline;
| Note | None documented | 
|---|
function TimerDeviceGetDefault:PTimerDevice; inline;
| Note | None documented | 
|---|
function TimerDeviceSetDefault(Timer:PTimerDevice):LongWord;
| Note | None documented | 
|---|
function TimerDeviceCheck(Timer:PTimerDevice):PTimerDevice;
| Note | None documented | 
|---|
function TimerDeviceCreateWaiter(Timer:PTimerDevice; Callback:TTimerCallback; Data:Pointer):PTimerWaiter;
| Note | Waiter must be registered by calling TimerDeviceRegisterWaiter. Caller must hold the Timer device lock. | 
|---|
function TimerDeviceDestroyWaiter(Timer:PTimerDevice; Waiter:PTimerWaiter):LongWord;
| Note | Waiter must be deregistered first by calling TimerDeviceDeregisterWaiter. Caller must hold the Timer device lock. | 
|---|
function TimerDeviceRegisterWaiter(Timer:PTimerDevice; Waiter:PTimerWaiter):LongWord;
| Note | Waiter must be created by calling TimerDeviceCreateWaiter. Caller must hold the Timer device lock. | 
|---|
function TimerDeviceDeregisterWaiter(Timer:PTimerDevice; Waiter:PTimerWaiter):LongWord;
| Note | Waiter must be destroyed by calling TimerDeviceDestroyWaiter. Caller must hold the Timer device lock. | 
|---|
Random device helper functions
function RandomDeviceGetCount:LongWord; inline;
| Note | None documented | 
|---|
function RandomDeviceGetDefault:PRandomDevice; inline;
| Note | None documented | 
|---|
function RandomDeviceSetDefault(Random:PRandomDevice):LongWord;
| Note | None documented | 
|---|
function RandomDeviceCheck(Random:PRandomDevice):PRandomDevice;
| Note | None documented | 
|---|
Mailbox device helper functions
function MailboxDeviceGetCount:LongWord; inline;
| Note | None documented | 
|---|
function MailboxDeviceGetDefault:PMailboxDevice; inline;
| Note | None documented | 
|---|
function MailboxDeviceSetDefault(Mailbox:PMailboxDevice):LongWord;
| Note | None documented | 
|---|
function MailboxDeviceCheck(Mailbox:PMailboxDevice):PMailboxDevice;
| Note | None documented | 
|---|
Watchdog device helper functions
function WatchdogDeviceGetCount:LongWord; inline;
| Note | None documented | 
|---|
function WatchdogDeviceGetDefault:PWatchdogDevice; inline;
| Note | None documented | 
|---|
function WatchdogDeviceSetDefault(Watchdog:PWatchdogDevice):LongWord;
| Note | None documented | 
|---|
function WatchdogDeviceCheck(Watchdog:PWatchdogDevice):PWatchdogDevice;
| Note | None documented | 
|---|
Return to Unit Reference

