Unit Devices

From Ultibo.org
Revision as of 01:00, 25 November 2016 by Ultibo (Talk | contribs)

Jump to: navigation, search

Return to Unit Reference


Description


To be documented

Constants



Device specific constants DEVICE_*
DEVICE_NAME_PREFIX = 'Device'; Name prefix for Devices


Device signature constants DEVICE_SIGNATURE_*
DEVICE_SIGNATURE = $AD03FE3C;  


Device bus constants 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 constants DEVICE_STATE_*
DEVICE_STATE_UNREGISTERED = 0;  
DEVICE_STATE_REGISTERED = 1;  
 
DEVICE_STATE_MAX = 1;  


Device Id constants DEVICE_ID_*
DEVICE_ID_ANY = $FFFFFFFF; Any Device (Pass to DeviceFind to match all devices)


Device notification flag constants 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 constants NOTIFIER_SIGNATURE_*
NOTIFIER_SIGNATURE = $6FA1BEC9;  


Notifier state constants NOTIFIER_STATE_*
NOTIFIER_STATE_UNREGISTERED = 0;  
NOTIFIER_STATE_REGISTERED = 1;  


Notifier flag constants NOTIFIER_FLAG_*
NOTIFIER_FLAG_NONE = $00000000;  
NOTIFIER_FLAG_WORKER = $00000001; If set, notification callback event will be scheduled on a worker thread


Device logging constants 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 specific constants DRIVER_*
DRIVER_NAME_PREFIX = 'Driver'; Name prefix for Drivers


Driver signature constants DRIVER_SIGNATURE_*
DRIVER_SIGNATURE = $1EB4980A;  


Driver state constants DRIVER_STATE_*
DRIVER_STATE_UNREGISTERED = 0;  
DRIVER_STATE_REGISTERED = 1;  
 
DRIVER_STATE_MAX = 1;  


Driver Id constants DRIVER_ID_*
DRIVER_ID_ANY = $FFFFFFFF; Any Driver (Pass to DriverFind to match all drivers)


Driver class constants 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 specific constants HOST_*
HOST_NAME_PREFIX = 'Host'; Name prefix for Hosts


Host signature constants HOST_SIGNATURE_*
HOST_SIGNATURE = $F45D30FE;  


Host state constants HOST_STATE_*
HOST_STATE_UNREGISTERED = 0;  
HOST_STATE_REGISTERED = 1;  


Host Id constants HOST_ID_*
HOST_ID_ANY = $FFFFFFFF; Any Host (Pass to HostFind to match all hosts)


Host class constants 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 specific constants CLOCK_*
CLOCK_NAME_PREFIX = 'Clock'; Name prefix for Clock Devices


Clock device type constants CLOCK_TYPE_*
CLOCK_TYPE_NONE = 0;  
CLOCK_TYPE_HARDWARE = 1;  


Clock device state constants CLOCK_STATE_*
CLOCK_STATE_DISABLED = 0;  
CLOCK_STATE_ENABLED = 1;  


Clock device flag constants CLOCK_FLAG_*
CLOCK_FLAG_NONE = $00000000;  
CLOCK_FLAG_WRITABLE = $00000001; Device supports writing the clock value


Timer specific constants TIMER_*
TIMER_NAME_PREFIX = 'Timer'; Name prefix for Timer Devices


Timer device type constants TIMER_TYPE_*
TIMER_TYPE_NONE = 0;  
TIMER_TYPE_HARDWARE = 1;  


Timer device state constants TIMER_STATE_*
TIMER_STATE_DISABLED = 0;  
TIMER_STATE_ENABLED = 1;  


Timer device flag constants 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 constants 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 specific constants RANDOM_*
RANDOM_NAME_PREFIX = 'Random'; Name prefix for Random Devices


Random device type constants RANDOM_TYPE_*
RANDOM_TYPE_NONE = 0;  
RANDOM_TYPE_HARDWARE = 1;  
RANDOM_TYPE_SOFTWARE = 2;  


