Difference between revisions of "Unit Devices"

From Ultibo.org
Jump to: navigation, search
Line 926: Line 926:
 
----
 
----
  
''To be documented''
+
 
 +
'''Device enumeration callback'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TDeviceEnumerate = function(Device:PDevice; Data:Pointer):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''Device notification callback'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TDeviceNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Device entry'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PDevice = ^TDevice;</code>
 +
 
 +
<code>TDevice = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|''Device Properties''
 +
|-
 +
| <code>Signature:LongWord;</code>
 +
| Signature for entry validation
 +
|-
 +
| <code>DeviceId:LongWord;</code>
 +
| Unique Id of this Device in the Device table
 +
|-
 +
| <code>DeviceState:LongWord;</code>
 +
| Device state (eg Registered/Unregistered)
 +
|-
 +
| <code>DeviceName:String;</code>
 +
| The name of the Device (eg Keyboard0, Storage0 or Network0 etc)
 +
|-
 +
| <code>DeviceClass:LongWord;</code>
 +
| The class of this Device (eg DEVICE_CLASS_USB, DEVICE_CLASS_NETWORK, DEVICE_CLASS_STORAGE etc)
 +
|-
 +
| <code>DeviceBus:LongWord;</code>
 +
| The Bus type for the Device (eg DEVICE_BUS_USB)
 +
|-
 +
| <code>DeviceType:LongWord;</code>
 +
| A class specific Device type (eg KEYBOARD_TYPE_USB, MOUSE_TYPE_USB, NETWORK_TYPE_ETHERNET etc)
 +
|-
 +
| <code>DeviceFlags:LongWord;</code>
 +
| The class specific Device flags
 +
|-
 +
| <code>DeviceData:Pointer;</code>
 +
| A pointer to a class specific Device interface (eg PUSBDevice, PNetworkDevice or PStorageDevice etc) (Used by Drivers)
 +
|-
 +
| <code>DeviceDescription:String;</code>
 +
| A description of the Device (eg BCM2835 PL011 UART)
 +
|-
 +
|colspan="2"|''Internal Properties''
 +
|-
 +
| <code>Prev:PDevice;</code>
 +
| Previous entry in Device table
 +
|-
 +
| <code>Next:PDevice;</code>
 +
| Next entry in Device table
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Notifier entry'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PNotifier = ^TNotifier;</code>
 +
 
 +
<code>TNotifier = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|''Notifier Properties''
 +
|-
 +
| <code>Signature:LongWord;</code>
 +
| Signature for entry validation
 +
|-
 +
| <code>NotifierState:LongWord;</code>
 +
| Notifier state (eg Registered/Unregistered)
 +
|-
 +
| <code>NotifierFlags:LongWord;</code>
 +
| Notifier flags (eg NOTIFIER_FLAG_WORKER)
 +
|-
 +
| <code>Device:PDevice;</code>
 +
| The Device to notify on (or nil for all devices)
 +
|-
 +
| <code>DeviceClass:LongWord;</code>
 +
| The Device class to notify on (or DEVICE_CLASS_ANY for all devices)
 +
|-
 +
| <code>Callback:TDeviceNotification;</code>
 +
| The callback for device notifications
 +
|-
 +
| <code>Data:Pointer;</code>
 +
| A pointer to callback specific data to be passed with notifications (Optional)
 +
|-
 +
| <code>Notification:LongWord;</code>
 +
| The mask of events to notify on (eg DEVICE_NOTIFICATION_REGISTER etc)
 +
|-
 +
|colspan="2"|''Internal Properties''
 +
|-
 +
| <code>Prev:PNotifier;</code>
 +
| Previous entry in Notifier table
 +
|-
 +
| <code>Next:PNotifier;</code>
 +
| Next entry in Notifier table
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''Notifier task'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PNotifierTask = ^TNotifierTask;</code>
 +
 
 +
<code>TNotifierTask = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Device:PDevice;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>Callback:TDeviceNotification;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Data:Pointer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Notification:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Driver enumeration callback'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TDriverEnumerate = function(Driver:PDriver; Data:Pointer):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Driver entry'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PDriver = ^TDriver;</code>
 +
 
 +
<code>TDriver = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|''Driver Properties''
 +
|-
 +
| <code>Signature:LongWord;</code>
 +
| Signature for entry validation
 +
|-
 +
| <code>DriverId:LongWord;</code>
 +
| Unique Id of this Driver in the Driver table
 +
|-
 +
| <code>DriverState:LongWord;</code>
 +
| Driver state (eg Registered/Unregistered)
 +
|-
 +
| <code>DriverName:String;</code>
 +
| Descriptive name for the Driver (eg USB Mouse Driver)
 +
|-
 +
| <code>DriverClass:LongWord;</code>
 +
| The class of this Driver (eg DRIVER_CLASS_USB etc)
 +
|-
 +
|colspan="2"|''Internal Properties''
 +
|-
 +
| <code>Prev:PDriver;</code>
 +
| Previous entry in Driver table
 +
|-
 +
| <code>Next:PDriver;</code>
 +
| Next entry in Driver table
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''Host enumeration callback'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>THostEnumerate = function(Host:PHost; Data:Pointer):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Host entry'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PHost = ^THost;</code>
 +
 
 +
<code>THost = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|''Host Properties''
 +
|-
 +
| <code>Signature:LongWord;</code>
 +
| Signature for entry validation
 +
|-
 +
| <code>HostId:LongWord;</code>
 +
| Unique Id of this Host in the Host table
 +
|-
 +
| <code>HostState:LongWord;</code>
 +
| Host state (eg Registered/Unregistered)
 +
|-
 +
| <code>HostName:String;</code>
 +
| Descriptive name for the Host (eg DWC OTG Host)
 +
|-
 +
| <code>HostClass:LongWord;</code>
 +
| The class of this Host (eg HOST_CLASS_USB etc)
 +
|-
 +
|colspan="2"|''Internal Properties''
 +
|-
 +
| <code>Prev:PHost;</code>
 +
| Previous entry in Host table
 +
|-
 +
| <code>Next:PHost;</code>
 +
| Next entry in Host table
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''Clock properties'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PClockProperties = ^TClockProperties;</code>
 +
 
 +
<code>TClockProperties = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Flags:LongWord;</code>
 +
| Device flags (eg CLOCK_FLAG_WRITABLE)
 +
|-
 +
| <code>Rate:LongWord;</code>
 +
| Device current clock rate (Hz)
 +
|-
 +
| <code>MinRate:LongWord;</code>
 +
| Device minimum clock rate (Hz)
 +
|-
 +
| <code>MaxRate:LongWord;</code>
 +
| Device maximum clock rate (Hz)
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''Clock enumeration callback'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TClockEnumerate = function(Clock:PClockDevice; Data:Pointer):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Clock notification callback'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TClockNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Clock device start'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TClockDeviceStart = function(Clock:PClockDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Clock device stop'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TClockDeviceStop = function(Clock:PClockDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Clock device read'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TClockDeviceRead = function(Clock:PClockDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Clock device read 64'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TClockDeviceRead64 = function(Clock:PClockDevice):Int64;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Clock device write 64'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TClockDeviceWrite64 = function(Clock:PClockDevice;const Value:Int64):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Clock device get rate'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TClockDeviceGetRate = function(Clock:PClockDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Clock device set rate'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TClockDeviceSetRate = function(Clock:PClockDevice;Rate:LongWord):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Clock device properties'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TClockDeviceProperties = function(Clock:PClockDevice;Properties:PClockProperties):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Clock device types'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PClockDevice = ^TClockDevice;</code>
 +
 
 +
<code>TClockDevice = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|''Device Properties''
 +
|-
 +
| <code>Device:TDevice;</code>
 +
| The Device entry for this Clock device
 +
|-
 +
|colspan="2"|''Clock Properties''
 +
|-
 +
| <code>ClockId:LongWord;</code>
 +
| Unique Id of this Clock device in the Clock device table
 +
|-
 +
| <code>ClockState:LongWord;</code>
 +
| Clock device state (eg CLOCK_STATE_ENABLED)
 +
|-
 +
| <code>DeviceStart:TClockDeviceStart;</code>
 +
| A device specific DeviceStart method implementing a standard clock device interface (Or nil if the default method is suitable)
 +
|-
 +
| <code>DeviceStop:TClockDeviceStop;</code>
 +
| A device specific DeviceStop method implementing a standard clock device interface (Or nil if the default method is suitable)
 +
|-
 +
| <code>DeviceRead:TClockDeviceRead;</code>
 +
| A device specific DeviceRead method implementing a standard clock device interface (Or nil if the default method is suitable)
 +
|-
 +
| <code>DeviceRead64:TClockDeviceRead64;</code>
 +
| A device specific DeviceRead64 method implementing a standard clock device interface (Mandatory)
 +
|-
 +
| <code>DeviceWrite64:TClockDeviceWrite64;</code>
 +
| A device specific DeviceWrite64 method implementing a standard clock device interface (Optional)
 +
|-
 +
| <code>DeviceGetRate:TClockDeviceGetRate;</code>
 +
| A device specific DeviceGetRate method implementing a standard clock device interface (Or nil if the default method is suitable)
 +
|-
 +
| <code>DeviceSetRate:TClockDeviceSetRate;</code>
 +
| A device specific DeviceSetRate method implementing a standard clock device interface (Optional)
 +
|-
 +
| <code>DeviceProperties:TClockDeviceProperties;</code>
 +
| A device specific DeviceProperties method implementing a standard clock device interface (Or nil if the default method is suitable)
 +
|-
 +
|colspan="2"|''Statistics Properties''
 +
|-
 +
| <code>ReadCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|''Driver Properties''
 +
|-
 +
| <code>Lock:TMutexHandle;</code>
 +
| Device lock
 +
|-
 +
| <code>Address:Pointer;</code>
 +
| Device register base address
 +
|-
 +
| <code>Rate:LongWord;</code>
 +
| Device rate (Hz)
 +
|-
 +
| <code>MinRate:LongWord;</code>
 +
| Device minimum rate (Hz)
 +
|-
 +
| <code>MaxRate:LongWord;</code>
 +
| Device maximum rate (Hz)
 +
|-
 +
|colspan="2"|''Internal Properties''
 +
|-
 +
| <code>Prev:PClockDevice;</code>
 +
| Previous entry in Clock device table
 +
|-
 +
| <code>Next:PClockDevice;</code>
 +
| Next entry in Clock device table
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Timer specific types'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TTimerCallback = TCounterCallback;</code>
 +
| style="width: 40%;"|Counter callback from Platform
 +
|-
 +
|}
 +
 
 +
'''Timer properties'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PTimerProperties = ^TTimerProperties;</code>
 +
 
 +
