Difference between revisions of "Unit Platform"

From Ultibo.org
Jump to: navigation, search
Line 7,982: Line 7,982:
 
'''Clock functions'''
 
'''Clock functions'''
  
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function ClockTicks:LongWord;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current number of clock ticks</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! '''The current number of clock ticks'''
 +
| The
 +
|-
 +
! '''Note'''
 +
| When this reaches CLOCK_TICKS_PER_SECOND then ClockSeconds is incremented and this is reset to zero
 +
|-
 +
|}
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function ClockSeconds:LongWord;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the number of clock seconds since the system was started</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! '''Return'''
 +
| The current number of clock seconds
 +
|-
 +
! '''Note'''
 +
| This forms the system clock
 +
|-
 +
|}
 +
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 
<pre style="border: 0; padding-bottom:0px;">function ClockGetTime:Int64;</pre>
 
<pre style="border: 0; padding-bottom:0px;">function ClockGetTime:Int64;</pre>

Revision as of 06:56, 7 June 2017

Return to Unit Reference


Description


Ultibo Platform interface unit

To be documented

Constants



[Expand]
DMA data flag DMA_DATA_FLAG_*


[Expand]
Page table flag PAGE_TABLE_FLAG_*


[Expand]
Vector table entry VECTOR_TABLE_ENTRY_*


[Expand]
Exception type EXCEPTION_TYPE_*


[Expand]
Platform logging PLATFORM_LOG_LEVEL_*


[Expand]
IRQ logging IRQ_LOG_LEVEL_*


[Expand]
FIQ logging FIQ_LOG_LEVEL_*


[Expand]
SWI logging SWI_LOG_LEVEL_*


Type definitions



IRQ mask

TIRQMask = LongWord;

FIQ mask

TFIQMask = LongWord;

IRQ/FIQ mask

TIRQFIQMask = LongWord;

Abort mask

TAbortMask = LongWord;

DMA data

[Expand]

PDMAData = ^TDMAData;

TDMAData = record

System call request (SWI)

[Expand]

PSystemCallRequest = ^TSystemCallRequest;

TSystemCallRequest = record

Handle entry

[Expand]

PHandleEntry = ^THandleEntry;

THandleEntry = record

Shutdown entry

[Expand]

PShutdownEntry = ^TShutdownEntry;

TShutdownEntry = record

Interrupt entry (IRQ/FIQ)

[Expand]

PInterruptEntry = ^TInterruptEntry;

TInterruptEntry = record

System call entry (SWI)

[Expand]

PSystemCallEntry = ^TSystemCallEntry;

TSystemCallEntry = record

Page table entry

[Expand]

PPageTableEntry = ^TPageTableEntry;

TPageTableEntry = record

Platform lock

[Expand]

PPlatformLock = ^TPlatformLock;

TPlatformLock = record

Platform semaphore

[Expand]

PPlatformSemaphore = ^TPlatformSemaphore;

TPlatformSemaphore = record

CPU initialization

TCPUInit = procedure;

FPU initialization

TFPUInit = procedure;

GPU initialization

TGPUInit = procedure;

MMU initialization

TMMUInit = procedure;

SMP initialization

TSMPInit = procedure;

Cache initialization

TCacheInit = procedure;

Board initialization

TBoardInit = procedure;

Memory initialization

TMemoryInit = procedure;

Clock initialization

TClockInit = procedure;

Power initialization

TPowerInit = procedure;

Mailbox initialization

TMailboxInit = procedure;

Interrupt initialization

TInterruptInit = procedure;

Peripheral initialization

TPeripheralInit = procedure;

Framebuffer initialization

TFramebufferInit = procedure;

Parse boot tags

TParseBootTags = procedure;

Parse command line

TParseCommandLine = procedure;

Parse environment

TParseEnvironment = procedure;

Interrupt (IRQ/FIQ) handler

TInterruptHandler = procedure(Parameter:Pointer);

Interrupt (IRQ/FIQ) ex handler

TInterruptExHandler = function(CPUID:LongWord; Thread:TThreadHandle; Parameter:Pointer):TThreadHandle;

System call (SWI) handler

TSystemCallHandler = procedure(Request:PSystemCallRequest);

System call (SWI) ex handler

TSystemCallExHandler = function(CPUID:LongWord; Thread:TThreadHandle; Request:PSystemCallRequest):TThreadHandle;

Thread yield

TThreadYield = function:LongWord;

Thread wait

TThreadWait = function(List:TListHandle; Lock:TSpinHandle; Flags:LongWord):LongWord;

Thread wait ex

TThreadWaitEx = function(List:TListHandle; Lock:TSpinHandle; Flags,Timeout:LongWord):LongWord;

Thread release

TThreadRelease = function(List:TListHandle):LongWord;

Thread abandon

TThreadAbandon = function(List:TListHandle):LongWord;

Thread wake

TThreadWake = function(Thread:TThreadHandle):LongWord;

Thread ready

TThreadReady = function(Thread:TThreadHandle; Reschedule:Boolean):LongWord;

Thread timeout

TThreadTimeout = function(Thread:TThreadHandle):LongWord;

Timer event

TTimerEvent = procedure(Data:Pointer);

Worker task

TWorkerTask = procedure(Data:Pointer);

Worker callback

TWorkerCallback = procedure(Data:Pointer);

Counter callback

TCounterCallback = procedure(Data:Pointer);

GPIO callback

TGPIOCallback = procedure(Data:Pointer; Pin,Trigger:LongWord);

Boot blink

TBootBlink = procedure;

Boot output

TBootOutput = procedure(Value:LongWord);

Power LED enable

TPowerLEDEnable = procedure;

Power LED on

TPowerLEDOn = procedure;

Power LED off

TPowerLEDOff = procedure;

Activity LED enable

TActivityLEDEnable = procedure;

Activity LED on

TActivityLEDOn = procedure;

Activity LED off

TActivityLEDOff = procedure;

Counter available

TCounterAvailable = function:Boolean;

Counter read

TCounterRead = function:LongWord;

Counter read64

TCounterRead64 = function:Int64;

Counter wait

TCounterWait = function:LongWord;

Counter event

TCounterEvent = function(Callback:TCounterCallback; Data:Pointer):LongWord;

Counter cancel

TCounterCancel = function:LongWord;

Counter get rate

TCounterGetRate = function:LongWord;

Counter set rate

TCounterSetRate = function(Rate:LongWord):LongWord;

Counter get interval

TCounterGetInterval = function:LongWord;

Counter set interval

TCounterSetInterval = function(Interval:LongWord):LongWord;

Mailbox receive

TMailboxReceive = function(Mailbox,Channel:LongWord):LongWord;

Mailbox send

TMailboxSend = procedure(Mailbox,Channel,Data:LongWord);

Mailbox call

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

Mailbox call ex

TMailboxCallEx = function(Mailbox,Channel,Data:LongWord; var Response:LongWord; Timeout:LongWord):LongWord;

Mailbox property call

TMailboxPropertyCall = function(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord):LongWord;

Mailbox property call ex

TMailboxPropertyCallEx = function(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord; Timeout:LongWord):LongWord;

Random available

TRandomAvailable = function:Boolean;

Random seed

TRandomSeed = procedure(Seed:LongWord);

Random read long int

TRandomReadLongInt = function(Limit:LongInt):LongInt;

Random read int64

TRandomReadInt64 = function(Limit:Int64):Int64;

Random read extended

TRandomReadExtended = function:Extended;

Watchdog available

TWatchdogAvailable = function:Boolean;

Watchdog start

TWatchdogStart = function(Milliseconds:LongWord):LongWord;

Watchdog stop

TWatchdogStop = function:LongWord;

Watchdog refresh

TWatchdogRefresh = function(Milliseconds:LongWord):LongWord;

Request IRQ

TRequestIRQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord;

Release IRQ

TReleaseIRQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord;

Request ex IRQ

TRequestExIRQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;

Release ex IRQ

TReleaseExIRQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;

Request FIQ

TRequestFIQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord;

Release FIQ

TReleaseFIQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; arameter:Pointer):LongWord;

Request ex FIQ

TRequestExFIQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;

Release ex FIQ

TReleaseExFIQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;

System call

TSystemCall = procedure(Number:LongWord; Param1,Param2,Param3:PtrUInt);

Register system call

TRegisterSystemCall = function(Number:LongWord; Handler:TSystemCallHandler):LongWord;

Deregister system call

TDeregisterSystemCall = function(Number:LongWord; Handler:TSystemCallHandler):LongWord;

Register system call ex