Random device state constants RANDOM_STATE_*
RANDOM_STATE_DISABLED = 0;  
RANDOM_STATE_ENABLED = 1;  


Random device flag constants RANDOM_FLAG_*
RANDOM_FLAG_NONE = $00000000;  


Mailbox specific constants MAILBOX_*
MAILBOX_NAME_PREFIX = 'Mailbox'; Name prefix for Mailbox Devices


Mailbox device type constants MAILBOX_TYPE_*
MAILBOX_TYPE_NONE = 0;  
MAILBOX_TYPE_GPU = 1;  
MAILBOX_TYPE_LOCAL = 2;  


Mailbox device state constants MAILBOX_STATE_*
MAILBOX_STATE_DISABLED = 0;  
MAILBOX_STATE_ENABLED = 1;  


Mailbox device flag constants MAILBOX_FLAG_*
MAILBOX_FLAG_NONE = $00000000;  


Watchdog specific constants WATCHDOG_*
WATCHDOG_NAME_PREFIX = 'Watchdog'; Name prefix for Watchdog Devices


Watchdog device type constants WATCHDOG_TYPE_*
WATCHDOG_TYPE_NONE = 0;  
WATCHDOG_TYPE_HARDWARE = 1;  


Watchdog device state constants WATCHDOG_STATE_*
WATCHDOG_STATE_DISABLED = 0;  
WATCHDOG_STATE_ENABLED = 1;  


Watchdog device flag constants WATCHDOG_FLAG_*
WATCHDOG_FLAG_NONE = $00000000;  


Type definitions


To be documented

Public variables


To be documented

Function declarations



Initialization functions

procedure DevicesInit;
Description: Initialize the Devices unit and device, notifier and driver tables
Note Called only during system startup


Device functions

function DeviceCreate:PDevice;
Description: Create a new Device entry
Return Pointer to new Device entry or nil if device could not be created


function DeviceCreateEx(Size:LongWord):PDevice;
Description: Create a new Device entry
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;
Description: Destroy an existing Device entry
Note None documented


function DeviceGetName(Device:PDevice):String;
Description: Get the name of the supplied Device
Note None documented


function DeviceSetName(Device:PDevice; const Name:String):LongWord;
Description: Set the name of the supplied Device
Note None documented


function DeviceGetDescription(Device:PDevice):String;
Description: Get the description of the supplied Device
Note None documented


function DeviceSetDescription(Device:PDevice; const Description:String):LongWord;
Description: Set the description of the supplied Device
Note None documented


function DeviceRegister(Device:PDevice):LongWord;
Description: Register a new Device in the Device table
Note None documented


function DeviceDeregister(Device:PDevice):LongWord;
Description: Deregister a Device from the Device table
Note None documented


function DeviceFind(DeviceClass,DeviceId:LongWord):PDevice;
Description: To be documented
Note None documented


function DeviceFindByName(const Name:String):PDevice;
Description: To be documented
Note None documented


function DeviceFindByDescription(const Description:String):PDevice;
Description: To be documented
Note None documented


function DeviceEnumerate(DeviceClass:LongWord; Callback:TDeviceEnumerate; Data:Pointer):LongWord;
Description: To be documented
Note None documented


