Difference between revisions of "Unit Platform"
Line 243: | Line 243: | ||
---- | ---- | ||
− | '' | + | |
+ | '''IRQ mask''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TIRQMask = LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''FIQ mask''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFIQMask = LongWord; </code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''IRQ/FIQ mask''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TIRQFIQMask = LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Abort mask''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TAbortMask = LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA data''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PDMAData = ^TDMAData;</code> | ||
+ | |||
+ | <code>TDMAData = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|''Data Properties'' | ||
+ | |- | ||
+ | | <code>Source:Pointer;</code> | ||
+ | | Source address for DMA (May need to be allocated in accordance with DMA host configuration) | ||
+ | |- | ||
+ | | <code>Dest:Pointer;</code> | ||
+ | | Dest address for DMA (May need to be allocated in accordance with DMA host configuration) | ||
+ | |- | ||
+ | | <code>Size:LongWord;</code> | ||
+ | | Size for DMA transfer (For 2D stride the length of a row multiplied by the count of rows) | ||
+ | |- | ||
+ | | <code>Flags:LongWord;</code> | ||
+ | | Flags for DMA transfer (See DMA_DATA_FLAG_* above) | ||
+ | |- | ||
+ | |colspan="2"|''Stride Properties'' | ||
+ | |- | ||
+ | | <code>StrideLength:LongWord;</code> | ||
+ | | Length of each row during 2D stride (If supported) | ||
+ | |- | ||
+ | | <code>SourceStride:LongInt;</code> | ||
+ | | Increment between rows for source address during 2D stride (If supported) | ||
+ | |- | ||
+ | | <code>DestStride:LongInt;</code> | ||
+ | | Increment between rows for destination address during 2D stride (If supported) | ||
+ | |- | ||
+ | |colspan="2"|''Next Block'' | ||
+ | |- | ||
+ | | <code>Next:PDMAData;</code> | ||
+ | | Link to next DMA data block (or nil for the last block) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''System call request (SWI)''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PSystemCallRequest = ^TSystemCallRequest;</code> | ||
+ | |||
+ | <code>TSystemCallRequest = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Number:LongWord;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>Param1:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Param2:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Param3:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Handle entry''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PHandleEntry = ^THandleEntry;</code> | ||
+ | |||
+ | <code>THandleEntry = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|''Handle Properties'' | ||
+ | |- | ||
+ | | <code>Signature:LongWord;</code> | ||
+ | | Signature for entry validation | ||
+ | |- | ||
+ | | <code>HandleType:LongWord;</code> | ||
+ | | Type of this Handle (eg HANDLE_TYPE_THREAD) | ||
+ | |- | ||
+ | | <code>HandleCount:LongWord;</code> | ||
+ | | Reference Count of the Handle | ||
+ | |- | ||
+ | |colspan="2"|''Internal Properties'' | ||
+ | |- | ||
+ | | <code>Prev:PHandleEntry;</code> | ||
+ | | Previous entry in Handle table | ||
+ | |- | ||
+ | | <code>Next:PHandleEntry;</code> | ||
+ | | Next entry in Handle table | ||
+ | |- | ||
+ | |colspan="2"|''Statistics Properties'' | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Shutdown entry''' | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PShutdownEntry = ^TShutdownEntry;</code> | ||
+ | |||
+ | <code>TShutdownEntry = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|''Shutdown Properties'' | ||
+ | |- | ||
+ | | <code>Signature:LongWord;</code> | ||
+ | | Signature for entry validation | ||
+ | |- | ||
+ | | <code>Shutdown:procedure(Parameter:Pointer);</code> | ||
+ | | The procedure to call on Shutdown | ||
+ | |- | ||
+ | | <code>Parameter:Pointer;</code> | ||
+ | | The parameter to pass to the Shutdown procedure (or nil) | ||
+ | |- | ||
+ | |colspan="2"|''Internal Properties'' | ||
+ | |- | ||
+ | | <code>Prev:PShutdownEntry;</code> | ||
+ | | Previous entry in Shutdown table | ||
+ | |- | ||
+ | | <code>Next:PShutdownEntry;</code> | ||
+ | | Next entry in Shutdown table | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Interrupt entry (IRQ/FIQ)''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PInterruptEntry = ^TInterruptEntry;</code> | ||
+ | |||
+ | <code>TInterruptEntry = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Number:LongWord;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>CPUID:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Handler:procedure(Parameter:Pointer);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>HandlerEx:function(CPUID:LongWord; Thread:TThreadHandle; Parameter:Pointer):TThreadHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Parameter:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''System call entry (SWI)''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PSystemCallEntry = ^TSystemCallEntry;</code> | ||
+ | |||
+ | <code>TSystemCallEntry = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Number:LongWord;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>CPUID:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Handler:procedure(Request:PSystemCallRequest);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>HandlerEx:function(CPUID:LongWord; Thread:TThreadHandle; Request:PSystemCallRequest):TThreadHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Page table entry''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PPageTableEntry = ^TPageTableEntry;</code> | ||
+ | |||
+ | <code>TPageTableEntry = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>VirtualAddress:PtrUInt;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>PhysicalAddress:PtrUInt;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Size:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Flags:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Platform lock''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PPlatformLock = ^TPlatformLock;</code> | ||
+ | |||
+ | <code>TPlatformLock = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Lock:THandle;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>AcquireLock:function(Handle:THandle):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ReleaseLock:function(Handle:THandle):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Platform semaphore''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PPlatformSemaphore = ^TPlatformSemaphore;</code> | ||
+ | |||
+ | <code>TPlatformSemaphore = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Semaphore:THandle;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>WaitSemaphore:function(Handle:THandle):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SignalSemaphore:function(Handle:THandle):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''CPU init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''FPU init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFPUInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''MMU init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMMUInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SMP init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSMPInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Cache init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCacheInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Board init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBoardInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Memory init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMemoryInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Power init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPowerInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Mailbox init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMailboxInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interrupt init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterruptInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Peripheral init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPeripheralInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Parse boot tags''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TParseBootTags = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Parse command line''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TParseCommandLine = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Parse environment''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TParseEnvironment = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interrupt (IRQ/FIQ) handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterruptHandler = procedure(Parameter:Pointer);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interrupt (IRQ/FIQ) ex handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterruptExHandler = function(CPUID:LongWord; Thread:TThreadHandle; Parameter:Pointer):TThreadHandle;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System call (SWI) handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSystemCallHandler = procedure(Request:PSystemCallRequest);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System call (SWI) ex handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSystemCallExHandler = function(CPUID:LongWord; Thread:TThreadHandle; Request:PSystemCallRequest):TThreadHandle;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Thread yield''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TThreadYield = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Thread wait''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TThreadWait = function(List:TListHandle; Lock:TSpinHandle; Flags:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Thread wait ex''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TThreadWaitEx = function(List:TListHandle; Lock:TSpinHandle; Flags,Timeout:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Thread release''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TThreadRelease = function(List:TListHandle):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Thread abandon''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TThreadAbandon = function(List:TListHandle):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Thread wake''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TThreadWake = function(Thread:TThreadHandle):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Thread ready''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TThreadReady = function(Thread:TThreadHandle; Reschedule:Boolean):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Thread timeout''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TThreadTimeout = function(Thread:TThreadHandle):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Timer event''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTimerEvent = procedure(Data:Pointer);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Worker task''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWorkerTask = procedure(Data:Pointer);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Worker callback''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWorkerCallback = procedure(Data:Pointer);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter callback''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterCallback = procedure(Data:Pointer);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO callback''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOCallback = procedure(Data:Pointer; Pin,Trigger:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Boot blink''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBootBlink = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Boot output''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBootOutput = procedure(Value:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Power LED enable''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPowerLEDEnable = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Power LED on''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPowerLEDOn = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Power LED off''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPowerLEDOff = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Activity LED enable''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TActivityLEDEnable = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Activity LED on''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TActivityLEDOn = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Activity LED off''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TActivityLEDOff = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterRead = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter read64''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterRead64 = function:Int64;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter wait''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterWait = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter event''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterEvent = function(Callback:TCounterCallback; Data:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter cancel''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterCancel = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter get rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterGetRate = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter set rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterSetRate = function(Rate:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter get interval''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterGetInterval = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter set interval''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code> TCounterSetInterval = function(Interval:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Mailbox receive''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMailboxReceive = function(Mailbox,Channel:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Mailbox send''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMailboxSend = procedure(Mailbox,Channel,Data:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Mailbox call''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMailboxCall = function(Mailbox,Channel,Data:LongWord; var Response:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Mailbox call ex''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMailboxCallEx = function(Mailbox,Channel,Data:LongWord; var Response:LongWord; Timeout:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Mailbox property call''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMailboxPropertyCall = function(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Mailbox property call ex''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMailboxPropertyCallEx = function(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord; Timeout:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Random available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRandomAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Random seed''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRandomSeed = procedure(Seed:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Random read long int''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRandomReadLongInt = function(Limit:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Random read int64''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRandomReadInt64 = function(Limit:Int64):Int64;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Random read extended''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRandomReadExtended = function:Extended;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Watchdog available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWatchdogAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Watchdog start''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWatchdogStart = function(Milliseconds:LongWord):LongWord; </code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Watchdog stop''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWatchdogStop = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Watchdog refresh''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWatchdogRefresh = function(Milliseconds:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Request IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRequestIRQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Release IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TReleaseIRQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Request ex IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRequestExIRQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Release ex IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TReleaseExIRQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Request FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRequestFIQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Release FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TReleaseFIQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; arameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Request ex FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRequestExFIQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Release ex FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TReleaseExFIQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System call''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSystemCall = procedure(Number:LongWord; Param1,Param2,Param3:PtrUInt);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Register system call''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRegisterSystemCall = function(Number:LongWord; Handler:TSystemCallHandler):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Deregister system call''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDeregisterSystemCall = function(Number:LongWord; Handler:TSystemCallHandler):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Register system call ex''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRegisterSystemCallEx = function(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Deregister system call ex''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDeregisterSystemCallEx = function(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get interrupt count''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetInterruptCount = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get interrupt start''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetInterruptStart = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get interrupt entry''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetInterruptEntry = function(Number:LongWord):TInterruptEntry;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get local interrupt count''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetLocalInterruptCount = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get local interrupt start''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetLocalInterruptStart = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get local interrupt entry''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetLocalInterruptEntry = function(CPUID,Number:LongWord):TInterruptEntry;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get system call count''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetSystemCallCount = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get system call entry''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetSystemCallEntry = function(Number:LongWord):TSystemCallEntry;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System restart''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSystemRestart = function(Delay:LongWord):LongWord; </code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System shutdown''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSystemShutdown = function(Delay:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System get uptime''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSystemGetUptime = function:Int64;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System get command line''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSystemGetCommandLine = function:String;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System get environment''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSystemGetEnvironment = function:Pointer;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get arch''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetArch = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get type''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetType = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get boot''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetBoot = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get mask''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetMask = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get count''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetCount = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get mode''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetMode = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetState = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get current''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetCurrent = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get memory''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetMemory = function(var Address:PtrUInt; var Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get percentage''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetPercentage = function(CPUID:LongWord):Double;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get utilization''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetUtilization = function(CPUID:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get model''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetModel = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get revision''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetRevision = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get description''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetDescription = function:String;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''FPU get type''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFPUGetType = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''FPU get state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFPUGetState = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU get type''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUGetType = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU get state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUGetState = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU get memory''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUGetMemory = function(var Address:PtrUInt; var Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''L1 cache get type''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TL1CacheGetType = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''L1 data cache get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TL1DataCacheGetSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''L1 data cache get line size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TL1DataCacheGetLineSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''L1 instruction cache get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TL1InstructionCacheGetSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''L1 instruction cache get line size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TL1InstructionCacheGetLineSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''L2 cache get type''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TL2CacheGetType = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''L2 cache get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TL2CacheGetSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''L2 cache get line size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TL2CacheGetLineSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Board get type''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBoardGetType = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Board get model''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBoardGetModel = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Board get serial''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBoardGetSerial = function:Int64;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Board get revision''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBoardGetRevision = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Board get MAC address''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBoardGetMACAddress = function:String;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Firmware get revision''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFirmwareGetRevision = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Machine get type''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMachineGetType = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Memory get base''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMemoryGetBase = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Memory get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMemoryGetSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Memory get page size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMemoryGetPageSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Memory get large page size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMemoryGetLargePageSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Power get wait''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPowerGetWait = function(PowerId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Power get state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPowerGetState = function(PowerId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Power set state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPowerSetState = function(PowerId,State:LongWord; Wait:Boolean):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock get count''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockGetCount = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock get total''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockGetTotal = function:Int64;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock update offset''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockUpdateOffset = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock get rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockGetRate = function(ClockId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock set rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockSetRate = function(ClockId,Rate:LongWord; Turbo:Boolean):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock get state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockGetState = function(ClockId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock set state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockSetState = function(ClockId,State:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock get min rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockGetMinRate = function(ClockId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock get max rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockGetMaxRate = function(ClockId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Turbo get state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTurboGetState = function(TurboId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Turbo set state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTurboSetState = function(TurboId,State:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Voltage get value''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVoltageGetValue = function (VoltageId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Voltage set value''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVoltageSetValue = function (VoltageId,Value:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Voltage get min value''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVoltageGetMinValue = function(VoltageId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Voltage get max value''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVoltageGetMaxValue = function(VoltageId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Temperature get current''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTemperatureGetCurrent = function(TemperatureId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Temperature get maximum''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTemperatureGetMaximum = function(TemperatureId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU memory allocate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUMemoryAllocate = function(Length,Alignment,Flags:LongWord):THandle;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU memory release''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUMemoryRelease = function(Handle:THandle):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU memory lock''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUMemoryLock = function(Handle:THandle):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU memory unlock''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUMemoryUnlock = function(Handle:THandle):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU execute code''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUExecuteCode = function(Address:Pointer; R0,R1,R2,R3,R4,R5:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Dispmanx handle get''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDispmanxHandleGet = function(Resource:THandle):THandle;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''EDID block get''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TEDIDBlockGet = function(Block:LongWord; Buffer:Pointer; Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer allocate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferAllocate = function(Alignment:LongWord; var Address,Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer release''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferRelease = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetState = function(State:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get dimensions''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetDimensions = function(var Width,Height,Top,Bottom,Left,Right:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get physical''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetPhysical = function(var Width,Height:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set physical''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetPhysical = function(var Width,Height:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test physical''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestPhysical = function(var Width,Height:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get virtual''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetVirtual = function(var Width,Height:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set virtual''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetVirtual = function(var Width,Height:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test virtual''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestVirtual = function(var Width,Height:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get depth''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetDepth = function(var Depth:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set depth''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetDepth = function(var Depth:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test depth''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestDepth = function(var Depth:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get pixel order''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetPixelOrder = function(var Order:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set pixel order''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetPixelOrder = function(var Order:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test pixel order''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestPixelOrder = function(var Order:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get alpha mode''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetAlphaMode = function(var Mode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set alpha mode''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetAlphaMode = function(var Mode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test alpha mode''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestAlphaMode = function(var Mode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get pitch''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetPitch = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get offset''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetOffset = function(var X,Y:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set offset''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetOffset = function(var X,Y:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test offset''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestOffset = function(var X,Y:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get overscan''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetOverscan = function(var Top,Bottom,Left,Right:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set overscan''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetOverscan = function(var Top,Bottom,Left,Right:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test overscan''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestOverscan = function(var Top,Bottom,Left,Right:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get palette''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetPalette = function(Buffer:Pointer; Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set palette''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetPalette = function(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test palette''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestPalette = function(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test vsync''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestVsync = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set vsync''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetVsync = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set backlight''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetBacklight = function(Brightness:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Touch get buffer''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTouchGetBuffer = function(var Address:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Cursor set default''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCursorSetDefault = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Cursor set info''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCursorSetInfo = function(Width,Height,HotspotX,HotspotY:LongWord; Pixels:Pointer; Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Cursor set state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCursorSetState = function(Enabled:Boolean; X,Y:LongWord; Relative:Boolean):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMAAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA transfer''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMATransfer = function(Data:PDMAData; Direction,Peripheral:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA fill memory''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMAFillMemory = function(Dest:Pointer; Size:LongWord; Value:Byte):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA copy memory''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMACopyMemory = function(Source,Dest:Pointer; Size:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA read peripheral''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMAReadPeripheral = function(Address,Dest:Pointer; Size,Peripheral:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA write peripheral''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMAWritePeripheral = function(Source,Address:Pointer; Size,Peripheral:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA allocate buffer''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMAAllocateBuffer = function(Size:LongWord):Pointer;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA allocate buffer ex''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMAAllocateBufferEx = function(var Size:LongWord):Pointer;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA release buffer''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMAReleaseBuffer = function(Buffer:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA get channels''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMAGetChannels = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIORead = function(Reg:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO write''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOWrite = procedure(Reg,Value:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO input get''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOInputGet = function(Pin:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO input wait''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOInputWait = function(Pin,Trigger,Timeout:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO input event''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOInputEvent = function(Pin,Trigger,Timeout:LongWord; Callback:TGPIOCallback; Data:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO output set''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOOutputSet = function(Pin,Level:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO pull get''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOPullGet = function(Pin:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO pull select''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOPullSelect = function(Pin,Mode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO function get''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOFunctionGet = function(Pin:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO function select''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOFunctionSelect = function(Pin,Mode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Virtual GPIO input get''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVirtualGPIOInputGet = function(Pin:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Virtual GPIO output set''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVirtualGPIOOutputSet = function(Pin,Level:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Virtual GPIO function select''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVirtualGPIOFunctionSelect = function(Pin,Mode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI start''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIStart = function(Mode,ClockRate,ClockPhase,ClockPolarity:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI stop''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIStop = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIRead = function(ChipSelect:Word; Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI write''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIWrite = function(ChipSelect:Word; Source:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI write read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIWriteRead = function(ChipSelect:Word; Source,Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI get mode''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIGetMode = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI set mode''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPISetMode = function(Mode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI get clock rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIGetClockRate = function(ChipSelect:Word):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI set clock rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPISetClockRate = function(ChipSelect:Word; ClockRate:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI get clock phase''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIGetClockPhase = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI set clock phase''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPISetClockPhase = function(ClockPhase:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI get clock polarity''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIGetClockPolarity = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI set clock polarity''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPISetClockPolarity = function(ClockPolarity:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI get select polarity''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIGetSelectPolarity = function(ChipSelect:Word):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI set select polarity''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPISetSelectPolarity = function(ChipSelect:Word; SelectPolarity:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C start''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CStart = function(Rate:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C stop''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CStop = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CRead = function(Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C write''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CWrite = function(Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C write read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CWriteRead = function(Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C write write''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CWriteWrite = function(Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C get rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CGetRate = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C set rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CSetRate = function(Rate:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C get address''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CGetAddress = function:Word;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C set address''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CSetAddress = function(Address:Word):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPWMAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM start''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPWMStart = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM stop''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPWMStop = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM write''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPWMWrite = function(Value:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM set mode''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPWMSetMode = function(Mode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM set range''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPWMSetRange = function(Range:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM set frequency''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPWMSetFrequency = function(Frequency:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM configure''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPWMConfigure = function(DutyNS,PeriodNS:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''RTC available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRTCAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''RTC get time''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRTCGetTime = function:Int64;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | '''RTC set time''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRTCSetTime = function(const Time:Int64):Int64;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Serial available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSerialAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Serial open''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSerialOpen = function(BaudRate,DataBits,StopBits,Parity,FlowControl,ReceiveDepth,TransmitDepth:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Serial close''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSerialClose = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Serial read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSerialRead = function(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Serial write''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSerialWrite = function(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Peripheral get base''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPeripheralGetBase = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Peripheral get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPeripheralGetSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Peripheral read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPeripheralRead = function(Base,Reg:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Peripheral write''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPeripheralWrite = procedure(Base,Reg,Value:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Local Peripheral get base''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TLocalPeripheralGetBase = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Local peripheral get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TLocalPeripheralGetSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get SP''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetSP = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GetPC''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetPC = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetIRQ = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Enable IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TEnableIRQ = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Disable IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDisableIRQ = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Save IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSaveIRQ = function:TIRQMask;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Restore IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRestoreIRQ = function(IRQMask:TIRQMask):TIRQMask;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetFIQ = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Enable FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TEnableFIQ = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Disable FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDisableFIQ = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Save FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSaveFIQ = function:TFIQMask;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Restore FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRestoreFIQ = function(FIQMask:TFIQMask):TFIQMask;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Enable IRQ/FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TEnableIRQFIQ = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Disable IRQ/FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDisableIRQFIQ = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Save IRQ/FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSaveIRQFIQ = function:TIRQFIQMask;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Restore IRQ/FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRestoreIRQFIQ = function(IRQFIQMask:TIRQFIQMask):TIRQFIQMask;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get abort''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetAbort = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Enable abort''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TEnableAbort = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Disable abort''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDisableAbort = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Save abort''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSaveAbort = function:TAbortMask;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Restore abort''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRestoreAbort = function(AbortMask:TAbortMask):TAbortMask;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Halt''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>THalt = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Pause''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPause = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Halt thread''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>THaltThread = function(ExitCode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Send event''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSendEvent = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Wait for event''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWaitForEvent = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Wait for interrupt''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWaitForInterrupt = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Read memory barrier''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TReadMemoryBarrier = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Write memory barrier''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWriteMemoryBarrier = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Data memory barrier''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDataMemoryBarrier = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Data synchronization barrier''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDataSynchronizationBarrier = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Instruction memory barrier''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInstructionMemoryBarrier = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Invalidate TLB''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInvalidateTLB = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Invalidate data TLB''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInvalidateDataTLB = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Invalidate instruction TLB''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInvalidateInstructionTLB = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Invalidate cache''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInvalidateCache = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clean data cache''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCleanDataCache = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Invalidate data cache''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInvalidateDataCache = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clean and invalidate data cache''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCleanAndInvalidateDataCache = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Invalidate instruction cache''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInvalidateInstructionCache = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clean data cache range''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCleanDataCacheRange = procedure(Address,Size:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Invaliate data cache range''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInvalidateDataCacheRange = procedure(Address,Size:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clean and invalidate data cache range''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCleanAndInvalidateDataCacheRange = procedure(Address,Size:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Invalidate instruction cache range''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInvalidateInstructionCacheRange = procedure(Address,Size:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Flush prefetch buffer''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFlushPrefetchBuffer = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Flush branch target cache''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFlushBranchTargetCache = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Context switch''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TContextSwitch = procedure(OldStack,NewStack:Pointer; NewThread:TThreadHandle);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Context switch IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TContextSwitchIRQ = procedure(OldStack,NewStack:Pointer; NewThread:TThreadHandle);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Context switch FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TContextSwitchFIQ = procedure(OldStack,NewStack:Pointer; NewThread:TThreadHandle);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Context switch SWI''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TContextSwitchSWI = procedure(OldStack,NewStack:Pointer; NewThread:TThreadHandle);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interlocked or''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterlockedOr = function(var Target:LongInt; Value:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interlocked x or''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterlockedXor = function(var Target:LongInt; Value:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interlocked and''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterlockedAnd = function(var Target:LongInt; Value:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interlocked decrement''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterlockedDecrement = function(var Target:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interlocked increment''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterlockedIncrement = function(var Target:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interlocked exchange''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterlockedExchange = function(var Target:LongInt; Source:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interlocked add exchange''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterlockedAddExchange = function(var Target:LongInt; Source:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interlocked compare exchange''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterlockedCompareExchange = function(var Target:LongInt; Source,Compare:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page table get base''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTableGetBase = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page table get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTableGetSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page table get entry''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTableGetEntry = function(Address:PtrUInt):TPageTableEntry;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page table set entry''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTableSetEntry = function(const Entry:TPageTableEntry):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page tables get address''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTablesGetAddress = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page tables get length''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTablesGetLength = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page tables get count''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTablesGetCount = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page tables get shift''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTablesGetShift = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page tables get next''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTablesGetNext = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page tables get used''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTablesGetUsed = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page tables get free''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTablesGetFree = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Vector table get base''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVectorTableGetBase = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Vector table get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVectorTableGetSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Vector table get count''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVectorTableGetCount = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Vector table get entry''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVectorTableGetEntry = function(Number:LongWord):PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Vector table set entry''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVectorTableSetEntry = function(Number:LongWord; Address:PtrUInt):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''First bit set''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFirstBitSet = function(Value:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Count leading zeros''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCountLeadingZeros = function(Value:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Text IO write char''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTextIOWriteChar = function(ACh:Char; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Text IO read char''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTextIOReadChar = function(var ACh:Char; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Console get key''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TConsoleGetKey = function(var ACh:Char; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Console peek key''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TConsolePeekKey = function(var ACh:Char; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Console write char''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TConsoleWriteChar = function(ACh:Char; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Console read char''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TConsoleReadChar = function(var ACh:Char; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Console read wide char''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TConsoleReadWideChar = function(var ACh:WideChar; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Console hide mouse''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TConsoleHideMouse = function(AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Console show mouse''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TConsoleShowMouse = function(X,Y:LongWord; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Console read mouse''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TConsoleReadMouse = function(var X,Y,Buttons:LongWord; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Code page to wide char''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCodePageToWideChar = function(Ch:Char):WideChar;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Wide char to code page''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWideCharToCodePage = function(Ch:WideChar):Char;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Host get name''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>THostGetName = function:String;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Host set name''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>THostSetName = function(const AName:String):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Host get domain''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>THostGetDomain = function:String;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Host set domain''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>THostSetDomain = function(const ADomain:String):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Logging output''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TLoggingOutput = procedure(const AText:String);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Logging output ex''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TLoggingOutputEx = procedure(AFacility,ASeverity:LongWord; const ATag,AContent:String);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Text IO data''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PTextIOData = ^TTextIOData;</code> | ||
+ | |||
+ | <code>TTextIOData = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>WriteChar:TTextIOWriteChar;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>ReadChar:TTextIOReadChar;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>UserData:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
=== Class definitions === | === Class definitions === |
Revision as of 23:09, 24 January 2017
Return to Unit Reference
Contents
Description
Ultibo Platform interface unit
To be documented
Constants
DMA_DATA_FLAG_*
DMA_DATA_FLAG_NONE = $00000000;
|
|
DMA_DATA_FLAG_STRIDE = $00000001;
|
Transfer from the source to the destination using 2D stride (If supported) |
DMA_DATA_FLAG_SOURCE_NOINCREMENT = $00000002;
|
Don't increment the source address during the DMA request (If supported) |
DMA_DATA_FLAG_DEST_NOINCREMENT = $00000004;
|
Don't increment the dest address during the DMA request (If supported) |
DMA_DATA_FLAG_SOURCE_DREQ = $00000008;
|
Use DREQ gating on the source address during the DMA request (If supported) |
DMA_DATA_FLAG_DEST_DREQ = $00000010;
|
Use DREQ gating on the dest address during the DMA request (If supported) |
DMA_DATA_FLAG_SOURCE_WIDE = $00000020;
|
Use wide reads on the source address during the DMA request (If supported) |
DMA_DATA_FLAG_DEST_WIDE = $00000040;
|
Use wide writes on the dest address during the DMA request (If supported) |
DMA_DATA_FLAG_NOREAD = $00000080;
|
Ignore the source address and zero fill the destination (If supported) |
DMA_DATA_FLAG_NOWRITE = $00000100;
|
Ignore the dest address and cache fill from the source (If supported) |
DMA_DATA_FLAG_NOCLEAN = $00000200;
|
Do not perform cache clean on the source address (If applicable) |
DMA_DATA_FLAG_NOINVALIDATE = $00000400;
|
Do not perform cache invalidate on the dest address (If applicable) |
DMA_DATA_FLAG_BULK = $00000800;
|
Perform a bulk transfer (If applicable) |
PAGE_TABLE_FLAG_*
PAGE_TABLE_FLAG_NONE = $00000000;
|
|
Reserved 0x00000001 (Previously used incorrectly for PAGE_TABLE_FLAG_NONE) | |
PAGE_TABLE_FLAG_NORMAL = $00000002;
|
Page Table Entry represents Normal memory |
PAGE_TABLE_FLAG_DEVICE = $00000004;
|
Page Table Entry represents Device memory |
PAGE_TABLE_FLAG_ORDERED = $00000008;
|
Page Table Entry represents Ordered memory |
PAGE_TABLE_FLAG_SHARED = $00000010;
|
Page Table Entry represents Shared memory |
PAGE_TABLE_FLAG_CACHEABLE = $00000020;
|
Page Table Entry represents Cacheable memory |
PAGE_TABLE_FLAG_READONLY = $00000040;
|
Page Table Entry represents Read Only memory |
PAGE_TABLE_FLAG_READWRITE = $00000080;
|
Page Table Entry represents Read Write memory |
PAGE_TABLE_FLAG_EXECUTABLE = $00000100;
|
Page Table Entry represents Executable memory |
PAGE_TABLE_FLAG_WRITEBACK = $00000200;
|
Page Table Entry is Writeback Cacheable memory |
PAGE_TABLE_FLAG_WRITETHROUGH = $00000400;
|
Page Table Entry is Writethrough Cacheable memory |
PAGE_TABLE_FLAG_WRITEALLOCATE = $00000800;
|
Page Table Entry is Writeallocate Cacheable memory |
VECTOR_TABLE_ENTRY_*
ARM | |
VECTOR_TABLE_ENTRY_ARM_RESET = 0;
|
ARM Reset Vector |
VECTOR_TABLE_ENTRY_ARM_UNDEFINED = 1;
|
ARM Undefined Vector |
VECTOR_TABLE_ENTRY_ARM_SWI = 2;
|
ARM Software Interrupt (SWI) Vector |
VECTOR_TABLE_ENTRY_ARM_PREFETCH = 3;
|
ARM Prefetch Abort Vector |
VECTOR_TABLE_ENTRY_ARM_ABORT = 4;
|
ARM Data Abort Vector |
VECTOR_TABLE_ENTRY_ARM_RESERVED = 5;
|
ARM Reserved Vector |
VECTOR_TABLE_ENTRY_ARM_IRQ = 6;
|
ARM IRQ Vector |
VECTOR_TABLE_ENTRY_ARM_FIQ = 7;
|
ARM FIQ Vector |
AARCH64 |
EXCEPTION_TYPE_*
EXCEPTION_TYPE_DATA_ABORT = 1;
|
|
EXCEPTION_TYPE_PREFETCH_ABORT = 2;
|
|
EXCEPTION_TYPE_UNDEFINED_INSTRUCTION = 3;
|
PLATFORM_LOG_LEVEL_*
PLATFORM_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG;
|
Platform debugging messages |
PLATFORM_LOG_LEVEL_INFO = LOG_LEVEL_INFO;
|
Platform informational messages |
PLATFORM_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;
|
Platform error messages |
PLATFORM_LOG_LEVEL_NONE = LOG_LEVEL_NONE;
|
No Platform messages |
IRQ_LOG_LEVEL_*
IRQ_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG;
|
IRQ debugging messages |
IRQ_LOG_LEVEL_INFO = LOG_LEVEL_INFO;
|
IRQ informational messages |
IRQ_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;
|
IRQ error messages |
IRQ_LOG_LEVEL_NONE = LOG_LEVEL_NONE;
|
No IRQ messages |
FIQ_LOG_LEVEL_*
FIQ_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG;
|
FIQ debugging messages |
FIQ_LOG_LEVEL_INFO = LOG_LEVEL_INFO;
|
FIQ informational messages |
FIQ_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;
|
FIQ error messages |
FIQ_LOG_LEVEL_NONE = LOG_LEVEL_NONE;
|
No FIQ messages |
SWI_LOG_LEVEL_*
DEBUG = LOG_LEVEL_DEBUG;
|
SWI debugging messages |
SWI_LOG_LEVEL_INFO = LOG_LEVEL_INFO;
|
SWI informational messages |
SWI_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;
|
SWI error messages |
SWI_LOG_LEVEL_NONE = LOG_LEVEL_NONE;
|
No SWI messages |
Type definitions
IRQ mask
TIRQMask = LongWord;
|
FIQ mask
TFIQMask = LongWord;
|
IRQ/FIQ mask
TIRQFIQMask = LongWord;
|
Abort mask
TAbortMask = LongWord;
|
DMA data
PDMAData = ^TDMAData;
TDMAData = record
Data Properties | |
Source:Pointer;
|
Source address for DMA (May need to be allocated in accordance with DMA host configuration) |
Dest:Pointer;
|
Dest address for DMA (May need to be allocated in accordance with DMA host configuration) |
Size:LongWord;
|
Size for DMA transfer (For 2D stride the length of a row multiplied by the count of rows) |
Flags:LongWord;
|
Flags for DMA transfer (See DMA_DATA_FLAG_* above) |
Stride Properties | |
StrideLength:LongWord;
|
Length of each row during 2D stride (If supported) |
SourceStride:LongInt;
|
Increment between rows for source address during 2D stride (If supported) |
DestStride:LongInt;
|
Increment between rows for destination address during 2D stride (If supported) |
Next Block | |
Next:PDMAData;
|
Link to next DMA data block (or nil for the last block) |
System call request (SWI)
PSystemCallRequest = ^TSystemCallRequest;
TSystemCallRequest = record
Number:LongWord;
|
|
Param1:LongWord;
|
|
Param2:LongWord;
|
|
Param3:LongWord;
|
Handle entry
PHandleEntry = ^THandleEntry;
THandleEntry = record
Handle Properties | |
Signature:LongWord;
|
Signature for entry validation |
HandleType:LongWord;
|
Type of this Handle (eg HANDLE_TYPE_THREAD) |
HandleCount:LongWord;
|
Reference Count of the Handle |
Internal Properties | |
Prev:PHandleEntry;
|
Previous entry in Handle table |
Next:PHandleEntry;
|
Next entry in Handle table |
Statistics Properties | |
Shutdown entry
PShutdownEntry = ^TShutdownEntry;
TShutdownEntry = record
Shutdown Properties | |
Signature:LongWord;
|
Signature for entry validation |
Shutdown:procedure(Parameter:Pointer);
|
The procedure to call on Shutdown |
Parameter:Pointer;
|
The parameter to pass to the Shutdown procedure (or nil) |
Internal Properties | |
Prev:PShutdownEntry;
|
Previous entry in Shutdown table |
Next:PShutdownEntry;
|
Next entry in Shutdown table |
Interrupt entry (IRQ/FIQ)
PInterruptEntry = ^TInterruptEntry;
TInterruptEntry = record
Number:LongWord;
|
|
CPUID:LongWord;
|
|
Handler:procedure(Parameter:Pointer);
|
|
HandlerEx:function(CPUID:LongWord; Thread:TThreadHandle; Parameter:Pointer):TThreadHandle;
|
|
Parameter:Pointer;
|
System call entry (SWI)
PSystemCallEntry = ^TSystemCallEntry;
TSystemCallEntry = record
Number:LongWord;
|
|
CPUID:LongWord;
|
|
Handler:procedure(Request:PSystemCallRequest);
|
|
HandlerEx:function(CPUID:LongWord; Thread:TThreadHandle; Request:PSystemCallRequest):TThreadHandle;
|
Page table entry
PPageTableEntry = ^TPageTableEntry;
TPageTableEntry = record
VirtualAddress:PtrUInt;
|
|
PhysicalAddress:PtrUInt;
|
|
Size:LongWord;
|
|
Flags:LongWord;
|
Platform lock
PPlatformLock = ^TPlatformLock;
TPlatformLock = record
Lock:THandle;
|
|
AcquireLock:function(Handle:THandle):LongWord;
|
|
ReleaseLock:function(Handle:THandle):LongWord;
|
Platform semaphore
PPlatformSemaphore = ^TPlatformSemaphore;
TPlatformSemaphore = record
Semaphore:THandle;
|
|
WaitSemaphore:function(Handle:THandle):LongWord;
|
|
SignalSemaphore:function(Handle:THandle):LongWord;
|
CPU init
TCPUInit = procedure;
|
FPU init
TFPUInit = procedure;
|
GPU init
TGPUInit = procedure;
|
MMU init
TMMUInit = procedure;
|
SMP init
TSMPInit = procedure;
|
Cache init
TCacheInit = procedure;
|
Board init
TBoardInit = procedure;
|
Memory init
TMemoryInit = procedure;
|
Clock init
TClockInit = procedure;
|
Power init
TPowerInit = procedure;
|
Mailbox init
TMailboxInit = procedure;
|
Interrupt init
TInterruptInit = procedure;
|
Peripheral init
TPeripheralInit = procedure;
|
Framebuffer init
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 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;
|
GetPC
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
PTextIOData = ^TTextIOData;
TTextIOData = record
WriteChar:TTextIOWriteChar;
|
|
ReadChar:TTextIOReadChar;
|
|
UserData:Pointer;
|
Class definitions
To be documented
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 misc 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;
|
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;
|
GetSP/PC handlers
GetSPHandler:TGetSP;
|
GetPCHandler:TGetPC;
|
Enable/Disable/Save/RestoreIRQ/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;
|
HaltThread 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;
|
ContextSwitch 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;
|
PageTable handlers
PageTableGetBaseHandler:TPageTableGetBase;
|
PageTableGetSizeHandler:TPageTableGetSize;
|
PageTableGetEntryHandler:TPageTableGetEntry;
|
PageTableSetEntryHandler:TPageTableSetEntry;
|
PageTables handlers
PageTablesGetAddressHandler:TPageTablesGetAddress;
|
PageTablesGetLengthHandler:TPageTablesGetLength;
|
PageTablesGetCountHandler:TPageTablesGetCount;
|
PageTablesGetShiftHandler:TPageTablesGetShift;
|
PageTablesGetNextHandler:TPageTablesGetNext;
|
PageTablesGetUsedHandler:TPageTablesGetUsed;
|
PageTablesGetFreeHandler:TPageTablesGetFree;
|
VectorTable handlers
VectorTableGetBaseHandler:TVectorTableGetBase;
|
VectorTableGetSizeHandler:TVectorTableGetSize;
|
VectorTableGetCountHandler:TVectorTableGetCount;
|
VectorTableGetEntryHandler:TVectorTableGetEntry;
|
VectorTableSetEntryHandler:TVectorTableSetEntry;
|
FirstBitSet handler
FirstBitSetHandler:TFirstBitSet;
|
CountLeadingZeros handlers
CountLeadingZerosHandler:TCountLeadingZeros;
|
Console handlers
ConsoleGetKeyHandler:TConsoleGetKey;
|
ConsolePeekKeyHandler:TConsolePeekKey;
|
ConsoleWriteCharHandler:TConsoleWriteChar;
|
ConsoleReadCharHandler:TConsoleReadChar;
|
ConsoleReadWideCharHandler:TConsoleReadWideChar;
|
ConsoleHideMouseHandler:TConsoleHideMouse;
|
ConsoleShowMouseHandler:TConsoleShowMouse;
|
ConsoleReadMouseHandler:TConsoleReadMouse;
|
CodePage 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
procedure PlatformInit;
Note | None documented |
---|
procedure CPUInit;
Note | None documented |
---|
procedure FPUInit;
Note | None documented |
---|
procedure GPUInit;
Note | None documented |
---|
procedure MMUInit;
Note | None documented |
---|
procedure SMPInit;
Note | Secondary CPU boot is performed by SecondaryInit in Threads |
---|
procedure CacheInit;
Note | None documented |
---|
procedure BoardInit;
Note | None documented |
---|
procedure MemoryInit;
Note | None documented |
---|
procedure ClockInit;
Note | None documented |
---|
procedure PowerInit;
Note | None documented |
---|
procedure MailboxInit;
Note | None documented |
---|
procedure InterruptInit;
Note | None documented |
---|
procedure PeripheralInit;
Note | None documented |
---|
procedure ParseBootTags;
Note | None documented |
---|
procedure ParseCommandLine;
Note | None documented |
---|
procedure ParseEnvironment;
Note | None documented |
---|
Boot functions
procedure BootBlink; inline;
Note | Intended for startup diagnostics when bootstrapping a new board |
---|
procedure BootOutput(Value:LongWord); inline;
Note | Intended for startup diagnostics when bootstrapping a new board |
---|
LED functions
procedure PowerLEDEnable; inline;
Note | None documented |
---|
procedure PowerLEDOn; inline;
Note | None documented |
---|
procedure PowerLEDOff; inline;
Note | None documented |
---|
procedure ActivityLEDEnable; inline;
Note | None documented |
---|
procedure ActivityLEDOn; inline;
Note | None documented |
---|
procedure ActivityLEDOff; inline;
Note | None documented |
---|
Counter functions (Timer device)
function CounterAvailable:Boolean; inline;
Note | None documented |
---|
function CounterRead:LongWord; inline;
Return | The 32 bit current value of the counter or 0 on failure |
---|
function CounterRead64:Int64; inline;
Return | The 64 bit current value of the counter or 0 on failure |
---|
function CounterWait:LongWord; inline;
Return | ERROR_SUCCESS if the interval expired or another error code on failure |
---|
function CounterEvent(Callback:TCounterCallback; Data:Pointer):LongWord; inline;
Callback | The function to be called when the interval expires |
---|---|
Data | A pointer to be pass to the function when the interval expires (Optional) |
Return | ERROR_SUCCESS if the callback was scheduled successfully or another error code on failure |
function CounterCancel:LongWord; inline;
Return | ERROR_SUCCESS if the callback was cancelled successfully or another error code on failure |
---|
function CounterGetRate:LongWord; inline;
Return | The current clock rate in Hz or 0 on failure |
---|
function CounterSetRate(Rate:LongWord):LongWord; inline;
Rate | The clock rate in Hz to set |
---|---|
Return | ERROR_SUCCESS if the clock rate was set or another error code on failure |
function CounterGetInterval:LongWord; inline;
Return | The current interval in ticks or 0 on failure (or not set) |
---|---|
Note | The tick rate is determined by the clock rate |
function CounterSetInterval(Interval:LongWord):LongWord; inline;
Interval | The interval in ticks to set |
---|---|
Return | ERROR_SUCCESS if the interval was set or another error code on failure |
Note | The tick rate is determined by the clock rate |
Mailbox functions
function MailboxReceive(Mailbox,Channel:LongWord):LongWord; inline;
Note | None documented |
---|
procedure MailboxSend(Mailbox,Channel,Data:LongWord); inline;
Note | None documented |
---|
function MailboxCall(Mailbox,Channel,Data:LongWord; var Response:LongWord):LongWord; inline;
Note | None documented |
---|
function MailboxCallEx(Mailbox,Channel,Data:LongWord; var Response:LongWord; Timeout:LongWord):LongWord; inline;
Note | None documented |
---|
function MailboxPropertyCall(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord):LongWord; inline;
Note | None documented |
---|
function MailboxPropertyCallEx(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord; Timeout:LongWord):LongWord; inline;
Note | None documented |
---|
Random number functions
function RandomAvailable:Boolean; inline;
Note | The software random number generator from the RTL is always available |
---|
procedure RandomSeed(Seed:LongWord); inline;
Note | None documented |
---|
function RandomReadLongInt(Limit:LongInt):LongInt; inline;
Note | None documented |
---|
function RandomReadInt64(Limit:Int64):Int64; inline;
Note | None documented |
---|
function RandomReadExtended:Extended; inline;
Note | None documented |
---|
Watchdog Timer Functions
function WatchdogAvailable:Boolean; inline;
Note | None documented |
---|
function WatchdogStart(Milliseconds:LongWord):LongWord; inline;
Note | None documented |
---|
function WatchdogStop:LongWord; inline;
Note | None documented |
---|
function WatchdogRefresh(Milliseconds:LongWord):LongWord; inline;
Note | None documented |
---|
Interrupt request (IRQ) functions
function RequestIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
Note | If the IRQ number is already registered then the request will fail |
---|
function ReleaseIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
Note | If the IRQ number is not currently registered then the request will fail |
---|
function RequestExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
Note | If the IRQ number is already registered then the request will fail |
---|
function ReleaseExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
Note | If the IRQ number is not currently registered then the request will fail |
---|
Fast interrupt request (FIQ) functions
function RequestFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
Note | If the FIQ number is already registered then the request will fail |
---|
function ReleaseFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
Note | If the FIQ number is not currently registered then the request will fail |
---|
function RequestExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
Note | If the FIQ number is already registered then the request will fail |
---|
function ReleaseExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
Note | If the FIQ number is not currently registered then the request will fail |
---|
System call (Software Interrupt or SWI) functions
procedure SystemCall(Number:LongWord; Param1,Param2,Param3:PtrUInt); inline;
Number | The System Call number to be called |
---|---|
Param1 | The first parameter to pass to the function (Optional / Function defined) |
Param2 | The second parameter to pass to the function (Optional / Function defined) |
Param3 | The third parameter to pass to the function (Optional / Function defined) |
function RegisterSystemCall(Number:LongWord; Handler:TSystemCallHandler):LongWord; inline;
Number | The System Call number to be registered |
---|---|
Handler | The handler function to be registered |
Note | If the System Call number is already registered then the request will fail |
function DeregisterSystemCall(Number:LongWord; Handler:TSystemCallHandler):LongWord; inline;
Number | The System Call number to be deregistered |
---|---|
Handler | The handler function to be deregistered |
Note | If the System Call number is not currently registered then the request will fail |
function RegisterSystemCallEx(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord; inline;
CPUID | The CPU ID to register the System Call against (or CPU_ID_ALL) |
---|---|
Number | The System Call number to be registered |
Handler | The handler function to be registered (Optional) (Handler or HandlerEx must be specified, not both) |
HandlerEx | The extended handler function to be registered (Optional) (Handler or HandlerEx must be specified, not both) |
Note | If the System Call number is already registered then the request will fail |
function DeregisterSystemCallEx(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord; inline;
CPUID | The CPU ID to deregister the System Call from (or CPU_ID_ALL) |
---|---|
Number | The System Call number to be deregistered |
Handler | The handler function to be deregistered (Optional) (Handler or HandlerEx must be specified, not both) |
HandlerEx | The extended handler function to be deregistered (Optional) (Handler or HandlerEx must be specified, not both) |
Note | If the System Call number is not currently registered then the request will fail |
Interrupt entry functions
function GetInterruptCount:LongWord; inline;
Note | None documented |
---|
function GetInterruptStart:LongWord; inline;
Note | None documented |
---|
function GetInterruptEntry(Number:LongWord):TInterruptEntry; inline;
Note | None documented |
---|
Local interrupt entry functions
function GetLocalInterruptCount:LongWord; inline;
Note | None documented |
---|
function GetLocalInterruptStart:LongWord; inline;
Note | None documented |
---|
function GetLocalInterruptEntry(CPUID,Number:LongWord):TInterruptEntry; inline;
Note | None documented |
---|
System call entry functions
function GetSystemCallCount:LongWord; inline;
Note | None documented |
---|
function GetSystemCallEntry(Number:LongWord):TSystemCallEntry; inline;
Note | None documented |
---|
System functions
function SystemRestart(Delay:LongWord):LongWord; inline;
Note | None documented |
---|
function SystemShutdown(Delay:LongWord):LongWord; inline;
Note | None documented |
---|
function SystemGetUptime:Int64; inline;
Return | The current system up time |
---|---|
Note | This is the same time format as Windows FILE_TIME and is intended to allow compatibility with file system functions etc |
function SystemGetCommandLine:String; inline;
Note | None documented |
---|
function SystemGetEnvironment:Pointer; inline;
Note | None documented |
---|
CPU Functions
function CPUGetArch:LongWord; inline;
Note | None documented |
---|
function CPUGetType:LongWord; inline;
Note | None documented |
---|
function CPUGetBoot:LongWord; inline;
Note | None documented |
---|
function CPUGetMask:LongWord; inline;
Note | None documented |
---|
function CPUGetCount:LongWord; inline;
Note | None documented |
---|
function CPUGetMode:LongWord; inline;
Note | The return value is specific to the CPU type |
---|
function CPUGetState:LongWord; inline;
Note | None documented |
---|
function CPUGetCurrent:LongWord; inline;
Note | None documented |
---|
function CPUGetMemory(var Address:PtrUInt; var Length:LongWord):LongWord; inline;
Note | None documented |
---|
function CPUGetPercentage(CPUID:LongWord):Double; inline;
CPUID | The CPU to get utilization from or CPU_ID_ALL for average of all CPUs |
---|
function CPUGetUtilization(CPUID:LongWord):LongWord; inline;
CPUID | The CPU to get utilization from or CPU_ID_ALL for average of all CPUs |
---|
function CPUGetModel:LongWord; inline;
Note | None documented |
---|
function CPUGetRevision:LongWord; inline;
Note | The return value is specific to the CPU type and model |
---|
function CPUGetDescription:String; inline;
Note | None documented |
---|
FPU functions
function FPUGetType:LongWord; inline;
Note | None documented |
---|
function FPUGetState:LongWord; inline;
Note | None documented |
---|
GPU functions
function GPUGetType:LongWord; inline;
Note | None documented |
---|
function GPUGetState:LongWord; inline;
Note | None documented |
---|
function GPUGetMemory(var Address:PtrUInt; var Length:LongWord):LongWord; inline;
Note | None documented |
---|
Cache functions
function L1CacheGetType:LongWord; inline;
Note | None documented |
---|
function L1DataCacheGetSize:LongWord; inline;
Note | If data cache is not supported, the size returned is zero. If separate data and instruction caches are not supported, the size returned is the unified size. |
---|
function L1DataCacheGetLineSize:LongWord; inline;
Note | If data cache is not supported, the size returned is zero. If separate data and instruction caches are not supported, the size returned is the unified size. |
---|
function L1InstructionCacheGetSize:LongWord; inline;
Note | If instruction cache is not supported, the size returned is zero. If separate data and instruction caches are not supported, the size returned is the unified size. |
---|
function L1InstructionCacheGetLineSize:LongWord; inline;
Note | If instruction cache is not supported, the size returned is zero. If separate data and instruction caches are not supported, the size returned is the unified size. |
---|
function L2CacheGetType:LongWord; inline;
Note | None documented |
---|
function L2CacheGetSize:LongWord; inline;
Note | If L2 cache is not supported, the size returned is zero |
---|
function L2CacheGetLineSize:LongWord; inline;
Note | If L2 cache is not supported, the size returned is zero |
---|
Board functions
function BoardGetType:LongWord; inline;
Note | None documented |
---|
function BoardGetModel:LongWord; inline;
Note | None documented |
---|
function BoardGetSerial:Int64; inline;
Note | None documented |
---|
function BoardGetRevision:LongWord; inline;
Note | None documented |
---|
function BoardGetMACAddress:String; inline;
Note | None documented |
---|
Firmware functions
function FirmwareGetRevision:LongWord; inline;
Note | None documented |
---|
Machine functions
function MachineGetType:LongWord; inline;
Note | None documented |
---|
Memory functions
function MemoryGetBase:PtrUInt; inline;
Note | None documented |
---|
function MemoryGetSize:LongWord; inline;
Note | None documented |
---|
function MemoryGetPageSize:LongWord; inline;
Note | None documented |
---|
function MemoryGetLargePageSize:LongWord; inline;
Note | None documented |
---|
Power functions
function PowerOn(PowerId:LongWord):LongWord;
Note | None documented |
---|
function PowerOff(PowerId:LongWord):LongWord;
Note | None documented |
---|
function PowerGetWait(PowerId:LongWord):LongWord; inline;
Note | None documented |
---|
function PowerGetState(PowerId:LongWord):LongWord; inline;
Note | None documented |
---|
function PowerSetState(PowerId,State:LongWord; Wait:Boolean):LongWord; inline;
Note | None documented |
---|
Clock functions
function ClockGetTime:Int64;
Return | The current system time |
---|---|
Note | This is the same time format as Windows FILE_TIME and is intended to allow compatibility with file system functions etc. By default the time returned by this function is considered to be UTC but the actual conversion between UTC and local time is handled at a higher level. |
function ClockSetTime(const Time:Int64; RTC:Boolean):Int64;
Time | The time to be set |
---|---|
RTC | Set the default RTC (real time clock) if available |
Return | The system time after setting |
Note | This is the same time format as Windows FILE_TIME and is intended to allow compatibility with file system functions etc. By default the time passed to this function is considered to be UTC but the actual conversion between UTC and local time is handled at a higher level. |
function ClockGetCount:LongWord; inline;
Note | This will normally come from the free running system timer in the board and is useful as a form of tick count but not for time keeping because the actual rate at which this increments is dependent on the system timer clock frequency of the specific board and may not be a measure of time in its raw form. |
---|
function ClockGetTotal:Int64; inline;
Note | This will normally come from the free running system timer in the board and is useful as a form of tick count but not for time keeping because the actual rate at which this increments is dependent on the system timer clock frequency of the specific board and may not be a measure of time in its raw form. |
---|
function ClockUpdateOffset:LongWord; inline;
Note | None documented |
---|
function ClockGetRate(ClockId:LongWord):LongWord; inline;
Note | None documented |
---|
function ClockSetRate(ClockId,Rate:LongWord; Turbo:Boolean):LongWord; inline;
Note | None documented |
---|
function ClockGetState(ClockId:LongWord):LongWord; inline;
Note | None documented |
---|
function ClockSetState(ClockId,State:LongWord):LongWord; inline;
Note | None documented |
---|
function ClockGetMinRate(ClockId:LongWord):LongWord; inline;
Note | None documented |
---|
function ClockGetMaxRate(ClockId:LongWord):LongWord; inline;
Note | None documented |
---|
Turbo functions
function TurboGetState(TurboId:LongWord):LongWord; inline;
Note | None documented |
---|
function TurboSetState(TurboId,State:LongWord):LongWord; inline;
Note | None documented |
---|
Voltage functions
function VoltageGetValue(VoltageId:LongWord):LongWord; inline;
Note | None documented |
---|
function VoltageSetValue(VoltageId,Value:LongWord):LongWord; inline;
Note | None documented |
---|
function VoltageGetMinValue(VoltageId:LongWord):LongWord; inline;
Note | None documented |
---|
function VoltageGetMaxValue(VoltageId:LongWord):LongWord; inline;
Note | None documented |
---|
Temperature functions
function TemperatureGetCurrent(TemperatureId:LongWord):LongWord; inline;
Note | None documented |
---|
function TemperatureGetMaximum(TemperatureId:LongWord):LongWord; inline;
Note | None documented |
---|
GPU memory functions
function GPUMemoryAllocate(Length,Alignment,Flags:LongWord):THandle; inline;
Note | None documented |
---|
function GPUMemoryRelease(Handle:THandle):LongWord; inline;
Note | None documented |
---|
function GPUMemoryLock(Handle:THandle):LongWord; inline;
Note | None documented |
---|
function GPUMemoryUnlock(Handle:THandle):LongWord; inline;
Note | None documented |
---|
GPU misc functions
function GPUExecuteCode(Address:Pointer; R0,R1,R2,R3,R4,R5:LongWord):LongWord; inline;
Note | None documented |
---|
function DispmanxHandleGet(Resource:THandle):THandle; inline;
Note | None documented |
---|
function EDIDBlockGet(Block:LongWord; Buffer:Pointer; Length:LongWord):LongWord; inline;
Note | None documented |
---|
Framebuffer functions
function FramebufferAvailable:Boolean; inline;
Note | None documented |
---|
function FramebufferAllocate(Alignment:LongWord; var Address,Length:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferRelease:LongWord; inline;
Note | None documented |
---|
function FramebufferSetState(State:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferGetDimensions(var Width,Height,Top,Bottom,Left,Right:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferGetPhysical(var Width,Height:LongWord):LongWord; inline;
Note | The "physical" size is the size of the allocated buffer in memory, not the resolution of the video signal sent to the display device |
---|
function FramebufferSetPhysical(var Width,Height:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferTestPhysical(var Width,Height:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferGetVirtual(var Width,Height:LongWord):LongWord; inline;
Note | The "virtual" size is the portion of buffer that is sent to the display device, not the resolution the buffer itself. This may be smaller than the allocated buffer size in order to implement panning |
---|
function FramebufferSetVirtual(var Width,Height:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferTestVirtual(var Width,Height:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferGetDepth(var Depth:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferSetDepth(var Depth:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferTestDepth(var Depth:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferGetPixelOrder(var Order:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferSetPixelOrder(var Order:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferTestPixelOrder(var Order:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferGetAlphaMode(var Mode:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferSetAlphaMode(var Mode:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferTestAlphaMode(var Mode:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferGetPitch:LongWord; inline;
Note | None documented |
---|
function FramebufferGetOffset(var X,Y:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferSetOffset(var X,Y:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferTestOffset(var X,Y:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferGetOverscan(var Top,Bottom,Left,Right:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferSetOverscan(var Top,Bottom,Left,Right:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferTestOverscan(var Top,Bottom,Left,Right:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferGetPalette(Buffer:Pointer; Length:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferSetPalette(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferTestPalette(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferTestVsync:LongWord; inline;
Note | None documented |
---|
function FramebufferSetVsync:LongWord; inline;
Note | None documented |
---|
function FramebufferSetBacklight(Brightness:LongWord):LongWord; inline;
Note | None documented |
---|
Touch functions
function TouchGetBuffer(var Address:LongWord):LongWord; inline;
Note | None documented |
---|
Cursor functions
function CursorSetDefault:LongWord; inline;
Note | None documented |
---|
function CursorSetInfo(Width,Height,HotspotX,HotspotY:LongWord; Pixels:Pointer; Length:LongWord):LongWord; inline;
Note | None documented |
---|
function CursorSetState(Enabled:Boolean; X,Y:LongWord; Relative:Boolean):LongWord; inline;
Relative | X, Y is relative to Display (Virtual) not Framebuffer (Physical) |
---|
DMA functions
function DMAAvailable:Boolean; inline;
Note | None documented |
---|
function DMATransfer(Data:PDMAData; Direction,Peripheral:LongWord):LongWord; inline;
Data | A linked list of DMA data blocks for the transfer |
---|---|
Direction | The direction of the DMA request (eg DMA_DIR_MEM_TO_MEM) |
Peripheral | The peripheral ID for data request gating (eg DMA_DREQ_ID_NONE) |
function DMAFillMemory(Dest:Pointer; Size:LongWord; Value:Byte):LongWord; inline;
Dest | The address to start the memory fill |
---|---|
Size | The size of memory to fill in bytes |
Value | The value to fill the memory with |
function DMACopyMemory(Source,Dest:Pointer; Size:LongWord):LongWord; inline;
Source | The source address to start the memory copy |
---|---|
Dest | The destination address to start the memory copy |
Size | The size of memory to copy in bytes |
function DMAReadPeripheral(Address,Dest:Pointer; Size,Peripheral:LongWord):LongWord; inline;
Address | The address of the periperhal register to read from |
---|---|
Source | The destination address to start writing to |
Size | The size of the read in bytes |
Peripheral | The peripheral ID for data request gating (eg DMA_DREQ_ID_UART_RX) |
function DMAWritePeripheral(Source,Address:Pointer; Size,Peripheral:LongWord):LongWord; inline;
Source | The source address to start reading from |
---|---|
Address | The address of the peripheral register to write to |
Size | The size of the write in bytes |
Peripheral | The peripheral ID for data request gating (eg DMA_DREQ_ID_UART_TX) |
function DMAAllocateBuffer(Size:LongWord):Pointer; inline;
Size | The size of the buffer to allocate |
---|
function DMAAllocateBufferEx(var Size:LongWord):Pointer; inline;
Size | The size of the buffer to allocate (Updated on return to actual size) |
---|
function DMAReleaseBuffer(Buffer:Pointer):LongWord; inline;
Buffer | The buffer to be released |
---|
function DMAGetChannels:LongWord; inline;
Note | None documented |
---|
GPIO functions
function GPIOAvailable:Boolean; inline;
Reg | The memory register to read from |
---|---|
Value | The value of the memory register |
function GPIORead(Reg:LongWord):LongWord; inline;
Reg | The memory register to read from |
---|---|
Value | The value of the memory register |
procedure GPIOWrite(Reg,Value:LongWord); inline;
Reg | The memory register to write to |
---|---|
Value | The value to write to the register |
function GPIOInputGet(Pin:LongWord):LongWord; inline;
Pin | The pin to get the state for (eg GPIO_PIN_1) |
---|---|
Return | The current state (eg GPIO_LEVEL_HIGH) or GPIO_LEVEL_UNKNOWN on failure |
function GPIOInputWait(Pin,Trigger,Timeout:LongWord):LongWord; inline;
Pin | The pin to wait for the state to change (eg GPIO_PIN_1) |
---|---|
Trigger | The trigger event to wait for (eg GPIO_TRIGGER_HIGH) |
Timeout | Number of milliseconds to wait for the change (INFINITE to wait forever) |
Return | The state after the change (eg GPIO_LEVEL_HIGH) or GPIO_LEVEL_UNKNOWN on failure or timeout |
function GPIOInputEvent(Pin,Trigger,Timeout:LongWord; Callback:TGPIOCallback; Data:Pointer):LongWord; inline;
Pin | The pin to schedule the state change for (eg GPIO_PIN_1) |
---|---|
Trigger | The trigger event which will cause the function to be called (eg GPIO_TRIGGER_HIGH) |
Timeout | The number of milliseconds before the scheduled trigger expires (INFINITE to never expire) |
Callback | The function to be called when the trigger occurs |
Data | A pointer to be pass to the function when the trigger occurs (Optional) |
Return | ERROR_SUCCESS if the trigger was scheduled successfully or another error code on failure |
Note | The pin and trigger that caused the event will be passed to the callback function |
function GPIOOutputSet(Pin,Level:LongWord):LongWord; inline;
Pin | The pin to change the state for (eg GPIO_PIN_1) |
---|---|
Level | The state to change the pin to (eg GPIO_LEVEL_HIGH) |
Return | ERROR_SUCCESS if completed successfully or another error code on failure |
function GPIOPullGet(Pin:LongWord):LongWord; inline;
Pin | The pin to get the pull state for (eg GPIO_PIN_1) |
---|---|
Return | The current pull state of the pin (eg GPIO_PULL_UP) or GPIO_PULL_UNKNOWN on failure |
function GPIOPullSelect(Pin,Mode:LongWord):LongWord; inline;
Pin | The pin to change the pull state for (eg GPIO_PIN_1) |
---|---|
Mode | The pull state to set for the pin (eg GPIO_PULL_UP) |
Return | ERROR_SUCCESS if completed successfully or another error code on failure |
function GPIOFunctionGet(Pin:LongWord):LongWord; inline;
Pin | The pin to get the function for (eg GPIO_PIN_1) |
---|---|
Return | The current function of the pin (eg GPIO_FUNCTION_IN) or GPIO_FUNCTION_UNKNOWN on failure |
function GPIOFunctionSelect(Pin,Mode:LongWord):LongWord; inline;
Pin | The pin to change the function for (eg GPIO_PIN_1) |
---|---|
Mode | The function to set for the pin (eg GPIO_FUNCTION_OUT) |
Return | ERROR_SUCCESS if completed successfully or another error code on failure |
Virtual GPIO functions
function VirtualGPIOInputGet(Pin:LongWord):LongWord; inline;
Pin | The pin to get the state for (eg VIRTUAL_GPIO_PIN_1) |
---|---|
Return | The current state (eg GPIO_LEVEL_HIGH) or GPIO_LEVEL_UNKNOWN on failure |
function VirtualGPIOOutputSet(Pin,Level:LongWord):LongWord; inline;
Note | None documented |
---|
function VirtualGPIOFunctionSelect(Pin,Mode:LongWord):LongWord; inline;
Note | None documented |
---|
SPI functions
function SPIAvailable:Boolean; inline;
Note | None documented |
---|
function SPIStart(Mode,ClockRate,ClockPhase,ClockPolarity:LongWord):LongWord; inline;
Mode | The device mode to set (eg SPI_MODE_4WIRE) |
---|---|
ClockRate | The clock rate to set for the device |
ClockPhase | The clock phase to set (eg SPI_CLOCK_PHASE_LOW) |
ClockPolarity | The clock polarity to set (eg SPI_CLOCK_POLARITY_LOW) |
Return | ERROR_SUCCESS if completed or another error code on failure |
function SPIStop:LongWord; inline;
Return | ERROR_SUCCESS if completed or another error code on failure |
---|
function SPIRead(ChipSelect:Word; Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
ChipSelect | The chip select for the slave to read from (eg SPI_CS_0) |
---|---|
Dest | Pointer to a buffer to receive the data |
Size | The size of the buffer |
Count | The number of bytes read on return |
Return | ERROR_SUCCESS if completed or another error code on failure |
function SPIWrite(ChipSelect:Word; Source:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
ChipSelect | The chip select for the slave to write to (eg SPI_CS_0) |
---|---|
Source | Pointer to a buffer of data to transmit |
Size | The size of the buffer |
Count | The number of bytes written on return |
Return | ERROR_SUCCESS if completed or another error code on failure |
function SPIWriteRead(ChipSelect:Word; Source,Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
ChipSelect | The chip select for the slave to write to and read from (eg SPI_CS_0) |
---|---|
Source | Pointer to a buffer of data to transmit |
Dest | Pointer to a buffer to receive the data |
Size | The size of the buffer |
Count | The number of bytes written and read on return |
Return | ERROR_SUCCESS if completed or another error code on failure |
function SPIGetMode:LongWord; inline;
Return | The device mode or SPI_MODE_UNKNOWN on failure |
---|
function SPISetMode(Mode:LongWord):LongWord; inline;
Mode | The device mode to set (eg SPI_MODE_4WIRE) |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
function SPIGetClockRate(ChipSelect:Word):LongWord; inline;
ChipSelect | The chip select number to get clock rate from (SPI_CS_NONE for default) |
---|---|
Return | The clock rate in Hz or 0 on failure |
function SPISetClockRate(ChipSelect:Word;ClockRate:LongWord):LongWord; inline;
ClockRate | The clock rate to set in Hz |
---|---|
ChipSelect | The chip select number to set clock rate for (SPI_CS_NONE for default) |
Return | ERROR_SUCCESS if completed or another error code on failure |
function SPIGetClockPhase:LongWord; inline;
Return | The clock phase or SPI_CLOCK_PHASE_UNKNOWN on failure |
---|
function SPISetClockPhase(ClockPhase:LongWord):LongWord; inline;
ClockPhase | The clock phase to set (eg SPI_CLOCK_PHASE_LOW) |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
function SPIGetClockPolarity:LongWord; inline;
Return | The clock polarity or SPI_CLOCK_POLARITY_UNKNOWN on failure |
---|
function SPISetClockPolarity(ClockPolarity:LongWord):LongWord; inline;
ClockPolarity | The clock polarity to set (eg SPI_CLOCK_POLARITY_LOW) |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
function SPIGetSelectPolarity(ChipSelect:Word):LongWord; inline;
ChipSelect | The chip select number to get polarity from (SPI_CS_NONE for default) |
---|---|
Return | The chip select polarity or SPI_CS_POLARITY_UNKNOWN on failure |
function SPISetSelectPolarity(ChipSelect:Word; SelectPolarity:LongWord):LongWord; inline;
ChipSelect | The chip select number to set polarity for (SPI_CS_NONE for default) |
---|---|
SelectPolarity | The chip select polarity to set (eg SPI_CS_POLARITY_LOW) |
Return | ERROR_SUCCESS if completed or another error code on failure |
I2C functions
function I2CAvailable:Boolean; inline;
Note | None documented |
---|
function I2CStart(Rate:LongWord):LongWord; inline;
Rate | The clock rate to set for the device (0 to use the default rate) |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
function I2CStop:LongWord; inline;
Return | ERROR_SUCCESS if completed or another error code on failure |
---|
function I2CRead(Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Address | The slave address to read from (I2C_ADDRESS_INVALID to use the current address) |
---|---|
Buffer | Pointer to a buffer to receive the data |
Size | The size of the buffer |
Count | The number of bytes read on return |
Return | ERROR_SUCCESS if completed or another error code on failure |
function I2CWrite(Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Address | The slave address to write to (I2C_ADDRESS_INVALID to use the current address) |
---|---|
Buffer | Pointer to a buffer of data to transmit |
Size | The size of the buffer |
Count | The number of bytes written on return |
Return | ERROR_SUCCESS if completed or another error code on failure |
function I2CWriteRead(Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Address | The slave address to write to (I2C_ADDRESS_INVALID to use the current address) |
---|---|
Initial | Pointer to the initial buffer to transmit |
Len | The size of the initial buffer |
Data | Pointer to a buffer to receive the data |
Size | The size of the data buffer |
Count | The number of bytes read on return |
Return | ERROR_SUCCESS if completed or another error code on failure |
function I2CWriteWrite(Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Address | The slave address to write to (I2C_ADDRESS_INVALID to use the current address) |
---|---|
Initial | Pointer to the initial buffer to transmit |
Len | The size of the initial buffer |
Data | Pointer to a buffer of data to transmit |
Size | The size of the data buffer |
Count | The number of bytes of data written on return |
Return | ERROR_SUCCESS if completed or another error code on failure |
function I2CGetRate:LongWord; inline;
Return | The clock rate in Hz or 0 on failure |
---|
function I2CSetRate(Rate:LongWord):LongWord; inline;
Rate | The clock rate to set in Hz |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
function I2CGetAddress:Word; inline;
Return | The slave address or I2C_ADDRESS_INVALID on failure |
---|
function I2CSetAddress(Address:Word):LongWord; inline;
Address | The slave address to set |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
PWM functions
function PWMAvailable:Boolean; inline;
Note | None documented |
---|
function PWMStart:LongWord; inline;
Return | ERROR_SUCCESS if completed or another error code on failure |
---|
function PWMStop:LongWord; inline;
Return | ERROR_SUCCESS if completed or another error code on failure |
---|
function PWMWrite(Value:LongWord):LongWord; inline;
Value | The value to write |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | The exact meaning of value may depend on the device and other configured options, in many cases the value will represent the "on" time of each pulse with regard to the duty cycle of the waveform output by the device |
function PWMSetMode(Mode:LongWord):LongWord; inline;
Mode | The mode value to set (eg PWM_MODE_MARKSPACE) |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
function PWMSetRange(Range:LongWord):LongWord; inline;
Range | The range value to set |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | The exact meaning of range may depend on the device and other configured options, in many cases the range will represent the period of one full cycle of the waveform output by the device |
function PWMSetFrequency(Frequency:LongWord):LongWord; inline;
Frequency | The frequency to set in Hz |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
function PWMConfigure(DutyNS,PeriodNS:LongWord):LongWord; inline;
DutyNS | The "on" time part of the cycle (Nanoseconds) |
---|---|
PeriodNS | The duration of one full cycle (Nanoseconds) |
Return | ERROR_SUCCESS if completed or another error code on failure |
RTC functions
function RTCAvailable:Boolean; inline;
Note | None documented |
---|
function RTCGetTime:Int64; inline;
Note | Returned time is 100 nanosecond ticks since 1 January 1601. The same format as the ClockGetTime function. |
---|
function RTCSetTime(const Time:Int64):Int64; inline;
Time | The time to be set |
---|---|
Return | The device time after setting (or 0 on failure) |
Note | Time and returned time is 100 nanosecond ticks since 1 January 1601. The same format as the ClockSetTime function. |
Serial functions
function SerialAvailable:Boolean; inline;
Note | None documented |
---|
function SerialOpen(BaudRate,DataBits,StopBits,Parity,FlowControl,ReceiveDepth,TransmitDepth:LongWord):LongWord; inline;
BaudRate | Baud rate for the connection (eg 9600, 57600, 115200 etc |
---|---|
DataBits | Size of the data (eg SERIAL_DATA_8BIT) |
StopBits | Number of stop bits (eg SERIAL_STOP_1BIT) |
Parity | Parity type for the data (eg SERIAL_PARITY_NONE) |
FlowControl | Flow control for the connection (eg SERIAL_FLOW_NONE) |
ReceiveDepth | Size of the receive buffer (0 = Default size) |
TransmitDepth | Size of the transmit buffer (0 = Default size) |
function SerialClose:LongWord; inline;
Note | None documented |
---|
function SerialRead(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Buffer | Pointer to a buffer to receive the data |
---|---|
Size | The size of the buffer |
Count | The number of bytes read on return |
function SerialWrite(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Buffer | Pointer to a buffer of data to transmit |
---|---|
Size | The size of the buffer |
Count | The number of bytes written on return |
Peripheral functions
function PeripheralGetBase:PtrUInt; inline;
Note | None documented |
---|
function PeripheralGetSize:LongWord; inline;
Note | None documented |
---|
function PeripheralRead(Base,Reg:LongWord):LongWord; inline;
Note | None documented |
---|
procedure PeripheralWrite(Base,Reg,Value:LongWord); inline;
Note | None documented |
---|
function LocalPeripheralGetBase:PtrUInt; inline;
Note | None documented |
---|
function LocalPeripheralGetSize:LongWord; inline;
Note | None documented |
---|
System functions
function GetSP:PtrUInt; inline;
Note | None documented |
---|
function GetPC:PtrUInt; inline;
Note | None documented |
---|
function GetIRQ:Boolean; inline;
Return | True is enabled, False if disabled |
---|
procedure EnableIRQ; inline;
Note | None documented |
---|
procedure DisableIRQ; inline;
Note | None documented |
---|
function SaveIRQ:TIRQMask; inline;
Return | IRQ state when called |
---|
function RestoreIRQ(IRQMask:TIRQMask):TIRQMask; inline;
IRQMask | IRQ state to restore |
---|---|
Return | IRQ state when called |
function GetFIQ:Boolean; inline;
Return | True is enabled, False if disabled |
---|
procedure EnableFIQ; inline;
Note | None documented |
---|
procedure DisableFIQ; inline;
Note | None documented |
---|
function SaveFIQ:TFIQMask; inline;
Return | FIQ state when called |
---|
function RestoreFIQ(FIQMask:TFIQMask):TFIQMask; inline;
FIQMask | FIQ state to restore |
---|---|
Return | FIQ state when called |
procedure EnableIRQFIQ; inline;
Note | None documented |
---|
procedure DisableIRQFIQ; inline;
Note | None documented |
---|
function SaveIRQFIQ:TIRQFIQMask; inline;
Return | IRQ/FIQ state when called |
---|
function RestoreIRQFIQ(IRQFIQMask:TIRQFIQMask):TIRQFIQMask; inline;
IRQFIQMask | IRQ/FIQ state to restore |
---|---|
Return | IRQ/FIQ state when called |
function GetAbort:Boolean; inline;
Return | True is enabled, False if disabled |
---|
procedure EnableAbort; inline;
Note | None documented |
---|
procedure DisableAbort; inline;
Note | None documented |
---|
function SaveAbort:TAbortMask; inline;
Return | Abort state when called |
---|
function RestoreAbort(AbortMask:TAbortMask):TAbortMask; inline;
AbortMask | Abort state to restore |
---|---|
Return | Abort state when called |
procedure Halt; inline;
Note | None documented |
---|
procedure Pause; inline;
Note | None documented |
---|
function HaltThread(ExitCode:LongWord):LongWord; inline;
Note | None documented |
---|
procedure SendEvent; inline;
Note | None documented |
---|
procedure WaitForEvent; inline;
Note | None documented |
---|
procedure WaitForInterrupt; inline;
Note | None documented |
---|
procedure ReadMemoryBarrier; inline;
Note | None documented |
---|
procedure WriteMemoryBarrier; inline;
Note | None documented |
---|
procedure DataMemoryBarrier; inline;
Note | None documented |
---|
procedure DataSynchronizationBarrier; inline;
Note | None documented |
---|
procedure InstructionMemoryBarrier; inline;
Note | None documented |
---|
procedure InvalidateTLB; inline;
Note | None documented |
---|
procedure InvalidateDataTLB; inline;
Note | None documented |
---|
procedure InvalidateInstructionTLB; inline;
Note | None documented |
---|
procedure InvalidateCache; inline;
Note | None documented |
---|
procedure CleanDataCache; inline;
Note | None documented |
---|
procedure InvalidateDataCache; inline;
Note | None documented |
---|
procedure CleanAndInvalidateDataCache; inline;
Note | None documented |
---|
procedure InvalidateInstructionCache; inline;
Note | None documented |
---|
procedure CleanDataCacheRange(Address,Size:LongWord); inline;
Note | None documented |
---|
procedure InvalidateDataCacheRange(Address,Size:LongWord); inline;
Note | None documented |
---|
procedure CleanAndInvalidateDataCacheRange(Address,Size:LongWord); inline;
Note | None documented |
---|
procedure InvalidateInstructionCacheRange(Address,Size:LongWord); inline;
Note | None documented |
---|
procedure FlushPrefetchBuffer; inline;
Note | None documented |
---|
procedure FlushBranchTargetCache; inline;
Note | None documented |
---|
procedure ContextSwitch(OldStack,NewStack:Pointer; NewThread:TThreadHandle); inline;
Note | None documented |
---|
procedure ContextSwitchIRQ(OldStack,NewStack:Pointer; NewThread:TThreadHandle); inline;
Note | None documented |
---|
procedure ContextSwitchFIQ(OldStack,NewStack:Pointer; NewThread:TThreadHandle); inline;
Note | None documented |
---|
procedure ContextSwitchSWI(OldStack,NewStack:Pointer; NewThread:TThreadHandle); inline;
Note | None documented |
---|
function InterlockedOr(var Target:LongInt;Value:LongInt):LongInt; inline;
Note | None documented |
---|
function InterlockedXor(var Target:LongInt; Value:LongInt):LongInt; inline;
Note | None documented |
---|
function InterlockedAnd(var Target:LongInt; Value:LongInt):LongInt; inline;
Note | None documented |
---|
function InterlockedDecrement(var Target:LongInt):LongInt; inline;
Note | None documented |
---|
function InterlockedIncrement(var Target:LongInt):LongInt; inline;
Note | None documented |
---|
function InterlockedExchange(var Target:LongInt; Source:LongInt):LongInt; inline;
Note | None documented |
---|
function InterlockedAddExchange(var Target:LongInt; Source:LongInt):LongInt; inline;
Note | None documented |
---|
function InterlockedCompareExchange(var Target:LongInt; Source,Compare:LongInt):LongInt; inline;
Note | None documented |
---|
function PageTableGetBase:PtrUInt; inline;
Note | None documented |
---|
function PageTableGetSize:LongWord; inline;
Note | None documented |
---|
function PageTableGetEntry(Address:PtrUInt):TPageTableEntry; inline;
Note | None documented |
---|
function PageTableSetEntry(const Entry:TPageTableEntry):LongWord; inline;
Note | None documented |
---|
function PageTablesGetAddress:PtrUInt; inline;
Note | None documented |
---|
function PageTablesGetLength:LongWord; inline;
Note | None documented |
---|
function PageTablesGetCount:LongWord; inline;
Note | None documented |
---|
function PageTablesGetShift:LongWord; inline;
Note | None documented |
---|
function PageTablesGetNext:PtrUInt; inline;
Note | None documented |
---|
function PageTablesGetUsed:LongWord; inline;
Note | None documented |
---|
function PageTablesGetFree:LongWord; inline;
Note | None documented |
---|
function VectorTableGetBase:PtrUInt; inline;
Note | None documented |
---|
function VectorTableGetSize:LongWord; inline;
Note | None documented |
---|
function VectorTableGetCount:LongWord; inline;
Note | None documented |
---|
function VectorTableGetEntry(Number:LongWord):PtrUInt; inline;
Note | None documented |
---|
function VectorTableSetEntry(Number:LongWord; Address:PtrUInt):LongWord; inline;
Note | None documented |
---|
Exception functions
procedure HardwareException(AType:LongWord; Address,Frame:Pointer);
Note | None documented |
---|
procedure UnhandledException(Obj:TObject; Addr:CodePointer; FrameCount:LongInt; Frames:PCodePointer); {[public,alias:'FPC_BREAK_UNHANDLED_EXCEPTION'];}
Note | None documented |
---|
Text IO functions
procedure TextIOOpen(var F:Text; AWrite:TTextIOWriteChar; ARead:TTextIOReadChar; AMode:LongInt; AUserData:Pointer);
Note | None documented |
---|
procedure TextIOClose(var T:TextRec);
Note | None documented |
---|
procedure TextIORead(var T:TextRec);
Note | None documented |
---|
procedure TextIOWrite(var T:TextRec);
Note | None documented |
---|
function TextIOReadData(ARead:TTextIOReadChar; AUserData:Pointer; ABuffer:PChar; ACount:LongInt):LongInt;
Note | None documented |
---|
Console functions
function ConsoleGetKey(var ACh:Char; AUserData:Pointer):Boolean; inline;
Note | None documented |
---|
function ConsolePeekKey(var ACh:Char; AUserData:Pointer):Boolean; inline;
Note | None documented |
---|
function ConsoleWriteChar(ACh:Char; AUserData:Pointer):Boolean; inline;
Note | None documented |
---|
function ConsoleReadChar(var ACh:Char; AUserData:Pointer):Boolean; inline;
Note | None documented |
---|
function ConsoleReadWideChar(var ACh:WideChar; AUserData:Pointer):Boolean; inline;
Note | None documented |
---|
function ConsoleHideMouse(AUserData:Pointer):Boolean; inline;
Note | None documented |
---|
function ConsoleShowMouse(X,Y:LongWord; AUserData:Pointer):Boolean; inline;
Note | None documented |
---|
function ConsoleReadMouse(var X,Y,Buttons:LongWord; AUserData:Pointer):Boolean; inline;
Note | None documented |
---|
CodePage functions
function CodePageToWideChar(Ch:Char):WideChar; inline;
Note | None documented |
---|
function WideCharToCodePage(Ch:WideChar):Char; inline;
Note | None documented |
---|
Name functions
function HostGetName:String; inline;
Note | None documented |
---|
function HostSetName(const AName:String):Boolean; inline;
Note | None documented |
---|
function HostGetDomain:String; inline;
Note | None documented |
---|
function HostSetDomain(const ADomain:String):Boolean; inline;
Note | None documented |
---|
Logging functions
procedure LoggingOutput(const AText:String); inline;
Note | None documented |
---|
procedure LoggingOutputEx(AFacility,ASeverity:LongWord; const ATag,AContent:String); inline;
Note | None documented |
---|
Utility functions
function FirstBitSet(Value:LongWord):LongWord; inline;
Note | Returns 31 for MSB and 0 for LSB (0xFFFFFFFF / -1 if no bits are set) |
---|
function CountLeadingZeros(Value:LongWord):LongWord; inline;
Note | Returns 32 if no bits are set |
---|
function PhysicalToIOAddress(Address:Pointer):LongWord; inline;
Note | None documented |
---|
function IOAddressToPhysical(Address:Pointer):LongWord; inline;
Note | None documented |
---|
function PhysicalToBusAddress(Address:Pointer):LongWord; inline;
Note | None documented |
---|
function BusAddressToPhysical(Address:Pointer):LongWord; inline;
Note | None documented |
---|
procedure NanosecondDelay(Nanoseconds:LongWord);
Nanseconds | Number of nanoseconds to wait |
---|
procedure MicrosecondDelay(Microseconds:LongWord);
Milliseconds | Number of microseconds to wait |
---|
procedure MillisecondDelay(Milliseconds:LongWord);
Milliseconds | Number of milliseconds to wait |
---|
procedure NanosecondDelayEx(Nanoseconds:LongWord; Wait:Boolean);
Nanoseconds | Number of nanoseconds to wait |
---|---|
Wait | Use WaitForInterrupt on each loop to reduce power consumption |
Note | Not suitable for use by interrupt handlers if wait is true |
procedure MicrosecondDelayEx(Microseconds:LongWord; Wait:Boolean);
Milliseconds | Number of milliseconds to wait |
---|---|
Wait | Use WaitForInterrupt on each loop to reduce power consumption |
Note | Not suitable for use by interrupt handlers if wait is true |
procedure MillisecondDelayEx(Milliseconds:LongWord; Wait:Boolean);
Milliseconds | Number of milliseconds to wait |
---|---|
Wait | Use WaitForInterrupt on each loop to reduce power consumption |
Note | Not suitable for use by interrupt handlers if wait is true |
System random functions
procedure SystemRandomize;
Note | None documented |
---|
Dos conversion functions
function DosGetMsCount:Int64;
Note | None documented |
---|
Dos Info/Date/Time functions
function DosDosVersion:Word;
Note | None documented |
---|
procedure DosGetDate(var Year,Month,MDay,WDay:Word);
Note | None documented |
---|
procedure DosSetDate(Year,Month,Day:Word);
Note | None documented |
---|
procedure DosGetTime(var Hour,Minute,Second,Sec100:Word);
Note | None documented |
---|
procedure DosSetTime(Hour,Minute,Second,Sec100:Word);
Note | None documented |
---|
Dos environment functions
function DosEnvCount:Longint;
Note | None documented |
---|
function DosEnvStr(Index:LongInt):ShortString;
Note | None documented |
---|
function DosGetEnv(EnvVar:ShortString):ShortString;
Note | None documented |
---|
SysUtils tick functions
function SysUtilsGetTickCount:LongWord;
Note | None documented |
---|
function SysUtilsGetTickCount64:QWord;
Note | None documented |
---|
SysUtils locale functions
procedure SysUtilsGetLocalTime(var SystemTime:TSystemTime);
Note | Includes timezone offset if configured |
---|
procedure SysUtilsSetLocalTime(const SystemTime:TSystemTime);
Note | Includes timezone offset if configured |
---|
function SysUtilsGetLocalTimeOffset:Integer;
Note | None documented |
---|
Platform helper functions
procedure PlatformLog(Level:LongWord; const AText:String);
Note | None documented |
---|
procedure PlatformLogInfo(const AText:String);
Note | None documented |
---|
procedure PlatformLogError(const AText:String);
Note | None documented |
---|
procedure PlatformLogDebug(const AText:String);
Note | None documented |
---|
Return to Unit Reference