TRegisterSystemCallEx = function(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord;

Deregister system call ex

TDeregisterSystemCallEx = function(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord;

Get interrupt count

TGetInterruptCount = function:LongWord;

Get interrupt start

TGetInterruptStart = function:LongWord;

Get interrupt entry

TGetInterruptEntry = function(Number:LongWord):TInterruptEntry;

Get local interrupt count

TGetLocalInterruptCount = function:LongWord;

Get local interrupt start

TGetLocalInterruptStart = function:LongWord;

Get local interrupt entry

TGetLocalInterruptEntry = function(CPUID,Number:LongWord):TInterruptEntry;

Get system call count

TGetSystemCallCount = function:LongWord;

Get system call entry

TGetSystemCallEntry = function(Number:LongWord):TSystemCallEntry;

System restart

TSystemRestart = function(Delay:LongWord):LongWord;

System shutdown

TSystemShutdown = function(Delay:LongWord):LongWord;

System get uptime

TSystemGetUptime = function:Int64;

System get command line

TSystemGetCommandLine = function:String;

System get environment

TSystemGetEnvironment = function:Pointer;

CPU get arch

TCPUGetArch = function:LongWord;

CPU get type

TCPUGetType = function:LongWord;

CPU get boot

TCPUGetBoot = function:LongWord;

CPU get mask

TCPUGetMask = function:LongWord;

CPU get count

TCPUGetCount = function:LongWord;

CPU get mode

TCPUGetMode = function:LongWord;

CPU get state

TCPUGetState = function:LongWord;

CPU get current

TCPUGetCurrent = function:LongWord;

CPU get memory

TCPUGetMemory = function(var Address:PtrUInt; var Length:LongWord):LongWord;

CPU get percentage

TCPUGetPercentage = function(CPUID:LongWord):Double;

CPU get utilization

TCPUGetUtilization = function(CPUID:LongWord):LongWord;

CPU get model

TCPUGetModel = function:LongWord;

CPU get revision

TCPUGetRevision = function:LongWord;

CPU get description

TCPUGetDescription = function:String;

FPU get type

TFPUGetType = function:LongWord;

FPU get state

TFPUGetState = function:LongWord;

GPU get type

TGPUGetType = function:LongWord;

GPU get state

TGPUGetState = function:LongWord;

GPU get memory

TGPUGetMemory = function(var Address:PtrUInt; var Length:LongWord):LongWord;

L1 cache get type

TL1CacheGetType = function:LongWord;

L1 data cache get size

TL1DataCacheGetSize = function:LongWord;

L1 data cache get line size

TL1DataCacheGetLineSize = function:LongWord;

L1 instruction cache get size

TL1InstructionCacheGetSize = function:LongWord;

L1 instruction cache get line size

TL1InstructionCacheGetLineSize = function:LongWord;

L2 cache get type

TL2CacheGetType = function:LongWord;

L2 cache get size

TL2CacheGetSize = function:LongWord;

L2 cache get line size

TL2CacheGetLineSize = function:LongWord;

Board get type

TBoardGetType = function:LongWord;

Board get model

TBoardGetModel = function:LongWord;

Board get serial

TBoardGetSerial = function:Int64;

Board get revision

TBoardGetRevision = function:LongWord;

Board get MAC address

TBoardGetMACAddress = function:String;

Firmware get revision

TFirmwareGetRevision = function:LongWord;

Machine get type

TMachineGetType = function:LongWord;

Memory get base

TMemoryGetBase = function:PtrUInt;

Memory get size

TMemoryGetSize = function:LongWord;

Memory get page size

TMemoryGetPageSize = function:LongWord;

Memory get large page size

TMemoryGetLargePageSize = function:LongWord;

Power get wait

TPowerGetWait = function(PowerId:LongWord):LongWord;

Power get state

TPowerGetState = function(PowerId:LongWord):LongWord;

Power set state

TPowerSetState = function(PowerId,State:LongWord; Wait:Boolean):LongWord;

Clock get count

TClockGetCount = function:LongWord;

Clock get total

TClockGetTotal = function:Int64;

Clock update offset

TClockUpdateOffset = function:LongWord;

Clock get rate

TClockGetRate = function(ClockId:LongWord):LongWord;

Clock set rate

TClockSetRate = function(ClockId,Rate:LongWord; Turbo:Boolean):LongWord;

Clock get state

TClockGetState = function(ClockId:LongWord):LongWord;

Clock set state

TClockSetState = function(ClockId,State:LongWord):LongWord;

Clock get min rate

TClockGetMinRate = function(ClockId:LongWord):LongWord;

Clock get max rate

TClockGetMaxRate = function(ClockId:LongWord):LongWord;

Turbo get state

TTurboGetState = function(TurboId:LongWord):LongWord;

Turbo set state

TTurboSetState = function(TurboId,State:LongWord):LongWord;

Voltage get value

TVoltageGetValue = function (VoltageId:LongWord):LongWord;

Voltage set value

TVoltageSetValue = function (VoltageId,Value:LongWord):LongWord;

Voltage get min value

TVoltageGetMinValue = function(VoltageId:LongWord):LongWord;

Voltage get max value

TVoltageGetMaxValue = function(VoltageId:LongWord):LongWord;

Temperature get current

TTemperatureGetCurrent = function(TemperatureId:LongWord):LongWord;

Temperature get maximum

TTemperatureGetMaximum = function(TemperatureId:LongWord):LongWord;

GPU memory allocate

TGPUMemoryAllocate = function(Length,Alignment,Flags:LongWord):THandle;

GPU memory release

TGPUMemoryRelease = function(Handle:THandle):LongWord;

GPU memory lock

TGPUMemoryLock = function(Handle:THandle):LongWord;

GPU memory unlock

TGPUMemoryUnlock = function(Handle:THandle):LongWord;

GPU execute code

TGPUExecuteCode = function(Address:Pointer; R0,R1,R2,R3,R4,R5:LongWord):LongWord;

Dispmanx handle get

TDispmanxHandleGet = function(Resource:THandle):THandle;

EDID block get

TEDIDBlockGet = function(Block:LongWord; Buffer:Pointer; Length:LongWord):LongWord;

Framebuffer available

TFramebufferAvailable = function:Boolean;

Framebuffer allocate

TFramebufferAllocate = function(Alignment:LongWord; var Address,Length:LongWord):LongWord;

Framebuffer release

TFramebufferRelease = function:LongWord;

Framebuffer set state

TFramebufferSetState = function(State:LongWord):LongWord;

Framebuffer get dimensions

TFramebufferGetDimensions = function(var Width,Height,Top,Bottom,Left,Right:LongWord):LongWord;

Framebuffer get physical

TFramebufferGetPhysical = function(var Width,Height:LongWord):LongWord;

Framebuffer set physical

TFramebufferSetPhysical = function(var Width,Height:LongWord):LongWord;

Framebuffer test physical

TFramebufferTestPhysical = function(var Width,Height:LongWord):LongWord;

Framebuffer get virtual

TFramebufferGetVirtual = function(var Width,Height:LongWord):LongWord;

Framebuffer set virtual

TFramebufferSetVirtual = function(var Width,Height:LongWord):LongWord;

Framebuffer test virtual

TFramebufferTestVirtual = function(var Width,Height:LongWord):LongWord;

Framebuffer get depth

TFramebufferGetDepth = function(var Depth:LongWord):LongWord;

Framebuffer set depth

TFramebufferSetDepth = function(var Depth:LongWord):LongWord;

Framebuffer test depth

TFramebufferTestDepth = function(var Depth:LongWord):LongWord;

Framebuffer get pixel order

TFramebufferGetPixelOrder = function(var Order:LongWord):LongWord;

Framebuffer set pixel order

TFramebufferSetPixelOrder = function(var Order:LongWord):LongWord;

Framebuffer test pixel order

TFramebufferTestPixelOrder = function(var Order:LongWord):LongWord;

Framebuffer get alpha mode

TFramebufferGetAlphaMode = function(var Mode:LongWord):LongWord;

Framebuffer set alpha mode

TFramebufferSetAlphaMode = function(var Mode:LongWord):LongWord;

Framebuffer test alpha mode

TFramebufferTestAlphaMode = function(var Mode:LongWord):LongWord;

Framebuffer get pitch

TFramebufferGetPitch = function:LongWord;

Framebuffer get offset

TFramebufferGetOffset = function(var X,Y:LongWord):LongWord;

Framebuffer set offset

TFramebufferSetOffset = function(var X,Y:LongWord):LongWord;

Framebuffer test offset

TFramebufferTestOffset = function(var X,Y:LongWord):LongWord;

Framebuffer get overscan

TFramebufferGetOverscan = function(var Top,Bottom,Left,Right:LongWord):LongWord;

Framebuffer set overscan

TFramebufferSetOverscan = function(var Top,Bottom,Left,Right:LongWord):LongWord;

Framebuffer test overscan

TFramebufferTestOverscan = function(var Top,Bottom,Left,Right:LongWord):LongWord;

Framebuffer get palette

TFramebufferGetPalette = function(Buffer:Pointer; Length:LongWord):LongWord;

Framebuffer set palette

TFramebufferSetPalette = function(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord;

Framebuffer test palette

TFramebufferTestPalette = function(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord;

Framebuffer test vsync

TFramebufferTestVsync = function:LongWord;

Framebuffer set vsync

TFramebufferSetVsync = function:LongWord;

Framebuffer set backlight

TFramebufferSetBacklight = function(Brightness:LongWord):LongWord;

Touch get buffer

TTouchGetBuffer = function(var Address:LongWord):LongWord;

Cursor set default

TCursorSetDefault = function:LongWord;

Cursor set info

TCursorSetInfo = function(Width,Height,HotspotX,HotspotY:LongWord; Pixels:Pointer; Length:LongWord):LongWord;

Cursor set state

TCursorSetState = function(Enabled:Boolean; X,Y:LongWord; Relative:Boolean):LongWord;

DMA available

TDMAAvailable = function:Boolean;

DMA transfer

TDMATransfer = function(Data:PDMAData; Direction,Peripheral:LongWord):LongWord;

DMA fill memory

TDMAFillMemory = function(Dest:Pointer; Size:LongWord; Value:Byte):LongWord;

DMA copy memory

TDMACopyMemory = function(Source,Dest:Pointer; Size:LongWord):LongWord;

DMA read peripheral

TDMAReadPeripheral = function(Address,Dest:Pointer; Size,Peripheral:LongWord):LongWord;

DMA write peripheral

TDMAWritePeripheral = function(Source,Address:Pointer; Size,Peripheral:LongWord):LongWord;

DMA allocate buffer

TDMAAllocateBuffer = function(Size:LongWord):Pointer;

DMA allocate buffer ex

TDMAAllocateBufferEx = function(var Size:LongWord):Pointer;

DMA release buffer

TDMAReleaseBuffer = function(Buffer:Pointer):LongWord;

DMA get channels

TDMAGetChannels = function:LongWord;

GPIO available

TGPIOAvailable = function:Boolean;

GPIO read

TGPIORead = function(Reg:LongWord):LongWord;

GPIO write

TGPIOWrite = procedure(Reg,Value:LongWord);

GPIO input get

TGPIOInputGet = function(Pin:LongWord):LongWord;

GPIO input wait

TGPIOInputWait = function(Pin,Trigger,Timeout:LongWord):LongWord;

GPIO input event

TGPIOInputEvent = function(Pin,Trigger,Timeout:LongWord; Callback:TGPIOCallback; Data:Pointer):LongWord;

GPIO output set

TGPIOOutputSet = function(Pin,Level:LongWord):LongWord;

GPIO pull get

TGPIOPullGet = function(Pin:LongWord):LongWord;

GPIO pull select

TGPIOPullSelect = function(Pin,Mode:LongWord):LongWord;

GPIO function get

TGPIOFunctionGet = function(Pin:LongWord):LongWord;

GPIO function select

TGPIOFunctionSelect = function(Pin,Mode:LongWord):LongWord;

Virtual GPIO input get

TVirtualGPIOInputGet = function(Pin:LongWord):LongWord;

Virtual GPIO output set

TVirtualGPIOOutputSet = function(Pin,Level:LongWord):LongWord;

Virtual GPIO function get

TVirtualGPIOFunctionGet = function(Pin:LongWord):LongWord;

Virtual GPIO function select

TVirtualGPIOFunctionSelect = function(Pin,Mode:LongWord):LongWord;

SPI available

TSPIAvailable = function:Boolean;

SPI start

TSPIStart = function(Mode,ClockRate,ClockPhase,ClockPolarity:LongWord):LongWord;

SPI stop

TSPIStop = function:LongWord;

SPI read

TSPIRead = function(ChipSelect:Word; Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord;

SPI write

TSPIWrite = function(ChipSelect:Word; Source:Pointer; Size:LongWord; var Count:LongWord):LongWord;

SPI write read

TSPIWriteRead = function(ChipSelect:Word; Source,Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord;

SPI get mode

TSPIGetMode = function:LongWord;

SPI set mode

TSPISetMode = function(Mode:LongWord):LongWord;

SPI get clock rate

TSPIGetClockRate = function(ChipSelect:Word):LongWord;

SPI set clock rate

TSPISetClockRate = function(ChipSelect:Word; ClockRate:LongWord):LongWord;

SPI get clock phase

TSPIGetClockPhase = function:LongWord;

SPI set clock phase

TSPISetClockPhase = function(ClockPhase:LongWord):LongWord;

SPI get clock polarity

TSPIGetClockPolarity = function:LongWord;

SPI set clock polarity

TSPISetClockPolarity = function(ClockPolarity:LongWord):LongWord;

SPI get select polarity

TSPIGetSelectPolarity = function(ChipSelect:Word):LongWord;

SPI set select polarity

TSPISetSelectPolarity = function(ChipSelect:Word; SelectPolarity:LongWord):LongWord;

I2C available

TI2CAvailable = function:Boolean;

I2C start

TI2CStart = function(Rate:LongWord):LongWord;

I2C stop

TI2CStop = function:LongWord;

I2C read

TI2CRead = function(Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;

I2C write

TI2CWrite = function(Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;

I2C write read

TI2CWriteRead = function(Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord;

I2C write write

TI2CWriteWrite = function(Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord;

I2C get rate

TI2CGetRate = function:LongWord;

I2C set rate

TI2CSetRate = function(Rate:LongWord):LongWord;

I2C get address

TI2CGetAddress = function:Word;

I2C set address

TI2CSetAddress = function(Address:Word):LongWord;

PWM available

TPWMAvailable = function:Boolean;

PWM start

TPWMStart = function:LongWord;

PWM stop

TPWMStop = function:LongWord;

PWM write

TPWMWrite = function(Value:LongWord):LongWord;

PWM set mode

TPWMSetMode = function(Mode:LongWord):LongWord;

PWM set range

TPWMSetRange = function(Range:LongWord):LongWord;

PWM set frequency

TPWMSetFrequency = function(Frequency:LongWord):LongWord;

PWM configure

TPWMConfigure = function(DutyNS,PeriodNS:LongWord):LongWord;

RTC available

TRTCAvailable = function:Boolean;

RTC get time

TRTCGetTime = function:Int64;

RTC set time

TRTCSetTime = function(const Time:Int64):Int64;

Serial available

TSerialAvailable = function:Boolean;

Serial open

TSerialOpen = function(BaudRate,DataBits,StopBits,Parity,FlowControl,ReceiveDepth,TransmitDepth:LongWord):LongWord;

Serial close

TSerialClose = function:LongWord;

Serial read

TSerialRead = function(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;

Serial write

TSerialWrite = function(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;

Peripheral get base

TPeripheralGetBase = function:PtrUInt;

Peripheral get size

TPeripheralGetSize = function:LongWord;

Peripheral read

TPeripheralRead = function(Base,Reg:LongWord):LongWord;

Peripheral write

TPeripheralWrite = procedure(Base,Reg,Value:LongWord);

Local Peripheral get base

TLocalPeripheralGetBase = function:PtrUInt;

Local peripheral get size

TLocalPeripheralGetSize = function:LongWord;

Get SP

TGetSP = function:PtrUInt;

Get PC

TGetPC = function:PtrUInt;

Get IRQ

TGetIRQ = function:Boolean;

Enable IRQ

TEnableIRQ = procedure;

Disable IRQ

TDisableIRQ = procedure;

Save IRQ

TSaveIRQ = function:TIRQMask;

Restore IRQ

TRestoreIRQ = function(IRQMask:TIRQMask):TIRQMask;

Get FIQ

TGetFIQ = function:Boolean;

Enable FIQ

TEnableFIQ = procedure;

Disable FIQ

TDisableFIQ = procedure;

Save FIQ

TSaveFIQ = function:TFIQMask;

Restore FIQ

TRestoreFIQ = function(FIQMask:TFIQMask):TFIQMask;

Enable IRQ/FIQ

TEnableIRQFIQ = procedure;

Disable IRQ/FIQ

TDisableIRQFIQ = procedure;

Save IRQ/FIQ

TSaveIRQFIQ = function:TIRQFIQMask;

Restore IRQ/FIQ

TRestoreIRQFIQ = function(IRQFIQMask:TIRQFIQMask):TIRQFIQMask;

Get abort

TGetAbort = function:Boolean;

Enable abort

TEnableAbort = procedure;

Disable abort

TDisableAbort = procedure;

Save abort

TSaveAbort = function:TAbortMask;

Restore abort

TRestoreAbort = function(AbortMask:TAbortMask):TAbortMask;

Halt

THalt = procedure;

Pause

TPause = procedure;

Halt thread

THaltThread = function(ExitCode:LongWord):LongWord;

Send event

TSendEvent = procedure;

Wait for event

TWaitForEvent = procedure;

Wait for interrupt

TWaitForInterrupt = procedure;

Read memory barrier

TReadMemoryBarrier = procedure;

Write memory barrier

TWriteMemoryBarrier = procedure;

Data memory barrier

TDataMemoryBarrier = procedure;

Data synchronization barrier

TDataSynchronizationBarrier = procedure;

Instruction memory barrier

TInstructionMemoryBarrier = procedure;

Invalidate TLB

TInvalidateTLB = procedure;

Invalidate data TLB

TInvalidateDataTLB = procedure;

Invalidate instruction TLB

TInvalidateInstructionTLB = procedure;

Invalidate cache

TInvalidateCache = procedure;

Clean data cache

TCleanDataCache = procedure;

Invalidate data cache

TInvalidateDataCache = procedure;

Clean and invalidate data cache

TCleanAndInvalidateDataCache = procedure;

Invalidate instruction cache

TInvalidateInstructionCache = procedure;

Clean data cache range

TCleanDataCacheRange = procedure(Address,Size:LongWord);

Invaliate data cache range

TInvalidateDataCacheRange = procedure(Address,Size:LongWord);

Clean and invalidate data cache range

TCleanAndInvalidateDataCacheRange = procedure(Address,Size:LongWord);

Invalidate instruction cache range

TInvalidateInstructionCacheRange = procedure(Address,Size:LongWord);

Flush prefetch buffer

TFlushPrefetchBuffer = procedure;

Flush branch target cache

TFlushBranchTargetCache = procedure;

Context switch

TContextSwitch = procedure(OldStack,NewStack:Pointer; NewThread:TThreadHandle);

Context switch IRQ

TContextSwitchIRQ = procedure(OldStack,NewStack:Pointer; NewThread:TThreadHandle);

Context switch FIQ

TContextSwitchFIQ = procedure(OldStack,NewStack:Pointer; NewThread:TThreadHandle);

Context switch SWI

TContextSwitchSWI = procedure(OldStack,NewStack:Pointer; NewThread:TThreadHandle);

Interlocked or

TInterlockedOr = function(var Target:LongInt; Value:LongInt):LongInt;

Interlocked x or

TInterlockedXor = function(var Target:LongInt; Value:LongInt):LongInt;

Interlocked and

TInterlockedAnd = function(var Target:LongInt; Value:LongInt):LongInt;

Interlocked decrement

TInterlockedDecrement = function(var Target:LongInt):LongInt;

Interlocked increment

TInterlockedIncrement = function(var Target:LongInt):LongInt;

Interlocked exchange

TInterlockedExchange = function(var Target:LongInt; Source:LongInt):LongInt;

Interlocked add exchange

TInterlockedAddExchange = function(var Target:LongInt; Source:LongInt):LongInt;

Interlocked compare exchange

TInterlockedCompareExchange = function(var Target:LongInt; Source,Compare:LongInt):LongInt;

Page table get base

TPageTableGetBase = function:PtrUInt;

Page table get size

TPageTableGetSize = function:LongWord;

Page table get entry

TPageTableGetEntry = function(Address:PtrUInt):TPageTableEntry;

Page table set entry

TPageTableSetEntry = function(const Entry:TPageTableEntry):LongWord;

Page tables get address

TPageTablesGetAddress = function:PtrUInt;

Page tables get length

TPageTablesGetLength = function:LongWord;

Page tables get count

TPageTablesGetCount = function:LongWord;

Page tables get shift

TPageTablesGetShift = function:LongWord;

Page tables get next

TPageTablesGetNext = function:PtrUInt;

Page tables get used

TPageTablesGetUsed = function:LongWord;

Page tables get free

TPageTablesGetFree = function:LongWord;

Vector table get base

TVectorTableGetBase = function:PtrUInt;

Vector table get size

TVectorTableGetSize = function:LongWord;

Vector table get count

TVectorTableGetCount = function:LongWord;

Vector table get entry

TVectorTableGetEntry = function(Number:LongWord):PtrUInt;

Vector table set entry

TVectorTableSetEntry = function(Number:LongWord; Address:PtrUInt):LongWord;

First bit set

TFirstBitSet = function(Value:LongWord):LongWord;

Count leading zeros

TCountLeadingZeros = function(Value:LongWord):LongWord;

Text IO write char

TTextIOWriteChar = function(ACh:Char; AUserData:Pointer):Boolean;

Text IO read char

TTextIOReadChar = function(var ACh:Char; AUserData:Pointer):Boolean;

Console get key

TConsoleGetKey = function(var ACh:Char; AUserData:Pointer):Boolean;

Console peek key

TConsolePeekKey = function(var ACh:Char; AUserData:Pointer):Boolean;

Console write char

TConsoleWriteChar = function(ACh:Char; AUserData:Pointer):Boolean;

Console read char

TConsoleReadChar = function(var ACh:Char; AUserData:Pointer):Boolean;

Console read wide char

TConsoleReadWideChar = function(var ACh:WideChar; AUserData:Pointer):Boolean;

Console hide mouse

TConsoleHideMouse = function(AUserData:Pointer):Boolean;

Console show mouse

TConsoleShowMouse = function(X,Y:LongWord; AUserData:Pointer):Boolean;

Console read mouse

TConsoleReadMouse = function(var X,Y,Buttons:LongWord; AUserData:Pointer):Boolean;

Code page to wide char

TCodePageToWideChar = function(Ch:Char):WideChar;

Wide char to code page

TWideCharToCodePage = function(Ch:WideChar):Char;

Host get name

THostGetName = function:String;

Host set name

THostSetName = function(const AName:String):Boolean;

Host get domain

THostGetDomain = function:String;

Host set domain

THostSetDomain = function(const ADomain:String):Boolean;

Logging output

TLoggingOutput = procedure(const AText:String);

Logging output ex

TLoggingOutputEx = procedure(AFacility,ASeverity:LongWord; const ATag,AContent:String);

Text IO data

[Expand]

PTextIOData = ^TTextIOData;

TTextIOData = record


Class definitions



Hardware exception

[Expand]

EHardwareException = class(Exception)

Data abort

[Expand]

EDataAbort = class(EHardwareException);

Prefetch abort

[Expand]

EPrefetchAbort = class(EHardwareException);

Undefined instruction

[Expand]

EUndefinedInstruction = class(EHardwareException);


Public variables



Platform logging

PLATFORM_DEFAULT_LOG_LEVEL:LongWord = PLATFORM_LOG_LEVEL_DEBUG; Minimum level for Platform messages. Only messages with level greater than or equal to this will be printed.
PLATFORM_LOG_ENABLED:Boolean;

IRQ logging

IRQ_DEFAULT_LOG_LEVEL:LongWord = IRQ_LOG_LEVEL_INFO; Minimum level for IRQ messages. Only messages with level greater than or equal to this will be printed.
IRQ_LOG_ENABLED:Boolean;

FIQ logging

FIQ_DEFAULT_LOG_LEVEL:LongWord = FIQ_LOG_LEVEL_INFO; Minimum level for FIQ messages. Only messages with level greater than or equal to this will be printed.
FIQ_LOG_ENABLED:Boolean;

SWI logging

SWI_DEFAULT_LOG_LEVEL:LongWord = SWI_LOG_LEVEL_INFO; Minimum level for SWI messages. Only messages with level greater than or equal to this will be printed.
SWI_LOG_ENABLED:Boolean;

Platform specific variables

PlatformInitialized:Boolean;
CPUInitialized:Boolean;
FPUInitialized:Boolean;
GPUInitialized:Boolean;
MMUInitialized:Boolean;
SMPInitialized:Boolean;
CacheInitialized:Boolean;
BoardInitialized:Boolean;
MemoryInitialized:Boolean;
ClockInitialized:Boolean;
PowerInitialized:Boolean;
MailboxInitialized:Boolean;
InterruptsInitialized:Boolean;
PeripheralsInitialized:Boolean;
ParseBootTagsCompleted:Boolean;
ParseCommandLineCompleted:Boolean;
ParseEnvironmentCompleted:Boolean;

Lock variables

ClockLock:TPlatformLock;
PowerLock:TPlatformLock;
MailboxLock:TPlatformLock;
ShutdownLock:TPlatformLock;
InterruptLock:TPlatformLock;
PageTableLock:TPlatformLock;
VectorTableLock:TPlatformLock;

Semaphore variables

ShutdownSemaphore:TPlatformSemaphore;

Clock variables

ClockBase:Int64 = TIME_TICKS_TO_1899; The system time as of the last setting of the clock
ClockLast:LongWord; The timer value of the last clock tick
ClockTicks:LongWord; Current number of clock ticks (When this reaches CLOCK_TICKS_PER_SECOND then ClockSeconds is incremented and this is reset to zero)
ClockSeconds:LongWord; Current number of clock seconds (This forms the system clock)
ClockRTCInvalid:LongBool; True if available time from RTC is invalid

Utilization variables

UtilizationLast:array of LongWord; The per CPU utilization for the last second (Allocated by scheduler initialization)
UtilizationCurrent:array of LongWord; The per CPU utilization for the current second (Updated by Idle thread and reset by Scheduler interrupt) (Allocated by scheduler initialization)

Initialization handlers

CPUInitHandler:TCPUInit;
FPUInitHandler:TFPUInit;
GPUInitHandler:TGPUInit;
MMUInitHandler:TMMUInit;
SMPInitHandler:TSMPInit;
CacheInitHandler:TCacheInit;
BoardInitHandler:TBoardInit;
MemoryInitHandler:TMemoryInit;
ClockInitHandler:TClockInit;
PowerInitHandler:TPowerInit;
MailboxInitHandler:TMailboxInit;
InterruptInitHandler:TInterruptInit;
PeripheralInitHandler:TPeripheralInit;
ParseBootTagsHandler:TParseBootTags;
ParseCommandLineHandler:TParseCommandLine;
ParseEnvironmentHandler:TParseEnvironment;

Blink/Output handlers

BootBlinkHandler:TBootBlink;
BootOutputHandler:TBootOutput;

LED handlers

PowerLEDEnableHandler:TPowerLEDEnable;
PowerLEDOnHandler:TPowerLEDOn;
PowerLEDOffHandler:TPowerLEDOff;
ActivityLEDEnableHandler:TActivityLEDEnable;
ActivityLEDOnHandler:TActivityLEDOn;
ActivityLEDOffHandler:TActivityLEDOff;

Counter handlers

CounterAvailableHandler:TCounterAvailable;
CounterReadHandler:TCounterRead;
CounterRead64Handler:TCounterRead64;
CounterWaitHandler:TCounterWait;
CounterEventHandler:TCounterEvent;
CounterCancelHandler:TCounterCancel;
CounterGetRateHandler:TCounterGetRate;
CounterSetRateHandler:TCounterSetRate;
CounterGetIntervalHandler:TCounterGetInterval;
CounterSetIntervalHandler:TCounterSetInterval;

Mailbox handlers

MailboxReceiveHandler:TMailboxReceive;
MailboxSendHandler:TMailboxSend;
MailboxCallHandler:TMailboxCall;
MailboxCallExHandler:TMailboxCallEx;
MailboxPropertyCallHandler:TMailboxPropertyCall;
MailboxPropertyCallExHandler:TMailboxPropertyCallEx;

Random handlers

RandomAvailableHandler:TRandomAvailable;
RandomSeedHandler:TRandomSeed;
RandomReadLongIntHandler:TRandomReadLongInt;
RandomReadInt64Handler:TRandomReadInt64;
RandomReadExtendedHandler:TRandomReadExtended;

Watchdog handlers

WatchdogAvailableHandler:TWatchdogAvailable;
WatchdogStartHandler:TWatchdogStart;
WatchdogStopHandler:TWatchdogStop;
WatchdogRefreshHandler:TWatchdogRefresh;

Interrupt request (IRQ) handlers

RequestIRQHandler:TRequestIRQ;
ReleaseIRQHandler:TReleaseIRQ;
RequestExIRQHandler:TRequestExIRQ;
ReleaseExIRQHandler:TReleaseExIRQ;

Fast interrupt request (FIQ) handlers

RequestFIQHandler:TRequestFIQ;
ReleaseFIQHandler:TReleaseFIQ;
RequestExFIQHandler:TRequestExFIQ;
ReleaseExFIQHandler:TReleaseExFIQ;

System call (software interrupt or SWI) handlers

SystemCallHandler:TSystemCall;
RegisterSystemCallHandler:TRegisterSystemCall;
DeregisterSystemCallHandler:TDeregisterSystemCall;
RegisterSystemCallExHandler:TRegisterSystemCallEx;
DeregisterSystemCallExHandler:TDeregisterSystemCallEx;

Interrupt entry handlers

GetInterruptCountHandler:TGetInterruptCount;
GetInterruptStartHandler:TGetInterruptStart;
GetInterruptEntryHandler:TGetInterruptEntry;

Local interrupt entry handlers

GetLocalInterruptCountHandler:TGetLocalInterruptCount;
GetLocalInterruptStartHandler:TGetLocalInterruptStart;
GetLocalInterruptEntryHandler:TGetLocalInterruptEntry;

System call entry handlers

GetSystemCallCountHandler:TGetSystemCallCount;
GetSystemCallEntryHandler:TGetSystemCallEntry;

System handlers

SystemRestartHandler:TSystemRestart;
SystemShutdownHandler:TSystemShutdown;
SystemGetUptimeHandler:TSystemGetUptime;
SystemGetCommandLineHandler:TSystemGetCommandLine;
SystemGetEnvironmentHandler:TSystemGetEnvironment;

CPU handlers

CPUGetArchHandler:TCPUGetArch;
CPUGetTypeHandler:TCPUGetType;
CPUGetBootHandler:TCPUGetBoot;
CPUGetMaskHandler:TCPUGetMask;
CPUGetCountHandler:TCPUGetCount;
CPUGetModeHandler:TCPUGetMode;
CPUGetStateHandler:TCPUGetState;
CPUGetCurrentHandler:TCPUGetCurrent;
CPUGetMemoryHandler:TCPUGetMemory;
CPUGetPercentageHandler:TCPUGetPercentage;
CPUGetUtilizationHandler:TCPUGetUtilization;
CPUGetModelHandler:TCPUGetModel;
CPUGetRevisionHandler:TCPUGetRevision;
CPUGetDescriptionHandler:TCPUGetDescription;

FPU handlers

FPUGetTypeHandler:TFPUGetType;
FPUGetStateHandler:TFPUGetState;

GPU handlers

GPUGetTypeHandler:TGPUGetType;
GPUGetStateHandler:TGPUGetState;
GPUGetMemoryHandler:TGPUGetMemory;

Cache handlers

L1CacheGetTypeHandler:TL1CacheGetType;
L1DataCacheGetSizeHandler:TL1DataCacheGetSize;
L1DataCacheGetLineSizeHandler:TL1DataCacheGetLineSize;
L1InstructionCacheGetSizeHandler:TL1InstructionCacheGetSize;
L1InstructionCacheGetLineSizeHandler:TL1InstructionCacheGetLineSize;
L2CacheGetTypeHandler:TL2CacheGetType;
L2CacheGetSizeHandler:TL2CacheGetSize;
L2CacheGetLineSizeHandler:TL2CacheGetLineSize;

Board handlers

BoardGetTypeHandler:TBoardGetType;
BoardGetModelHandler:TBoardGetModel;
BoardGetSerialHandler:TBoardGetSerial;
BoardGetRevisionHandler:TBoardGetRevision;
BoardGetMACAddressHandler:TBoardGetMACAddress;

Firmware handlers

FirmwareGetRevisionHandler:TFirmwareGetRevision;

Machine handlers

MachineGetTypeHandler:TMachineGetType;

Memory handlers

MemoryGetBaseHandler:TMemoryGetBase;
MemoryGetSizeHandler:TMemoryGetSize;
MemoryGetPageSizeHandler:TMemoryGetPageSize;
MemoryGetLargePageSizeHandler:TMemoryGetLargePageSize;

Power handlers

PowerGetWaitHandler:TPowerGetWait;
PowerGetStateHandler:TPowerGetState;
PowerSetStateHandler:TPowerSetState;

Clock handlers

ClockGetCountHandler:TClockGetCount;
ClockGetTotalHandler:TClockGetTotal;
ClockUpdateOffsetHandler:TClockUpdateOffset;
ClockGetRateHandler:TClockGetRate;
ClockSetRateHandler:TClockSetRate;
ClockGetStateHandler:TClockGetState;
ClockSetStateHandler:TClockSetState;
ClockGetMinRateHandler:TClockGetMinRate;
ClockGetMaxRateHandler:TClockGetMaxRate;

Turbo handlers

TurboGetStateHandler:TTurboGetState;
TurboSetStateHandler:TTurboSetState;

Voltage handlers

VoltageGetValueHandler:TVoltageGetValue;
VoltageSetValueHandler:TVoltageSetValue;
VoltageGetMinValueHandler:TVoltageGetMinValue;
VoltageGetMaxValueHandler:TVoltageGetMaxValue;

Temperature handlers

TemperatureGetCurrentHandler:TTemperatureGetCurrent;
TemperatureGetMaximumHandler:TTemperatureGetMaximum;

GPU memory handlers

GPUMemoryAllocateHandler:TGPUMemoryAllocate;
GPUMemoryReleaseHandler:TGPUMemoryRelease;
GPUMemoryLockHandler:TGPUMemoryLock;
GPUMemoryUnlockHandler:TGPUMemoryUnlock;

GPU miscellaneous handlers

GPUExecuteCodeHandler:TGPUExecuteCode;
DispmanxHandleGetHandler:TDispmanxHandleGet;
EDIDBlockGetHandler:TEDIDBlockGet;

Framebuffer handlers

FramebufferAvailableHandler:TFramebufferAvailable;
FramebufferAllocateHandler:TFramebufferAllocate;
FramebufferReleaseHandler:TFramebufferRelease;
FramebufferSetStateHandler:TFramebufferSetState;
FramebufferGetDimensionsHandler:TFramebufferGetDimensions;
FramebufferGetPhysicalHandler:TFramebufferGetPhysical;
FramebufferSetPhysicalHandler:TFramebufferSetPhysical;
FramebufferTestPhysicalHandler:TFramebufferTestPhysical;
FramebufferGetVirtualHandler:TFramebufferGetVirtual;
FramebufferSetVirtualHandler:TFramebufferSetVirtual;
FramebufferTestVirtualHandler:TFramebufferTestVirtual;
FramebufferGetDepthHandler:TFramebufferGetDepth;
FramebufferSetDepthHandler:TFramebufferSetDepth;
FramebufferTestDepthHandler:TFramebufferTestDepth;
FramebufferGetPixelOrderHandler:TFramebufferGetPixelOrder;
FramebufferSetPixelOrderHandler:TFramebufferSetPixelOrder;
FramebufferTestPixelOrderHandler:TFramebufferTestPixelOrder;
FramebufferGetAlphaModeHandler:TFramebufferGetAlphaMode;
FramebufferSetAlphaModeHandler:TFramebufferSetAlphaMode;
FramebufferTestAlphaModeHandler:TFramebufferTestAlphaMode;
FramebufferGetPitchHandler:TFramebufferGetPitch;
FramebufferGetOffsetHandler:TFramebufferGetOffset;
FramebufferSetOffsetHandler:TFramebufferSetOffset;
FramebufferTestOffsetHandler:TFramebufferTestOffset;
FramebufferGetOverscanHandler:TFramebufferGetOverscan;
FramebufferSetOverscanHandler:TFramebufferSetOverscan;
FramebufferTestOverscanHandler:TFramebufferTestOverscan;
FramebufferGetPaletteHandler:TFramebufferGetPalette;
FramebufferSetPaletteHandler:TFramebufferSetPalette;
FramebufferTestPaletteHandler:TFramebufferTestPalette;
FramebufferTestVsyncHandler:TFramebufferTestVsync;
FramebufferSetVsyncHandler:TFramebufferSetVsync;
FramebufferSetBacklightHandler:TFramebufferSetBacklight;

Cursor handlers

CursorSetDefaultHandler:TCursorSetDefault;
CursorSetInfoHandler:TCursorSetInfo;
CursorSetStateHandler:TCursorSetState;

Touch handlers

TouchGetBufferHandler:TTouchGetBuffer;

DMA handlers

DMAAvailableHandler:TDMAAvailable;
DMATransferHandler:TDMATransfer;
DMAFillMemoryHandler:TDMAFillMemory;
DMACopyMemoryHandler:TDMACopyMemory;
DMAReadPeripheralHandler:TDMAReadPeripheral;
DMAWritePeripheralHandler:TDMAWritePeripheral;
DMAAllocateBufferHandler:TDMAAllocateBuffer;
DMAAllocateBufferExHandler:TDMAAllocateBufferEx;
DMAReleaseBufferHandler:TDMAReleaseBuffer;
DMAGetChannelsHandler:TDMAGetChannels;

GPIO handlers

GPIOAvailableHandler:TGPIOAvailable;
GPIOReadHandler:TGPIORead;
GPIOWriteHandler:TGPIOWrite;
GPIOInputGetHandler:TGPIOInputGet;
GPIOInputWaitHandler:TGPIOInputWait;
GPIOInputEventHandler:TGPIOInputEvent;
GPIOOutputSetHandler:TGPIOOutputSet;
GPIOPullGetHandler:TGPIOPullGet;
GPIOPullSelectHandler:TGPIOPullSelect;
GPIOFunctionGetHandler:TGPIOFunctionGet;
GPIOFunctionSelectHandler:TGPIOFunctionSelect;

Virtual GPIO handlers

VirtualGPIOInputGetHandler:TVirtualGPIOInputGet;
VirtualGPIOOutputSetHandler:TVirtualGPIOOutputSet;
VirtualGPIOFunctionGetHandler:TVirtualGPIOFunctionGet;
VirtualGPIOFunctionSelectHandler:TVirtualGPIOFunctionSelect;

SPI handlers

SPIAvailableHandler:TSPIAvailable;
SPIStartHandler:TSPIStart;
SPIStopHandler:TSPIStop;
SPIReadHandler:TSPIRead;
SPIWriteHandler:TSPIWrite;
SPIWriteReadHandler:TSPIWriteRead;
SPIGetModeHandler:TSPIGetMode;
SPISetModeHandler:TSPISetMode;
SPIGetClockRateHandler:TSPIGetClockRate;
SPISetClockRateHandler:TSPISetClockRate;
SPIGetClockPhaseHandler:TSPIGetClockPhase;
SPISetClockPhaseHandler:TSPISetClockPhase;
SPIGetClockPolarityHandler:TSPIGetClockPolarity;
SPISetClockPolarityHandler:TSPISetClockPolarity;
SPIGetSelectPolarityHandler:TSPIGetSelectPolarity;
SPISetSelectPolarityHandler:TSPISetSelectPolarity;

I2C handlers

I2CAvailableHandler:TI2CAvailable;
I2CStartHandler:TI2CStart;
I2CStopHandler:TI2CStop;
I2CReadHandler:TI2CRead;
I2CWriteHandler:TI2CWrite;
I2CWriteReadHandler:TI2CWriteRead;
I2CWriteWriteHandler:TI2CWriteWrite;
I2CGetRateHandler:TI2CGetRate;
I2CSetRateHandler:TI2CSetRate;
I2CGetAddressHandler:TI2CGetAddress;
I2CSetAddressHandler:TI2CSetAddress;

PWM handlers

PWMAvailableHandler:TPWMAvailable;
PWMStartHandler:TPWMStart;
PWMStopHandler:TPWMStop;
PWMWriteHandler:TPWMWrite;
PWMSetModeHandler:TPWMSetMode;
PWMSetRangeHandler:TPWMSetRange;
PWMSetFrequencyHandler:TPWMSetFrequency;
PWMConfigureHandler:TPWMConfigure;

RTC handlers

RTCAvailableHandler:TRTCAvailable;
RTCGetTimeHandler:TRTCGetTime;
RTCSetTimeHandler:TRTCSetTime;

Serial handlers

SerialAvailableHandler:TSerialAvailable;
SerialOpenHandler:TSerialOpen;
SerialCloseHandler:TSerialClose;
SerialReadHandler:TSerialRead;
SerialWriteHandler:TSerialWrite;

Peripheral handlers

PeripheralGetBaseHandler:TPeripheralGetBase;
PeripheralGetSizeHandler:TPeripheralGetSize;
PeripheralReadHandler:TPeripheralRead;
PeripheralWriteHandler:TPeripheralWrite;
LocalPeripheralGetBaseHandler:TLocalPeripheralGetBase;
LocalPeripheralGetSizeHandler:TLocalPeripheralGetSize;

Get SP/PC handlers

GetSPHandler:TGetSP;
GetPCHandler:TGetPC;

Enable/Disable/Save/Restore IRQ/FIQ handlers

GetIRQHandler:TGetIRQ;
EnableIRQHandler:TEnableIRQ;
DisableIRQHandler:TDisableIRQ;
SaveIRQHandler:TSaveIRQ;
RestoreIRQHandler:TRestoreIRQ;
GetFIQHandler:TGetFIQ;
EnableFIQHandler:TEnableFIQ;
DisableFIQHandler:TDisableFIQ;
SaveFIQHandler:TSaveFIQ;
RestoreFIQHandler:TRestoreFIQ;
EnableIRQFIQHandler:TEnableIRQFIQ;
DisableIRQFIQHandler:TDisableIRQFIQ;
SaveIRQFIQHandler:TSaveIRQFIQ;
RestoreIRQFIQHandler:TRestoreIRQFIQ;
GetAbortHandler:TGetAbort;
EnableAbortHandler:TEnableAbort;
DisableAbortHandler:TDisableAbort;
SaveAbortHandler:TSaveAbort;
RestoreAbortHandler:TRestoreAbort;

Halt/Pause handlers

HaltHandler:THalt;
PauseHandler:TPause;

Halt thread handlers

HaltThreadHandler:THaltThread;

SendEvent/WaitForEvent/Interrupt handlers

SendEventHandler:TSendEvent;
WaitForEventHandler:TWaitForEvent;
WaitForInterruptHandler:TWaitForInterrupt;

Barrier handlers

ReadMemoryBarrierHandler:TReadMemoryBarrier;
WriteMemoryBarrierHandler:TWriteMemoryBarrier;
DataMemoryBarrierHandler:TDataMemoryBarrier;
DataSynchronizationBarrierHandler:TDataSynchronizationBarrier;
InstructionMemoryBarrierHandler:TInstructionMemoryBarrier;

TLB handlers

InvalidateTLBHandler:TInvalidateTLB;
InvalidateDataTLBHandler:TInvalidateDataTLB;
InvalidateInstructionTLBHandler:TInvalidateInstructionTLB;

Cache handlers

InvalidateCacheHandler:TInvalidateCache;
CleanDataCacheHandler:TCleanDataCache;
InvalidateDataCacheHandler:TInvalidateDataCache;
CleanAndInvalidateDataCacheHandler:TCleanAndInvalidateDataCache;
InvalidateInstructionCacheHandler:TInvalidateInstructionCache;
CleanDataCacheRangeHandler:TCleanDataCacheRange;
InvalidateDataCacheRangeHandler:TInvalidateDataCacheRange;
CleanAndInvalidateDataCacheRangeHandler:TCleanAndInvalidateDataCacheRange;
InvalidateInstructionCacheRangeHandler:TInvalidateInstructionCacheRange;

Prefetch buffer handlers

FlushPrefetchBufferHandler:TFlushPrefetchBuffer;

Branch target cache handlers

FlushBranchTargetCacheHandler:TFlushBranchTargetCache;

Context switch handlers

ContextSwitchHandler:TContextSwitch;
ContextSwitchIRQHandler:TContextSwitchIRQ;
ContextSwitchFIQHandler:TContextSwitchFIQ;
ContextSwitchSWIHandler:TContextSwitchSWI;

And/Xor/Or/Increment/Decrement/Exchange handlers

InterlockedOrHandler:TInterlockedOr;
InterlockedXorHandler:TInterlockedXor;
InterlockedAndHandler:TInterlockedAnd;
InterlockedDecrementHandler:TInterlockedDecrement;
InterlockedIncrementHandler:TInterlockedIncrement;
InterlockedExchangeHandler:TInterlockedExchange;
InterlockedAddExchangeHandler:TInterlockedAddExchange;
InterlockedCompareExchangeHandler:TInterlockedCompareExchange;

Page table handlers

PageTableGetBaseHandler:TPageTableGetBase;
PageTableGetSizeHandler:TPageTableGetSize;
PageTableGetEntryHandler:TPageTableGetEntry;
PageTableSetEntryHandler:TPageTableSetEntry;

Page tables handlers

PageTablesGetAddressHandler:TPageTablesGetAddress;
PageTablesGetLengthHandler:TPageTablesGetLength;
PageTablesGetCountHandler:TPageTablesGetCount;
PageTablesGetShiftHandler:TPageTablesGetShift;
PageTablesGetNextHandler:TPageTablesGetNext;
PageTablesGetUsedHandler:TPageTablesGetUsed;
PageTablesGetFreeHandler:TPageTablesGetFree;

Vector table handlers

VectorTableGetBaseHandler:TVectorTableGetBase;
VectorTableGetSizeHandler:TVectorTableGetSize;
VectorTableGetCountHandler:TVectorTableGetCount;
VectorTableGetEntryHandler:TVectorTableGetEntry;
VectorTableSetEntryHandler:TVectorTableSetEntry;

First bit set handlers

FirstBitSetHandler:TFirstBitSet;

Count leading zeros handlers

CountLeadingZerosHandler:TCountLeadingZeros;

Console handlers

ConsoleGetKeyHandler:TConsoleGetKey;
ConsolePeekKeyHandler:TConsolePeekKey;
ConsoleWriteCharHandler:TConsoleWriteChar;
ConsoleReadCharHandler:TConsoleReadChar;
ConsoleReadWideCharHandler:TConsoleReadWideChar;
ConsoleHideMouseHandler:TConsoleHideMouse;
ConsoleShowMouseHandler:TConsoleShowMouse;
ConsoleReadMouseHandler:TConsoleReadMouse;

Code page handlers

CodePageToWideCharHandler:TCodePageToWideChar;
WideCharToCodePageHandler:TWideCharToCodePage;

Name handlers

HostGetNameHandler:THostGetName;
HostSetNameHandler:THostSetName;
HostGetDomainHandler:THostGetDomain;
HostSetDomainHandler:THostSetDomain;

Logging handlers

LoggingOutputHandler:TLoggingOutput;
LoggingOutputExHandler:TLoggingOutputEx;


Function declarations



Initialization functions

[Expand]
procedure PlatformInit;
Description: Initialize platform specific information for the current hardware


[Expand]
procedure CPUInit;
Description: Initialize the CPU including performance features etc (Where Applicable)


[Expand]
procedure FPUInit;
Description: Initialize the Floating Point Processor Unit (Where Applicable)


[Expand]
procedure GPUInit;
Description: Initialize the Graphics Processor Unit (Where Applicable)


[Expand]
procedure MMUInit;
Description: Initialize the Memory Management Unit (Where Applicable)


[Expand]
procedure SMPInit;
Description: Initialize the Symetric Multi Processor support (Where Applicable)


[Expand]
procedure CacheInit;
Description: Initialize CPU Data and Instruction Caching (Where Applicable)


[Expand]
procedure BoardInit;
Description: Initialize Board specific information (Where Applicable)


[Expand]
procedure MemoryInit;
Description: Initialize Memory specific information (Where Applicable)


[Expand]
procedure ClockInit;
Description: Initialize the Clock handling


[Expand]
procedure PowerInit;
Description: Initialize Power management (Where Applicable)


[Expand]
procedure MailboxInit;
Description: Initialize Mailbox access (Where Applicable)


[Expand]
procedure InterruptInit;
Description: Initialize Interrupt handling


[Expand]
procedure PeripheralInit;
Description: Initialize Peripheral devices (Where Applicable)


[Expand]
procedure ParseBootTags;
Description: Parse any boot tag information passed by the bootloader (Where Applicable)


[Expand]
procedure ParseCommandLine;
Description: Setup argc, argv and cmdline and process known command line options (Where Applicable)


[Expand]
procedure ParseEnvironment;
Description: Setup envp and process known environment options (Where Applicable)


Boot functions

[Expand]
procedure BootBlink; inline;
Description: Blink the Activity LED (Where Applicable)


[Expand]
procedure BootOutput(Value:LongWord); inline;
Description: Output boot time information (Where Applicable)


LED functions

[Expand]
procedure PowerLEDEnable; inline;
Description: Enable the Power LED (Where Applicable)


[Expand]
procedure PowerLEDOn; inline;
Description: Turn On the Power LED (Where Applicable)


[Expand]
procedure PowerLEDOff; inline;
Description: Turn Off the Power LED (Where Applicable)


[Expand]
procedure ActivityLEDEnable; inline;
Description: Enable the Activity LED (Where Applicable)


[Expand]
procedure ActivityLEDOn; inline;
Description: Turn On the Activity LED (Where Applicable)


[Expand]
procedure ActivityLEDOff; inline;
Description: Turn Off the Activity LED (Where Applicable)


Counter functions (Timer device)

[Expand]
function CounterAvailable:Boolean; inline;
Description: Check if a counter is currently available


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


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


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


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


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


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


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


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


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


Mailbox functions

[Expand]
function MailboxReceive(Mailbox,Channel:LongWord):LongWord; inline;
Description: Receive from specified mailbox on specified channel


[Expand]
procedure MailboxSend(Mailbox,Channel,Data:LongWord); inline;
Description: Send to specified mailbox on specified channel


[Expand]
function MailboxCall(Mailbox,Channel,Data:LongWord; var Response:LongWord):LongWord; inline;
Description: Perform a transaction (Send/Receive) to specified mailbox on specified channel


[Expand]
function MailboxCallEx(Mailbox,Channel,Data:LongWord; var Response:LongWord; Timeout:LongWord):LongWord; inline;
Description: Perform a transaction (Send/Receive) to specified mailbox on specified channel


[Expand]
function MailboxPropertyCall(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord):LongWord; inline;
Description: Perform a property tag transaction (Send/Receive) to specified mailbox on specified channel


[Expand]
function MailboxPropertyCallEx(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord; Timeout:LongWord):LongWord; inline;
Description: Perform a property tag transaction (Send/Receive) to specified mailbox on specified channel


Random number functions

[Expand]
function RandomAvailable:Boolean; inline;
Description: Check if a hardware random number generator is currently available


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


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


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


[Expand]
function RandomReadExtended:Extended; inline;
Description: To be documented


Watchdog timer functions

[Expand]
function WatchdogAvailable:Boolean; inline; 
Description: Check if a watchdog timer is currently available


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


[Expand]
function WatchdogStop:LongWord; inline;
Description: To be documented


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


Interrupt request (IRQ) functions

[Expand]
function RequestIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
Description: Request registration of the supplied handler to the specified IRQ number


[Expand]
function ReleaseIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
Description: Request deregistration of the supplied handler from the specified IRQ number


[Expand]
function RequestExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
Description: Request registration of the supplied extended handler to the specified IRQ number


[Expand]
function ReleaseExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
Description: Request deregistration of the supplied extended handler from the specified IRQ number


Fast interrupt request (FIQ) functions

[Expand]
function RequestFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
Description: Request registration of the supplied handler to the specified FIQ number (Where Applicable)


[Expand]
function ReleaseFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
Description: Request deregistration of the supplied handler from the specified FIQ number (Where Applicable)


[Expand]
function RequestExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
Description: Request registration of the supplied extended handler to the specified FIQ number (Where Applicable)


[Expand]
function ReleaseExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
Description: Request deregistration of the supplied extended handler from the specified FIQ number (Where Applicable)


System call (Software Interrupt or SWI) functions

[Expand]
procedure SystemCall(Number:LongWord; Param1,Param2,Param3:PtrUInt); inline;
Description: Perform a System Call function with the supplied parameters (Where Applicable)


[Expand]
function RegisterSystemCall(Number:LongWord; Handler:TSystemCallHandler):LongWord; inline;
Description: Request registration of the supplied handler to the specified System Call number (Where Applicable)


[Expand]
function DeregisterSystemCall(Number:LongWord; Handler:TSystemCallHandler):LongWord; inline;
Description: Request deregistration of the supplied handler from the specified System Call number (Where Applicable)


[Expand]
function RegisterSystemCallEx(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord; inline;
Description: Request registration of the supplied extended handler to the specified System Call number (Where Applicable)


[Expand]
function DeregisterSystemCallEx(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord; inline;
Description: Request deregistration of the supplied extended handler from the specified System Call number (Where Applicable)


Interrupt entry functions

[Expand]
function GetInterruptCount:LongWord; inline;
Description: Get the number of interrupt entries for the current platform


[Expand]
function GetInterruptStart:LongWord; inline;
Description: Get the starting number of interrupt entries for the current platform


[Expand]
function GetInterruptEntry(Number:LongWord):TInterruptEntry; inline;
Description: Get the interrupt entry for the specified interrupt number


Local interrupt entry functions

[Expand]
function GetLocalInterruptCount:LongWord; inline;
Description: Get the number of local interrupt entries for the current platform (Where Applicable)


[Expand]
function GetLocalInterruptStart:LongWord; inline;
Description: Get the starting number of local interrupt entries for the current platform (Where Applicable)


[Expand]
function GetLocalInterruptEntry(CPUID,Number:LongWord):TInterruptEntry; inline;
Description: Get the local interrupt entry for the specified interrupt number (Where Applicable)


System call entry functions

[Expand]
function GetSystemCallCount:LongWord; inline;
Description: Get the number of system call entries for the current platform (Where Applicable)


[Expand]
function GetSystemCallEntry(Number:LongWord):TSystemCallEntry; inline;
Description: Get the system call entry for the specified system call number (Where Applicable)


System functions

[Expand]
function SystemRestart(Delay:LongWord):LongWord; inline;
Description: Restart the system


[Expand]
function SystemShutdown(Delay:LongWord):LongWord; inline;
Description: Shutdown the system


[Expand]
function SystemGetUptime:Int64; inline;
Description: Get the current system up time in 100 nanosecond ticks since 1/1/1601


[Expand]
function SystemGetCommandLine:String; inline;
Description: Get the current command line


[Expand]
function SystemGetEnvironment:Pointer; inline;
Description: Get the current environment


CPU functions

[Expand]
function CPUGetArch:LongWord; inline;
Description: Get the CPU architecture for this board


[Expand]
function CPUGetType:LongWord; inline;
Description: Get the CPU type for this board


[Expand]
function CPUGetBoot:LongWord; inline;
Description: Get the boot CPU for this board


[Expand]
function CPUGetMask:LongWord; inline;
Description: Get the CPU mask for this board


[Expand]
function CPUGetCount:LongWord; inline;
Description: Get the CPU count for this board


[Expand]
function CPUGetMode:LongWord; inline;
Description: Get the current CPU moded


[Expand]
function CPUGetState:LongWord; inline;
Description: Get the current CPU state


[Expand]
function CPUGetCurrent:LongWord; inline;
Description: Get the current CPU Id


[Expand]
function CPUGetMemory(var Address:PtrUInt; var Length:LongWord):LongWord; inline;
Description: Get the memory start and size available to the CPU


[Expand]
function CPUGetPercentage(CPUID:LongWord):Double; inline;
Description: Get the last second ulitization of the specified CPU in percentage


[Expand]
function CPUGetUtilization(CPUID:LongWord):LongWord; inline;
Description: Get the last second ulitization of the specified CPU


[Expand]
function CPUGetModel:LongWord; inline;
Description: Get the CPU model of the current CPU


[Expand]
function CPUGetRevision:LongWord; inline;
Description: Get the CPU revision of the current CPU


[Expand]
function CPUGetDescription:String; inline;
Description: Get the CPU description of the current CPU


FPU functions

[Expand]
function FPUGetType:LongWord; inline;
Description: Get the FPU type for this board


[Expand]
function FPUGetState:LongWord; inline;
Description: Get the current FPU state


GPU functions

[Expand]
function GPUGetType:LongWord; inline;
Description: Get the GPU type for this board


[Expand]
function GPUGetState:LongWord; inline;
Description: Get the current GPU state


[Expand]
function GPUGetMemory(var Address:PtrUInt; var Length:LongWord):LongWord; inline;
Description: Get the memory start and size available to the GPU


Cache functions

[Expand]
function L1CacheGetType:LongWord; inline;
Description: Get the L1 cache type for this board


[Expand]
function L1DataCacheGetSize:LongWord; inline;
Description: Get the L1 data cache size for this board


[Expand]
function L1DataCacheGetLineSize:LongWord; inline;
Description: Get the L1 data cache line size for this board


[Expand]
function L1InstructionCacheGetSize:LongWord; inline; 
Description: Get the L1 instruction cache size for this board


[Expand]
function L1InstructionCacheGetLineSize:LongWord; inline;
Description: Get the L1 instruction cache line size for this board


[Expand]
function L2CacheGetType:LongWord; inline;
Description: Get the L2 cache type for this board


[Expand]
function L2CacheGetSize:LongWord; inline;
Description: Get the L2 cache size for this board


[Expand]
function L2CacheGetLineSize:LongWord; inline;
Description: Get the L2 cache line size for this board


Board functions

[Expand]
function BoardGetType:LongWord; inline;
Description: Get the current Board type


[Expand]
function BoardGetModel:LongWord; inline;
Description: Get the current Board model


[Expand]
function BoardGetSerial:Int64; inline;
Description: Get the current Board serial number


[Expand]
function BoardGetRevision:LongWord; inline;
Description: Get the current Board revision number


[Expand]
function BoardGetMACAddress:String; inline;
Description: Get the current Board MAC address (Where Applicable)


Firmware functions

[Expand]
function FirmwareGetRevision:LongWord; inline;
Description: Get the current board Firmware Revision


Machine functions

[Expand]
function MachineGetType:LongWord; inline;
Description: Get the current Machine type


Memory functions

[Expand]
function MemoryGetBase:PtrUInt; inline;
Description: Get the base address of system memory


[Expand]
function MemoryGetSize:LongWord; inline;
Description: Get the total size of system memory


[Expand]
function MemoryGetPageSize:LongWord; inline;
Description: Get the page size of system memory


[Expand]
function MemoryGetLargePageSize:LongWord; inline;
Description: Get the large page size of system memory (Where Applicable)


Power functions

[Expand]
function PowerOn(PowerId:LongWord):LongWord;
Description: Power On the specified device


[Expand]
function PowerOff(PowerId:LongWord):LongWord;
Description: Power Off the specified device


[Expand]
function PowerGetWait(PowerId:LongWord):LongWord; inline;
Description: Get the enable wait time in Microseconds of the specified device


[Expand]
function PowerGetState(PowerId:LongWord):LongWord; inline;
Description: Get the power state of the specified device


[Expand]
function PowerSetState(PowerId,State:LongWord; Wait:Boolean):LongWord; inline;
Description: Set the power state of the specified device (Optionally waiting for ready)


Clock functions

[Expand]
function ClockTicks:LongWord;
Description: Get the current number of clock ticks