<code>TTimerProperties = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Flags:LongWord;</code>
 +
| Device flags (eg TIMER_FLAG_WRAPPING)
 +
|-
 +
| <code>Bits:LongWord;</code>
 +
| Number of valid bits in timer read (eg 32 or 64)
 +
|-
 +
| <code>MinRate:LongWord;</code>
 +
| Device minimum clock rate (Hz)
 +
|-
 +
| <code>MaxRate:LongWord;</code>
 +
| Device maximum clock rate (Hz)
 +
|-
 +
| <code>MinInterval:LongWord;</code>
 +
| Device minimum interval (Ticks)
 +
|-
 +
| <code>MaxInterval:LongWord;</code>
 +
| Device maximum interval (Ticks)
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''Timer waiter'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PTimerWaiter = ^TTimerWaiter;</code>
 +
 
 +
<code>TTimerWaiter = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: TTimerEvent is used already by the Threads unit
 +
|-
 +
| <code>Timer:PTimerDevice;</code>
 +
| Timer device this waiter belongs to
 +
|-
 +
| <code>Callback:TTimerCallback;</code>
 +
| Callback function to call when event occurs
 +
|-
 +
| <code>Data:Pointer;</code>
 +
| Pointer to pass to the callback function when event occurs
 +
|-
 +
| <code>Prev:PTimerWaiter;</code>
 +
| Previous event in the list
 +
|-
 +
| <code>Next:PTimerWaiter;</code>
 +