function DeviceNotification(Device:PDevice; DeviceClass:LongWord; Callback:TDeviceNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: To be documented
Note None documented


function NotifierAllocate(Device:PDevice; DeviceClass:LongWord; Callback:TDeviceNotification; Data:Pointer; Notification,Flags:LongWord):PNotifier;
Description: Create and Register a new Notifier entry in the Notifier table
Note None documented


function NotifierRelease(Notifier:PNotifier):LongWord;
Description: Deregister and Destroy a Notifier from the Notifier table
Note None documented


function NotifierFind(Device:PDevice; DeviceClass:LongWord; Callback:TDeviceNotification; Data:Pointer):PNotifier;
Description: To be documented
Note None documented


function NotifierNotify(Device:PDevice; Notification:LongWord):LongWord;
Description: To be documented
Note None documented


Driver functions

function DriverCreate:PDriver;
Description: Create a new Driver entry
Return Pointer to new Driver entry or nil if driver could not be created


function DriverCreateEx(Size:LongWord):PDriver;
Description: Create a new Driver entry
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;
Description: Destroy an existing Driver entry
Note None documented


function DriverGetName(Driver:PDriver):String;
Description: Get the name of the supplied Driver
Note None documented


function DriverSetName(Driver:PDriver; const Name:String):LongWord;
Description: Set the name of the supplied Driver
Note None documented


function DriverRegister(Driver:PDriver):LongWord;
Description: Register a new Driver in the Driver table
Note None documented


function DriverDeregister(Driver:PDriver):LongWord;
Description: Deregister a Driver from the Driver table
Note None documented


function DriverFind(DriverClass,DriverId:LongWord):PDriver;
Description: To be documented
Note None documented


function DriverFindByName(const Name:String):PDriver;
Description: To be documented
Note None documented


function DriverEnumerate(DriverClass:LongWord; Callback:TDriverEnumerate; Data:Pointer):LongWord;
Description: To be documented
Note None documented


Clock device functions

function ClockDeviceStart(Clock:PClockDevice):LongWord;
Description: To be documented
Note None documented


function ClockDeviceStop(Clock:PClockDevice):LongWord;
Description: To be documented
Note None documented


function ClockDeviceRead(Clock:PClockDevice):LongWord;
Description: To be documented
Note None documented


function ClockDeviceRead64(Clock:PClockDevice):Int64;
Description: To be documented
Note None documented


function ClockDeviceWrite64(Clock:PClockDevice; const Value:Int64):LongWord;
Description: To be documented
Note None documented


function ClockDeviceGetRate(Clock:PClockDevice):LongWord;
Description: To be documented
Note None documented


function ClockDeviceCreate:PClockDevice;
Description: Create a new Clock entry
Return Pointer to new Clock entry or nil if Clock could not be created


function ClockDeviceCreateEx(Size:LongWord):PClockDevice;
Description: Create a new Clock entry
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;
Description: Destroy an existing Clock entry
Note None documented


function ClockDeviceRegister(Clock:PClockDevice):LongWord;
Description: Register a new Clock in the Clock table
Note None documented


function ClockDeviceDeregister(Clock:PClockDevice):LongWord;
Description: Deregister a Clock from the Clock table
Note None documented


function ClockDeviceFind(ClockId:LongWord):PClockDevice;
Description: To be documented
Note None documented


function ClockDeviceFindByName(const Name:String):PClockDevice; inline;
Description: To be documented
Note None documented


function ClockDeviceFindByDescription(const Description:String):PClockDevice; inline;
Description: To be documented
Note None documented


function ClockDeviceEnumerate(Callback:TClockEnumerate; Data:Pointer):LongWord;
Description: To be documented
Note None documented


function ClockDeviceNotification(Clock:PClockDevice; Callback:TClockNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: To be documented
Note None documented


Timer device functions

function TimerDeviceStart(Timer:PTimerDevice):LongWord;
Description: Start the clock and counter of the specified Timer device
Timer The Timer device to start
Return ERROR_SUCCESS if completed or another error code on failure


function TimerDeviceStop(Timer:PTimerDevice):LongWord;
Description: Stop the clock and counter of the specified Timer device
Timer The Timer device to stop
Return ERROR_SUCCESS if completed or another error code on failure


function TimerDeviceRead(Timer:PTimerDevice):LongWord;
Description: Read the current value of the specified Timer device
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;
Description: Read the current value of the specified Timer device
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;
Description: Wait for the current interval to expire on the specified Timer device
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;
Description: Schedule a function to be called when the current interval expires on the specified Timer device
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;
Description: Cancel a previously scheduled event callback function on the specified Timer device
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;
Description: Get the current clock rate in Hz of the specified Timer device
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;
Description: Set the current clock rate in Hz of the specified Timer device
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;
Description: Get the current interval in ticks of the specified Timer device
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;
Description: Set the current interval in ticks of the specified Timer device
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;
Description: Get the properties for the specified Timer device
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;
Description: Create a new Timer entry
Return Pointer to new Timer entry or nil if Timer could not be created


function TimerDeviceCreateEx(Size:LongWord):PTimerDevice;
Description: Create a new Timer entry
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;
Description: Destroy an existing Timer entry
Timer The timer device to destroy
Return ERROR_SUCCESS if completed or another error code on failure


function TimerDeviceRegister(Timer:PTimerDevice):LongWord;
Description: Register a new Timer in the Timer table
Timer The timer device to register
Return ERROR_SUCCESS if completed or another error code on failure


function TimerDeviceDeregister(Timer:PTimerDevice):LongWord;
Description: Deregister a Timer from the Timer table
Timer The timer device to deregister
Return ERROR_SUCCESS if completed or another error code on failure


function TimerDeviceFind(TimerId:LongWord):PTimerDevice;
Description: Find a timer device by ID in the timer table
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;
Description: Find a timer device by name in the timer table
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: Find a timer device by description in the timer table
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;
Description: Enumerate all timer devices in the timer table
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;
Description: Register a notification for timer device changes
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;
Description: To be documented
Note None documented


function RandomDeviceStop(Random:PRandomDevice):LongWord;
Description: To be documented
Note None documented


function RandomDeviceSeed(Random:PRandomDevice; Seed:LongWord):LongWord;
Description: To be documented
Note None documented


function RandomDeviceReadByte(Random:PRandomDevice):Byte;
Description: To be documented
Note None documented


function RandomDeviceReadWord(Random:PRandomDevice):Word;
Description: To be documented
Note None documented


function RandomDeviceReadLongWord(Random:PRandomDevice):LongWord;
Description: To be documented
Note None documented


function RandomDeviceReadQuadWord(Random:PRandomDevice):Int64;
Description: To be documented
Note None documented


function RandomDeviceReadExtended(Random:PRandomDevice):Extended;
Description: To be documented
Note None documented


function RandomDeviceCreate:PRandomDevice;
Description: Create a new Random entry
Return Pointer to new Random entry or nil if Random could not be created


function RandomDeviceCreateEx(Size:LongWord):PRandomDevice;
Description: Create a new Random entry
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;
Description: Destroy an existing Random entry
Note None documented


function RandomDeviceRegister(Random:PRandomDevice):LongWord;
Description: Register a new Random in the Random table
Note None documented


function RandomDeviceDeregister(Random:PRandomDevice):LongWord;
Description: Deregister a Random from the Random table
Note None documented


function RandomDeviceFind(RandomId:LongWord):PRandomDevice;
Description: To be documented
Note None documented


function RandomDeviceFindByName(const Name:String):PRandomDevice; inline;
Description: To be documented
Note None documented


function RandomDeviceFindByDescription(const Description:String):PRandomDevice; inline;
Description: To be documented
Note None documented


function RandomDeviceEnumerate(Callback:TRandomEnumerate; Data:Pointer):LongWord;
Description: To be documented
Note None documented


function RandomDeviceNotification(Random:PRandomDevice; Callback:TRandomNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: To be documented
Note None documented


Mailbox device functions

function MailboxDeviceStart(Mailbox:PMailboxDevice):LongWord;
Description: To be documented
Note None documented


function MailboxDeviceStop(Mailbox:PMailboxDevice):LongWord;
Description: To be documented
Note None documented


function MailboxDeviceReceive(Mailbox:PMailboxDevice; Channel:LongWord):LongWord;
Description: To be documented
Note None documented


function MailboxDeviceSend(Mailbox:PMailboxDevice; Channel,Data:LongWord):LongWord;
Description: To be documented
Note None documented


function MailboxDeviceCall(Mailbox:PMailboxDevice; Channel,Data:LongWord; var Response:LongWord):LongWord;
Description: To be documented
Note None documented


function MailboxDeviceGetTimeout(Mailbox:PMailboxDevice):LongWord;
Description: To be documented
Note None documented


function MailboxDeviceSetTimeout(Mailbox:PMailboxDevice; Timeout:LongWord):LongWord;
Description: To be documented
Note None documented


function MailboxDeviceCreate:PMailboxDevice;
Description: Create a new Mailbox entry
Return Pointer to new Mailbox entry or nil if Mailbox could not be created


function MailboxDeviceCreateEx(Size:LongWord):PMailboxDevice;
Description: Create a new Mailbox entry
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;
Description: Destroy an existing Mailbox entry
Note None documented


function MailboxDeviceRegister(Mailbox:PMailboxDevice):LongWord;
Description: Register a new Mailbox in the Mailbox table
Note None documented


function MailboxDeviceDeregister(Mailbox:PMailboxDevice):LongWord;
Description: Deregister a Mailbox from the Mailbox table
Note None documented


function MailboxDeviceFind(MailboxId:LongWord):PMailboxDevice;
Description: To be documented
Note None documented


function MailboxDeviceFindByName(const Name:String):PMailboxDevice; inline;
Description: To be documented
Note None documented


function MailboxDeviceFindByDescription(const Description:String):PMailboxDevice; inline;
Description: To be documented
Note None documented


function MailboxDeviceEnumerate(Callback:TMailboxEnumerate; Data:Pointer):LongWord;
Description: To be documented
Note None documented


function MailboxDeviceNotification(Mailbox:PMailboxDevice; Callback:TMailboxNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: To be documented
Note None documented


Watchdog device functions

function WatchdogDeviceStart(Watchdog:PWatchdogDevice):LongWord;
Description: To be documented
Note None documented


function WatchdogDeviceStop(Watchdog:PWatchdogDevice):LongWord;
Description: To be documented
Note None documented


function WatchdogDeviceRefresh(Watchdog:PWatchdogDevice):LongWord;
Description: To be documented
Note None documented


function WatchdogDeviceGetRemain(Watchdog:PWatchdogDevice):LongWord;
Description: To be documented
Note None documented


function WatchdogDeviceGetTimeout(Watchdog:PWatchdogDevice):LongWord;
Description: To be documented
Note None documented


function WatchdogDeviceSetTimeout(Watchdog:PWatchdogDevice; Timeout:LongWord):LongWord;
Description: To be documented
Note None documented


function WatchdogDeviceCreate:PWatchdogDevice;
Description: Create a new Watchdog entry
Return Pointer to new Watchdog entry or nil if Watchdog could not be created


function WatchdogDeviceCreateEx(Size:LongWord):PWatchdogDevice;
Description: Create a new Watchdog entry
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;
Description: Destroy an existing Watchdog entry
Note None documented


function WatchdogDeviceRegister(Watchdog:PWatchdogDevice):LongWord;
Description: Register a new Watchdog in the Watchdog table
Note None documented


function WatchdogDeviceDeregister(Watchdog:PWatchdogDevice):LongWord;
Description: Deregister a Watchdog from the Watchdog table
Note None documented


function WatchdogDeviceFind(WatchdogId:LongWord):PWatchdogDevice;
Description: To be documented
Note None documented


function WatchdogDeviceFindByName(const Name:String):PWatchdogDevice; inline;
Description: To be documented
Note None documented


function WatchdogDeviceFindByDescription(const Description:String):PWatchdogDevice; inline;
Description: To be documented
Note None documented


function WatchdogDeviceEnumerate(Callback:TWatchdogEnumerate; Data:Pointer):LongWord;
Description: To be documented
Note None documented


function WatchdogDeviceNotification(Watchdog:PWatchdogDevice; Callback:TWatchdogNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: To be documented
Note None documented


RTL clock functions

function SysClockRead:LongWord;
Description: To be documented
Note None documented


function SysClockRead64:Int64;
Description: To be documented
Note None documented


RTL timer (counter) functions

function SysTimerAvailable:Boolean;
Description: Check if a timer device is available
Note None documented


function SysTimerRead:LongWord;
Description: Read the current value of the default counter
Return The 32 bit current value of the counter or 0 on failure


function SysTimerRead64:Int64;
Description: Read the current value of the default counter
Return The 64 bit current value of the counter or 0 on failure


function SysTimerWait:LongWord;
Description: Wait for the current interval to expire on the default counter
Return ERROR_SUCCESS if the interval expired or another error code on failure


function SysTimerEvent(Callback:TTimerCallback; Data:Pointer):LongWord;
Description: Schedule a function to be called when the current interval expires on the default counter
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;
Description: Cancel a previously scheduled event callback function on the default counter
Return ERROR_SUCCESS if the callback was cancelled successfully or another error code on failure


function SysTimerGetRate:LongWord;
Description: Get the current clock rate in Hz of the default counter
Return The current clock rate in Hz or 0 on failure


function SysTimerSetRate(Rate:LongWord):LongWord;
Description: Set the current clock rate in Hz of the default counter
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;
Description: Get the current interval in ticks of the default counter
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;
Description: Set the current interval in ticks of the default counter
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;
Description: Check if a random (RNG) device is available
Note None documented


procedure SysRandomize;
Description: To be documented
Note None documented


procedure SysRandomSeed(Seed:LongWord);
Description: To be documented
Note None documented


function SysRandomReadLongInt(Limit:LongInt):LongInt;
Description: To be documented
Note None documented


function SysRandomReadInt64(Limit:Int64):Int64;
Description: To be documented
Note None documented


function SysRandomReadExtended:Extended;
Description: To be documented
Note None documented


RTL watchdog functions

function SysWatchdogAvailable:Boolean;
Description: Check if a watchdog timer device is available
Note None documented


function SysWatchdogStart(Milliseconds:LongWord):LongWord; 
Description: To be documented
Note None documented


function SysWatchdogStop:LongWord;
Description: To be documented
Note None documented


function SysWatchdogRefresh(Milliseconds:LongWord):LongWord;
Description: To be documented
Note None documented


Device helper functions

function DeviceGetCount:LongWord; inline;
Description: Get the current device count
Note None documented


function DeviceCheck(Device:PDevice):PDevice;
Description: Check if the supplied Device is in the device table
Note None documented


function NotifierGetCount:LongWord; inline;
Description: Get the current notifier count
Note None documented


function NotifierCheck(Notifier:PNotifier):PNotifier;
Description: Check if the supplied Notifier is in the notifier table
Note None documented


function DeviceBusToString(DeviceBus:LongWord):String;
Description: To be documented
Note None documented


function DeviceStateToString(DeviceState:LongWord):String;
Description: To be documented
Note None documented


function DeviceClassToString(DeviceClass:LongWord):String;
Description: To be documented
Note None documented


function NotificationToString(Notification:LongWord):String;
Description: To be documented
Note None documented


procedure DeviceLog(Level:LongWord; Device:PDevice; const AText:String);
Description: To be documented
Note None documented


procedure DeviceLogInfo(Device:PDevice; const AText:String);
Description: To be documented
Note None documented


procedure DeviceLogError(Device:PDevice; const AText:String);
Description: To be documented
Note None documented


procedure DeviceLogDebug(Device:PDevice; const AText:String);
Description: To be documented
Note None documented


Driver helper functions

function DriverGetCount:LongWord; inline;
Description: Get the current driver count
Note None documented


function DriverCheck(Driver:PDriver):PDriver;
Description: Check if the supplied Driver is in the driver table
Note None documented


function DriverStateToString(DriverState:LongWord):String;
Description: To be documented
Note None documented


function DriverClassToString(DriverClass:LongWord):String;
Description: To be documented
Note None documented


Clock device helper functions

function ClockDeviceGetCount:LongWord; inline;
Description: Get the current clock device count
Note None documented


function ClockDeviceGetDefault:PClockDevice; inline;
Description: Get the current default clock device
Note None documented


function ClockDeviceSetDefault(Clock:PClockDevice):LongWord;
Description: Set the current default clock device
Note None documented


function ClockDeviceCheck(Clock:PClockDevice):PClockDevice;
Description: Check if the supplied Clock is in the Clock table
Note None documented


Timer device helper functions

function TimerDeviceGetCount:LongWord; inline;
Description: Get the current timer device count
Note None documented


function TimerDeviceGetDefault:PTimerDevice; inline;
Description: Get the current default timer device
Note None documented


function TimerDeviceSetDefault(Timer:PTimerDevice):LongWord; 
Description: Set the current default timer device
Note None documented


function TimerDeviceCheck(Timer:PTimerDevice):PTimerDevice;
Description: Check if the supplied Timer is in the Timer table
Note None documented


function TimerDeviceCreateWaiter(Timer:PTimerDevice; Callback:TTimerCallback; Data:Pointer):PTimerWaiter;
Description: Create a new waiter using the supplied parameters
Note Waiter must be registered by calling TimerDeviceRegisterWaiter. Caller must hold the Timer device lock.


function TimerDeviceDestroyWaiter(Timer:PTimerDevice; Waiter:PTimerWaiter):LongWord;
Description: Destroy an existing waiter
Note Waiter must be deregistered first by calling TimerDeviceDeregisterWaiter. Caller must hold the Timer device lock.


function TimerDeviceRegisterWaiter(Timer:PTimerDevice; Waiter:PTimerWaiter):LongWord;
Description: Register a waiter in the waiter list of the supplied Timer
Note Waiter must be created by calling TimerDeviceCreateWaiter. Caller must hold the Timer device lock.


function TimerDeviceDeregisterWaiter(Timer:PTimerDevice; Waiter:PTimerWaiter):LongWord;
Description: Deregister a waiter from the waiter list of the supplied Timer
Note Waiter must be destroyed by calling TimerDeviceDestroyWaiter. Caller must hold the Timer device lock.


Random device helper functions

function RandomDeviceGetCount:LongWord; inline;
Description: Get the current random device count
Note None documented


function RandomDeviceGetDefault:PRandomDevice; inline;
Description: Get the current default random device
Note None documented


function RandomDeviceSetDefault(Random:PRandomDevice):LongWord;
Description: Set the current default random device
Note None documented


function RandomDeviceCheck(Random:PRandomDevice):PRandomDevice;
Description: Check if the supplied Random is in the Random table
Note None documented


Mailbox device helper functions

function MailboxDeviceGetCount:LongWord; inline;
Description: Get the current mailbox device count
Note None documented


function MailboxDeviceGetDefault:PMailboxDevice; inline;
Description: Get the current default mailbox device
Note None documented


function MailboxDeviceSetDefault(Mailbox:PMailboxDevice):LongWord; 
Description: Set the current default mailbox device
Note None documented


function MailboxDeviceCheck(Mailbox:PMailboxDevice):PMailboxDevice;
Description: Check if the supplied Mailbox is in the Mailbox table
Note None documented


Watchdog device helper functions

function WatchdogDeviceGetCount:LongWord; inline;
Description: Get the current watchdog device count
Note None documented


function WatchdogDeviceGetDefault:PWatchdogDevice; inline;
Description: Get the current default watchdog device
Note None documented


function WatchdogDeviceSetDefault(Watchdog:PWatchdogDevice):LongWord;
Description: Set the current default watchdog device
Note None documented


function WatchdogDeviceCheck(Watchdog:PWatchdogDevice):PWatchdogDevice;
Description: Check if the supplied Watchdog is in the Watchdog table
Note None documented


Return to Unit Reference