| Next event in the list
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''Timer enumeration callback'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TTimerEnumerate = function(Timer:PTimerDevice; Data:Pointer):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Timer notification callback'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TTimerNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''TImer device start'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TTimerDeviceStart = function(Timer:PTimerDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Timer device stop'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TTimerDeviceStop = function(Timer:PTimerDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Timer device read'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TTimerDeviceRead = function(Timer:PTimerDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Timer device read 64'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TTimerDeviceRead64 = function(Timer:PTimerDevice):Int64;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Timer device wait'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TTimerDeviceWait = function(Timer:PTimerDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Timer device event'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TTimerDeviceEvent = function(Timer:PTimerDevice; Flags:LongWord; Callback:TTimerCallback; Data:Pointer):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Timer device cancel'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TTimerDeviceCancel = function(Timer:PTimerDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Timer device get rate'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TTimerDeviceGetRate = function(Timer:PTimerDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Timer device set rate'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TTimerDeviceSetRate = function(Timer:PTimerDevice; Rate:LongWord):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Timer device get interval'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TTimerDeviceGetInterval = function(Timer:PTimerDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Timer device set interval'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TTimerDeviceSetInterval = function(Timer:PTimerDevice; Interval:LongWord):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Timer device properties'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TTimerDeviceProperties = function(Timer:PTimerDevice; Properties:PTimerProperties):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Timer device types'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PTimerDevice = ^TTimerDevice;</code>
 +
 
 +
<code>TTimerDevice = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Forward declared for TimerWaiter
 +
|-
 +
|colspan="2"|''Device Properties''
 +
|-
 +
| <code>Device:TDevice;</code>
 +
| The Device entry for this Timer device
 +
|-
 +
|colspan="2"|''Timer Properties''
 +
|-
 +
| <code>TimerId:LongWord;</code>
 +
| Unique Id of this Timer device in the Timer device table
 +
|-
 +
| <code>TimerState:LongWord;</code>
 +
| Timer device state (eg TIMER_STATE_ENABLED)
 +
|-
 +
| <code>DeviceStart:TTimerDeviceStart;</code>
 +
| A device specific DeviceStart method implementing a standard timer device interface (Mandatory)
 +
|-
 +
| <code>DeviceStop:TTimerDeviceStop;</code>
 +
| A device specific DeviceStop method implementing a standard timer device interface (Mandatory)
 +
|-
 +
| <code>DeviceRead:TTimerDeviceRead;</code>
 +
| A device specific DeviceRead method implementing a standard timer device interface (One of Read or Read64 is Mandatory)
 +
|-
 +
| <code>DeviceRead64:TTimerDeviceRead64;</code>
 +
| A device specific DeviceRead64 method implementing a standard timer device interface (One of Read or Read64 is Mandatory
 +
|-
 +
| <code>DeviceWait:TTimerDeviceWait;</code>
 +
| A device specific DeviceWait method implementing a standard timer device interface (Or nil if the operation is not supported)
 +
|-
 +
| <code>DeviceEvent:TTimerDeviceEvent;</code>
 +
| A device specific DeviceEvent method implementing a standard timer device interface (Or nil if the operation is not supported)
 +
|-
 +
| <code>DeviceCancel:TTimerDeviceCancel;</code>
 +
| A device specific DeviceCancel method implementing a standard timer device interface (Or nil if the operation is not supported)
 +
|-
 +
| <code>DeviceGetRate:TTimerDeviceGetRate;</code>
 +
| A device specific DeviceGetRate method implementing a standard timer device interface (Or nil if the default method is suitable)
 +
|-
 +
| <code>DeviceSetRate:TTimerDeviceSetRate;</code>
 +
| A device specific DeviceSetRate method implementing a standard timer device interface (Or nil if the default method is suitable)
 +
|-
 +
| <code>DeviceGetInterval:TTimerDeviceGetInterval;</code>
 +
| A device specific DeviceGetInterval method implementing a standard timer device interface (Or nil if the default method is suitable)
 +
|-
 +
| <code>DeviceSetInterval:TTimerDeviceSetInterval;</code>
 +
| A device specific DeviceSetInterval method implementing a standard timer device interface (Or nil if the default method is suitable)
 +
|-
 +
| <code>DeviceProperties:TTimerDeviceProperties;</code>
 +
| A device specific DeviceProperties method implementing a standard timer device interface (Or nil if the default method is suitable)
 +
|-
 +
|colspan="2"|''Statistics Properties''
 +
|-
 +
| <code>ReadCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WaitCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EventCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|''Driver Properties''
 +
|-
 +
| <code>Lock:TMutexHandle;</code>
 +
| Device lock
 +
|-
 +
| <code>Address:Pointer;</code>
 +
| Device register base address
 +
|-
 +
| <code>Rate:LongWord;</code>
 +
| Device rate (Hz)
 +
|-
 +
| <code>Interval:LongWord;</code>
 +
| Device interval (Ticks)
 +
|-
 +
| <code>Properties:TTimerProperties;</code>
 +
| Device properties
 +
|-
 +
|colspan="2"|''Event Properties''
 +
|-
 +
| <code>Flags:LongWord;</code>
 +
| Event flags for this timer (eg TIMER_EVENT_FLAG_REPEAT)
 +
|-
 +
| <code>Count:Longword;</code>
 +
| Count of threads and events waiting for this timer
 +
|-
 +
| <code>Event:TEventHandle;</code>
 +
| Event for threads waiting for this timer
 +
|-
 +
| <code>Waiters:PTimerWaiter;</code>
 +
| List of events waiting for this timer
 +
|-
 +
|colspan="2"|''Internal Properties''
 +
|-
 +
| <code>Prev:PTimerDevice;</code>
 +
| Previous entry in Timer device table
 +
|-
 +
| <code>Next:PTimerDevice;</code>
 +
| Next entry in Timer device table
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Random enumeration callback'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TRandomEnumerate = function(Random:PRandomDevice; Data:Pointer):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Random notification callback'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TRandomNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Random device start'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TRandomDeviceStart = function(Random:PRandomDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Random device stop'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TRandomDeviceStop = function(Random:PRandomDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Random device seed'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TRandomDeviceSeed = function(Random:PRandomDevice; Seed:LongWord):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Random device read byte'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TRandomDeviceReadByte = function(Random:PRandomDevice):Byte;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Random device read word'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TRandomDeviceReadWord = function(Random:PRandomDevice):Word;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Random device read long word'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TRandomDeviceReadLongWord = function(Random:PRandomDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Random device read quad word'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TRandomDeviceReadQuadWord = function(Random:PRandomDevice):Int64;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Random device read extended'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TRandomDeviceReadExtended = function(Random:PRandomDevice):Extended;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Random device types'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PRandomDevice = ^TRandomDevice;</code>
 +
 
 +
<code>TRandomDevice = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|''Device Properties''
 +
|-
 +
| <code>Device:TDevice;</code>
 +
| The Device entry for this Random device
 +
|-
 +
|colspan="2"|''Random Properties''
 +
|-
 +
| <code>RandomId:LongWord;</code>
 +
| Unique Id of this Random device in the Random device table
 +
|-
 +
| <code>RandomState:LongWord;</code>
 +
| Random device state (eg RANDOM_STATE_ENABLED)
 +
|-
 +
| <code>DeviceStart:TRandomDeviceStart;</code>
 +
| A device specific DeviceStart method implementing a standard random device interface (Mandatory)
 +
|-
 +
| <code>DeviceStop:TRandomDeviceStop;</code>
 +
| A device specific DeviceStop method implementing a standard random device interface (Or nil if the default method is suitable)
 +
|-
 +
| <code>DeviceSeed:TRandomDeviceSeed;</code>
 +
| A device specific DeviceSeed method implementing a standard random device interface (Or nil if the default method is suitable)
 +
|-
 +
| <code>DeviceReadByte:TRandomDeviceReadByte;</code>
 +
| A device specific DeviceReadByte method implementing a standard random device interface (Or nil if the default method is suitable)
 +
|-
 +
| <code>DeviceReadWord:TRandomDeviceReadWord;</code>
 +
| A device specific DeviceReadWord method implementing a standard random device interface (Or nil if the default method is suitable)
 +
|-
 +
| <code>DeviceReadLongWord:TRandomDeviceReadLongWord;</code>
 +
| A device specific DeviceReadLongWord method implementing a standard random device interface (Mandatory)
 +
|-
 +
| <code>DeviceReadQuadWord:TRandomDeviceReadQuadWord;</code>
 +
| A device specific DeviceReadQuadWord method implementing a standard random device interface (Or nil if the default method is suitable)
 +
|-
 +
| <code>DeviceReadExtended:TRandomDeviceReadExtended;</code>
 +
| A device specific DeviceReadExtended method implementing a standard random device interface (Or nil if the default method is suitable)
 +
|-
 +
|colspan="2"|''Statistics Properties''
 +
|-
 +
| <code>SeedCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ReadCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|''Driver Properties''
 +
|-
 +
| <code>Lock:TMutexHandle;</code>
 +
| Device lock
 +
|-
 +
| <code>Address:Pointer;</code>
 +
| Device register base address
 +
|-
 +
|colspan="2"|''Internal Properties''
 +
|-
 +
| <code>Prev:PRandomDevice;</code>
 +
| Previous entry in Random device table
 +
|-
 +
| <code>Next:PRandomDevice;</code>
 +
| Next entry in Random device table
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''Mailbox enumeration callback'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TMailboxEnumerate = function(Mailbox:PMailboxDevice; Data:Pointer):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Mailbox notification callback'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TMailboxNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''Mailbox device start'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TMailboxDeviceStart = function(Mailbox:PMailboxDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Mailbox device stop'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TMailboxDeviceStop = function(Mailbox:PMailboxDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Mailbox device receive'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TMailboxDeviceReceive = function(Mailbox:PMailboxDevice; Channel:LongWord):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Mailbox device send'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TMailboxDeviceSend = function(Mailbox:PMailboxDevice; Channel,Data:LongWord):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Mailbox device call'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TMailboxDeviceCall = function(Mailbox:PMailboxDevice; Channel,Data:LongWord; var Response:LongWord):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Mailbox device get timeout'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TMailboxDeviceGetTimeout = function(Mailbox:PMailboxDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Mailbox device set timeout'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TMailboxDeviceSetTimeout = function(Mailbox:PMailboxDevice; Timeout:LongWord):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Mailbox device types'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PMailboxDevice = ^TMailboxDevice;</code>
 +
 
 +
<code>TMailboxDevice = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|''Device Properties''
 +
|-
 +
| <code>Device:TDevice;</code>
 +
| The Device entry for this Mailbox device
 +
|-
 +
|colspan="2"|''Mailbox Properties''
 +
|-
 +
| <code>MailboxId:LongWord;</code>
 +
| Unique Id of this Mailbox device in the Mailbox device table
 +
|-
 +
| <code>MailboxState:LongWord;</code>
 +
| Mailbox device state (eg MAILBOX_STATE_ENABLED)
 +
|-
 +
| <code>DeviceStart:TMailboxDeviceStart;</code>
 +
| A device specific DeviceStart method implementing a standard mailbox device interface (Or nil if the default method is suitable)
 +
|-
 +
| <code>DeviceStop:TMailboxDeviceStop;</code>
 +
| A device specific DeviceStop method implementing a standard mailbox device interface (Or nil if the default method is suitable)
 +
|-
 +
| <code>DeviceReceive:TMailboxDeviceReceive;</code>
 +
| A device specific DeviceReceive method implementing a standard mailbox device interface (Mandatory)
 +
|-
 +
| <code>DeviceSend:TMailboxDeviceSend;</code>
 +
| A device specific DeviceSend method implementing a standard mailbox device interface (Mandatory)
 +
|-
 +
| <code>DeviceCall:TMailboxDeviceCall;</code>
 +
| A device specific DeviceCall method implementing a standard mailbox device interface (Mandatory)
 +
|-
 +
| <code>DeviceGetTimeout:TMailboxDeviceGetTimeout;</code>
 +
| A device specific DeviceGetTimeout method implementing a standard mailbox device interface (Or nil if the default method is suitable)
 +
|-
 +
| <code>DeviceSetTimeout:TMailboxDeviceSetTimeout;</code>
 +
| A device specific DeviceSetTimeout method implementing a standard mailbox device interface (Or nil if the default method is suitable)
 +
|-
 +
|colspan="2"|''Statistics Properties''
 +
|-
 +
| <code>ReceiveCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SendCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>CallCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|''Driver Properties''
 +
|-
 +
| <code>Lock:TMutexHandle;</code>
 +
| Device lock
 +
|-
 +
| <code>Address:Pointer;</code>
 +
| Device register base address
 +
|-
 +
| <code>Timeout:LongWord;</code>
 +
| Device timeout (Milliseconds)
 +
|-
 +
|colspan="2"|''Internal Properties''
 +
|-
 +
| <code>Prev:PMailboxDevice;</code>
 +
| Previous entry in Mailbox device table
 +
|-
 +
| <code>Next:PMailboxDevice;</code>
 +
| Next entry in Mailbox device table
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''Watchdog enumeration callback'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TWatchdogEnumerate = function(Watchdog:PWatchdogDevice; Data:Pointer):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Watchdog notification callback'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TWatchdogNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Watchdog device start'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TWatchdogDeviceStart = function(Watchdog:PWatchdogDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Watchdog device stop'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TWatchdogDeviceStop = function(Watchdog:PWatchdogDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Watchdog device refresh'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TWatchdogDeviceRefresh = function(Watchdog:PWatchdogDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Watchdog device get remain'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TWatchdogDeviceGetRemain = function(Watchdog:PWatchdogDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Watchdog device get timeout'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TWatchdogDeviceGetTimeout = function(Watchdog:PWatchdogDevice):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Watchdog device set timeout'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TWatchdogDeviceSetTimeout = function(Watchdog:PWatchdogDevice; Timeout:LongWord):LongWord;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Watchdog device types'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PWatchdogDevice = ^TWatchdogDevice;</code>
 +
 
 +
<code>TWatchdogDevice = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|''Device Properties''
 +
|-
 +
| <code>Device:TDevice;</code>
 +
| The Device entry for this Watchdog device
 +
|-
 +
|colspan="2"|''Watchdog Properties''
 +
|-
 +
| <code>WatchdogId:LongWord;</code>
 +
| Unique Id of this Watchdog device in the Watchdog device table
 +
|-
 +
| <code>WatchdogState:LongWord;</code>
 +
| Watchdog device state (eg WATCHDOG_STATE_ENABLED)
 +
|-
 +
| <code>DeviceStart:TWatchdogDeviceStart;</code>
 +
| A device specific DeviceStart method implementing a standard watchdog device interface (Mandatory)
 +
|-
 +
| <code>DeviceStop:TWatchdogDeviceStop;</code>
 +
| A device specific DeviceStop method implementing a standard watchdog device interface (Mandatory)
 +
|-
 +
| <code>DeviceRefresh:TWatchdogDeviceRefresh;</code>
 +
| A device specific DeviceRefresh method implementing a standard watchdog device interface (Mandatory)
 +
|-
 +
| <code>DeviceGetRemain:TWatchdogDeviceGetRemain;</code>
 +
| A device specific DeviceGetRemain method implementing a standard watchdog device interface (Mandatory)
 +
|-
 +
| <code>DeviceGetTimeout:TWatchdogDeviceGetTimeout;</code>
 +
| A device specific DeviceGetTimeout method implementing a standard watchdog device interface (Or nil if the default method is suitable)
 +
|-
 +
| <code>DeviceSetTimeout:TWatchdogDeviceSetTimeout;</code>
 +
| A device specific DeviceSetTimeout method implementing a standard watchdog device interface (Or nil if the default method is suitable)
 +
|-
 +
|colspan="2"|''Statistics Properties''
 +
|-
 +
| <code>StartCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>StopCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>RefreshCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|''Driver Properties''
 +
|-
 +
| <code>Lock:TMutexHandle;</code>
 +
| Device lock
 +
|-
 +
| <code>Address:Pointer;</code>
 +
| Device register base address
 +
|-
 +
| <code>Timeout:LongWord;</code>
 +
| Device timeout (Milliseconds)
 +
|-
 +
|colspan="2"|''Internal Properties''
 +
|-
 +
| <code>Prev:PWatchdogDevice;</code>
 +
| Previous entry in Watchdog device table
 +
|-
 +
| <code>Next:PWatchdogDevice;</code>
 +
| Next entry in Watchdog device table
 +
|-
 +
|}
 +
</div></div> 
 +
<br />
  
 
=== Public variables ===
 
=== Public variables ===

Revision as of 23:05, 17 January 2017

Return to Unit Reference


Description


Ultibo Device interface unit

To be documented

Constants



[Expand]
Device specific constants DEVICE_*


[Expand]
Device signature constants DEVICE_SIGNATURE_*


[Expand]
Device bus constants DEVICE_BUS_*


[Expand]
Device state constants DEVICE_STATE_*


[Expand]
Device Id constants DEVICE_ID_*


[Expand]
Device class constants DEVICE_CLASS_*


[Expand]
Device notification flag constants DEVICE_NOTIFICATION_*


[Expand]
Notifier signature constants NOTIFIER_SIGNATURE_*


[Expand]
Notifier state constants NOTIFIER_STATE_*


[Expand]
Notifier flag constants NOTIFIER_FLAG_*


[Expand]
Device logging constants DEVICE_LOG_*


[Expand]
Driver specific constants DRIVER_*


[Expand]
Driver signature constants DRIVER_SIGNATURE_*


[Expand]
Driver state constants DRIVER_STATE_*


[Expand]
Driver Id constants DRIVER_ID_*


[Expand]
Driver class constants DRIVER_CLASS_*


[Expand]
Host specific constants HOST_*


[Expand]
Host signature constants HOST_SIGNATURE_*


[Expand]
Host state constants HOST_STATE_*


[Expand]
Host Id constants HOST_ID_*


[Expand]
Host class constants HOST_CLASS_*


[Expand]
Clock specific constants CLOCK_*


[Expand]
Clock device type constants CLOCK_TYPE_*


[Expand]
Clock device state constants CLOCK_STATE_*


[Expand]
Clock device flag constants CLOCK_FLAG_*


[Expand]
Timer specific constants TIMER_*


[Expand]
Timer device type constants TIMER_TYPE_*


[Expand]
Timer device state constants TIMER_STATE_*


[Expand]
Timer device flag constants TIMER_FLAG_*


[Expand]
Timer event flag constants TIMER_EVENT_FLAG_*


[Expand]
Random specific constants RANDOM_*


[Expand]
Random device type constants RANDOM_TYPE_*


[Expand]
Random device state constants RANDOM_STATE_*


[Expand]
Random device flag constants RANDOM_FLAG_*


[Expand]
Mailbox specific constants MAILBOX_*


[Expand]
Mailbox device type constants MAILBOX_TYPE_*


[Expand]
Mailbox device state constants MAILBOX_STATE_*


[Expand]
Mailbox device flag constants MAILBOX_FLAG_*


[Expand]
Watchdog specific constants WATCHDOG_*


[Expand]
Watchdog device type constants WATCHDOG_TYPE_*


[Expand]
Watchdog device state constants WATCHDOG_STATE_*


[Expand]
Watchdog device flag constants WATCHDOG_FLAG_*


Type definitions



Device enumeration callback

TDeviceEnumerate = function(Device:PDevice; Data:Pointer):LongWord;

Device notification callback

TDeviceNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;

Device entry

[Expand]

PDevice = ^TDevice;

TDevice = record

Notifier entry

[Expand]

PNotifier = ^TNotifier;

TNotifier = record

Notifier task

[Expand]

PNotifierTask = ^TNotifierTask;

TNotifierTask = record

Driver enumeration callback

TDriverEnumerate = function(Driver:PDriver; Data:Pointer):LongWord;

Driver entry

[Expand]

PDriver = ^TDriver;

TDriver = record

Host enumeration callback

THostEnumerate = function(Host:PHost; Data:Pointer):LongWord;

Host entry

[Expand]

PHost = ^THost;

THost = record

Clock properties

[Expand]

PClockProperties = ^TClockProperties;

TClockProperties = record

Clock enumeration callback

TClockEnumerate = function(Clock:PClockDevice; Data:Pointer):LongWord;

Clock notification callback

TClockNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;

Clock device start

TClockDeviceStart = function(Clock:PClockDevice):LongWord;

Clock device stop

TClockDeviceStop = function(Clock:PClockDevice):LongWord;

Clock device read

TClockDeviceRead = function(Clock:PClockDevice):LongWord;

Clock device read 64

TClockDeviceRead64 = function(Clock:PClockDevice):Int64;

Clock device write 64

TClockDeviceWrite64 = function(Clock:PClockDevice;const Value:Int64):LongWord;

Clock device get rate

TClockDeviceGetRate = function(Clock:PClockDevice):LongWord;

Clock device set rate

TClockDeviceSetRate = function(Clock:PClockDevice;Rate:LongWord):LongWord;

Clock device properties

TClockDeviceProperties = function(Clock:PClockDevice;Properties:PClockProperties):LongWord;

Clock device types

[Expand]

PClockDevice = ^TClockDevice;

TClockDevice = record

Timer specific types

TTimerCallback = TCounterCallback; Counter callback from Platform

Timer properties

[Expand]

PTimerProperties = ^TTimerProperties;

TTimerProperties = record

Timer waiter

[Expand]

PTimerWaiter = ^TTimerWaiter;

TTimerWaiter = record

Timer enumeration callback

TTimerEnumerate = function(Timer:PTimerDevice; Data:Pointer):LongWord;

Timer notification callback

TTimerNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;

TImer device start

TTimerDeviceStart = function(Timer:PTimerDevice):LongWord;

Timer device stop

TTimerDeviceStop = function(Timer:PTimerDevice):LongWord;

Timer device read

TTimerDeviceRead = function(Timer:PTimerDevice):LongWord;

Timer device read 64

TTimerDeviceRead64 = function(Timer:PTimerDevice):Int64;

Timer device wait

TTimerDeviceWait = function(Timer:PTimerDevice):LongWord;

Timer device event

TTimerDeviceEvent = function(Timer:PTimerDevice; Flags:LongWord; Callback:TTimerCallback; Data:Pointer):LongWord;

Timer device cancel

TTimerDeviceCancel = function(Timer:PTimerDevice):LongWord;

Timer device get rate

TTimerDeviceGetRate = function(Timer:PTimerDevice):LongWord;

Timer device set rate

TTimerDeviceSetRate = function(Timer:PTimerDevice; Rate:LongWord):LongWord;

Timer device get interval

TTimerDeviceGetInterval = function(Timer:PTimerDevice):LongWord;

Timer device set interval

TTimerDeviceSetInterval = function(Timer:PTimerDevice; Interval:LongWord):LongWord;

Timer device properties

TTimerDeviceProperties = function(Timer:PTimerDevice; Properties:PTimerProperties):LongWord;

Timer device types

[Expand]

PTimerDevice = ^TTimerDevice;

TTimerDevice = record

Random enumeration callback

TRandomEnumerate = function(Random:PRandomDevice; Data:Pointer):LongWord;

Random notification callback

TRandomNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;

Random device start

TRandomDeviceStart = function(Random:PRandomDevice):LongWord;

Random device stop

TRandomDeviceStop = function(Random:PRandomDevice):LongWord;

Random device seed

TRandomDeviceSeed = function(Random:PRandomDevice; Seed:LongWord):LongWord;

Random device read byte

TRandomDeviceReadByte = function(Random:PRandomDevice):Byte;

Random device read word

TRandomDeviceReadWord = function(Random:PRandomDevice):Word;

Random device read long word

TRandomDeviceReadLongWord = function(Random:PRandomDevice):LongWord;

Random device read quad word

TRandomDeviceReadQuadWord = function(Random:PRandomDevice):Int64;

Random device read extended

TRandomDeviceReadExtended = function(Random:PRandomDevice):Extended;

Random device types

[Expand]

PRandomDevice = ^TRandomDevice;

TRandomDevice = record

Mailbox enumeration callback

TMailboxEnumerate = function(Mailbox:PMailboxDevice; Data:Pointer):LongWord;

Mailbox notification callback

TMailboxNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;

Mailbox device start

TMailboxDeviceStart = function(Mailbox:PMailboxDevice):LongWord;

Mailbox device stop

TMailboxDeviceStop = function(Mailbox:PMailboxDevice):LongWord;

Mailbox device receive

TMailboxDeviceReceive = function(Mailbox:PMailboxDevice; Channel:LongWord):LongWord;

Mailbox device send

TMailboxDeviceSend = function(Mailbox:PMailboxDevice; Channel,Data:LongWord):LongWord;

Mailbox device call

TMailboxDeviceCall = function(Mailbox:PMailboxDevice; Channel,Data:LongWord; var Response:LongWord):LongWord;

Mailbox device get timeout

TMailboxDeviceGetTimeout = function(Mailbox:PMailboxDevice):LongWord;

Mailbox device set timeout

TMailboxDeviceSetTimeout = function(Mailbox:PMailboxDevice; Timeout:LongWord):LongWord;

Mailbox device types

[Expand]

PMailboxDevice = ^TMailboxDevice;

TMailboxDevice = record

Watchdog enumeration callback

TWatchdogEnumerate = function(Watchdog:PWatchdogDevice; Data:Pointer):LongWord;

Watchdog notification callback

TWatchdogNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;

Watchdog device start

TWatchdogDeviceStart = function(Watchdog:PWatchdogDevice):LongWord;

Watchdog device stop

TWatchdogDeviceStop = function(Watchdog:PWatchdogDevice):LongWord;

Watchdog device refresh

TWatchdogDeviceRefresh = function(Watchdog:PWatchdogDevice):LongWord;

Watchdog device get remain

TWatchdogDeviceGetRemain = function(Watchdog:PWatchdogDevice):LongWord;

Watchdog device get timeout

TWatchdogDeviceGetTimeout = function(Watchdog:PWatchdogDevice):LongWord;

Watchdog device set timeout

TWatchdogDeviceSetTimeout = function(Watchdog:PWatchdogDevice; Timeout:LongWord):LongWord;

Watchdog device types

[Expand]

PWatchdogDevice = ^TWatchdogDevice;

TWatchdogDevice = record


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

[Expand]
procedure DevicesInit;
Description: Initialize the Devices unit and device, notifier and driver tables


Device functions

[Expand]
function DeviceCreate:PDevice;
Description: Create a new Device entry


[Expand]
function DeviceCreateEx(Size:LongWord):PDevice;
Description: Create a new Device entry


[Expand]
function DeviceDestroy(Device:PDevice):LongWord;
Description: Destroy an existing Device entry


[Expand]
function DeviceGetName(Device:PDevice):String;
Description: Get the name of the supplied Device


[Expand]
function DeviceSetName(Device:PDevice; const Name:String):LongWord;
Description: Set the name of the supplied Device


[Expand]
function DeviceGetDescription(Device:PDevice):String;
Description: Get the description of the supplied Device


[Expand]
function DeviceSetDescription(Device:PDevice; const Description:String):LongWord;
Description: Set the description of the supplied Device


[Expand]
function DeviceRegister(Device:PDevice):LongWord;
Description: Register a new Device in the Device table


[Expand]
function DeviceDeregister(Device:PDevice):LongWord;
Description: Deregister a Device from the Device table


[Expand]
function DeviceFind(DeviceClass,DeviceId:LongWord):PDevice;
Description: Find a device by ID in the device table


[Expand]
function DeviceFindByName(const Name:String):PDevice;
Description: Find a device by name in the device table


[Expand]
function DeviceFindByDescription(const Description:String):PDevice;
Description: Find a device by description in the device table


[Expand]
function DeviceEnumerate(DeviceClass:LongWord; Callback:TDeviceEnumerate; Data:Pointer):LongWord;
Description: Enumerate all devices in the device table


[Expand]
function DeviceNotification(Device:PDevice; DeviceClass:LongWord; Callback:TDeviceNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: Register a notification for device changes


[Expand]
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


[Expand]
function NotifierRelease(Notifier:PNotifier):LongWord;
Description: Deregister and Destroy a Notifier from the Notifier table


[Expand]
function NotifierFind(Device:PDevice; DeviceClass:LongWord; Callback:TDeviceNotification; Data:Pointer):PNotifier;
Description: To be documented


[Expand]
function NotifierNotify(Device:PDevice; Notification:LongWord):LongWord;
Description: To be documented


Driver functions

[Expand]
function DriverCreate:PDriver;
Description: Create a new Driver entry


[Expand]
function DriverCreateEx(Size:LongWord):PDriver;
Description: Create a new Driver entry


[Expand]
function DriverDestroy(Driver:PDriver):LongWord;
Description: Destroy an existing Driver entry


[Expand]
function DriverGetName(Driver:PDriver):String;
Description: Get the name of the supplied Driver


[Expand]
function DriverSetName(Driver:PDriver; const Name:String):LongWord;
Description: Set the name of the supplied Driver


[Expand]
function DriverRegister(Driver:PDriver):LongWord;
Description: Register a new Driver in the Driver table


[Expand]
function DriverDeregister(Driver:PDriver):LongWord;
Description: Deregister a Driver from the Driver table


[Expand]
function DriverFind(DriverClass,DriverId:LongWord):PDriver;
Description: Find a driver by ID in the driver table


[Expand]
function DriverFindByName(const Name:String):PDriver;
Description: Find a driver by name in the driver table


[Expand]
function DriverEnumerate(DriverClass:LongWord; Callback:TDriverEnumerate; Data:Pointer):LongWord;
Description: Enumerate all drivers in the driver table


Clock device functions

[Expand]
function ClockDeviceStart(Clock:PClockDevice):LongWord;
Description: Start the counter of the specified clock device


[Expand]
function ClockDeviceStop(Clock:PClockDevice):LongWord;
Description: Stop the counter of the specified clock device


[Expand]
function ClockDeviceRead(Clock:PClockDevice):LongWord;
Description: Read the counter value of the specified clock device


[Expand]
function ClockDeviceRead64(Clock:PClockDevice):Int64;
Description: Read the counter value of the specified clock device


[Expand]
function ClockDeviceWrite64(Clock:PClockDevice; const Value:Int64):LongWord;
Description: Write the counter value of the specified clock device


[Expand]
function ClockDeviceGetRate(Clock:PClockDevice):LongWord;
Description: Get the current clock rate in Hz of the specified clock device


[Expand]
function ClockDeviceSetRate(Clock:PClockDevice; Rate:LongWord):LongWord;
Description: Set the current clock rate in Hz of the specified clock device


[Expand]
function ClockDeviceProperties(Clock:PClockDevice; Properties:PClockProperties):LongWord;
Description: Get the properties for the specified clock device


[Expand]
function ClockDeviceCreate:PClockDevice;
Description: Create a new Clock entry


[Expand]
function ClockDeviceCreateEx(Size:LongWord):PClockDevice;
Description: Create a new Clock entry


[Expand]
function ClockDeviceDestroy(Clock:PClockDevice):LongWord;
Description: Destroy an existing clock entry


[Expand]
function ClockDeviceRegister(Clock:PClockDevice):LongWord;
Description: Register a new clock in the clock table


[Expand]
function ClockDeviceDeregister(Clock:PClockDevice):LongWord;
Description: Deregister a clock from the clock table


[Expand]
function ClockDeviceFind(ClockId:LongWord):PClockDevice;
Description: Find a clock device by ID in the clock table


[Expand]
function ClockDeviceFindByName(const Name:String):PClockDevice; inline;
Description: Find a clock device by name in the clock table


[Expand]
function ClockDeviceFindByDescription(const Description:String):PClockDevice; inline;
Description: Find a clock device by description in the clock table


[Expand]
function ClockDeviceEnumerate(Callback:TClockEnumerate; Data:Pointer):LongWord;
Description: Enumerate all clock devices in the clock table


[Expand]
function ClockDeviceNotification(Clock:PClockDevice; Callback:TClockNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: Register a notification for clock device changes


Timer device functions

[Expand]
function TimerDeviceStart(Timer:PTimerDevice):LongWord;
Description: Start the clock and counter of the specified Timer device


[Expand]
function TimerDeviceStop(Timer:PTimerDevice):LongWord;
Description: Stop the clock and counter of the specified Timer device


[Expand]
function TimerDeviceRead(Timer:PTimerDevice):LongWord;
Description: Read the current value of the specified Timer device


[Expand]
function TimerDeviceRead64(Timer:PTimerDevice):Int64;
Description: Read the current value of the specified Timer device


[Expand]
function TimerDeviceWait(Timer:PTimerDevice):LongWord;
Description: Wait for the current interval to expire on the specified Timer device


[Expand]
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


[Expand]
function TimerDeviceCancel(Timer:PTimerDevice):LongWord;
Description: Cancel a previously scheduled event callback function on the specified Timer device


[Expand]
function TimerDeviceGetRate(Timer:PTimerDevice):LongWord;
Description: Get the current clock rate in Hz of the specified Timer device


[Expand]
function TimerDeviceSetRate(Timer:PTimerDevice; Rate:LongWord):LongWord;
Description: Set the current clock rate in Hz of the specified Timer device


[Expand]
function TimerDeviceGetInterval(Timer:PTimerDevice):LongWord;
Description: Get the current interval in ticks of the specified Timer device


[Expand]
function TimerDeviceSetInterval(Timer:PTimerDevice; Interval:LongWord):LongWord;
Description: Set the current interval in ticks of the specified Timer device


[Expand]
function TimerDeviceProperties(Timer:PTimerDevice; Properties:PTimerProperties):LongWord;
Description: Get the properties for the specified Timer device


[Expand]
function TimerDeviceCreate:PTimerDevice;
Description: Create a new Timer entry


[Expand]
function TimerDeviceCreateEx(Size:LongWord):PTimerDevice;
Description: Create a new Timer entry


[Expand]
function TimerDeviceDestroy(Timer:PTimerDevice):LongWord;
Description: Destroy an existing Timer entry


[Expand]
function TimerDeviceRegister(Timer:PTimerDevice):LongWord;
Description: Register a new Timer in the Timer table


[Expand]
function TimerDeviceDeregister(Timer:PTimerDevice):LongWord;
Description: Deregister a Timer from the Timer table


[Expand]
function TimerDeviceFind(TimerId:LongWord):PTimerDevice;
Description: Find a timer device by ID in the timer table


[Expand]
function TimerDeviceFindByName(const Name:String):PTimerDevice; inline;
Description: Find a timer device by name in the timer table


[Expand]
function TimerDeviceFindByDescription(const Description:String):PTimerDevice; inline;
Description: Find a timer device by description in the timer table


[Expand]
function TimerDeviceEnumerate(Callback:TTimerEnumerate; Data:Pointer):LongWord;
Description: Enumerate all timer devices in the timer table


[Expand]
function TimerDeviceNotification(Timer:PTimerDevice; Callback:TTimerNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: Register a notification for timer device changes


Random device functions

[Expand]
function RandomDeviceStart(Random:PRandomDevice):LongWord;
Description: To be documented


[Expand]
function RandomDeviceStop(Random:PRandomDevice):LongWord;
Description: To be documented


[Expand]
function RandomDeviceSeed(Random:PRandomDevice; Seed:LongWord):LongWord;
Description: To be documented


[Expand]
function RandomDeviceReadByte(Random:PRandomDevice):Byte;
Description: To be documented


[Expand]
function RandomDeviceReadWord(Random:PRandomDevice):Word;
Description: To be documented


[Expand]
function RandomDeviceReadLongWord(Random:PRandomDevice):LongWord;
Description: To be documented


[Expand]
function RandomDeviceReadQuadWord(Random:PRandomDevice):Int64;
Description: To be documented


[Expand]
function RandomDeviceReadExtended(Random:PRandomDevice):Extended;
Description: To be documented


[Expand]
function RandomDeviceCreate:PRandomDevice;
Description: Create a new Random entry


[Expand]
function RandomDeviceCreateEx(Size:LongWord):PRandomDevice;
Description: Create a new Random entry


[Expand]
function RandomDeviceDestroy(Random:PRandomDevice):LongWord;
Description: Destroy an existing Random entry


[Expand]
function RandomDeviceRegister(Random:PRandomDevice):LongWord;
Description: Register a new Random in the Random table


[Expand]
function RandomDeviceDeregister(Random:PRandomDevice):LongWord;
Description: Deregister a Random from the Random table


[Expand]
function RandomDeviceFind(RandomId:LongWord):PRandomDevice;
Description: To be documented


[Expand]
function RandomDeviceFindByName(const Name:String):PRandomDevice; inline;
Description: To be documented


[Expand]
function RandomDeviceFindByDescription(const Description:String):PRandomDevice; inline;
Description: To be documented


[Expand]
function RandomDeviceEnumerate(Callback:TRandomEnumerate; Data:Pointer):LongWord;
Description: To be documented


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


Mailbox device functions

[Expand]
function MailboxDeviceStart(Mailbox:PMailboxDevice):LongWord;
Description: To be documented


[Expand]
function MailboxDeviceStop(Mailbox:PMailboxDevice):LongWord;
Description: To be documented


[Expand]
function MailboxDeviceReceive(Mailbox:PMailboxDevice; Channel:LongWord):LongWord;
Description: To be documented


[Expand]
function MailboxDeviceSend(Mailbox:PMailboxDevice; Channel,Data:LongWord):LongWord;
Description: To be documented


[Expand]
function MailboxDeviceCall(Mailbox:PMailboxDevice; Channel,Data:LongWord; var Response:LongWord):LongWord;
Description: To be documented


[Expand]
function MailboxDeviceGetTimeout(Mailbox:PMailboxDevice):LongWord;
Description: To be documented


[Expand]
function MailboxDeviceSetTimeout(Mailbox:PMailboxDevice; Timeout:LongWord):LongWord;
Description: To be documented


[Expand]
function MailboxDeviceCreate:PMailboxDevice;
Description: Create a new Mailbox entry


[Expand]
function MailboxDeviceCreateEx(Size:LongWord):PMailboxDevice;
Description: Create a new Mailbox entry


[Expand]
function MailboxDeviceDestroy(Mailbox:PMailboxDevice):LongWord;
Description: Destroy an existing Mailbox entry


[Expand]
function MailboxDeviceRegister(Mailbox:PMailboxDevice):LongWord;
Description: Register a new Mailbox in the Mailbox table


[Expand]
function MailboxDeviceDeregister(Mailbox:PMailboxDevice):LongWord;
Description: Deregister a Mailbox from the Mailbox table


[Expand]
function MailboxDeviceFind(MailboxId:LongWord):PMailboxDevice;
Description: To be documented


[Expand]
function MailboxDeviceFindByName(const Name:String):PMailboxDevice; inline;
Description: To be documented


[Expand]
function MailboxDeviceFindByDescription(const Description:String):PMailboxDevice; inline;
Description: To be documented


[Expand]
function MailboxDeviceEnumerate(Callback:TMailboxEnumerate; Data:Pointer):LongWord;
Description: To be documented


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


Watchdog device functions

[Expand]
function WatchdogDeviceStart(Watchdog:PWatchdogDevice):LongWord;
Description: To be documented


[Expand]
function WatchdogDeviceStop(Watchdog:PWatchdogDevice):LongWord;
Description: To be documented


[Expand]
function WatchdogDeviceRefresh(Watchdog:PWatchdogDevice):LongWord;
Description: To be documented


[Expand]
function WatchdogDeviceGetRemain(Watchdog:PWatchdogDevice):LongWord;
Description: To be documented


[Expand]
function WatchdogDeviceGetTimeout(Watchdog:PWatchdogDevice):LongWord;
Description: To be documented


[Expand]
function WatchdogDeviceSetTimeout(Watchdog:PWatchdogDevice; Timeout:LongWord):LongWord;
Description: To be documented


[Expand]
function WatchdogDeviceCreate:PWatchdogDevice;
Description: Create a new Watchdog entry


[Expand]
function WatchdogDeviceCreateEx(Size:LongWord):PWatchdogDevice;
Description: Create a new Watchdog entry


[Expand]
function WatchdogDeviceDestroy(Watchdog:PWatchdogDevice):LongWord;
Description: Destroy an existing Watchdog entry


[Expand]
function WatchdogDeviceRegister(Watchdog:PWatchdogDevice):LongWord;
Description: Register a new Watchdog in the Watchdog table


[Expand]
function WatchdogDeviceDeregister(Watchdog:PWatchdogDevice):LongWord;
Description: Deregister a Watchdog from the Watchdog table


[Expand]
function WatchdogDeviceFind(WatchdogId:LongWord):PWatchdogDevice;
Description: To be documented


[Expand]
function WatchdogDeviceFindByName(const Name:String):PWatchdogDevice; inline;
Description: To be documented


[Expand]
function WatchdogDeviceFindByDescription(const Description:String):PWatchdogDevice; inline;
Description: To be documented


[Expand]
function WatchdogDeviceEnumerate(Callback:TWatchdogEnumerate; Data:Pointer):LongWord;
Description: To be documented


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


RTL clock functions

[Expand]
function SysClockRead:LongWord;
Description: To be documented


[Expand]
function SysClockRead64:Int64;
Description: To be documented


RTL timer (counter) functions

[Expand]
function SysTimerAvailable:Boolean;
Description: Check if a timer device is available


[Expand]
function SysTimerRead:LongWord;
Description: Read the current value of the default counter


[Expand]
function SysTimerRead64:Int64;
Description: Read the current value of the default counter


[Expand]
function SysTimerWait:LongWord;
Description: Wait for the current interval to expire on the default counter


[Expand]
function SysTimerEvent(Callback:TTimerCallback; Data:Pointer):LongWord;
Description: Schedule a function to be called when the current interval expires on the default counter


[Expand]
function SysTimerCancel:LongWord;
Description: Cancel a previously scheduled event callback function on the default counter


[Expand]
function SysTimerGetRate:LongWord;
Description: Get the current clock rate in Hz of the default counter


[Expand]
function SysTimerSetRate(Rate:LongWord):LongWord;
Description: Set the current clock rate in Hz of the default counter


[Expand]
function SysTimerGetInterval:LongWord;
Description: Get the current interval in ticks of the default counter


[Expand]
function SysTimerSetInterval(Interval:LongWord):LongWord;
Description: Set the current interval in ticks of the default counter


RTL random functions

[Expand]
function SysRandomAvailable:Boolean;
Description: Check if a random (RNG) device is available


[Expand]
procedure SysRandomize;
Description: To be documented


[Expand]
procedure SysRandomSeed(Seed:LongWord);
Description: To be documented


[Expand]
function SysRandomReadLongInt(Limit:LongInt):LongInt;
Description: To be documented


[Expand]
function SysRandomReadInt64(Limit:Int64):Int64;
Description: To be documented


[Expand]
function SysRandomReadExtended:Extended;
Description: To be documented


RTL watchdog functions

[Expand]
function SysWatchdogAvailable:Boolean;
Description: Check if a watchdog timer device is available


[Expand]
function SysWatchdogStart(Milliseconds:LongWord):LongWord; 
Description: To be documented


[Expand]
function SysWatchdogStop:LongWord;
Description: To be documented


[Expand]
function SysWatchdogRefresh(Milliseconds:LongWord):LongWord;
Description: To be documented


Device helper functions

[Expand]
function DeviceGetCount:LongWord; inline;
Description: Get the current device count


[Expand]
function DeviceCheck(Device:PDevice):PDevice;
Description: Check if the supplied Device is in the device table


[Expand]
function NotifierGetCount:LongWord; inline;
Description: Get the current notifier count


[Expand]
function NotifierCheck(Notifier:PNotifier):PNotifier;
Description: Check if the supplied Notifier is in the notifier table


[Expand]
function DeviceBusToString(DeviceBus:LongWord):String;
Description: To be documented


[Expand]
function DeviceStateToString(DeviceState:LongWord):String;
Description: To be documented


[Expand]
function DeviceClassToString(DeviceClass:LongWord):String;
Description: To be documented


[Expand]
function NotificationToString(Notification:LongWord):String;
Description: To be documented


[Expand]
procedure DeviceLog(Level:LongWord; Device:PDevice; const AText:String);
Description: To be documented


[Expand]
procedure DeviceLogInfo(Device:PDevice; const AText:String);
Description: To be documented


[Expand]
procedure DeviceLogError(Device:PDevice; const AText:String);
Description: To be documented


[Expand]
procedure DeviceLogDebug(Device:PDevice; const AText:String);
Description: To be documented


Driver helper functions

[Expand]
function DriverGetCount:LongWord; inline;
Description: Get the current driver count


[Expand]
function DriverCheck(Driver:PDriver):PDriver;
Description: Check if the supplied Driver is in the driver table


[Expand]
function DriverStateToString(DriverState:LongWord):String;
Description: To be documented


[Expand]
function DriverClassToString(DriverClass:LongWord):String;
Description: To be documented


Clock device helper functions

[Expand]
function ClockDeviceGetCount:LongWord; inline;
Description: Get the current clock device count


[Expand]
function ClockDeviceGetDefault:PClockDevice; inline;
Description: Get the current default clock device


[Expand]
function ClockDeviceSetDefault(Clock:PClockDevice):LongWord;
Description: Set the current default clock device


[Expand]
function ClockDeviceCheck(Clock:PClockDevice):PClockDevice;
Description: Check if the supplied Clock is in the Clock table


Timer device helper functions

[Expand]
function TimerDeviceGetCount:LongWord; inline;
Description: Get the current timer device count


[Expand]
function TimerDeviceGetDefault:PTimerDevice; inline;
Description: Get the current default timer device


[Expand]
function TimerDeviceSetDefault(Timer:PTimerDevice):LongWord; 
Description: Set the current default timer device


[Expand]
function TimerDeviceCheck(Timer:PTimerDevice):PTimerDevice;
Description: Check if the supplied Timer is in the Timer table


[Expand]
function TimerDeviceCreateWaiter(Timer:PTimerDevice; Callback:TTimerCallback; Data:Pointer):PTimerWaiter;
Description: Create a new waiter using the supplied parameters


[Expand]
function TimerDeviceDestroyWaiter(Timer:PTimerDevice; Waiter:PTimerWaiter):LongWord;
Description: Destroy an existing waiter


[Expand]
function TimerDeviceRegisterWaiter(Timer:PTimerDevice; Waiter:PTimerWaiter):LongWord;
Description: Register a waiter in the waiter list of the supplied Timer


[Expand]
function TimerDeviceDeregisterWaiter(Timer:PTimerDevice; Waiter:PTimerWaiter):LongWord;
Description: Deregister a waiter from the waiter list of the supplied Timer


Random device helper functions

[Expand]
function RandomDeviceGetCount:LongWord; inline;
Description: Get the current random device count


[Expand]
function RandomDeviceGetDefault:PRandomDevice; inline;
Description: Get the current default random device


[Expand]
function RandomDeviceSetDefault(Random:PRandomDevice):LongWord;
Description: Set the current default random device


[Expand]
function RandomDeviceCheck(Random:PRandomDevice):PRandomDevice;
Description: Check if the supplied Random is in the Random table


Mailbox device helper functions

[Expand]
function MailboxDeviceGetCount:LongWord; inline;
Description: Get the current mailbox device count


[Expand]
function MailboxDeviceGetDefault:PMailboxDevice; inline;
Description: Get the current default mailbox device


[Expand]
function MailboxDeviceSetDefault(Mailbox:PMailboxDevice):LongWord; 
Description: Set the current default mailbox device


[Expand]
function MailboxDeviceCheck(Mailbox:PMailboxDevice):PMailboxDevice;
Description: Check if the supplied Mailbox is in the Mailbox table


Watchdog device helper functions

[Expand]
function WatchdogDeviceGetCount:LongWord; inline;
Description: Get the current watchdog device count


[Expand]
function WatchdogDeviceGetDefault:PWatchdogDevice; inline;
Description: Get the current default watchdog device


[Expand]
function WatchdogDeviceSetDefault(Watchdog:PWatchdogDevice):LongWord;
Description: Set the current default watchdog device


[Expand]
function WatchdogDeviceCheck(Watchdog:PWatchdogDevice):PWatchdogDevice;
Description: Check if the supplied Watchdog is in the Watchdog table


Return to Unit Reference