Difference between revisions of "Unit Platform"
(Created page with "Return to Unit Reference === Description === ---- ''To be documented'' === Constants === ---- ''To be documented'' === Type definitions === ---- ''To...") |
|||
(150 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
---- | ---- | ||
− | '' | + | '''Ultibo Platform Interface unit''' |
=== Constants === | === Constants === | ||
---- | ---- | ||
− | '' | + | |
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Handle flag''' <code> HANDLE_FLAG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>HANDLE_FLAG_NONE = $00000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>HANDLE_FLAG_NAMED = $00000001;</code> | ||
+ | | Set if the handle has a name | ||
+ | |- | ||
+ | | <code>HANDLE_FLAG_DUPLICATE = $00000002;</code> | ||
+ | | Set if the handle can be duplicated | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>HANDLE_FLAG_INTERNAL = HANDLE_FLAG_NONE + $80000000;</code> | ||
+ | | Note: Temporary value to avoid warning | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Handle constants''' <code> HANDLE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>HANDLE_SIGNATURE = $CD15E20A;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>HANDLE_TABLE_MIN = $100;</code> | ||
+ | | Minimum handle number (Skip first 256) | ||
+ | |- | ||
+ | | <code>HANDLE_TABLE_MAX = $7FFFFFFF;</code> | ||
+ | | Maximum handle number (Avoid MSB as THandle is a signed value) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>HANDLE_TABLE_MASK = $7FF;</code> | ||
+ | | 2048 buckets for handle lookups | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>HANDLE_NAME_LENGTH = 256;</code> | ||
+ | | Maximum length of handle name | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''DMA data flag''' <code> DMA_DATA_FLAG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>DMA_DATA_FLAG_NONE = $00000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>DMA_DATA_FLAG_STRIDE = $00000001;</code> | ||
+ | | Transfer from the source to the destination using 2D stride (If supported) | ||
+ | |- | ||
+ | | <code>DMA_DATA_FLAG_SOURCE_NOINCREMENT = $00000002;</code> | ||
+ | | Don't increment the source address during the DMA request (If supported) | ||
+ | |- | ||
+ | | <code>DMA_DATA_FLAG_DEST_NOINCREMENT = $00000004;</code> | ||
+ | | Don't increment the dest address during the DMA request (If supported) | ||
+ | |- | ||
+ | | <code>DMA_DATA_FLAG_SOURCE_DREQ = $00000008;</code> | ||
+ | | Use DREQ gating on the source address during the DMA request (If supported) | ||
+ | |- | ||
+ | | <code>DMA_DATA_FLAG_DEST_DREQ = $00000010;</code> | ||
+ | | Use DREQ gating on the dest address during the DMA request (If supported) | ||
+ | |- | ||
+ | | <code>DMA_DATA_FLAG_SOURCE_WIDE = $00000020;</code> | ||
+ | | Use wide reads on the source address during the DMA request (If supported) | ||
+ | |- | ||
+ | | <code>DMA_DATA_FLAG_DEST_WIDE = $00000040;</code> | ||
+ | | Use wide writes on the dest address during the DMA request (If supported) | ||
+ | |- | ||
+ | | <code>DMA_DATA_FLAG_NOREAD = $00000080;</code> | ||
+ | | Ignore the source address and zero fill the destination (If supported) | ||
+ | |- | ||
+ | | <code>DMA_DATA_FLAG_NOWRITE = $00000100;</code> | ||
+ | | Ignore the dest address and cache fill from the source (If supported) | ||
+ | |- | ||
+ | | <code>DMA_DATA_FLAG_NOCLEAN = $00000200;</code> | ||
+ | | Do not perform cache clean on the source address (If applicable) | ||
+ | |- | ||
+ | | <code>DMA_DATA_FLAG_NOINVALIDATE = $00000400;</code> | ||
+ | | Do not perform cache invalidate on the dest address (If applicable) | ||
+ | |- | ||
+ | | <code>DMA_DATA_FLAG_BULK = $00000800;</code> | ||
+ | | Perform a bulk transfer (Higher transfer throughput) (If applicable) | ||
+ | |- | ||
+ | | <code>DMA_DATA_FLAG_LITE = $00001000;</code> | ||
+ | | Perform a "lite" transfer (Lower transfer throughput but less waiting for free channel) (If applicable) | ||
+ | |- | ||
+ | | <code>DMA_DATA_FLAG_40BIT = $00002000;</code> | ||
+ | | Perform a 40-bit address transfer (Address to memory above 1GB or 4GB depending on SoC) (If applicable) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Page table flag''' <code> PAGE_TABLE_FLAG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>PAGE_TABLE_FLAG_NONE = $00000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|''Reserved 0x00000001 (Previously used incorrectly for PAGE_TABLE_FLAG_NONE)'' | ||
+ | |- | ||
+ | | <code>PAGE_TABLE_FLAG_NORMAL = $00000002;</code> | ||
+ | | Page Table Entry represents Normal memory | ||
+ | |- | ||
+ | | <code>PAGE_TABLE_FLAG_DEVICE = $00000004;</code> | ||
+ | | Page Table Entry represents Device memory | ||
+ | |- | ||
+ | | <code>PAGE_TABLE_FLAG_ORDERED = $00000008;</code> | ||
+ | | Page Table Entry represents Ordered memory | ||
+ | |- | ||
+ | | <code>PAGE_TABLE_FLAG_SHARED = $00000010;</code> | ||
+ | | Page Table Entry represents Shared memory | ||
+ | |- | ||
+ | | <code>PAGE_TABLE_FLAG_CACHEABLE = $00000020;</code> | ||
+ | | Page Table Entry represents Cacheable memory | ||
+ | |- | ||
+ | | <code>PAGE_TABLE_FLAG_READONLY = $00000040;</code> | ||
+ | | Page Table Entry represents Read Only memory | ||
+ | |- | ||
+ | | <code>PAGE_TABLE_FLAG_READWRITE = $00000080;</code> | ||
+ | | Page Table Entry represents Read Write memory | ||
+ | |- | ||
+ | | <code>PAGE_TABLE_FLAG_EXECUTABLE = $00000100;</code> | ||
+ | | Page Table Entry represents Executable memory | ||
+ | |- | ||
+ | | <code>PAGE_TABLE_FLAG_WRITEBACK = $00000200;</code> | ||
+ | | Page Table Entry is Writeback Cacheable memory | ||
+ | |- | ||
+ | | <code>PAGE_TABLE_FLAG_WRITETHROUGH = $00000400;</code> | ||
+ | | Page Table Entry is Writethrough Cacheable memory | ||
+ | |- | ||
+ | | <code>PAGE_TABLE_FLAG_WRITEALLOCATE = $00000800;</code> | ||
+ | | Page Table Entry is Writeallocate Cacheable memory | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Interrupt entry flag''' <code> INTERRUPT_FLAG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>INTERRUPT_FLAG_NONE = $00000000;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>INTERRUPT_FLAG_SHARED = $00000001;</code> | ||
+ | | A shared interrupt, multiple devices can register for the same interrupt and each will be called until one returns INTERRUPT_RETURN_HANDLED | ||
+ | |- | ||
+ | | <code>INTERRUPT_FLAG_LOCAL = $00000002;</code> | ||
+ | | A local interrupt, generated only on the CPU it is associated with | ||
+ | |- | ||
+ | | <code>INTERRUPT_FLAG_IPI = $00000004;</code> | ||
+ | | A software interrupt or inter processor interrupt, generated by a software request instead of hardware | ||
+ | |- | ||
+ | | <code>INTERRUPT_FLAG_FIQ = $00000008;</code> | ||
+ | | A fast interrupt, takes precedence over all other interrupts (where applicable) | ||
+ | |- | ||
+ | | <code>INTERRUPT_FLAG_CHAINED = $00000010;</code> | ||
+ | | A chained interrupt, multiple devices can register for the same interrupt and all will be called when it occurs | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Interrupt priority value''' <code> INTERRUPT_PRIORITY_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>INTERRUPT_PRIORITY_MAXIMUM = $00;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>INTERRUPT_PRIORITY_FIQ = $40;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>INTERRUPT_PRIORITY_DEFAULT = $A0;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>INTERRUPT_PRIORITY_MINIMUM = $F0;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Interrupt return value''' <code> INTERRUPT_RETURN_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>INTERRUPT_RETURN_NONE = 0;</code> | ||
+ | | style="width: 50%;"|Shared interrupt not handled or not for this device | ||
+ | |- | ||
+ | | <code>INTERRUPT_RETURN_HANDLED = 1;</code> | ||
+ | | Shared interrupt handled, no further processing | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Vector table entry''' <code> VECTOR_TABLE_ENTRY_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|''ARM'' | ||
+ | |- | ||
+ | | <code>VECTOR_TABLE_ENTRY_ARM_RESET = 0;</code> | ||
+ | | ARM Reset Vector | ||
+ | |- | ||
+ | | <code>VECTOR_TABLE_ENTRY_ARM_UNDEFINED = 1;</code> | ||
+ | | ARM Undefined Vector | ||
+ | |- | ||
+ | | <code>VECTOR_TABLE_ENTRY_ARM_SWI = 2;</code> | ||
+ | | ARM Software Interrupt (SWI) Vector | ||
+ | |- | ||
+ | | <code>VECTOR_TABLE_ENTRY_ARM_PREFETCH = 3;</code> | ||
+ | | ARM Prefetch Abort Vector | ||
+ | |- | ||
+ | | <code>VECTOR_TABLE_ENTRY_ARM_ABORT = 4;</code> | ||
+ | | ARM Data Abort Vector | ||
+ | |- | ||
+ | | <code>VECTOR_TABLE_ENTRY_ARM_RESERVED = 5;</code> | ||
+ | | ARM Reserved Vector | ||
+ | |- | ||
+ | | <code>VECTOR_TABLE_ENTRY_ARM_IRQ = 6;</code> | ||
+ | | ARM IRQ Vector | ||
+ | |- | ||
+ | | <code>VECTOR_TABLE_ENTRY_ARM_FIQ = 7;</code> | ||
+ | | ARM FIQ Vector | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Shutdown flag''' <code> SHUTDOWN_FLAG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SHUTDOWN_FLAG_NONE = $00000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SHUTDOWN_FLAG_RESTART = $00000001;</code> | ||
+ | | The system is shutting down and restarting | ||
+ | |- | ||
+ | | <code>SHUTDOWN_FLAG_FORCE = $00000002;</code> | ||
+ | | Forced shutdown or restart requested, registered callbacks will be bypassed | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Shutdown constant''' <code> SHUTDOWN_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SHUTDOWN_SIGNATURE = $A73D8B0C;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SHUTDOWN_DEFAULT_DELAY = 1000;</code> | ||
+ | | Default delay before starting a shutdown or restart (Milliseconds) | ||
+ | |- | ||
+ | | <code>SHUTDOWN_MINIMUM_DELAY = 10;</code> | ||
+ | | Minimum delay before starting a shutdown or restart (Milliseconds) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SHUTDOWN_DEFAULT_TIMEOUT = 5000;</code> | ||
+ | | Default time to wait for a shutdown callback to complete before continuing (Milliseconds) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Exception type''' <code> EXCEPTION_TYPE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>EXCEPTION_TYPE_DATA_ABORT = 1;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>EXCEPTION_TYPE_PREFETCH_ABORT = 2;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>EXCEPTION_TYPE_UNDEFINED_INSTRUCTION = 3;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Firmware throttling flag''' <code> FIRMWARE_THROTTLE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>FIRMWARE_THROTTLE_NONE = (0 shl 0);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FIRMWARE_THROTTLE_UNDER_VOLTAGE = (1 shl 0);</code> | ||
+ | | Under voltage is occurring | ||
+ | |- | ||
+ | | <code>FIRMWARE_THROTTLE_FREQUENCY_LIMIT = (1 shl 1);</code> | ||
+ | | Frequency limiting is occurring | ||
+ | |- | ||
+ | | <code>FIRMWARE_THROTTLE_THROTTLED = (1 shl 2);</code> | ||
+ | | Throttling is occurring | ||
+ | |- | ||
+ | | <code>FIRMWARE_THROTTLE_SOFT_TEMP_LIMIT = (1 shl 3);</code> | ||
+ | | Soft temperature limit is active | ||
+ | |- | ||
+ | | <code>FIRMWARE_THROTTLE_WAS_UNDER_VOLTAGE = (1 shl 16);</code> | ||
+ | | Under voltage has occurred | ||
+ | |- | ||
+ | | <code>FIRMWARE_THROTTLE_WAS_FREQUENCY_LIMIT = (1 shl 17);</code> | ||
+ | | Frequency limiting has occurred | ||
+ | |- | ||
+ | | <code>FIRMWARE_THROTTLE_WAS_THROTTLED = (1 shl 18);</code> | ||
+ | | Throttling has occurred | ||
+ | |- | ||
+ | | <code>FIRMWARE_THROTTLE_WAS_SOFT_TEMP_LIMIT = (1 shl 19);</code> | ||
+ | | Soft temperature limit has occurred | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Platform logging''' <code> PLATFORM_LOG_LEVEL_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>PLATFORM_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG;</code> | ||
+ | | Platform debugging messages | ||
+ | |- | ||
+ | | <code>PLATFORM_LOG_LEVEL_INFO = LOG_LEVEL_INFO;</code> | ||
+ | | Platform informational messages | ||
+ | |- | ||
+ | | <code>PLATFORM_LOG_LEVEL_WARN = LOG_LEVEL_WARN;</code> | ||
+ | | Platform warning messages | ||
+ | |- | ||
+ | | <code>PLATFORM_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;</code> | ||
+ | | Platform error messages | ||
+ | |- | ||
+ | | <code>PLATFORM_LOG_LEVEL_NONE = LOG_LEVEL_NONE;</code> | ||
+ | | No Platform messages | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''IRQ logging''' <code> IRQ_LOG_LEVEL_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>IRQ_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG;</code> | ||
+ | | IRQ debugging messages | ||
+ | |- | ||
+ | | <code>IRQ_LOG_LEVEL_INFO = LOG_LEVEL_INFO;</code> | ||
+ | | IRQ informational messages | ||
+ | |- | ||
+ | | <code>IRQ_LOG_LEVEL_WARN = LOG_LEVEL_WARN;</code> | ||
+ | | IRQ warning messages | ||
+ | |- | ||
+ | | <code>IRQ_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;</code> | ||
+ | | IRQ error messages | ||
+ | |- | ||
+ | | <code>IRQ_LOG_LEVEL_NONE = LOG_LEVEL_NONE;</code> | ||
+ | | No IRQ messages | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''FIQ logging''' <code> FIQ_LOG_LEVEL_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>FIQ_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG;</code> | ||
+ | | FIQ debugging messages | ||
+ | |- | ||
+ | | <code>FIQ_LOG_LEVEL_INFO = LOG_LEVEL_INFO;</code> | ||
+ | | FIQ informational messages | ||
+ | |- | ||
+ | | <code>FIQ_LOG_LEVEL_WARN = LOG_LEVEL_WARN;</code> | ||
+ | | FIQ warning messages | ||
+ | |- | ||
+ | | <code>FIQ_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;</code> | ||
+ | | FIQ error messages | ||
+ | |- | ||
+ | | <code>FIQ_LOG_LEVEL_NONE = LOG_LEVEL_NONE;</code> | ||
+ | | No FIQ messages | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SWI logging''' <code> SWI_LOG_LEVEL_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>DEBUG = LOG_LEVEL_DEBUG;</code> | ||
+ | | SWI debugging messages | ||
+ | |- | ||
+ | | <code>SWI_LOG_LEVEL_INFO = LOG_LEVEL_INFO;</code> | ||
+ | | SWI informational messages | ||
+ | |- | ||
+ | | <code>SWI_LOG_LEVEL_WARN = LOG_LEVEL_WARN;</code> | ||
+ | | SWI warning messages | ||
+ | |- | ||
+ | | <code>SWI_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;</code> | ||
+ | | SWI error messages | ||
+ | |- | ||
+ | | <code>SWI_LOG_LEVEL_NONE = LOG_LEVEL_NONE;</code> | ||
+ | | No SWI messages | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
=== Type definitions === | === Type definitions === | ||
---- | ---- | ||
− | '' | + | |
+ | '''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:PtrUInt;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Param2:PtrUInt;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Param3:PtrUInt;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Handle close''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>THandleClose = procedure(Data:THandle);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Handle close extended''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>THandleCloseEx = function(Data:THandle):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Handle duplicate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>THandleDuplicate = function(Data:THandle):THandle;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Handle enumeration callback''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>THandleEnumerate = function(Handle:PHandleEntry; Data:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''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>Handle:THandle;</code> | ||
+ | | Handle (Number) of this Handle | ||
+ | |- | ||
+ | | <code>HandleType:LongWord;</code> | ||
+ | | Type of this Handle (eg HANDLE_TYPE_FILE) | ||
+ | |- | ||
+ | | <code>Count:LongWord;</code> | ||
+ | | Reference Count of the Handle | ||
+ | |- | ||
+ | | <code>Flags:LongWord;</code> | ||
+ | | Flags for the Handle (eg HANDLE_FLAG_NAMED) | ||
+ | |- | ||
+ | | <code>Name:PChar;</code> | ||
+ | | The name of the Handle (Optional) | ||
+ | |- | ||
+ | | <code>Hash:LongWord;</code> | ||
+ | | Hash of the Handle name (Only if named) | ||
+ | |- | ||
+ | | <code>Data:THandle;</code> | ||
+ | | Purpose specific data for the Handle (eg a file handle or a socket handle) | ||
+ | |- | ||
+ | | <code>Close:THandleClose;</code> | ||
+ | | Procedure to call on final close (Optional) | ||
+ | |- | ||
+ | | <code>CloseEx:THandleCloseEx;</code> | ||
+ | |Function to call on final close (Optional) | ||
+ | |- | ||
+ | | <code>Duplicate:THandleDuplicate;</code> | ||
+ | | Function to call when duplicating handle (Optional) | ||
+ | |- | ||
+ | |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> | ||
+ | |||
+ | '''Handle entries''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PHandleEntries = ^THandleEntries;</code> | ||
+ | |||
+ | <code>THandleEntries = array[0..HANDLE_TABLE_MASK + 1] of PHandleEntry;</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Handle table''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PHandleTable = ^THandleTable;</code> | ||
+ | |||
+ | <code>THandleTable = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Next:LongWord;</code> | ||
+ | | The next handle number | ||
+ | |- | ||
+ | | <code>Count:LongWord;</code> | ||
+ | | The current handle count | ||
+ | |- | ||
+ | | <code>Handles:PHandleEntries;</code> | ||
+ | | Array of handle entries hash buckets | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Shutdown callback''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TShutdownCallback = function(Flags:LongWord; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''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>Callback:TShutdownCallback;</code> | ||
+ | | The procedure to call on Shutdown or Restart | ||
+ | |- | ||
+ | | <code>Parameter:Pointer;</code> | ||
+ | | The parameter to pass to the Shutdown procedure (or nil) | ||
+ | |- | ||
+ | | <code>Timeout:LongWord;</code> | ||
+ | | The time to wait for the Callback to complete (or 0 to use the default timeout) (Milliseconds) | ||
+ | |- | ||
+ | |colspan="2"|''Internal Properties'' | ||
+ | |- | ||
+ | | <code>Prev:PShutdownEntry;</code> | ||
+ | | Previous entry in Shutdown table | ||
+ | |- | ||
+ | | <code>Next:PShutdownEntry;</code> | ||
+ | | Next entry in Shutdown table | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Shutdown data''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PShutdownData = ^TShutdownData;</code> | ||
+ | |||
+ | <code>TShutdownData = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Used internally by Shutdown or Restart | ||
+ | |- | ||
+ | | <code>Delay:LongWord;</code> | ||
+ | | Delay value requested for Shutdown or Restart (Milliseconds) | ||
+ | |- | ||
+ | | <code>Flags:LongWord;</code> | ||
+ | | Flags for requested Shutdown or Restart (eg SHUTDOWN_FLAG_RESTART) | ||
+ | |- | ||
+ | | <code>Entry:PShutdownEntry;</code> | ||
+ | | The current shutdown entry being processed | ||
+ | |- | ||
+ | |} | ||
+ | </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;" | ||
+ | |- | ||
+ | |colspan="2"|''Interrupt Properties'' | ||
+ | |- | ||
+ | | <code>FNumber:LongWord;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>FFlags:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCPUMask:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FPriority:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FHandler:TInterruptHandler;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FHandlerEx:TInterruptExHandler;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FSharedHandler:TSharedInterruptHandler;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FParameter:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|''Internal Properties'' | ||
+ | |- | ||
+ | | <code>FPrev:PInterruptEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FNext:PInterruptEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetCPUID:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetCPUID(ACPUID:LongWord);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure SetPriority(APriority:LongWord);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetIsShared:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetIsShared(AValue:Boolean);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetIsLocal:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetIsLocal(AValue:Boolean);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetIsIPI:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetIsIPI(AValue:Boolean);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetIsFIQ:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetIsFIQ(AValue:Boolean);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetIsChained:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetIsChained(AValue:Boolean);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetPriorityDefault:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetPriorityDefault(AValue:Boolean);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPriorityMinimum:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetPriorityMinimum(AValue:Boolean);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPriorityMaximum:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetPriorityMaximum(AValue:Boolean);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPriorityFIQ:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetPriorityFIQ(AValue:Boolean);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | |colspan="2"|''Interrupt Properties'' | ||
+ | |- | ||
+ | | <code>property Number:LongWord read FNumber write FNumber;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Flags:LongWord read FFlags write FFlags;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property CPUMask:LongWord read FCPUMask write FCPUMask;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Handler:TInterruptHandler read FHandler write FHandler;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property HandlerEx:TInterruptExHandler read FHandlerEx write FHandlerEx;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SharedHandler:TSharedInterruptHandler read FSharedHandler write FSharedHandler;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Parameter:Pointer read FParameter write FParameter;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|''Internal Properties'' | ||
+ | |- | ||
+ | | <code>property Prev:PInterruptEntry read FPrev write FPrev;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Next:PInterruptEntry read FNext write FNext;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|''Additional Properties'' | ||
+ | |- | ||
+ | | <code>property CPUID:LongWord read GetCPUID write SetCPUID;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Priority:LongWord read FPriority write SetPriority;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property IsShared:Boolean read GetIsShared write SetIsShared;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property IsLocal:Boolean read GetIsLocal write SetIsLocal;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property IsIPI:Boolean read GetIsIPI write SetIsIPI;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property IsFIQ:Boolean read GetIsFIQ write SetIsFIQ;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property IsChained:Boolean read GetIsChained write SetIsChained;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property PriorityDefault:Boolean read GetPriorityDefault write SetPriorityDefault;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property PriorityMinimum:Boolean read GetPriorityMinimum write SetPriorityMinimum;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property PriorityMaximum:Boolean read GetPriorityMaximum write SetPriorityMaximum;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property PriorityFIQ:Boolean read GetPriorityFIQ write SetPriorityFIQ;</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;" | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | |colspan="2"|''Page Table Properties'' | ||
+ | |- | ||
+ | | <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; Timeout:LongWord):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SignalSemaphore:function(Handle:THandle):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''CPU initialization''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''FPU initialization''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFPUInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU initialization''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''MMU initialization''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMMUInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SMP initialization''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSMPInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Cache initialization''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCacheInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Board initialization''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBoardInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Memory initialization''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMemoryInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock initialization''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Power initialization''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPowerInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Mailbox initialization''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMailboxInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interrupt initialization''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterruptInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Peripheral initialization''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPeripheralInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer initialization''' | ||
+ | |||
+ | {| 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%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Options initialization''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TOptionsInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Device tree valid''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDeviceTreeValid = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Device tree get base''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDeviceTreeGetBase = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Device tree get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDeviceTreeGetSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Device tree read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDeviceTreeRead = function(const Path,Name:String; Buffer:Pointer; var Size:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Device tree read 32''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDeviceTreeRead32 = function(const Path,Name:String; var Value:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Device tree read 64''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDeviceTreeRead64 = function(const Path,Name:String; var Value:UInt64):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Device tree read string''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDeviceTreeReadString = function(const Path,Name:String; var Value:String):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Inter Processor Interrupt (IPI) handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TIPIHandler = TSharedInterruptHandler;</code> | ||
+ | | style="width: 40%;"|Note: When used for IPI the CPUID parameter will be the sending CPU | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''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%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Boot console start''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBootConsoleStart = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Boot console write''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBootConsoleWrite = procedure(const Value:String);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Boot console write ex''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBootConsoleWriteEx = procedure(const Value:String; X,Y:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Boot console get x''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBootConsoleGetX = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Boot console get y''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBootConsoleGetY = function: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%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Mailbox property tag''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMailboxPropertyTag = function(Tag:LongWord; Data:Pointer; Size: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 double''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRandomReadDouble = function:Double;</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%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Request IPI''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRequestIPI = function(CPUID,Number:LongWord; Handler:TIPIHandler; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Release IPI''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TReleaseIPI = function(CPUID,Number:LongWord; Handler:TIPIHandler; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Register interrupt handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRegisterInterrupt = function(Number,Mask,Priority,Flags:LongWord; Handler:TSharedInterruptHandler; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Deregister interrupt handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDeregisterInterrupt = function(Number,Mask,Priority,Flags:LongWord; Handler:TSharedInterruptHandler; 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,Instance:LongWord; var Interrupt:TInterruptEntry):LongWord;</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,Instance:LongWord; var Interrupt:TInterruptEntry):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get software interrupt count''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetSoftwareInterruptCount = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get software interrupt start''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetSoftwareInterruptStart = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get software interrupt entry''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetSoftwareInterruptEntry = function(CPUID,Number,Instance:LongWord; var Interrupt:TInterruptEntry):LongWord;</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 group''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetGroup = 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:UInt64):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:UInt64):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%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Chip get revision''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TChipGetRevision = function:LongWord;</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%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Firmware get throttled''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFirmwareGetThrottled = 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:UInt64;</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%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Memory get section size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMemoryGetSectionSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Memory get large section size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMemoryGetLargeSectionSize = 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 get layer''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetLayer = function(var Layer:LongInt):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set layer''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetLayer = function(var Layer:LongInt):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test layer''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestLayer = function(var Layer:LongInt):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%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get num displays''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetNumDisplays = function(var NumDisplays:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get display id''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetDisplayId = function(DisplayNum:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set display num''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetDisplayNum = function(DisplayNum:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get display settings''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetDisplaySettings = function(DisplayNum:LongWord; var DisplaySettings:TDisplaySettings):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer display id to name''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferDisplayIdToName = function(DisplayId:LongWord):String;</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:PtrUInt):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Touch set buffer''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTouchSetBuffer = function(Address:PtrUInt):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 get''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVirtualGPIOFunctionGet = function(Pin: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%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI get description''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIGetDescription = function(Id:LongWord):String;</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%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C get description''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CGetDescription = function(Id:LongWord):String;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C slave get description''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CSlaveGetDescription = function(Id:LongWord):String;</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%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM get description''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPWMGetDescription = function(Id,Channel:LongWord):String;</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%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''UART get description''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TUARTGetDescription = function(Id:LongWord):String; </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%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get PC''' | ||
+ | |||
+ | {| 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:PtrUInt; 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:PtrUInt; 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:PtrUInt; 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:PtrUInt; 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 levels''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTableGetLevels = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page directory get base''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageDirectoryGetBase = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page directory get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageDirectoryGetSize = function:LongWord;</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 = procedure(Address:PtrUInt; var Entry: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 table get page size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTableGetPageSize = function(Address:PtrUInt):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page table get page flags''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTableGetPageFlags = function(Address:PtrUInt):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page table get page physical''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTableGetPagePhysical = function(Address:PtrUInt):PtrUInt;</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%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Text IO write buffer''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTextIOWriteBuffer = function(ABuffer:PChar; ACount:LongInt; AUserData:Pointer):LongInt;</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%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Module load''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TModuleLoad = function(const AName:String):THandle;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Module unload''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TModuleUnload = function(AHandle:THandle):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Module get name''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TModuleGetName = function(AHandle:THandle):String;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Symbol add''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSymbolAdd = function(AHandle:THandle; const AName:String; AAddress:PtrUInt):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Symbol remove''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSymbolRemove = function(AHandle:THandle; const AName:String):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Symbol get address''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSymbolGetAddress = function(AHandle:THandle; const AName:String):PtrUInt;</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%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Environment get''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TEnvironmentGet = function(const AName:String):String;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Environment set''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TEnvironmentSet = function(const AName,AValue:String):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | '''Environment count''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TEnvironmentCount = function(AReset:Boolean):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | '''Environment index''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TEnvironmentIndex = function(const AName:String):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | '''Environment string''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TEnvironmentString = function(AIndex:LongWord):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> | ||
+ | |||
+ | '''Platform timer''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PPlatformTimer = ^TPlatformTimer;</code> | ||
+ | |||
+ | <code>TPlatformTimer = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Data:Pointer;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>CreateTimer:function(Interval:LongWord; Enabled,Reschedule:Boolean; Event:TTimerEvent; Data:Pointer):TTimerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Platform worker''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PPlatformWorker = ^TPlatformWorker;</code> | ||
+ | |||
+ | <code>TPlatformWorker = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Data:Pointer;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>ScheduleWorker:function(Interval:LongWord; Task:TWorkerTask; Data:Pointer; Callback:TWorkerCallback):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | === Class definitions === | ||
+ | ---- | ||
+ | |||
+ | |||
+ | '''Platform specific classes''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[EHardwareException|<code>EHardwareException = class(Exception)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[EDataAbort|<code>EDataAbort = class(EHardwareException);</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[EPrefetchAbort|<code>EPrefetchAbort = class(EHardwareException);</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[EUndefinedInstruction|<code>EUndefinedInstruction = class(EHardwareException);</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | <br /> | ||
=== Public variables === | === Public variables === | ||
---- | ---- | ||
− | '' | + | |
+ | '''Platform logging''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PLATFORM_DEFAULT_LOG_LEVEL:LongWord = PLATFORM_LOG_LEVEL_DEBUG;</code> | ||
+ | | style="width: 40%;"|Minimum level for Platform messages. Only messages with level greater than or equal to this will be printed. | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PLATFORM_LOG_ENABLED:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''IRQ logging''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>IRQ_DEFAULT_LOG_LEVEL:LongWord = IRQ_LOG_LEVEL_INFO;</code> | ||
+ | | style="width: 40%;"|Minimum level for IRQ messages. Only messages with level greater than or equal to this will be printed. | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>IRQ_LOG_ENABLED:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''FIQ logging''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FIQ_DEFAULT_LOG_LEVEL:LongWord = FIQ_LOG_LEVEL_INFO;</code> | ||
+ | | style="width: 40%;"|Minimum level for FIQ messages. Only messages with level greater than or equal to this will be printed. | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FIQ_LOG_ENABLED:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SWI logging''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SWI_DEFAULT_LOG_LEVEL:LongWord = SWI_LOG_LEVEL_INFO;</code> | ||
+ | | style="width: 40%;"|Minimum level for SWI messages. Only messages with level greater than or equal to this will be printed. | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SWI_LOG_ENABLED:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Platform specific variables''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PlatformInitialized:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CPUInitialized:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FPUInitialized:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPUInitialized:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MMUInitialized:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SMPInitialized:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CacheInitialized:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>BoardInitialized:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MemoryInitialized:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ClockInitialized:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PowerInitialized:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MailboxInitialized:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InterruptsInitialized:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PeripheralsInitialized:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ParseBootTagsCompleted:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ParseCommandLineCompleted:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ParseEnvironmentCompleted:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>OptionsInitCompleted:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Lock variables''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ClockLock:TPlatformLock;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PowerLock:TPlatformLock;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MailboxLock:TPlatformLock;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ShutdownLock:TPlatformLock;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InterruptLock:TPlatformLock;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageTableLock:TPlatformLock;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>VectorTableLock:TPlatformLock;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>HandleNameLock:TPlatformLock;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>HandleTableLock:TPlatformLock;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ShutdownTableLock:TPlatformLock;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>UtilityLock:TPlatformLock;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>EnvironmentLock:TPlatformLock;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Semaphore variables''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ShutdownSemaphore:TPlatformSemaphore;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Worker variables''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ShutdownWorker:TPlatformWorker;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock variables''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ClockBase:Int64 = TIME_TICKS_TO_1899;</code> | ||
+ | | style="width: 40%;"|The system time as of the last setting of the clock | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ClockLast:LongWord;</code> | ||
+ | | style="width: 40%;"|The timer value of the last clock tick | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ClockTicks:LongWord;</code> | ||
+ | | style="width: 40%;"|Current number of clock ticks (When this reaches CLOCK_TICKS_PER_SECOND then ClockSeconds is incremented and this is reset to zero) | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ClockSeconds:LongWord;</code> | ||
+ | | style="width: 40%;"|Current number of clock seconds (This forms the system clock) | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ClockRTCInvalid:LongBool;</code> | ||
+ | | style="width: 40%;"|True if available time from RTC is invalid | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Utilization variables''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>UtilizationLast:array of LongWord;</code> | ||
+ | | style="width: 40%;"|The per CPU utilization for the last second (Allocated by scheduler initialization) | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>UtilizationCurrent:array of LongWord;</code> | ||
+ | | style="width: 40%;"|The per CPU utilization for the current second (Updated by Idle thread and reset by Scheduler interrupt) (Allocated by scheduler initialization) | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Initialization handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CPUInitHandler:TCPUInit;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FPUInitHandler:TFPUInit;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPUInitHandler:TGPUInit;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MMUInitHandler:TMMUInit;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SMPInitHandler:TSMPInit;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CacheInitHandler:TCacheInit;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>BoardInitHandler:TBoardInit;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MemoryInitHandler:TMemoryInit;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ClockInitHandler:TClockInit;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PowerInitHandler:TPowerInit;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MailboxInitHandler:TMailboxInit;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InterruptInitHandler:TInterruptInit;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PeripheralInitHandler:TPeripheralInit;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ParseBootTagsHandler:TParseBootTags;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ParseCommandLineHandler:TParseCommandLine;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ParseEnvironmentHandler:TParseEnvironment;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>OptionsInitHandler:TOptionsInit;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Device tree handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DeviceTreeValidHandler:TDeviceTreeValid;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DeviceTreeGetBaseHandler:TDeviceTreeGetBase;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DeviceTreeGetSizeHandler:TDeviceTreeGetSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DeviceTreeReadHandler:TDeviceTreeRead;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DeviceTreeRead32Handler:TDeviceTreeRead32;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DeviceTreeRead64Handler:TDeviceTreeRead64;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DeviceTreeReadStringHandler:TDeviceTreeReadString;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Blink/Output handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>BootBlinkHandler:TBootBlink;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>BootOutputHandler:TBootOutput;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>BootConsoleStartHandler:TBootConsoleStart;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>BootConsoleWriteHandler:TBootConsoleWrite;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>BootConsoleWriteExHandler:TBootConsoleWriteEx;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>BootConsoleGetXHandler:TBootConsoleGetX;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>BootConsoleGetYHandler:TBootConsoleGetY;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''LED handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PowerLEDEnableHandler:TPowerLEDEnable;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PowerLEDOnHandler:TPowerLEDOn;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PowerLEDOffHandler:TPowerLEDOff;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ActivityLEDEnableHandler:TActivityLEDEnable;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ActivityLEDOnHandler:TActivityLEDOn;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ActivityLEDOffHandler:TActivityLEDOff;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CounterAvailableHandler:TCounterAvailable;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CounterReadHandler:TCounterRead;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CounterRead64Handler:TCounterRead64;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CounterWaitHandler:TCounterWait;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CounterEventHandler:TCounterEvent;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CounterCancelHandler:TCounterCancel;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CounterGetRateHandler:TCounterGetRate;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CounterSetRateHandler:TCounterSetRate;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CounterGetIntervalHandler:TCounterGetInterval;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CounterSetIntervalHandler:TCounterSetInterval;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Mailbox handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MailboxReceiveHandler:TMailboxReceive;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MailboxSendHandler:TMailboxSend;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MailboxCallHandler:TMailboxCall;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MailboxCallExHandler:TMailboxCallEx;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MailboxPropertyCallHandler:TMailboxPropertyCall;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MailboxPropertyCallExHandler:TMailboxPropertyCallEx;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MailboxPropertyTagHandler:TMailboxPropertyTag;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Random handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RandomAvailableHandler:TRandomAvailable;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RandomSeedHandler:TRandomSeed;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RandomReadLongIntHandler:TRandomReadLongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RandomReadInt64Handler:TRandomReadInt64;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RandomReadExtendedHandler:TRandomReadExtended;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Watchdog handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>WatchdogAvailableHandler:TWatchdogAvailable;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>WatchdogStartHandler:TWatchdogStart;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>WatchdogStopHandler:TWatchdogStop;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>WatchdogRefreshHandler:TWatchdogRefresh;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interrupt request (IRQ) handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RequestIRQHandler:TRequestIRQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ReleaseIRQHandler:TReleaseIRQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RequestExIRQHandler:TRequestExIRQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ReleaseExIRQHandler:TReleaseExIRQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Fast interrupt request (FIQ) handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RequestFIQHandler:TRequestFIQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ReleaseFIQHandler:TReleaseFIQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RequestExFIQHandler:TRequestExFIQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ReleaseExFIQHandler:TReleaseExFIQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Inter processor interrupt (IPI) handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RequestIPIHandler:TRequestIPI;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ReleaseIPIHandler:TReleaseIPI;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interrupt register/deregister handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RegisterInterruptHandler:TRegisterInterrupt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DeregisterInterruptHandler:TDeregisterInterrupt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System call (SWI) handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SystemCallHandler:TSystemCall;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RegisterSystemCallHandler:TRegisterSystemCall;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DeregisterSystemCallHandler:TDeregisterSystemCall;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RegisterSystemCallExHandler:TRegisterSystemCallEx;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DeregisterSystemCallExHandler:TDeregisterSystemCallEx;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interrupt entry handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GetInterruptCountHandler:TGetInterruptCount;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GetInterruptStartHandler:TGetInterruptStart;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GetInterruptEntryHandler:TGetInterruptEntry;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Local interrupt entry handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GetLocalInterruptCountHandler:TGetLocalInterruptCount;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GetLocalInterruptStartHandler:TGetLocalInterruptStart;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GetLocalInterruptEntryHandler:TGetLocalInterruptEntry;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Software interrupt entry (IPI) handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GetSoftwareInterruptCountHandler:TGetSoftwareInterruptCount;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GetSoftwareInterruptStartHandler:TGetSoftwareInterruptStart;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GetSoftwareInterruptEntryHandler:TGetSoftwareInterruptEntry;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System call entry (SWI) handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GetSystemCallCountHandler:TGetSystemCallCount;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GetSystemCallEntryHandler:TGetSystemCallEntry;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SystemRestartHandler:TSystemRestart;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SystemShutdownHandler:TSystemShutdown;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SystemGetUptimeHandler:TSystemGetUptime;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SystemGetCommandLineHandler:TSystemGetCommandLine;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SystemGetEnvironmentHandler:TSystemGetEnvironment;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CPUGetArchHandler:TCPUGetArch;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CPUGetTypeHandler:TCPUGetType;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CPUGetBootHandler:TCPUGetBoot;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CPUGetMaskHandler:TCPUGetMask;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CPUGetCountHandler:TCPUGetCount;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CPUGetModeHandler:TCPUGetMode;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CPUGetStateHandler:TCPUGetState;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CPUGetGroupHandler:TCPUGetGroup;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CPUGetCurrentHandler:TCPUGetCurrent;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CPUGetMemoryHandler:TCPUGetMemory;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CPUGetPercentageHandler:TCPUGetPercentage;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CPUGetUtilizationHandler:TCPUGetUtilization;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CPUGetModelHandler:TCPUGetModel;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CPUGetRevisionHandler:TCPUGetRevision;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CPUGetDescriptionHandler:TCPUGetDescription;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''FPU handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FPUGetTypeHandler:TFPUGetType;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FPUGetStateHandler:TFPUGetState;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPUGetTypeHandler:TGPUGetType;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPUGetStateHandler:TGPUGetState;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPUGetMemoryHandler:TGPUGetMemory;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Cache handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>L1CacheGetTypeHandler:TL1CacheGetType;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>L1DataCacheGetSizeHandler:TL1DataCacheGetSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>L1DataCacheGetLineSizeHandler:TL1DataCacheGetLineSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>L1InstructionCacheGetSizeHandler:TL1InstructionCacheGetSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>L1InstructionCacheGetLineSizeHandler:TL1InstructionCacheGetLineSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>L2CacheGetTypeHandler:TL2CacheGetType;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>L2CacheGetSizeHandler:TL2CacheGetSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>L2CacheGetLineSizeHandler:TL2CacheGetLineSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Board handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>BoardGetTypeHandler:TBoardGetType;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>BoardGetModelHandler:TBoardGetModel;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>BoardGetSerialHandler:TBoardGetSerial;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>BoardGetRevisionHandler:TBoardGetRevision;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>BoardGetMACAddressHandler:TBoardGetMACAddress;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Chip handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ChipGetRevisionHandler:TChipGetRevision;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Firmware handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FirmwareGetRevisionHandler:TFirmwareGetRevision;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FirmwareGetThrottledHandler:TFirmwareGetThrottled;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Machine handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MachineGetTypeHandler:TMachineGetType;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Memory handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MemoryGetBaseHandler:TMemoryGetBase;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MemoryGetSizeHandler:TMemoryGetSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MemoryGetPageSizeHandler:TMemoryGetPageSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MemoryGetLargePageSizeHandler:TMemoryGetLargePageSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MemoryGetSectionSizeHandler:TMemoryGetSectionSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>MemoryGetLargeSectionSizeHandler:TMemoryGetLargeSectionSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Power handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PowerGetWaitHandler:TPowerGetWait;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PowerGetStateHandler:TPowerGetState;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PowerSetStateHandler:TPowerSetState;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ClockGetCountHandler:TClockGetCount;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ClockGetTotalHandler:TClockGetTotal;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ClockUpdateOffsetHandler:TClockUpdateOffset;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ClockGetRateHandler:TClockGetRate;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ClockSetRateHandler:TClockSetRate;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ClockGetStateHandler:TClockGetState;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ClockSetStateHandler:TClockSetState;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ClockGetMinRateHandler:TClockGetMinRate;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ClockGetMaxRateHandler:TClockGetMaxRate;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Turbo handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TurboGetStateHandler:TTurboGetState;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TurboSetStateHandler:TTurboSetState;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Voltage handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>VoltageGetValueHandler:TVoltageGetValue;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>VoltageSetValueHandler:TVoltageSetValue;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>VoltageGetMinValueHandler:TVoltageGetMinValue;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>VoltageGetMaxValueHandler:TVoltageGetMaxValue;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Temperature handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TemperatureGetCurrentHandler:TTemperatureGetCurrent;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TemperatureGetMaximumHandler:TTemperatureGetMaximum;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU memory handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPUMemoryAllocateHandler:TGPUMemoryAllocate;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPUMemoryReleaseHandler:TGPUMemoryRelease;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPUMemoryLockHandler:TGPUMemoryLock;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPUMemoryUnlockHandler:TGPUMemoryUnlock;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU miscellaneous handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPUExecuteCodeHandler:TGPUExecuteCode;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DispmanxHandleGetHandler:TDispmanxHandleGet;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>EDIDBlockGetHandler:TEDIDBlockGet;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferAvailableHandler:TFramebufferAvailable;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferAllocateHandler:TFramebufferAllocate;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferReleaseHandler:TFramebufferRelease;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferSetStateHandler:TFramebufferSetState;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferGetDimensionsHandler:TFramebufferGetDimensions;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferGetPhysicalHandler:TFramebufferGetPhysical;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferSetPhysicalHandler:TFramebufferSetPhysical;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferTestPhysicalHandler:TFramebufferTestPhysical;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferGetVirtualHandler:TFramebufferGetVirtual;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferSetVirtualHandler:TFramebufferSetVirtual;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferTestVirtualHandler:TFramebufferTestVirtual;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferGetDepthHandler:TFramebufferGetDepth;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferSetDepthHandler:TFramebufferSetDepth;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferTestDepthHandler:TFramebufferTestDepth;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferGetPixelOrderHandler:TFramebufferGetPixelOrder;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferSetPixelOrderHandler:TFramebufferSetPixelOrder;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferTestPixelOrderHandler:TFramebufferTestPixelOrder;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferGetAlphaModeHandler:TFramebufferGetAlphaMode;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferSetAlphaModeHandler:TFramebufferSetAlphaMode;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferTestAlphaModeHandler:TFramebufferTestAlphaMode;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferGetPitchHandler:TFramebufferGetPitch;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferGetOffsetHandler:TFramebufferGetOffset;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferSetOffsetHandler:TFramebufferSetOffset;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferTestOffsetHandler:TFramebufferTestOffset;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferGetOverscanHandler:TFramebufferGetOverscan;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferSetOverscanHandler:TFramebufferSetOverscan;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferTestOverscanHandler:TFramebufferTestOverscan;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferGetPaletteHandler:TFramebufferGetPalette;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferSetPaletteHandler:TFramebufferSetPalette;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferTestPaletteHandler:TFramebufferTestPalette;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferGetLayerHandler:TFramebufferGetLayer;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferSetLayerHandler:TFramebufferSetLayer;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferTestLayerHandler:TFramebufferTestLayer;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferTestVsyncHandler:TFramebufferTestVsync;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferSetVsyncHandler:TFramebufferSetVsync;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferSetBacklightHandler:TFramebufferSetBacklight;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferGetNumDisplaysHandler:TFramebufferGetNumDisplays;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferGetDisplayIdHandler:TFramebufferGetDisplayId;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferSetDisplayNumHandler:TFramebufferSetDisplayNum;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferGetDisplaySettingsHandler:TFramebufferGetDisplaySettings;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FramebufferDisplayIdToNameHandler:TFramebufferDisplayIdToName;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Cursor handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CursorSetDefaultHandler:TCursorSetDefault;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CursorSetInfoHandler:TCursorSetInfo;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CursorSetStateHandler:TCursorSetState;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Touch handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TouchGetBufferHandler:TTouchGetBuffer;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TouchSetBufferHandler:TTouchSetBuffer;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DMAAvailableHandler:TDMAAvailable;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DMATransferHandler:TDMATransfer;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DMAFillMemoryHandler:TDMAFillMemory;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DMACopyMemoryHandler:TDMACopyMemory;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DMAReadPeripheralHandler:TDMAReadPeripheral;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DMAWritePeripheralHandler:TDMAWritePeripheral;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DMAAllocateBufferHandler:TDMAAllocateBuffer;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DMAAllocateBufferExHandler:TDMAAllocateBufferEx;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DMAReleaseBufferHandler:TDMAReleaseBuffer;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DMAGetChannelsHandler:TDMAGetChannels;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPIOAvailableHandler:TGPIOAvailable;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPIOReadHandler:TGPIORead;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPIOWriteHandler:TGPIOWrite;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPIOInputGetHandler:TGPIOInputGet;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPIOInputWaitHandler:TGPIOInputWait;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPIOInputEventHandler:TGPIOInputEvent;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPIOOutputSetHandler:TGPIOOutputSet;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPIOPullGetHandler:TGPIOPullGet;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPIOPullSelectHandler:TGPIOPullSelect;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPIOFunctionGetHandler:TGPIOFunctionGet;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GPIOFunctionSelectHandler:TGPIOFunctionSelect;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Virtual GPIO handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>VirtualGPIOInputGetHandler:TVirtualGPIOInputGet;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>VirtualGPIOOutputSetHandler:TVirtualGPIOOutputSet;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>VirtualGPIOFunctionGetHandler:TVirtualGPIOFunctionGet;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>VirtualGPIOFunctionSelectHandler:TVirtualGPIOFunctionSelect;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SPIAvailableHandler:TSPIAvailable;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SPIStartHandler:TSPIStart;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SPIStopHandler:TSPIStop;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SPIReadHandler:TSPIRead;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SPIWriteHandler:TSPIWrite;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SPIWriteReadHandler:TSPIWriteRead;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SPIGetModeHandler:TSPIGetMode;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SPISetModeHandler:TSPISetMode;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SPIGetClockRateHandler:TSPIGetClockRate;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SPISetClockRateHandler:TSPISetClockRate;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SPIGetClockPhaseHandler:TSPIGetClockPhase;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SPISetClockPhaseHandler:TSPISetClockPhase;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SPIGetClockPolarityHandler:TSPIGetClockPolarity;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SPISetClockPolarityHandler:TSPISetClockPolarity;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SPIGetSelectPolarityHandler:TSPIGetSelectPolarity;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SPISetSelectPolarityHandler:TSPISetSelectPolarity;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SPIGetDescriptionHandler:TSPIGetDescription;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>I2CAvailableHandler:TI2CAvailable;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>I2CStartHandler:TI2CStart;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>I2CStopHandler:TI2CStop;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>I2CReadHandler:TI2CRead;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>I2CWriteHandler:TI2CWrite;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>I2CWriteReadHandler:TI2CWriteRead;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>I2CWriteWriteHandler:TI2CWriteWrite;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>I2CGetRateHandler:TI2CGetRate;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>I2CSetRateHandler:TI2CSetRate;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>I2CGetAddressHandler:TI2CGetAddress;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>I2CSetAddressHandler:TI2CSetAddress;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>I2CGetDescriptionHandler:TI2CGetDescription;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>I2CSlaveGetDescriptionHandler:TI2CSlaveGetDescription;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PWMAvailableHandler:TPWMAvailable;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PWMStartHandler:TPWMStart;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PWMStopHandler:TPWMStop;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PWMWriteHandler:TPWMWrite;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PWMSetModeHandler:TPWMSetMode;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PWMSetRangeHandler:TPWMSetRange;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PWMSetFrequencyHandler:TPWMSetFrequency;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PWMConfigureHandler:TPWMConfigure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PWMGetDescriptionHandler:TPWMGetDescription;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''RTC handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RTCAvailableHandler:TRTCAvailable;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RTCGetTimeHandler:TRTCGetTime;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RTCSetTimeHandler:TRTCSetTime;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''UART handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>UARTGetDescriptionHandler:TUARTGetDescription;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Serial handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SerialAvailableHandler:TSerialAvailable;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SerialOpenHandler:TSerialOpen;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SerialCloseHandler:TSerialClose;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SerialReadHandler:TSerialRead;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SerialWriteHandler:TSerialWrite;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Peripheral handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PeripheralGetBaseHandler:TPeripheralGetBase;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PeripheralGetSizeHandler:TPeripheralGetSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PeripheralReadHandler:TPeripheralRead;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PeripheralWriteHandler:TPeripheralWrite;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>LocalPeripheralGetBaseHandler:TLocalPeripheralGetBase;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>LocalPeripheralGetSizeHandler:TLocalPeripheralGetSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get SP/PC handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GetSPHandler:TGetSP;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GetPCHandler:TGetPC;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Enable/Disable/Save/Restore IRQ/FIQ handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GetIRQHandler:TGetIRQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>EnableIRQHandler:TEnableIRQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DisableIRQHandler:TDisableIRQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SaveIRQHandler:TSaveIRQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RestoreIRQHandler:TRestoreIRQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GetFIQHandler:TGetFIQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>EnableFIQHandler:TEnableFIQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DisableFIQHandler:TDisableFIQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SaveFIQHandler:TSaveFIQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RestoreFIQHandler:TRestoreFIQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>EnableIRQFIQHandler:TEnableIRQFIQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DisableIRQFIQHandler:TDisableIRQFIQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SaveIRQFIQHandler:TSaveIRQFIQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RestoreIRQFIQHandler:TRestoreIRQFIQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>GetAbortHandler:TGetAbort;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>EnableAbortHandler:TEnableAbort;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DisableAbortHandler:TDisableAbort;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SaveAbortHandler:TSaveAbort;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>RestoreAbortHandler:TRestoreAbort;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Halt/Pause handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>HaltHandler:THalt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PauseHandler:TPause;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Halt thread handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>HaltThreadHandler:THaltThread;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SendEvent/WaitForEvent/Interrupt handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SendEventHandler:TSendEvent;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>WaitForEventHandler:TWaitForEvent;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>WaitForInterruptHandler:TWaitForInterrupt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Barrier handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ReadMemoryBarrierHandler:TReadMemoryBarrier;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>WriteMemoryBarrierHandler:TWriteMemoryBarrier;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DataMemoryBarrierHandler:TDataMemoryBarrier;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>DataSynchronizationBarrierHandler:TDataSynchronizationBarrier;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InstructionMemoryBarrierHandler:TInstructionMemoryBarrier;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''TLB handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InvalidateTLBHandler:TInvalidateTLB;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InvalidateDataTLBHandler:TInvalidateDataTLB;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InvalidateInstructionTLBHandler:TInvalidateInstructionTLB;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Cache handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InvalidateCacheHandler:TInvalidateCache;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CleanDataCacheHandler:TCleanDataCache;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InvalidateDataCacheHandler:TInvalidateDataCache;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CleanAndInvalidateDataCacheHandler:TCleanAndInvalidateDataCache;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InvalidateInstructionCacheHandler:TInvalidateInstructionCache;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CleanDataCacheRangeHandler:TCleanDataCacheRange;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InvalidateDataCacheRangeHandler:TInvalidateDataCacheRange;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CleanAndInvalidateDataCacheRangeHandler:TCleanAndInvalidateDataCacheRange;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InvalidateInstructionCacheRangeHandler:TInvalidateInstructionCacheRange;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Prefetch buffer handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FlushPrefetchBufferHandler:TFlushPrefetchBuffer;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Branch target cache handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FlushBranchTargetCacheHandler:TFlushBranchTargetCache;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Context switch handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ContextSwitchHandler:TContextSwitch;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ContextSwitchIRQHandler:TContextSwitchIRQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ContextSwitchFIQHandler:TContextSwitchFIQ;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ContextSwitchSWIHandler:TContextSwitchSWI;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''And/Xor/Or/Increment/Decrement/Exchange handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InterlockedOrHandler:TInterlockedOr;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InterlockedXorHandler:TInterlockedXor;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InterlockedAndHandler:TInterlockedAnd;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InterlockedDecrementHandler:TInterlockedDecrement;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InterlockedIncrementHandler:TInterlockedIncrement;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InterlockedExchangeHandler:TInterlockedExchange;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InterlockedAddExchangeHandler:TInterlockedAddExchange;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>InterlockedCompareExchangeHandler:TInterlockedCompareExchange;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page table handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageTableGetLevelsHandler:TPageTableGetLevels;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageDirectoryGetBaseHandler:TPageDirectoryGetBase;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageDirectoryGetSizeHandler:TPageDirectoryGetSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageTableGetBaseHandler:TPageTableGetBase;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageTableGetSizeHandler:TPageTableGetSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageTableGetEntryHandler:TPageTableGetEntry; </code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageTableSetEntryHandler:TPageTableSetEntry;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageTableGetPageSizeHandler:TPageTableGetPageSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageTableGetPageFlagsHandler:TPageTableGetPageFlags;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageTableGetPagePhysicalHandler:TPageTableGetPagePhysical;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page tables handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageTablesGetAddressHandler:TPageTablesGetAddress;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageTablesGetLengthHandler:TPageTablesGetLength;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageTablesGetCountHandler:TPageTablesGetCount;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageTablesGetShiftHandler:TPageTablesGetShift;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageTablesGetNextHandler:TPageTablesGetNext;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageTablesGetUsedHandler:TPageTablesGetUsed;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PageTablesGetFreeHandler:TPageTablesGetFree;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Vector table handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>VectorTableGetBaseHandler:TVectorTableGetBase;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>VectorTableGetSizeHandler:TVectorTableGetSize;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>VectorTableGetCountHandler:TVectorTableGetCount;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>VectorTableGetEntryHandler:TVectorTableGetEntry;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>VectorTableSetEntryHandler:TVectorTableSetEntry;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''First bit set handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>FirstBitSetHandler:TFirstBitSet;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Count leading zeros handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CountLeadingZerosHandler:TCountLeadingZeros;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Text IO handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TextIOWriteCharHandler:TTextIOWriteChar;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TextIOReadCharHandler:TTextIOReadChar;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TextIOWriteBufferHandler:TTextIOWriteBuffer;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Console handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ConsoleGetKeyHandler:TConsoleGetKey;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ConsolePeekKeyHandler:TConsolePeekKey;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ConsoleWriteCharHandler:TConsoleWriteChar;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ConsoleReadCharHandler:TConsoleReadChar;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ConsoleReadWideCharHandler:TConsoleReadWideChar;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ConsoleHideMouseHandler:TConsoleHideMouse;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ConsoleShowMouseHandler:TConsoleShowMouse;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ConsoleReadMouseHandler:TConsoleReadMouse;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Code page handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CodePageToWideCharHandler:TCodePageToWideChar;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>WideCharToCodePageHandler:TWideCharToCodePage;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Name handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>HostGetNameHandler:THostGetName;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>HostSetNameHandler:THostSetName;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>HostGetDomainHandler:THostGetDomain;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>HostSetDomainHandler:THostSetDomain;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Module handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ModuleLoadHandler:TModuleLoad;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ModuleUnloadHandler:TModuleUnload;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>ModuleGetNameHandler:TModuleGetName;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Symbol handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SymbolAddHandler:TSymbolAdd;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SymbolRemoveHandler:TSymbolRemove;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>SymbolGetAddressHandler:TSymbolGetAddress;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Logging handlers''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>LoggingOutputHandler:TLoggingOutput;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>LoggingOutputExHandler:TLoggingOutputEx;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | <br /> | ||
=== Function declarations === | === Function declarations === | ||
---- | ---- | ||
− | |||
+ | '''Initialization functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure PlatformInit;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Initialize platform specific information for the current hardware</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure CPUInit;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Initialize the CPU including performance features etc (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure FPUInit;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Initialize the Floating Point Processor Unit (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure GPUInit;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Initialize the Graphics Processor Unit (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure MMUInit;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Initialize the Memory Management Unit (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure SMPInit;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Initialize the Symetric Multi Processor support (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Secondary CPU boot is performed by SecondaryInit in Threads | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure CacheInit;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Initialize CPU Data and Instruction Caching (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure BoardInit;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Initialize Board specific information (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure MemoryInit;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Initialize Memory specific information (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure ClockInit;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Initialize the Clock handling</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure PowerInit;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Initialize Power management (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure MailboxInit;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Initialize Mailbox access (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure InterruptInit;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Initialize Interrupt handling</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure PeripheralInit;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Initialize Peripheral devices (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure ParseBootTags;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Parse any boot tag information passed by the bootloader (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure ParseCommandLine;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Setup argc, argv and cmdline and process known command line options (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure ParseEnvironment;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Setup envp and process known environment options (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure OptionsInit;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Process known command line and environment options (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Device tree functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DeviceTreeValid:Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check if valid Device Tree information was provided by the firmware/bootloader</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DeviceTreeGetBase:PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the base address of the Device Tree Blob (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DeviceTreeGetSize:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the total size of the Device Tree Blob (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DeviceTreeRead(const Path,Name:String; Buffer:Pointer; var Size:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Read the raw value of a Device Tree property (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Path | ||
+ | | The path of the requested property | ||
+ | |- | ||
+ | ! Name | ||
+ | | The name of the requested property | ||
+ | |- | ||
+ | ! Buffer | ||
+ | | A pointer to a buffer to receive the raw value | ||
+ | |- | ||
+ | ! Size | ||
+ | | The size in byte of the buffer, updated on return with the actual size of the value. | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if the property value was read or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DeviceTreeRead32(const Path,Name:String; var Value:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Read a 32-bit value from a Device Tree property (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Path | ||
+ | | The path of the requested property | ||
+ | |- | ||
+ | ! Name | ||
+ | | The name of the requested property | ||
+ | |- | ||
+ | ! Value | ||
+ | | The returned value of the property | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if the property value was read or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DeviceTreeRead64(const Path,Name:String; var Value:UInt64):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Read a 64-bit value from a Device Tree property (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Path | ||
+ | | The path of the requested property | ||
+ | |- | ||
+ | ! Name | ||
+ | | The name of the requested property | ||
+ | |- | ||
+ | ! Value | ||
+ | | The returned value of the property | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if the property value was read or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DeviceTreeReadString(const Path,Name:String; var Value:String):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Read a string value from a Device Tree property (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Path | ||
+ | | The path of the requested property | ||
+ | |- | ||
+ | ! Name | ||
+ | | The name of the requested property | ||
+ | |- | ||
+ | ! Value | ||
+ | | The returned value of the property | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if the property value was read or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Boot functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure BootBlink; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Blink the Activity LED (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Intended for startup diagnostics when bootstrapping a new board | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure BootOutput(Value:LongWord); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Output boot time information (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Intended for startup diagnostics when bootstrapping a new board | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure BootConsoleStart; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Start the boot time console display (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Intended for startup diagnostics when bootstrapping a new board | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure BootConsoleWrite(const Value:String); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Output text to the boot time console display (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Intended for startup diagnostics when bootstrapping a new board | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure BootConsoleWriteEx(const Value:String; X,Y:LongWord); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Output text to the boot time console display at the specified X and Y position (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Intended for startup diagnostics when bootstrapping a new board | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function BootConsoleGetX:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current X position of the boot time console display (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Intended for startup diagnostics when bootstrapping a new board | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function BootConsoleGetY:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current Y position of the boot time console display (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Intended for startup diagnostics when bootstrapping a new board | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''LED functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure PowerLEDEnable; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Enable the Power LED (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure PowerLEDOn; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Turn On the Power LED (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure PowerLEDOff; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Turn Off the Power LED (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure ActivityLEDEnable; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Enable the Activity LED (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure ActivityLEDOn; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Turn On the Activity LED (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure ActivityLEDOff; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Turn Off the Activity LED (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Counter functions (Timer device)''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CounterAvailable:Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check if a counter is currently available</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CounterRead:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Read the current value of the default counter</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | The 32 bit current value of the counter or 0 on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CounterRead64:Int64; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Read the current value of the default counter</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | The 64 bit current value of the counter or 0 on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CounterWait:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Wait for the current interval to expire on the default counter</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if the interval expired or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CounterEvent(Callback:TCounterCallback; Data:Pointer):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Schedule a function to be called when the current interval expires on the default counter</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CounterCancel:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Cancel a previously scheduled event callback function on the default counter</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if the callback was cancelled successfully or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CounterGetRate:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current clock rate in Hz of the default counter</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | The current clock rate in Hz or 0 on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CounterSetRate(Rate:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the current clock rate in Hz of the default counter</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Rate | ||
+ | | The clock rate in Hz to set | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if the clock rate was set or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CounterGetInterval:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current interval in ticks of the default counter</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | The current interval in ticks or 0 on failure (or not set) | ||
+ | |- | ||
+ | ! Note | ||
+ | | The tick rate is determined by the clock rate | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CounterSetInterval(Interval:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the current interval in ticks of the default counter</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Mailbox functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function MailboxReceive(Mailbox,Channel:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Receive from specified mailbox on specified channel</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure MailboxSend(Mailbox,Channel,Data:LongWord); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Send to specified mailbox on specified channel</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function MailboxCall(Mailbox,Channel,Data:LongWord; var Response:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a transaction (Send/Receive) to specified mailbox on specified channel</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function MailboxCallEx(Mailbox,Channel,Data:LongWord; var Response:LongWord; Timeout:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a transaction (Send/Receive) to specified mailbox on specified channel</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function MailboxPropertyCall(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a property tag transaction (Send/Receive) to specified mailbox on specified channel</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function MailboxPropertyCallEx(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord; Timeout:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a property tag transaction (Send/Receive) to specified mailbox on specified channel</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function MailboxPropertyTag(Tag:LongWord; Data:Pointer; Size:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Request a property tag (Get/Set) from the mailbox property channel</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Random number functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RandomAvailable:Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check if a hardware random number generator is currently available</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | The software random number generator from the RTL is always available | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure RandomSeed(Seed:LongWord); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RandomReadLongInt(Limit:LongInt):LongInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RandomReadInt64(Limit:Int64):Int64; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RandomReadDouble:Double; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RandomReadExtended:Extended; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Replaced by RandomReadDouble | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Watchdog timer functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function WatchdogAvailable:Boolean; inline; </pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check if a watchdog timer is currently available</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function WatchdogStart(Milliseconds:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function WatchdogStop:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function WatchdogRefresh(Milliseconds:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Interrupt request (IRQ) functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RequestIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Request registration of the supplied handler to the specified IRQ number</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! CPUID | ||
+ | | CPU to route IRQ to | ||
+ | |- | ||
+ | ! Number | ||
+ | | IRQ number to register | ||
+ | |- | ||
+ | ! Handler | ||
+ | | Interrupt handler function to register | ||
+ | |- | ||
+ | ! Parameter | ||
+ | | A pointer to be passed to the handler when the interrupt occurs (Optional) | ||
+ | |- | ||
+ | ! Note | ||
+ | | If the IRQ number is already registered then the request will fail | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ReleaseIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Request deregistration of the supplied handler from the specified IRQ number</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! CPUID | ||
+ | | CPU to unroute IRQ from | ||
+ | |- | ||
+ | ! Number | ||
+ | | IRQ number to deregister | ||
+ | |- | ||
+ | ! Handler | ||
+ | | Interrupt handler function to deregister | ||
+ | |- | ||
+ | ! Parameter | ||
+ | | A pointer to be passed to the handler when the interrupt occurs (Optional) | ||
+ | |- | ||
+ | ! Note | ||
+ | | If the IRQ number is not currently registered then the request will fail | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RequestExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Request registration of the supplied extended handler to the specified IRQ number</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! CPUID | ||
+ | | CPU to route IRQ to | ||
+ | |- | ||
+ | ! Number | ||
+ | | IRQ number to register | ||
+ | |- | ||
+ | ! Handler | ||
+ | | Interrupt handler function to register | ||
+ | |- | ||
+ | ! HandlerEx | ||
+ | | Extended Interrupt handler function to register | ||
+ | |- | ||
+ | ! Parameter | ||
+ | | A pointer to be passed to the handler when the interrupt occurs (Optional) | ||
+ | |- | ||
+ | ! Note | ||
+ | | Only one of Handler or HandlerEx can be specified. If the IRQ number is already registered then the request will fail | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ReleaseExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Request deregistration of the supplied extended handler from the specified IRQ number</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! CPUID | ||
+ | | CPU to unroute IRQ from | ||
+ | |- | ||
+ | ! Number | ||
+ | | IRQ number to deregister | ||
+ | |- | ||
+ | ! Handler | ||
+ | | Interrupt handler function to deregister | ||
+ | |- | ||
+ | ! HandlerEx | ||
+ | | Extended Interrupt handler function to deregister | ||
+ | |- | ||
+ | ! Parameter | ||
+ | | A pointer to be passed to the handler when the interrupt occurs (Optional) | ||
+ | |- | ||
+ | ! Note | ||
+ | | Only one of Handler or HandlerEx can be specified. If the IRQ number is not currently registered then the request will fail | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RequestFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Request registration of the supplied handler to the specified FIQ number (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! CPUID | ||
+ | | CPU to route FIQ to | ||
+ | |- | ||
+ | ! Number | ||
+ | | FIQ number to register | ||
+ | |- | ||
+ | ! Handler | ||
+ | | Interrupt handler function to register | ||
+ | |- | ||
+ | ! Parameter | ||
+ | | A pointer to be passed to the handler when the interrupt occurs (Optional) | ||
+ | |- | ||
+ | |||
+ | ! Note | ||
+ | | If the FIQ number is already registered then the request will fail | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ReleaseFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Request deregistration of the supplied handler from the specified FIQ number (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! CPUID | ||
+ | | CPU to unroute FIQ from | ||
+ | |- | ||
+ | ! Number | ||
+ | | FIQ number to deregister | ||
+ | |- | ||
+ | ! Handler | ||
+ | | Interrupt handler function to deregister | ||
+ | |- | ||
+ | ! Parameter | ||
+ | | A pointer to be passed to the handler when the interrupt occurs (Optional) | ||
+ | |- | ||
+ | ! Note | ||
+ | | If the FIQ number is not currently registered then the request will fail | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RequestExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Request registration of the supplied extended handler to the specified FIQ number (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! CPUID | ||
+ | | CPU to route FIQ to | ||
+ | |- | ||
+ | ! Number | ||
+ | | FIQ number to register | ||
+ | |- | ||
+ | ! Handler | ||
+ | | Interrupt handler function to register | ||
+ | |- | ||
+ | ! HandlerEx | ||
+ | | Extended Interrupt handler function to register | ||
+ | |- | ||
+ | ! Parameter | ||
+ | | A pointer to be passed to the handler when the interrupt occurs (Optional) | ||
+ | |- | ||
+ | ! Note | ||
+ | | Only one of Handler or HandlerEx can be specified. If the FIQ number is already registered then the request will fail | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ReleaseExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Request deregistration of the supplied extended handler from the specified FIQ number (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! CPUID | ||
+ | | CPU to unroute FIQ from | ||
+ | |- | ||
+ | ! Number | ||
+ | | FIQ number to deregister | ||
+ | |- | ||
+ | ! Handler | ||
+ | | Interrupt handler function to deregister | ||
+ | |- | ||
+ | ! HandlerEx | ||
+ | | Extended Interrupt handler function to deregister | ||
+ | |- | ||
+ | ! Parameter | ||
+ | | A pointer to be passed to the handler when the interrupt occurs (Optional) | ||
+ | |- | ||
+ | ! Note | ||
+ | | Only one of Handler or HandlerEx can be specified. If the FIQ number is not currently registered then the request will fail | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Inter processor interrupt (IPI) functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RequestIPI(CPUID,Number:LongWord; Handler:TIPIHandler; Parameter:Pointer):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Request registration of the supplied handler to the specified IPI (Inter-processor interrupt) number (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! CPUID | ||
+ | | CPU to route IPI to | ||
+ | |- | ||
+ | ! Number | ||
+ | | IPI number to register | ||
+ | |- | ||
+ | ! Handler | ||
+ | | Interrupt handler function to register | ||
+ | |- | ||
+ | ! Parameter | ||
+ | | A pointer to be passed to the handler when the interrupt occurs (Optional) | ||
+ | |- | ||
+ | ! Note | ||
+ | | If the IPI number is already registered then the request will fail | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ReleaseIPI(CPUID,Number:LongWord; Handler:TIPIHandler; Parameter:Pointer):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Request deregistration of the supplied handler from the specified IPI (Inter-processor interrupt) number (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! CPUID | ||
+ | | CPU to unroute IPI from | ||
+ | |- | ||
+ | ! Number | ||
+ | | IPI number to deregister | ||
+ | |- | ||
+ | ! Handler | ||
+ | | Interrupt handler function to deregister | ||
+ | |- | ||
+ | ! Parameter | ||
+ | | A pointer to be passed to the handler when the interrupt occurs (Optional) | ||
+ | |- | ||
+ | ! Note | ||
+ | | If the IPI number is not currently registered then the request will fail | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Interrupt register/deregister functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RegisterInterrupt(Number,Mask,Priority,Flags:LongWord; Handler:TSharedInterruptHandler; Parameter:Pointer):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Request registration of the supplied handler to the specified interrupt number (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Number | ||
+ | | The interrupt number to register the handler for | ||
+ | |- | ||
+ | ! Mask | ||
+ | | The mask of CPUs to register the handler for (eg CPU_MASK_0, CPU_MASK_1) (Where Applicable) | ||
+ | |- | ||
+ | ! Priority | ||
+ | | The priority level of the interrupt to be registered (eg INTERRUPT_PRIORITY_MAXIMUM) (Where Applicable) | ||
+ | |- | ||
+ | ! Flags | ||
+ | | The flags to control the registration of the interrupt (eg INTERRUPT_FLAG_SHARED) (Where Applicable) | ||
+ | |- | ||
+ | ! Handler | ||
+ | | The shared interrupt handler to be called when the interrupt occurs | ||
+ | |- | ||
+ | ! Parameter | ||
+ | | A pointer to be passed to the handler when the interrupt occurs (Optional) | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if the callback was scheduled successfully or another error code on failure | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DeregisterInterrupt(Number,Mask,Priority,Flags:LongWord; Handler:TSharedInterruptHandler; Parameter:Pointer):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Request deregistration of the supplied handler from the specified interrupt number (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Number | ||
+ | | The interrupt number to deregister the handler for | ||
+ | |- | ||
+ | ! Mask | ||
+ | | The mask of CPUs to deregister the handler for (eg CPU_MASK_0, CPU_MASK_1) (Where Applicable) | ||
+ | |- | ||
+ | ! Priority | ||
+ | | The priority level of the interrupt to be deregistered (eg INTERRUPT_PRIORITY_MAXIMUM) (Where Applicable) | ||
+ | |- | ||
+ | ! Flags | ||
+ | | The flags to control the deregistration of the interrupt (eg INTERRUPT_FLAG_SHARED, INTERRUPT_FLAG_LOCAL, INTERRUPT_FLAG_FIQ) (Where Applicable) | ||
+ | |- | ||
+ | ! Handler | ||
+ | | The shared interrupt handler to be called when the interrupt occurs | ||
+ | |- | ||
+ | ! Parameter | ||
+ | | A pointer to be passed to the handler when the interrupt occurs (Optional) | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if the callback was scheduled successfully or another error code on failure | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''System call (SWI) functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure SystemCall(Number:LongWord; Param1,Param2,Param3:PtrUInt); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a System Call function with the supplied parameters (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RegisterSystemCall(Number:LongWord; Handler:TSystemCallHandler):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Request registration of the supplied handler to the specified System Call number (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DeregisterSystemCall(Number:LongWord; Handler:TSystemCallHandler):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Request deregistration of the supplied handler from the specified System Call number (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RegisterSystemCallEx(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Request registration of the supplied extended handler to the specified System Call number (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DeregisterSystemCallEx(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Request deregistration of the supplied extended handler from the specified System Call number (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Interrupt entry functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetInterruptCount:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the number of interrupt entries for the current platform</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetInterruptStart:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the starting number of interrupt entries for the current platform</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetInterruptEntry(Number:LongWord):TInterruptEntry; overload;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the interrupt entry for the specified interrupt number</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetInterruptEntry(Number,Instance:LongWord;var Interrupt:TInterruptEntry):LongWord; inline; overload;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the interrupt entry for the specified interrupt number and instance</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Local interrupt entry functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetLocalInterruptCount:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the number of local interrupt entries for the current platform (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetLocalInterruptStart:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the starting number of local interrupt entries for the current platform (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetLocalInterruptEntry(CPUID,Number:LongWord):TInterruptEntry;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the local interrupt entry for the specified interrupt number (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetLocalInterruptEntry(CPUID,Number,Instance:LongWord; var Interrupt:TInterruptEntry):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the local interrupt entry for the specified interrupt number and instance (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Software interrupt entry (IPI) functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetSoftwareInterruptCount:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the number of software interrupt entries for the current platform (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetSoftwareInterruptStart:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the starting number of software interrupt entries for the current platform (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetSoftwareInterruptEntry(CPUID,Number:LongWord):TInterruptEntry; overload;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the software interrupt entry for the specified interrupt number and instance (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetSoftwareInterruptEntry(CPUID,Number,Instance:LongWord; var Interrupt:TInterruptEntry):LongWord; inline; overload;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the software interrupt entry for the specified interrupt number and instance (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''System call entry (SWI) functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetSystemCallCount:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the number of system call entries for the current platform (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetSystemCallEntry(Number:LongWord):TSystemCallEntry; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the system call entry for the specified system call number (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''System functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SystemRestart(Delay:LongWord):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Restart the system</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Delay | ||
+ | | How long to delay before commencing the restart (Milliseconds) | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if the restart was successfully initiated or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SystemShutdown(Delay:LongWord):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Shutdown the system</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Delay | ||
+ | | How long to delay before commencing the shutdown (Milliseconds) | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if the shutdown was successfully initiated or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SystemRegisterShutdown(Callback:TShutdownCallback; Parameter:Pointer; Timeout:LongWord):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Register a procedure to be called during system shutdown or restart</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Callback | ||
+ | | The procedure to be called on shutdown or restart | ||
+ | |- | ||
+ | ! Parameter | ||
+ | | A pointer to be passed to the callback procedure | ||
+ | |- | ||
+ | ! Timeout | ||
+ | | Time the shutdown process should wait for this callback to complete (0 for the default timeout) (Milliseconds) | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if the callback was successfully registered or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SystemDeregisterShutdown(Callback:TShutdownCallback; Parameter:Pointer):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Deregister a procedure from being called during system shutdown or restart</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Callback | ||
+ | | The procedure previously registered for shutdown or restart | ||
+ | |- | ||
+ | ! Parameter | ||
+ | | The pointer previously registered for the callback procedure | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if the callback was successfully deregistered or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SystemGetUptime:Int64; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current system up time in 100 nanosecond ticks since 1/1/1601</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SystemGetCommandLine:String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current command line</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SystemGetEnvironment:Pointer; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current environment</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SystemDateToString(Date:TDateTime):String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Return the supplied date value as a string in the system defined format</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Date | ||
+ | | The date in Pascal TDateTime format | ||
+ | |- | ||
+ | ! Return | ||
+ | | The date formatted according to the system date format | ||
+ | |- | ||
+ | ! Note | ||
+ | | Applications should use FormatDateTime or DateTimeToString directly. This function is intended to provide a uniform and generic date and time output from system functions such as logging and debug output. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SystemTimeToString(Time:TDateTime):String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Return the supplied time value as a string in the system defined format</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Time | ||
+ | | The time in Pascal TDateTime format | ||
+ | |- | ||
+ | ! Return | ||
+ | | The time formatted according to the system time format | ||
+ | |- | ||
+ | ! Note | ||
+ | | Applications should use FormatDateTime or DateTimeToString directly. This function is intended to provide a uniform and generic date and time output from system functions such as logging and debug output. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SystemDateTimeToString(DateTime:TDateTime):String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Return the supplied date and time value as a string in the system defined format</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! DateTime | ||
+ | | The date and time in Pascal TDateTime format | ||
+ | |- | ||
+ | ! Return | ||
+ | | The date and time formatted according to the system date and time format | ||
+ | |- | ||
+ | ! Note | ||
+ | | Applications should use FormatDateTime or DateTimeToString directly. This function is intended to provide a uniform and generic date and time output from system functions such as logging and debug output. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SystemIntervalToString(Interval:TDateTime):String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Return the supplied time interval as a string in the system defined format</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Interval | ||
+ | | The time interval in Pascal TDateTime format | ||
+ | |- | ||
+ | ! Return | ||
+ | | The time interval formatted according to the system time format | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''CPU functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CPUGetArch:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the CPU architecture for this board</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CPUGetType:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the CPU type for this board</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CPUGetBoot:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the boot CPU for this board</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CPUGetMask:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the CPU mask for this board</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CPUGetCount:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the CPU count for this board</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CPUGetMode:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current CPU moded</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | The return value is specific to the CPU type | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CPUGetState:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current CPU state</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CPUGetGroup:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current CPU group</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CPUGetCurrent:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current CPU Id</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CPUGetMemory(var Address:PtrUInt; var Length:UInt64):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the memory start and size available to the CPU</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CPUGetPercentage(CPUID:LongWord):Double; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the last second utilization of the specified CPU in percentage</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! CPUID | ||
+ | | The CPU to get utilization from or CPU_ID_ALL for average of all CPUs | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CPUGetUtilization(CPUID:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the last second utilization of the specified CPU</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! CPUID | ||
+ | | The CPU to get utilization from or CPU_ID_ALL for average of all CPUs | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CPUGetModel:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the CPU model of the current CPU</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CPUGetRevision:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the CPU revision of the current CPU</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | The return value is specific to the CPU type and model | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CPUGetDescription:String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the CPU description of the current CPU</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''FPU functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FPUGetType:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the FPU type for this board</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FPUGetState:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current FPU state</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''GPU functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPUGetType:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the GPU type for this board</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPUGetState:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current GPU state</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPUGetMemory(var Address:PtrUInt; var Length:UInt64):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the memory start and size available to the GPU</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Cache functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function L1CacheGetType:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the L1 cache type for this board</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function L1DataCacheGetSize:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the L1 data cache size for this board</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function L1DataCacheGetLineSize:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the L1 data cache line size for this board</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function L1InstructionCacheGetSize:LongWord; inline; </pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the L1 instruction cache size for this board</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function L1InstructionCacheGetLineSize:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the L1 instruction cache line size for this board</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function L2CacheGetType:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the L2 cache type for this board</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function L2CacheGetSize:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the L2 cache size for this board</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | If L2 cache is not supported, the size returned is zero | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function L2CacheGetLineSize:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the L2 cache line size for this board</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | If L2 cache is not supported, the size returned is zero | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Version functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure VersionGetInfo(var Major,Minor,Revision:LongWord);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the version information of the currently running system</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VersionGetDate:String;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the version release date of the currently running system</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VersionGetName:String;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the version release name of the currently running system</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VersionGetVersion:String;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the version string of the currently running system</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Board functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function BoardGetType:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current Board type</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function BoardGetModel:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current Board model</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function BoardGetSerial:Int64; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current Board serial number</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function BoardGetRevision:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current Board revision number</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function BoardGetMACAddress:String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current Board MAC address (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Chip functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ChipGetRevision:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current Chip revision number</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Firmware functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FirmwareGetRevision:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current board Firmware Revision</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FirmwareGetThrottled:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current throttling state from the firmware</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | A bit mask of FIRMWARE_THROTTLE_* values for the throttling state | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Machine functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function MachineGetType:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current Machine type</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Memory functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function MemoryGetBase:PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the base address of system memory</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function MemoryGetSize:UInt64; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the total size of system memory</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function MemoryGetPageSize:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the page size of system memory</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function MemoryGetLargePageSize:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the large page size of system memory (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function MemoryGetSectionSize:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the section size of system memory (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function MemoryGetLargeSectionSize:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the large section size of system memory (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Power functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PowerOn(PowerId:LongWord):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Power On the specified device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PowerOff(PowerId:LongWord):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Power Off the specified device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PowerGetWait(PowerId:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the enable wait time in Microseconds of the specified device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PowerGetState(PowerId:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the power state of the specified device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PowerSetState(PowerId,State:LongWord; Wait:Boolean):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the power state of the specified device (Optionally waiting for ready)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Clock functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ClockTicks:LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current number of clock ticks</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | The current number of clock ticks | ||
+ | |- | ||
+ | ! Note | ||
+ | | When this reaches CLOCK_TICKS_PER_SECOND then ClockSeconds is incremented and this is reset to zero | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ClockSeconds:LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the number of clock seconds since the system was started</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | The current number of clock seconds | ||
+ | |- | ||
+ | ! Note | ||
+ | | This forms the system clock | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ClockMilliseconds:Int64;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the number of clock milliseconds since the system was started</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | The current number of clock milliseconds | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ClockMicroseconds:Int64;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the number of clock microseconds since the system was started</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | The current number of clock microseconds | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ClockNanoseconds:Int64;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the number of clock nanoseconds since the system was started</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | The current number of clock nanoseconds | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ClockGetTime:Int64;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current system time in 100 nanosecond ticks since 1/1/1601</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ClockSetTime(const Time:Int64; RTC:Boolean):Int64;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the current system time in 100 nanosecond ticks since 1/1/1601</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ClockGetCount:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Gets the current system clock count (32 least significant bits of total)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ClockGetTotal:Int64; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Gets the total system clock count</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ClockUpdateOffset:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Update the system time offset between UTC and Local</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ClockGetRate(ClockId:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the clock rate in Hz of the specified Clock</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ClockSetRate(ClockId,Rate:LongWord; Turbo:Boolean):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the clock rate in Hz of the specified Clock</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ClockGetState(ClockId:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the state of the specified Clock</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ClockSetState(ClockId,State:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the state of the specified Clock</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ClockGetMinRate(ClockId:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the minimum clock rate in Hz of the specified Clock</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ClockGetMaxRate(ClockId:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the maximum clock rate in Hz of the specified Clock</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Turbo functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function TurboGetState(TurboId:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Turbo state (0 equals Off/1 equals On) of the specified device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function TurboSetState(TurboId,State:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the Turbo state (0 equals Off/1 equals On) of the specified device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Voltage functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VoltageGetValue(VoltageId:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current voltage level of the specified device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VoltageSetValue(VoltageId,Value:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the current voltage level of the specified device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VoltageGetMinValue(VoltageId:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the minimum voltage level of the specified device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VoltageGetMaxValue(VoltageId:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the maximum voltage level of the specified device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Temperature functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function TemperatureGetCurrent(TemperatureId:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current temperature in thousandths of a degree C of the specified device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function TemperatureGetMaximum(TemperatureId:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the maximum temperature in thousandths of a degree C of the specified device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''GPU memory functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPUMemoryAllocate(Length,Alignment,Flags:LongWord):THandle; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Allocate memory from the GPU</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPUMemoryRelease(Handle:THandle):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Release memory allocated from the GPU</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPUMemoryLock(Handle:THandle):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Lock memory allocated from the GPU and return an address</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPUMemoryUnlock(Handle:THandle):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Unlock memory allocated from the GPU</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''GPU miscellaneous functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPUExecuteCode(Address:Pointer; R0,R1,R2,R3,R4,R5:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Execute a block of code on the GPU</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DispmanxHandleGet(Resource:THandle):THandle; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert a Dispmanx Resource handle to a Memory handle (Which can be passed to Lock/Unlock above)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function EDIDBlockGet(Block:LongWord; Buffer:Pointer; Length:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get an EDID block from HDMI</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Framebuffer functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferAvailable:Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check if a framebuffer device is currently available</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferAllocate(Alignment:LongWord; var Address,Length:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Allocate a new Framebuffer</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferRelease:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Release the current Framebuffer</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferSetState(State:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the current Framebuffer (Display) state (0 for Off/1 for On)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferGetDimensions(var Width,Height,Top,Bottom,Left,Right:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the default Dimensions of the Framebuffer (Physical Width, Height and Overscan Top, Bottom, Left, Right in Pixels)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferGetPhysical(var Width,Height:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Physical Framebuffer Width and Height in Pixels</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferSetPhysical(var Width,Height:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the Physical Framebuffer Width and Height in Pixels</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferTestPhysical(var Width,Height:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Test the Physical Framebuffer Width and Height in Pixels</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferGetVirtual(var Width,Height:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Virtual Framebuffer Width and Height in Pixels</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferSetVirtual(var Width,Height:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the Virtual Framebuffer Width and Height in Pixels</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferTestVirtual(var Width,Height:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Test the Virtual Framebuffer Width and Height in Pixels</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferGetDepth(var Depth:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Framebuffer Depth in Bits per Pixel</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferSetDepth(var Depth:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the Framebuffer Depth in Bits per Pixel</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferTestDepth(var Depth:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Test the Framebuffer Depth in Bits per Pixel</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferGetPixelOrder(var Order:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Framebuffer Pixel Order (0 = BGR/1 = RGB)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferSetPixelOrder(var Order:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the Framebuffer Pixel Order (0 = BGR/1 = RGB)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferTestPixelOrder(var Order:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Test the Framebuffer Pixel Order (0 = BGR/1 = RGB)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferGetAlphaMode(var Mode:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Framebuffer Alpha Mode</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferSetAlphaMode(var Mode:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the Framebuffer Alpha Mode</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferTestAlphaMode(var Mode:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Test the Framebuffer Alpha Mode</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferGetPitch:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Framebuffer Pitch in Bytes per Line</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferGetOffset(var X,Y:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Framebuffer Virtual Offset in Pixels</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferSetOffset(var X,Y:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the Framebuffer Virtual Offset in Pixels</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferTestOffset(var X,Y:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Test the Framebuffer Virtual Offset in Pixels</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferGetOverscan(var Top,Bottom,Left,Right:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Framebuffer Top, Bottom, Left and Right Overscan in Pixels</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferSetOverscan(var Top,Bottom,Left,Right:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the Framebuffer Top, Bottom, Left and Right Overscan in Pixels</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferTestOverscan(var Top,Bottom,Left,Right:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Test the Framebuffer Top, Bottom, Left and Right Overscan in Pixels</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferGetPalette(Buffer:Pointer; Length:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Framebuffer Palette in RGBA values</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferSetPalette(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the Framebuffer Palette in RGBA values</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferTestPalette(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Test the Framebuffer Palette in RGBA values</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferGetLayer(var Layer:LongInt):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Framebuffer Layer</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferSetLayer(var Layer:LongInt):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the Framebuffer Layer</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferTestLayer(var Layer:LongInt):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Test the Framebuffer Layer</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferTestVsync:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Test the Framebuffer Vertical Sync (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferSetVsync:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set (Wait For) the Framebuffer Vertical Sync (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferSetBacklight(Brightness:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the Framebuffer Backlight brightness (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferGetNumDisplays(var NumDisplays:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the number of framebuffer displays (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferGetDisplayId(DisplayNum:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the display id for the specified display number (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferSetDisplayNum(DisplayNum:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the current framebuffer display number (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferGetDisplaySettings(DisplayNum:LongWord; var DisplaySettings:TDisplaySettings):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the display settings for the specified display number (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FramebufferDisplayIdToName(DisplayId:LongWord):String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the name for the specified display id (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Touch functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function TouchGetBuffer(var Address:PtrUInt):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Touchscreen memory buffer (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function TouchSetBuffer(Address:PtrUInt):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the Touchscreen memory buffer (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Cursor functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CursorSetDefault:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the default Cursor Info (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CursorSetInfo(Width,Height,HotspotX,HotspotY:LongWord; Pixels:Pointer; Length:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the Cursor Info (Width and Height, Hotspot and Pixel image)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CursorSetState(Enabled:Boolean; X,Y:LongWord; Relative:Boolean):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the Cursor State (Enabled, X and Y)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Relative | ||
+ | | X, Y is relative to Display (Virtual) not Framebuffer (Physical) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''DMA functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DMAAvailable:Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check if DMA is currently available</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DMATransfer(Data:PDMAData; Direction,Peripheral:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a DMA transfer using the list of DMA data blocks provided</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DMAFillMemory(Dest:Pointer; Size:LongWord; Value:Byte):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Fill memory at the destination address using DMA</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DMACopyMemory(Source,Dest:Pointer; Size:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Copy memory from the source to the destination address using DMA</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DMAReadPeripheral(Address,Dest:Pointer; Size,Peripheral:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Read from a peripheral address to the destination address using DMA</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Address | ||
+ | | The address of the peripheral 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) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DMAWritePeripheral(Source,Address:Pointer; Size,Peripheral:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Write to a peripheral address from the source address using DMA</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DMAAllocateBuffer(Size:LongWord):Pointer; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Allocate a buffer compatible with DMA memory reads or writes</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Size | ||
+ | | The size of the buffer to allocate | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DMAAllocateBufferEx(var Size:LongWord):Pointer; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Allocate a buffer compatible with DMA memory reads or writes</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Size | ||
+ | | The size of the buffer to allocate (Updated on return to actual size) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DMAReleaseBuffer(Buffer:Pointer):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Release a buffer allocated with DMAAllocateBuffer</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Buffer | ||
+ | | The buffer to be released | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DMAGetChannels:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the currently enabled DMA channel bitmap (If supported)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Handle functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function HandleCreate(Data:THandle; AType:LongWord):THandle; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Create and Open a new unnamed handle of the supplied type</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Data | ||
+ | | Purpose specific data to be referenced by the new handle (Optional) | ||
+ | |- | ||
+ | ! AType | ||
+ | | The type of the new handle (eg HANDLE_TYPE_FILE) | ||
+ | |- | ||
+ | ! Return | ||
+ | | The newly created handle or INVALID_HANDLE_VALUE on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function HandleCreateEx(const Name:String; Flags:LongWord; Data:THandle; AType:LongWord):PHandleEntry;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Create and Open a new named or unnamed handle of the supplied type</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Name | ||
+ | | The name of the new handle (Optional) | ||
+ | |- | ||
+ | ! Flags | ||
+ | | The flags for the new handle (eg HANDLE_FLAG_DUPLICATE) | ||
+ | |- | ||
+ | ! Data | ||
+ | | Purpose specific data to be referenced by the new handle (Optional) | ||
+ | |- | ||
+ | ! AType | ||
+ | | The type of the new handle (eg HANDLE_TYPE_FILE) | ||
+ | |- | ||
+ | ! Return | ||
+ | | The newly created handle entry or nil on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function HandleDestroy(Handle:THandle):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Close and Destroy a named or unnamed handle</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Handle | ||
+ | | The handle to be closed and destroyed | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if completed successfully or another error code on failure | ||
+ | |- | ||
+ | ! Note | ||
+ | | For handles which have been opened multiple times, the handle is not destroyed until the last reference is closed. If there are still open references to the handle the return value will be ERROR_IN_USE instead of ERROR_SUCCESS | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function HandleGet(Handle:THandle):PHandleEntry;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the handle entry for the supplied handle</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Handle | ||
+ | | The handle to get the entry for | ||
+ | |- | ||
+ | ! Return | ||
+ | | The handle entry on success or nil on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function HandleFind(const Name:String):PHandleEntry;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Find an existing named handle of the supplied type</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Name | ||
+ | | The name of the handle to find | ||
+ | |- | ||
+ | ! Return | ||
+ | | The handle entry on success or nil on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function HandleEnumerate(Callback:THandleEnumerate; Data:Pointer):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Enumerate all handles in the handle table</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Callback | ||
+ | | The callback function to call for each handle in the table | ||
+ | |- | ||
+ | ! Data | ||
+ | | A private data pointer to pass to callback for each device in the table | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function HandleOpen(const Name:String):THandle;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Open an existing named handle</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Name | ||
+ | | The name of the handle to open | ||
+ | |- | ||
+ | ! Return | ||
+ | | The handle matching the name or INVALID_HANDLE_VALUE on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function HandleClose(Handle:THandle):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Close a named or unnamed handle</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Handle | ||
+ | | The handle to be closed | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if completed successfully or another error code on failure | ||
+ | |- | ||
+ | ! Note | ||
+ | | For handles which have been opened multiple times, the handle is destroyed when the last reference is closed | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function HandleDuplicate(Handle:THandle):THandle;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Duplicate an existing named or unnamed handle</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Handle | ||
+ | | The handle to be duplicated | ||
+ | |- | ||
+ | ! Return | ||
+ | | The newly duplicated handle or INVALID_HANDLE_VALUE on failure | ||
+ | |- | ||
+ | ! Note | ||
+ | | Handles must be marked as HANDLE_FLAG_DUPLICATE to support duplication | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''GPIO functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPIOAvailable:Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check if a GPIO device is available</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Reg | ||
+ | | The memory register to read from | ||
+ | |- | ||
+ | ! Value | ||
+ | | The value of the memory register | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPIORead(Reg:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a direct read from a GPIO register</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Reg | ||
+ | | The memory register to read from | ||
+ | |- | ||
+ | ! Value | ||
+ | | The value of the memory register | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure GPIOWrite(Reg,Value:LongWord); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a direct write to a GPIO register</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Reg | ||
+ | | The memory register to write to | ||
+ | |- | ||
+ | ! Value | ||
+ | | The value to write to the register | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPIOInputGet(Pin:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current state of a GPIO input pin</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPIOInputWait(Pin,Trigger,Timeout:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Wait for the state of a GPIO input pin to change</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPIOInputEvent(Pin,Trigger,Timeout:LongWord; Callback:TGPIOCallback; Data:Pointer):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Schedule a function to be called when the state of a GPIO input pin changes</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPIOOutputSet(Pin,Level:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Change the state of a GPIO output pin</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPIOLevelGet(Pin:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current level (state) of a GPIO pin</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Pin | ||
+ | | The pin to get the level for (eg GPIO_PIN_1) | ||
+ | |- | ||
+ | ! Return | ||
+ | | The current level (eg GPIO_LEVEL_HIGH) or GPIO_LEVEL_UNKNOWN on failure | ||
+ | |- | ||
+ | ! Note | ||
+ | | This function is a synonym for GPIOInputGet as in many cases the level can be read from a pin regardless of input or output mode. This may help to make code clearer or easier to understand in some cases. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPIOLevelSet(Pin,Level:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the level (state) of a GPIO pin</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Pin | ||
+ | | The pin to set the level for (eg GPIO_PIN_1) | ||
+ | |- | ||
+ | ! Level | ||
+ | | The level to set the pin to (eg GPIO_LEVEL_HIGH) | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if completed successfully or another error code on failure | ||
+ | |- | ||
+ | ! Note | ||
+ | | This function is a synonym for GPIOOutputSet as in many cases the level can be set for a pin regardless of input or output mode. This may help to make code clearer or easier to understand in some cases. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPIOPullGet(Pin:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current pull state of a GPIO pin</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPIOPullSelect(Pin,Mode:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Change the pull state of a GPIO pin</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPIOFunctionGet(Pin:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current function of a GPIO pin</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GPIOFunctionSelect(Pin,Mode:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Change the function of a GPIO pin</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Virtual GPIO functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VirtualGPIOInputGet(Pin:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current state of a virtual GPIO input pin</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VirtualGPIOOutputSet(Pin,Level:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the state of a virtual GPIO output pin</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Pin | ||
+ | | The pin to set the state for (eg GPIO_PIN_1) | ||
+ | |- | ||
+ | ! Level | ||
+ | | The state to set the pin to (eg GPIO_LEVEL_HIGH) | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if completed successfully or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VirtualGPIOLevelGet(Pin:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current level (state) of a virtual GPIO pin</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Pin | ||
+ | | The pin to get the level for (eg GPIO_PIN_1) | ||
+ | |- | ||
+ | ! Return | ||
+ | | The current level (eg GPIO_LEVEL_HIGH) or GPIO_LEVEL_UNKNOWN on failure | ||
+ | |- | ||
+ | ! Note | ||
+ | | This function is a synonym for VirtualGPIOInputGet as in many cases the level can be read from a pin regardless of input or output mode. This may help to make code clearer or easier to understand in some cases. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VirtualGPIOLevelSet(Pin,Level:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the level (state) of a virtual GPIO pin</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Pin | ||
+ | | The pin to set the level for (eg GPIO_PIN_1) | ||
+ | |- | ||
+ | ! Level | ||
+ | | The level to set the pin to (eg GPIO_LEVEL_HIGH) | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if completed successfully or another error code on failure | ||
+ | |- | ||
+ | ! Note | ||
+ | | This function is a synonym for VirtualGPIOOutputSet as in many cases the level can be set for a pin regardless of input or output mode. This may help to make code clearer or easier to understand in some cases. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VirtualGPIOFunctionGet(Pin:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current function of a virtual GPIO pin</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VirtualGPIOFunctionSelect(Pin,Mode:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Change the function of a virtual GPIO pin</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''SPI functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SPIAvailable:Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check if an SPI device is available</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SPIStart(Mode,ClockRate,ClockPhase,ClockPolarity:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Start the default SPI device ready for writing and reading</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SPIStop:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Stop the default SPI device and terminate writing and reading</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SPIRead(ChipSelect:Word; Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Read data from the default SPI device. Because SPI writes and then reads for each byte, dummy data will be written for each byte to be read.</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SPIWrite(ChipSelect:Word; Source:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Write data to the default SPI device. Because SPI writes and then reads for each byte, received data will be discarded for each byte written.</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SPIWriteRead(ChipSelect:Word; Source,Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Write data to and Read data from the default SPI device in one operation. Because SPI writes and then reads for each byte, both the source and dest buffers must be the same size.</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SPIGetMode:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the device mode of the default SPI device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | The device mode or SPI_MODE_UNKNOWN on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SPISetMode(Mode:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the device mode for the default SPI device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Mode | ||
+ | | The device mode to set (eg SPI_MODE_4WIRE) | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SPIGetClockRate(ChipSelect:Word):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the clock rate of the default SPI device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SPISetClockRate(ChipSelect:Word;ClockRate:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the clock rate for the default SPI device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SPIGetClockPhase:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the clock phase of the default SPI device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | The clock phase or SPI_CLOCK_PHASE_UNKNOWN on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SPISetClockPhase(ClockPhase:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the clock phase for the default SPI device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! ClockPhase | ||
+ | | The clock phase to set (eg SPI_CLOCK_PHASE_LOW) | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SPIGetClockPolarity:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the clock polarity of the default SPI device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | The clock polarity or SPI_CLOCK_POLARITY_UNKNOWN on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SPISetClockPolarity(ClockPolarity:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the clock polarity for the default SPI device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! ClockPolarity | ||
+ | | The clock polarity to set (eg SPI_CLOCK_POLARITY_LOW) | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SPIGetSelectPolarity(ChipSelect:Word):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the chip select polarity of the default SPI device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SPISetSelectPolarity(ChipSelect:Word; SelectPolarity:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the chip select polarity for the default SPI device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SPIGetDescription(Id:LongWord):String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Return the device description of an SPI device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Id | ||
+ | | The Id number of the SPI device as shown in the official documentation | ||
+ | |- | ||
+ | ! Return | ||
+ | | The correct device description suitable for passing to SPIDeviceFindByDescription | ||
+ | |- | ||
+ | ! Note | ||
+ | | The Id number supplied to this function may differ from the Ultibo device id value | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''I2C functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function I2CAvailable:Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check if an I2C device is available</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function I2CStart(Rate:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Start the default I2C device ready for reading and writing</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function I2CStop:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Stop the default I2C device and terminate reading and writing</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function I2CRead(Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Read data from the default I2C device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function I2CWrite(Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Write data to the default I2C device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function I2CWriteRead(Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Write data to and Read data from the default I2C device in one operation. Useful for devices that require a register address specified before a read (eg EEPROM devices)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function I2CWriteWrite(Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Write 2 data blocks to the default I2C device in one operation. Useful for devices that require a register address specified before a write (eg EEPROM devices)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function I2CGetRate:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the clock rate of the default I2C device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | The clock rate in Hz or 0 on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function I2CSetRate(Rate:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the clock rate for the default I2C device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Rate | ||
+ | | The clock rate to set in Hz | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function I2CGetAddress:Word; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the slave address for the default I2C device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | The slave address or I2C_ADDRESS_INVALID on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function I2CSetAddress(Address:Word):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the slave address for the default I2C device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Address | ||
+ | | The slave address to set | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function I2CGetDescription(Id:LongWord):String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the device description of an I2C device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Id | ||
+ | | The Id number of the I2C device as shown in the official documentation | ||
+ | |- | ||
+ | ! Return | ||
+ | | The correct device description suitable for passing to I2CDeviceFindByDescription | ||
+ | |- | ||
+ | ! Note | ||
+ | | The Id number supplied to this function may differ from the Ultibo device id value | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function I2CSlaveGetDescription(Id:LongWord):String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the device description of an I2C slave device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Id | ||
+ | | The Id number of the I2C slave device as shown in the official documentation | ||
+ | |- | ||
+ | ! Return | ||
+ | | The correct device description suitable for passing to I2CSlaveFindByDescription | ||
+ | |- | ||
+ | ! Note | ||
+ | | The Id number supplied to this function may differ from the Ultibo device id value | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''PWM functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PWMAvailable:Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check if a PWM device is available</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PWMStart:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Start the default PWM device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PWMStop:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Stop the default PWM device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PWMWrite(Value:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Write a value to the default PWM device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PWMSetMode(Mode:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the mode for the default PWM device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Mode | ||
+ | | The mode value to set (eg PWM_MODE_MARKSPACE) | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PWMSetRange(Range:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the range for the default PWM device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PWMSetFrequency(Frequency:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the clock frequency for the default PWM device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Frequency | ||
+ | | The frequency to set in Hz | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PWMConfigure(DutyNS,PeriodNS:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the configuration of the default PWM device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PWMGetDescription(Id,Channel:LongWord):String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the device description of an PWM device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Id | ||
+ | | The Id number of the PWM device as shown in the official documentation | ||
+ | |- | ||
+ | ! Channel | ||
+ | | The channel number of the PWM device as shown in the official documentation | ||
+ | |- | ||
+ | ! Return | ||
+ | | The correct device description suitable for passing to PWMDeviceFindByDescription | ||
+ | |- | ||
+ | ! Note | ||
+ | | The Id number supplied to this function may differ from the Ultibo device id value | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''RTC functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RTCAvailable:Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check if a Real Time Clock (RTC) device is available</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RTCGetTime:Int64; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current time from a Real Time Clock device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Returned time is 100 nanosecond ticks since 1 January 1601. The same format as the ClockGetTime function. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RTCSetTime(const Time:Int64):Int64; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the current time for a Real Time Clock device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''UART functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function UARTGetDescription(Id:LongWord):String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the device description of a UART device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Id | ||
+ | | The Id number of the UART device as shown in the official documentation | ||
+ | |- | ||
+ | ! Return | ||
+ | | The correct device description suitable for passing to UARTDeviceFindByDescription | ||
+ | |- | ||
+ | ! Note | ||
+ | | The Id number supplied to this function may differ from the Ultibo device id value | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Serial functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SerialAvailable:Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check if a Serial device is available</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SerialOpen(BaudRate,DataBits,StopBits,Parity,FlowControl,ReceiveDepth,TransmitDepth:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Open the default Serial device ready for sending and receiving</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! 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) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SerialClose:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Close the default Serial device and terminate sending and receiving</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SerialRead(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Read data from the default Serial device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Buffer | ||
+ | | Pointer to a buffer to receive the data | ||
+ | |- | ||
+ | ! Size | ||
+ | | The size of the buffer | ||
+ | |- | ||
+ | ! Count | ||
+ | | The number of bytes read on return | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SerialWrite(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Write data to the default Serial device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Buffer | ||
+ | | Pointer to a buffer of data to transmit | ||
+ | |- | ||
+ | ! Size | ||
+ | | The size of the buffer | ||
+ | |- | ||
+ | ! Count | ||
+ | | The number of bytes written on return | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Peripheral functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PeripheralGetBase:PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the base address of the peripherals</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PeripheralGetSize:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the total size of the peripherals</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PeripheralRead(Base,Reg:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Read from a Peripheral register</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure PeripheralWrite(Base,Reg,Value:LongWord); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Write to a Peripheral register</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function LocalPeripheralGetBase:PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the base address of the local peripherals (Peripherals local to each CPU)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function LocalPeripheralGetSize:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the total size of the local peripherals (Peripherals local to each CPU)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''System functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetSP:PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current stack pointer (SP)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetPC:PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current program counter (PC)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetIRQ:Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get Interrupts (IRQ) state</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | True is enabled, False if disabled | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure EnableIRQ; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Enable Interrupts (IRQ) unconditionally</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure DisableIRQ; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Disable Interrupts (IRQ) unconditionally</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SaveIRQ:TIRQMask; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Disable Interrupts (IRQ) and return the previous state</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | IRQ state when called | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RestoreIRQ(IRQMask:TIRQMask):TIRQMask; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Restore Interrupts (IRQ) to a previous state</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! IRQMask | ||
+ | | IRQ state to restore | ||
+ | |- | ||
+ | ! Return | ||
+ | | IRQ state when called | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetFIQ:Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get Fast Interrupts (FIQ) state</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | True is enabled, False if disabled | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure EnableFIQ; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Enable Fast Interrupts (FIQ) unconditionally</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure DisableFIQ; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Disable Fast Interrupts (FIQ) unconditionally</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SaveFIQ:TFIQMask; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Disable Fast Interrupts (FIQ) and return the previous state</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | FIQ state when called | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RestoreFIQ(FIQMask:TFIQMask):TFIQMask; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Restore Fast Interrupts (FIQ) to a previous state</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! FIQMask | ||
+ | | FIQ state to restore | ||
+ | |- | ||
+ | ! Return | ||
+ | | FIQ state when called | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure EnableIRQFIQ; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Enable Interrupts and Fast Interrupts (IRQ/FIQ) unconditionally</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure DisableIRQFIQ; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Disable Interrupts and Fast Interrupts (IRQ/FIQ) unconditionally</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SaveIRQFIQ:TIRQFIQMask; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Disable Interrupts and Fast Interrupts (IRQ/FIQ) and return the previous state</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | IRQ/FIQ state when called | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RestoreIRQFIQ(IRQFIQMask:TIRQFIQMask):TIRQFIQMask; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Restore Interrupts and Fast Interrupts (IRQ/FIQ) to a previous state</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! IRQFIQMask | ||
+ | | IRQ/FIQ state to restore | ||
+ | |- | ||
+ | ! Return | ||
+ | | IRQ/FIQ state when called | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetAbort:Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get Abort state</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | True is enabled, False if disabled | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure EnableAbort; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Enable Abort unconditionally</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure DisableAbort; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Disable Abort unconditionally</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SaveAbort:TAbortMask; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Disable Abort and return the previous state</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | Abort state when called | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RestoreAbort(AbortMask:TAbortMask):TAbortMask; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Restore Abort to a previous state</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! AbortMask | ||
+ | | Abort state to restore | ||
+ | |- | ||
+ | ! Return | ||
+ | | Abort state when called | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure Halt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Halt the current processor</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure Pause; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Pause the current processor and wait for an Event or Interrupt (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function HaltThread(ExitCode:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Halt the current thread</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure SendEvent; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Send a signal that an Event has occurred (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure WaitForEvent; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Wait for an Event to occur (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure WaitForInterrupt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Wait for an Interrupt to occur (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure ReadMemoryBarrier; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a Read Memory Barrier operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure WriteMemoryBarrier; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a Write Memory Barrier operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure DataMemoryBarrier; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a Data Memory Barrier operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure DataSynchronizationBarrier; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a Data Synchronization Barrier operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure InstructionMemoryBarrier; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform an Instruction Memory Barrier operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure InvalidateTLB; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform an Invalidate Entire TLB operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure InvalidateDataTLB; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform an Invalidate Data TLB operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure InvalidateInstructionTLB; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform an Invalidate Instruction TLB operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure InvalidateCache; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform an Invalidate Entire Cache operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure CleanDataCache; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a Clean Data Cache operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure InvalidateDataCache; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform an Invalidate Data Cache operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure CleanAndInvalidateDataCache; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a Clean and Invalidate Data Cache operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure InvalidateInstructionCache; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform an Invalidate Instruction Cache operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure CleanDataCacheRange(Address:PtrUInt; Size:LongWord); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a Clean Data Cache Range operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure InvalidateDataCacheRange(Address:PtrUInt; Size:LongWord); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform an Invalidate Data Cache Range operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure CleanAndInvalidateDataCacheRange(Address:PtrUInt; Size:LongWord); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a Clean and Invalidate Data Cache Range operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure InvalidateInstructionCacheRange(Address:PtrUInt; Size:LongWord); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform an Invalidate Instruction Cache Range operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure FlushPrefetchBuffer; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a Flush Prefetch Buffer operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure FlushBranchTargetCache; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a Flush Entire Branch Target Cache operation (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure ContextSwitch(OldStack,NewStack:Pointer; NewThread:TThreadHandle); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a Context Switch from one thread to another</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure ContextSwitchIRQ(OldStack,NewStack:Pointer; NewThread:TThreadHandle); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a Context Switch from one thread to another from an IRQ handler</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure ContextSwitchFIQ(OldStack,NewStack:Pointer; NewThread:TThreadHandle); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a Context Switch from one thread to another from an FIQ handler</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure ContextSwitchSWI(OldStack,NewStack:Pointer; NewThread:TThreadHandle); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a Context Switch from one thread to another from a software interrupt handler</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function InterlockedOr(var Target:LongInt;Value:LongInt):LongInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform an atomic OR operation</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function InterlockedXor(var Target:LongInt; Value:LongInt):LongInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform an atomic XOR operation</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function InterlockedAnd(var Target:LongInt; Value:LongInt):LongInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform an atomic AND operation</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function InterlockedDecrement(var Target:LongInt):LongInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform an atomic decrement operation</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function InterlockedIncrement(var Target:LongInt):LongInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform an atomic increment operation</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function InterlockedExchange(var Target:LongInt; Source:LongInt):LongInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform an atomic exchange operation</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function InterlockedAddExchange(var Target:LongInt; Source:LongInt):LongInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform an atomic add and exchange operation</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function InterlockedCompareExchange(var Target:LongInt; Source,Compare:LongInt):LongInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform an atomic compare and exchange operation</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageTableGetLevels:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the number of page table levels for the current platform</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageDirectoryGetBase:PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the base address of the first level page directory (Where applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageDirectoryGetSize:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the size of the first level page directory (Where applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageTableGetBase:PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the base address of the first or second level page table</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageTableGetSize:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the size of the first or second level page table</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageTableGetEntry(Address:PtrUInt):TPageTableEntry; overload;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Page Table entry that corresponds to the supplied virtual address</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure PageTableGetEntry(Address:PtrUInt; var Entry:TPageTableEntry); inline; overload;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Page Table entry that corresponds to the supplied virtual address</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageTableSetEntry(const Entry:TPageTableEntry):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the Page Table entry that corresponds to the supplied virtual address</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageTableGetPageSize(Address:PtrUInt):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Size from the Page Table page that corresponds to the supplied virtual address</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageTableGetPageFlags(Address:PtrUInt):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Flags from the Page Table page that corresponds to the supplied virtual address</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageTableGetPageRange(Address:PtrUInt):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Physical Range from the Page Table page that corresponds to the supplied virtual address</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageTableGetPagePhysical(Address:PtrUInt):PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Physical Address from the Page Table page that corresponds to the supplied virtual address</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageTablesGetAddress:PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the address of the second or third level page tables</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageTablesGetLength:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the size of the second or third level page tables</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageTablesGetCount:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the number of second or third level page tables</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageTablesGetShift:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the multiplier to convert count to actual size of the second or third level page tables</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageTablesGetNext:PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the address of the next available second or third level page table</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageTablesGetUsed:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the number of used second or third level page tables</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PageTablesGetFree:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the number of available second or third level page tables</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VectorTableGetBase:PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the base address of the interrupt vector table</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VectorTableGetSize:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the size in bytes of the interrupt vector table</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VectorTableGetCount:LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the number of entries in the interrupt vector table</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VectorTableGetEntry(Number:LongWord):PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the interrupt vector table entry that corresponds to the supplied number</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function VectorTableSetEntry(Number:LongWord; Address:PtrUInt):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the interrupt vector table entry that corresponds to the supplied number</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Exception functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure HardwareException(AType:LongWord; Address,Frame:Pointer);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure UnhandledException(Obj:TObject; Addr:CodePointer; FrameCount:LongInt; Frames:PCodePointer);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Text IO functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure TextIOOpen(var F:Text; AWrite:TTextIOWriteChar; ARead:TTextIOReadChar; AMode:LongInt; AUserData:Pointer);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Open a text file with the input or output directed to the default text IO device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure TextIOClose(var T:TextRec);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Close a text file that was opened by TextIOOpen (Dummy only)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure TextIORead(var T:TextRec);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Internal read function for text files using the text IO device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Not intended to be called directly by applications, use Read or ReadLn instead | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure TextIOWrite(var T:TextRec);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Internal write function for text files using the text IO device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Not intended to be called directly by applications, use Write or WriteLn instead | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function TextIOReadData(ARead:TTextIOReadChar; AUserData:Pointer; ABuffer:PChar; ACount:LongInt):LongInt;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Internal read function for text files using the text IO device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Not intended to be called directly by applications, use Read or ReadLn instead | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function TextIOWriteChar(ACh:Char; AUserData:Pointer):Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Output a character to the default text IO device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Not intended to be called directly by applications, use Write or WriteLn instead | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function TextIOReadChar(var ACh:Char; AUserData:Pointer):Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Input a character from the default text IO device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Not intended to be called directly by applications, use Read or ReadLn instead | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function TextIOWriteBuffer(ABuffer:PChar; ACount:LongInt; AUserData:Pointer):LongInt;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Output one or more characters to the default text IO device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Not intended to be called directly by applications, use Write or WriteLn instead | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Console functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ConsoleGetKey(var ACh:Char; AUserData:Pointer):Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ConsolePeekKey(var ACh:Char; AUserData:Pointer):Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ConsoleWriteChar(ACh:Char; AUserData:Pointer):Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ConsoleReadChar(var ACh:Char; AUserData:Pointer):Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ConsoleReadWideChar(var ACh:WideChar; AUserData:Pointer):Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ConsoleHideMouse(AUserData:Pointer):Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ConsoleShowMouse(X,Y:LongWord; AUserData:Pointer):Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ConsoleReadMouse(var X,Y,Buttons:LongWord; AUserData:Pointer):Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''CodePage functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CodePageToWideChar(Ch:Char):WideChar; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function WideCharToCodePage(Ch:WideChar):Char; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Name functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function HostGetName:String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function HostSetName(const AName:String):Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function HostGetDomain:String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function HostSetDomain(const ADomain:String):Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Module functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ModuleLoad(const AName:String):THandle; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ModuleUnload(AHandle:THandle):Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ModuleGetName(AHandle:THandle):String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Symbol functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SymbolAdd(AHandle:THandle; const AName:String; AAddress:PtrUInt):Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SymbolRemove(AHandle:THandle; const AName:String):Boolean; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SymbolGetAddress(AHandle:THandle; const AName:String):PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Logging functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure LoggingOutput(const AText:String); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure LoggingOutputEx(AFacility,ASeverity:LongWord; const ATag,AContent:String); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Environment functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function EnvironmentGet(const AName:String):String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Locate an environment variable and return the current value</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Name | ||
+ | | The name of the variable to locate (eg TZ) | ||
+ | |- | ||
+ | ! Return | ||
+ | | The value of the variable or an empty string if not found | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function EnvironmentSet(const AName,AValue:String):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Add an environment variable or update an existing variable</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Name | ||
+ | | The name of the variable to add or update (eg TZ) | ||
+ | |- | ||
+ | ! Value | ||
+ | | The new value of the variable (eg EST+5) | ||
+ | |- | ||
+ | ! Return | ||
+ | | ERROR_SUCCESS if the value was set or another error code on failure | ||
+ | |- | ||
+ | ! Note | ||
+ | | Passing an empty value will delete the environment variable if it exists | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function EnvironmentCount(AReset:Boolean):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current number of environment variables</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Reset | ||
+ | | If True then force a recount | ||
+ | |- | ||
+ | ! Return | ||
+ | | The number of environment variables | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function EnvironmentIndex(const AName:String):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Locate an environment variable and return the index</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Name | ||
+ | | The name of the variable to locate (eg TZ) | ||
+ | |- | ||
+ | ! Return | ||
+ | | The index of the environment variable or 0 if not found | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function EnvironmentString(AIndex:LongWord):String; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get an environment variable by index</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Index | ||
+ | | The index of the variable to get (1 to EnvironmentCount) | ||
+ | |- | ||
+ | ! Return | ||
+ | | The environment variable or an empty string if index is not valid | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function EnvironmentSetDefault(const AName,AValue:String):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Default version of EnvironmentSet function used if no handler is registered</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | |Not intended to be called directly by applications, use EnvironmentSet instead | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Utility functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function FirstBitSet(Value:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Find the first set bit in a nonzero 32 bit value</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Returns 31 for MSB and 0 for LSB (0xFFFFFFFF/-1 if no bits are set) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function CountLeadingZeros(Value:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Count the number of leading 0 bits in a nonzero 32 bit value</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Returns 32 if no bits are set | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PhysicalToIOAddress(Address:Pointer):PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert Physical address to an IO addresses (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function IOAddressToPhysical(Address:Pointer):PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert an IO address to a Physical address (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function PhysicalToBusAddress(Address:Pointer):PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert a Physical address to a Bus address (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function BusAddressToPhysical(Address:Pointer):PtrUInt; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert a Bus address to a Physical address (Where Applicable)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure NanosecondDelay(Nanoseconds:LongWord);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Non sleep wait for a number of nanoseconds</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Nanseconds | ||
+ | | Number of nanoseconds to wait | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure MicrosecondDelay(Microseconds:LongWord);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Non sleep wait for a number of microseconds</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Milliseconds | ||
+ | | Number of microseconds to wait | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure MillisecondDelay(Milliseconds:LongWord);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Non sleep wait for a number of milliseconds</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Milliseconds | ||
+ | | Number of milliseconds to wait | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure NanosecondDelayEx(Nanoseconds:LongWord; Wait:Boolean);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Non sleep wait for a number of nanoseconds</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Nanoseconds | ||
+ | | Number of nanoseconds to wait | ||
+ | |- | ||
+ | ! Wait | ||
+ | | Use WaitForEvent on each loop to reduce power consumption | ||
+ | |- | ||
+ | ! Note | ||
+ | | Not suitable for use by interrupt handlers if wait is true | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure MicrosecondDelayEx(Microseconds:LongWord; Wait:Boolean);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Non sleep wait for a number of microseconds</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Milliseconds | ||
+ | | Number of milliseconds to wait | ||
+ | |- | ||
+ | ! Wait | ||
+ | | Use WaitForEvent on each loop to reduce power consumption | ||
+ | |- | ||
+ | ! Note | ||
+ | | Not suitable for use by interrupt handlers if wait is true | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure MillisecondDelayEx(Milliseconds:LongWord; Wait:Boolean);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Non sleep wait for a number of milliseconds</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Milliseconds | ||
+ | | Number of milliseconds to wait | ||
+ | |- | ||
+ | ! Wait | ||
+ | | Use WaitForEvent on each loop to reduce power consumption | ||
+ | |- | ||
+ | ! Note | ||
+ | | Not suitable for use by interrupt handlers if wait is true | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''System random functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure SystemRandomize;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Dos conversion functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DosGetMsCount:Int64;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Dos info/date/time functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DosDosVersion:Word;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure DosGetDate(var Year,Month,MDay,WDay:Word);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure DosSetDate(Year,Month,Day:Word);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure DosGetTime(var Hour,Minute,Second,Sec100:Word);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure DosSetTime(Hour,Minute,Second,Sec100:Word);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Dos environment functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DosEnvCount:Longint;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DosEnvStr(Index:LongInt):ShortString;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function DosGetEnv(EnvVar:ShortString):ShortString; </pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''SysUtils tick functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SysUtilsGetTickCount:LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SysUtilsGetTickCount64:QWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''SysUtils locale functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure SysUtilsGetLocalTime(var SystemTime:TSystemTime);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current local time as a SystemTime value</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Includes timezone offset if configured | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure SysUtilsSetLocalTime(const SystemTime:TSystemTime);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the current local time from a SystemTime value</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | Includes timezone offset if configured | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SysUtilsGetUniversalTime(var SystemTime:TSystemTime):Boolean;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current UTC time as a SystemTime value</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SysUtilsGetLocalTimeOffset:Integer;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current local time offset value</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function SysUtilsGetLocalTimeOffsetEx(const DateTime:TDateTime; const InputIsUTC:Boolean; out Offset:Integer):Boolean;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current local time offset value at the given date and time</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Platform helper functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function HandleTypeToString(HandleType:LongWord):String;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure PlatformLog(Level:LongWord; const AText:String);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure PlatformLogInfo(const AText:String); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure PlatformLogWarn(const AText:String); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure PlatformLogError(const AText:String); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure PlatformLogDebug(const AText:String); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
Return to [[Unit_Reference|Unit Reference]] | Return to [[Unit_Reference|Unit Reference]] |
Latest revision as of 04:08, 12 September 2024
Return to Unit Reference
Contents
Description
Ultibo Platform Interface unit
Constants
HANDLE_FLAG_*
HANDLE_FLAG_NONE = $00000000;
|
|
HANDLE_FLAG_NAMED = $00000001;
|
Set if the handle has a name |
HANDLE_FLAG_DUPLICATE = $00000002;
|
Set if the handle can be duplicated |
HANDLE_FLAG_INTERNAL = HANDLE_FLAG_NONE + $80000000;
|
Note: Temporary value to avoid warning |
HANDLE_*
HANDLE_SIGNATURE = $CD15E20A;
|
|
HANDLE_TABLE_MIN = $100;
|
Minimum handle number (Skip first 256) |
HANDLE_TABLE_MAX = $7FFFFFFF;
|
Maximum handle number (Avoid MSB as THandle is a signed value) |
HANDLE_TABLE_MASK = $7FF;
|
2048 buckets for handle lookups |
HANDLE_NAME_LENGTH = 256;
|
Maximum length of handle name |
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 (Higher transfer throughput) (If applicable) |
DMA_DATA_FLAG_LITE = $00001000;
|
Perform a "lite" transfer (Lower transfer throughput but less waiting for free channel) (If applicable) |
DMA_DATA_FLAG_40BIT = $00002000;
|
Perform a 40-bit address transfer (Address to memory above 1GB or 4GB depending on SoC) (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 |
INTERRUPT_FLAG_*
INTERRUPT_FLAG_NONE = $00000000;
|
|
INTERRUPT_FLAG_SHARED = $00000001;
|
A shared interrupt, multiple devices can register for the same interrupt and each will be called until one returns INTERRUPT_RETURN_HANDLED |
INTERRUPT_FLAG_LOCAL = $00000002;
|
A local interrupt, generated only on the CPU it is associated with |
INTERRUPT_FLAG_IPI = $00000004;
|
A software interrupt or inter processor interrupt, generated by a software request instead of hardware |
INTERRUPT_FLAG_FIQ = $00000008;
|
A fast interrupt, takes precedence over all other interrupts (where applicable) |
INTERRUPT_FLAG_CHAINED = $00000010;
|
A chained interrupt, multiple devices can register for the same interrupt and all will be called when it occurs |
INTERRUPT_PRIORITY_*
INTERRUPT_PRIORITY_MAXIMUM = $00;
|
|
INTERRUPT_PRIORITY_FIQ = $40;
|
|
INTERRUPT_PRIORITY_DEFAULT = $A0;
|
|
INTERRUPT_PRIORITY_MINIMUM = $F0;
|
INTERRUPT_RETURN_*
INTERRUPT_RETURN_NONE = 0;
|
Shared interrupt not handled or not for this device |
INTERRUPT_RETURN_HANDLED = 1;
|
Shared interrupt handled, no further processing |
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 |
SHUTDOWN_FLAG_*
SHUTDOWN_FLAG_NONE = $00000000;
|
|
SHUTDOWN_FLAG_RESTART = $00000001;
|
The system is shutting down and restarting |
SHUTDOWN_FLAG_FORCE = $00000002;
|
Forced shutdown or restart requested, registered callbacks will be bypassed |
SHUTDOWN_*
SHUTDOWN_SIGNATURE = $A73D8B0C;
|
|
SHUTDOWN_DEFAULT_DELAY = 1000;
|
Default delay before starting a shutdown or restart (Milliseconds) |
SHUTDOWN_MINIMUM_DELAY = 10;
|
Minimum delay before starting a shutdown or restart (Milliseconds) |
SHUTDOWN_DEFAULT_TIMEOUT = 5000;
|
Default time to wait for a shutdown callback to complete before continuing (Milliseconds) |
EXCEPTION_TYPE_*
EXCEPTION_TYPE_DATA_ABORT = 1;
|
|
EXCEPTION_TYPE_PREFETCH_ABORT = 2;
|
|
EXCEPTION_TYPE_UNDEFINED_INSTRUCTION = 3;
|
FIRMWARE_THROTTLE_*
FIRMWARE_THROTTLE_NONE = (0 shl 0);
|
|
FIRMWARE_THROTTLE_UNDER_VOLTAGE = (1 shl 0);
|
Under voltage is occurring |
FIRMWARE_THROTTLE_FREQUENCY_LIMIT = (1 shl 1);
|
Frequency limiting is occurring |
FIRMWARE_THROTTLE_THROTTLED = (1 shl 2);
|
Throttling is occurring |
FIRMWARE_THROTTLE_SOFT_TEMP_LIMIT = (1 shl 3);
|
Soft temperature limit is active |
FIRMWARE_THROTTLE_WAS_UNDER_VOLTAGE = (1 shl 16);
|
Under voltage has occurred |
FIRMWARE_THROTTLE_WAS_FREQUENCY_LIMIT = (1 shl 17);
|
Frequency limiting has occurred |
FIRMWARE_THROTTLE_WAS_THROTTLED = (1 shl 18);
|
Throttling has occurred |
FIRMWARE_THROTTLE_WAS_SOFT_TEMP_LIMIT = (1 shl 19);
|
Soft temperature limit has occurred |
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_WARN = LOG_LEVEL_WARN;
|
Platform warning 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_WARN = LOG_LEVEL_WARN;
|
IRQ warning 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_WARN = LOG_LEVEL_WARN;
|
FIQ warning 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_WARN = LOG_LEVEL_WARN;
|
SWI warning 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:PtrUInt;
|
|
Param2:PtrUInt;
|
|
Param3:PtrUInt;
|
Handle close
THandleClose = procedure(Data:THandle);
|
Handle close extended
THandleCloseEx = function(Data:THandle):LongWord;
|
Handle duplicate
THandleDuplicate = function(Data:THandle):THandle;
|
Handle enumeration callback
THandleEnumerate = function(Handle:PHandleEntry; Data:Pointer):LongWord;
|
Handle entry
PHandleEntry = ^THandleEntry;
THandleEntry = record
Handle Properties | |
Signature:LongWord;
|
Signature for entry validation |
Handle:THandle;
|
Handle (Number) of this Handle |
HandleType:LongWord;
|
Type of this Handle (eg HANDLE_TYPE_FILE) |
Count:LongWord;
|
Reference Count of the Handle |
Flags:LongWord;
|
Flags for the Handle (eg HANDLE_FLAG_NAMED) |
Name:PChar;
|
The name of the Handle (Optional) |
Hash:LongWord;
|
Hash of the Handle name (Only if named) |
Data:THandle;
|
Purpose specific data for the Handle (eg a file handle or a socket handle) |
Close:THandleClose;
|
Procedure to call on final close (Optional) |
CloseEx:THandleCloseEx;
|
Function to call on final close (Optional) |
Duplicate:THandleDuplicate;
|
Function to call when duplicating handle (Optional) |
Internal Properties | |
Prev:PHandleEntry;
|
Previous entry in Handle table |
Next:PHandleEntry;
|
Next entry in Handle table |
Statistics Properties | |
Handle entries
PHandleEntries = ^THandleEntries;
THandleEntries = array[0..HANDLE_TABLE_MASK + 1] of PHandleEntry;
Handle table
PHandleTable = ^THandleTable;
THandleTable = record
Next:LongWord;
|
The next handle number |
Count:LongWord;
|
The current handle count |
Handles:PHandleEntries;
|
Array of handle entries hash buckets |
Shutdown callback
TShutdownCallback = function(Flags:LongWord; Parameter:Pointer):LongWord;
|
Shutdown entry
PShutdownEntry = ^TShutdownEntry;
TShutdownEntry = record
Shutdown Properties | |
Signature:LongWord;
|
Signature for entry validation |
Callback:TShutdownCallback;
|
The procedure to call on Shutdown or Restart |
Parameter:Pointer;
|
The parameter to pass to the Shutdown procedure (or nil) |
Timeout:LongWord;
|
The time to wait for the Callback to complete (or 0 to use the default timeout) (Milliseconds) |
Internal Properties | |
Prev:PShutdownEntry;
|
Previous entry in Shutdown table |
Next:PShutdownEntry;
|
Next entry in Shutdown table |
Shutdown data
PShutdownData = ^TShutdownData;
TShutdownData = record
Used internally by Shutdown or Restart | |
Delay:LongWord;
|
Delay value requested for Shutdown or Restart (Milliseconds) |
Flags:LongWord;
|
Flags for requested Shutdown or Restart (eg SHUTDOWN_FLAG_RESTART) |
Entry:PShutdownEntry;
|
The current shutdown entry being processed |
Interrupt entry (IRQ/FIQ)
PInterruptEntry = ^TInterruptEntry;
TInterruptEntry = record
Interrupt Properties | |
FNumber:LongWord;
|
|
FFlags:LongWord;
|
|
FCPUMask:LongWord;
|
|
FPriority:LongWord;
|
|
FHandler:TInterruptHandler;
|
|
FHandlerEx:TInterruptExHandler;
|
|
FSharedHandler:TSharedInterruptHandler;
|
|
FParameter:Pointer;
|
|
Internal Properties | |
FPrev:PInterruptEntry;
|
|
FNext:PInterruptEntry;
|
|
function GetCPUID:LongWord;
|
|
procedure SetCPUID(ACPUID:LongWord);
|
|
procedure SetPriority(APriority:LongWord);
|
|
function GetIsShared:Boolean;
|
|
procedure SetIsShared(AValue:Boolean);
|
|
function GetIsLocal:Boolean;
|
|
procedure SetIsLocal(AValue:Boolean);
|
|
function GetIsIPI:Boolean;
|
|
procedure SetIsIPI(AValue:Boolean);
|
|
function GetIsFIQ:Boolean;
|
|
procedure SetIsFIQ(AValue:Boolean);
|
|
function GetIsChained:Boolean;
|
|
procedure SetIsChained(AValue:Boolean);
|
|
function GetPriorityDefault:Boolean;
|
|
procedure SetPriorityDefault(AValue:Boolean);
|
|
function GetPriorityMinimum:Boolean;
|
|
procedure SetPriorityMinimum(AValue:Boolean);
|
|
function GetPriorityMaximum:Boolean;
|
|
procedure SetPriorityMaximum(AValue:Boolean);
|
|
function GetPriorityFIQ:Boolean;
|
|
procedure SetPriorityFIQ(AValue:Boolean);
|
|
public
| |
Interrupt Properties | |
property Number:LongWord read FNumber write FNumber;
|
|
property Flags:LongWord read FFlags write FFlags;
|
|
property CPUMask:LongWord read FCPUMask write FCPUMask;
|
|
property Handler:TInterruptHandler read FHandler write FHandler;
|
|
property HandlerEx:TInterruptExHandler read FHandlerEx write FHandlerEx;
|
|
property SharedHandler:TSharedInterruptHandler read FSharedHandler write FSharedHandler;
|
|
property Parameter:Pointer read FParameter write FParameter;
|
|
Internal Properties | |
property Prev:PInterruptEntry read FPrev write FPrev;
|
|
property Next:PInterruptEntry read FNext write FNext;
|
|
Additional Properties | |
property CPUID:LongWord read GetCPUID write SetCPUID;
|
|
property Priority:LongWord read FPriority write SetPriority;
|
|
property IsShared:Boolean read GetIsShared write SetIsShared;
|
|
property IsLocal:Boolean read GetIsLocal write SetIsLocal;
|
|
property IsIPI:Boolean read GetIsIPI write SetIsIPI;
|
|
property IsFIQ:Boolean read GetIsFIQ write SetIsFIQ;
|
|
property IsChained:Boolean read GetIsChained write SetIsChained;
|
|
property PriorityDefault:Boolean read GetPriorityDefault write SetPriorityDefault;
|
|
property PriorityMinimum:Boolean read GetPriorityMinimum write SetPriorityMinimum;
|
|
property PriorityMaximum:Boolean read GetPriorityMaximum write SetPriorityMaximum;
|
|
property PriorityFIQ:Boolean read GetPriorityFIQ write SetPriorityFIQ;
|
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
private
| |
Page Table Properties | |
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; Timeout:LongWord):LongWord;
|
|
SignalSemaphore:function(Handle:THandle):LongWord;
|
CPU initialization
TCPUInit = procedure;
|
FPU initialization
TFPUInit = procedure;
|
GPU initialization
TGPUInit = procedure;
|
MMU initialization
TMMUInit = procedure;
|
SMP initialization
TSMPInit = procedure;
|
Cache initialization
TCacheInit = procedure;
|
Board initialization
TBoardInit = procedure;
|
Memory initialization
TMemoryInit = procedure;
|
Clock initialization
TClockInit = procedure;
|
Power initialization
TPowerInit = procedure;
|
Mailbox initialization
TMailboxInit = procedure;
|
Interrupt initialization
TInterruptInit = procedure;
|
Peripheral initialization
TPeripheralInit = procedure;
|
Framebuffer initialization
TFramebufferInit = procedure;
|
Parse boot tags
TParseBootTags = procedure;
|
Parse command line
TParseCommandLine = procedure;
|
Parse environment
TParseEnvironment = procedure;
|
Options initialization
TOptionsInit = procedure;
|
Device tree valid
TDeviceTreeValid = function:Boolean;
|
Device tree get base
TDeviceTreeGetBase = function:PtrUInt;
|
Device tree get size
TDeviceTreeGetSize = function:LongWord;
|
Device tree read
TDeviceTreeRead = function(const Path,Name:String; Buffer:Pointer; var Size:LongWord):LongWord;
|
Device tree read 32
TDeviceTreeRead32 = function(const Path,Name:String; var Value:LongWord):LongWord;
|
Device tree read 64
TDeviceTreeRead64 = function(const Path,Name:String; var Value:UInt64):LongWord;
|
Device tree read string
TDeviceTreeReadString = function(const Path,Name:String; var Value:String):LongWord;
|
Inter Processor Interrupt (IPI) handler
TIPIHandler = TSharedInterruptHandler;
|
Note: When used for IPI the CPUID parameter will be the sending CPU |
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);
|
Boot console start
TBootConsoleStart = procedure;
|
Boot console write
TBootConsoleWrite = procedure(const Value:String);
|
Boot console write ex
TBootConsoleWriteEx = procedure(const Value:String; X,Y:LongWord);
|
Boot console get x
TBootConsoleGetX = function:LongWord;
|
Boot console get y
TBootConsoleGetY = function: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;
|
Mailbox property tag
TMailboxPropertyTag = function(Tag:LongWord; Data:Pointer; Size: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 double
TRandomReadDouble = function:Double;
|
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;
|
Request IPI
TRequestIPI = function(CPUID,Number:LongWord; Handler:TIPIHandler; Parameter:Pointer):LongWord;
|
Release IPI
TReleaseIPI = function(CPUID,Number:LongWord; Handler:TIPIHandler; Parameter:Pointer):LongWord;
|
Register interrupt handler
TRegisterInterrupt = function(Number,Mask,Priority,Flags:LongWord; Handler:TSharedInterruptHandler; Parameter:Pointer):LongWord;
|
Deregister interrupt handler
TDeregisterInterrupt = function(Number,Mask,Priority,Flags:LongWord; Handler:TSharedInterruptHandler; 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,Instance:LongWord; var Interrupt:TInterruptEntry):LongWord;
|
Get local interrupt count
TGetLocalInterruptCount = function:LongWord;
|
Get local interrupt start
TGetLocalInterruptStart = function:LongWord;
|
Get local interrupt entry
TGetLocalInterruptEntry = function(CPUID,Number,Instance:LongWord; var Interrupt:TInterruptEntry):LongWord;
|
Get software interrupt count
TGetSoftwareInterruptCount = function:LongWord;
|
Get software interrupt start
TGetSoftwareInterruptStart = function:LongWord;
|
Get software interrupt entry
TGetSoftwareInterruptEntry = function(CPUID,Number,Instance:LongWord; var Interrupt:TInterruptEntry):LongWord;
|
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 group
TCPUGetGroup = function:LongWord;
|
CPU get current
TCPUGetCurrent = function:LongWord;
|
CPU get memory
TCPUGetMemory = function(var Address:PtrUInt; var Length:UInt64):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:UInt64):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;
|
Chip get revision
TChipGetRevision = function:LongWord;
|
Firmware get revision
TFirmwareGetRevision = function:LongWord;
|
Firmware get throttled
TFirmwareGetThrottled = function:LongWord;
|
Machine get type
TMachineGetType = function:LongWord;
|
Memory get base
TMemoryGetBase = function:PtrUInt;
|
Memory get size
TMemoryGetSize = function:UInt64;
|
Memory get page size
TMemoryGetPageSize = function:LongWord;
|
Memory get large page size
TMemoryGetLargePageSize = function:LongWord;
|
Memory get section size
TMemoryGetSectionSize = function:LongWord;
|
Memory get large section size
TMemoryGetLargeSectionSize = 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 get layer
TFramebufferGetLayer = function(var Layer:LongInt):LongWord;
|
Framebuffer set layer
TFramebufferSetLayer = function(var Layer:LongInt):LongWord;
|
Framebuffer test layer
TFramebufferTestLayer = function(var Layer:LongInt):LongWord;
|
Framebuffer test vsync
TFramebufferTestVsync = function:LongWord;
|
Framebuffer set vsync
TFramebufferSetVsync = function:LongWord;
|
Framebuffer set backlight
TFramebufferSetBacklight = function(Brightness:LongWord):LongWord;
|
Framebuffer get num displays
TFramebufferGetNumDisplays = function(var NumDisplays:LongWord):LongWord;
|
Framebuffer get display id
TFramebufferGetDisplayId = function(DisplayNum:LongWord):LongWord;
|
Framebuffer set display num
TFramebufferSetDisplayNum = function(DisplayNum:LongWord):LongWord;
|
Framebuffer get display settings
TFramebufferGetDisplaySettings = function(DisplayNum:LongWord; var DisplaySettings:TDisplaySettings):LongWord;
|
Framebuffer display id to name
TFramebufferDisplayIdToName = function(DisplayId:LongWord):String;
|
Touch get buffer
TTouchGetBuffer = function(var Address:PtrUInt):LongWord;
|
Touch set buffer
TTouchSetBuffer = function(Address:PtrUInt):LongWord;
|
Cursor set default
TCursorSetDefault = function:LongWord;
|
Cursor set info
TCursorSetInfo = function(Width,Height,HotspotX,HotspotY:LongWord; Pixels:Pointer; Length:LongWord):LongWord;
|
Cursor set state
TCursorSetState = function(Enabled:Boolean; X,Y:LongWord; Relative:Boolean):LongWord;
|
DMA available
TDMAAvailable = function:Boolean;
|
DMA transfer
TDMATransfer = function(Data:PDMAData; Direction,Peripheral:LongWord):LongWord;
|
DMA fill memory
TDMAFillMemory = function(Dest:Pointer; Size:LongWord; Value:Byte):LongWord;
|
DMA copy memory
TDMACopyMemory = function(Source,Dest:Pointer; Size:LongWord):LongWord;
|
DMA read peripheral
TDMAReadPeripheral = function(Address,Dest:Pointer; Size,Peripheral:LongWord):LongWord;
|
DMA write peripheral
TDMAWritePeripheral = function(Source,Address:Pointer; Size,Peripheral:LongWord):LongWord;
|
DMA allocate buffer
TDMAAllocateBuffer = function(Size:LongWord):Pointer;
|
DMA allocate buffer ex
TDMAAllocateBufferEx = function(var Size:LongWord):Pointer;
|
DMA release buffer
TDMAReleaseBuffer = function(Buffer:Pointer):LongWord;
|
DMA get channels
TDMAGetChannels = function:LongWord;
|
GPIO available
TGPIOAvailable = function:Boolean;
|
GPIO read
TGPIORead = function(Reg:LongWord):LongWord;
|
GPIO write
TGPIOWrite = procedure(Reg,Value:LongWord);
|
GPIO input get
TGPIOInputGet = function(Pin:LongWord):LongWord;
|
GPIO input wait
TGPIOInputWait = function(Pin,Trigger,Timeout:LongWord):LongWord;
|
GPIO input event
TGPIOInputEvent = function(Pin,Trigger,Timeout:LongWord; Callback:TGPIOCallback; Data:Pointer):LongWord;
|
GPIO output set
TGPIOOutputSet = function(Pin,Level:LongWord):LongWord;
|
GPIO pull get
TGPIOPullGet = function(Pin:LongWord):LongWord;
|
GPIO pull select
TGPIOPullSelect = function(Pin,Mode:LongWord):LongWord;
|
GPIO function get
TGPIOFunctionGet = function(Pin:LongWord):LongWord;
|
GPIO function select
TGPIOFunctionSelect = function(Pin,Mode:LongWord):LongWord;
|
Virtual GPIO input get
TVirtualGPIOInputGet = function(Pin:LongWord):LongWord;
|
Virtual GPIO output set
TVirtualGPIOOutputSet = function(Pin,Level:LongWord):LongWord;
|
Virtual GPIO function get
TVirtualGPIOFunctionGet = function(Pin:LongWord):LongWord;
|
Virtual GPIO function select
TVirtualGPIOFunctionSelect = function(Pin,Mode:LongWord):LongWord;
|
SPI available
TSPIAvailable = function:Boolean;
|
SPI start
TSPIStart = function(Mode,ClockRate,ClockPhase,ClockPolarity:LongWord):LongWord;
|
SPI stop
TSPIStop = function:LongWord;
|
SPI read
TSPIRead = function(ChipSelect:Word; Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord;
|
SPI write
TSPIWrite = function(ChipSelect:Word; Source:Pointer; Size:LongWord; var Count:LongWord):LongWord;
|
SPI write read
TSPIWriteRead = function(ChipSelect:Word; Source,Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord;
|
SPI get mode
TSPIGetMode = function:LongWord;
|
SPI set mode
TSPISetMode = function(Mode:LongWord):LongWord;
|
SPI get clock rate
TSPIGetClockRate = function(ChipSelect:Word):LongWord;
|
SPI set clock rate
TSPISetClockRate = function(ChipSelect:Word; ClockRate:LongWord):LongWord;
|
SPI get clock phase
TSPIGetClockPhase = function:LongWord;
|
SPI set clock phase
TSPISetClockPhase = function(ClockPhase:LongWord):LongWord;
|
SPI get clock polarity
TSPIGetClockPolarity = function:LongWord;
|
SPI set clock polarity
TSPISetClockPolarity = function(ClockPolarity:LongWord):LongWord;
|
SPI get select polarity
TSPIGetSelectPolarity = function(ChipSelect:Word):LongWord;
|
SPI set select polarity
TSPISetSelectPolarity = function(ChipSelect:Word; SelectPolarity:LongWord):LongWord;
|
SPI get description
TSPIGetDescription = function(Id:LongWord):String;
|
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;
|
I2C get description
TI2CGetDescription = function(Id:LongWord):String;
|
I2C slave get description
TI2CSlaveGetDescription = function(Id:LongWord):String;
|
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;
|
PWM get description
TPWMGetDescription = function(Id,Channel:LongWord):String;
|
RTC available
TRTCAvailable = function:Boolean;
|
RTC get time
TRTCGetTime = function:Int64;
|
RTC set time
TRTCSetTime = function(const Time:Int64):Int64;
|
UART get description
TUARTGetDescription = function(Id:LongWord):String;
|
Serial available
TSerialAvailable = function:Boolean;
|
Serial open
TSerialOpen = function(BaudRate,DataBits,StopBits,Parity,FlowControl,ReceiveDepth,TransmitDepth:LongWord):LongWord;
|
Serial close
TSerialClose = function:LongWord;
|
Serial read
TSerialRead = function(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;
|
Serial write
TSerialWrite = function(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;
|
Peripheral get base
TPeripheralGetBase = function:PtrUInt;
|
Peripheral get size
TPeripheralGetSize = function:LongWord;
|
Peripheral read
TPeripheralRead = function(Base,Reg:LongWord):LongWord;
|
Peripheral write
TPeripheralWrite = procedure(Base,Reg,Value:LongWord);
|
Local Peripheral get base
TLocalPeripheralGetBase = function:PtrUInt;
|
Local peripheral get size
TLocalPeripheralGetSize = function:LongWord;
|
Get SP
TGetSP = function:PtrUInt;
|
Get PC
TGetPC = function:PtrUInt;
|
Get IRQ
TGetIRQ = function:Boolean;
|
Enable IRQ
TEnableIRQ = procedure;
|
Disable IRQ
TDisableIRQ = procedure;
|
Save IRQ
TSaveIRQ = function:TIRQMask;
|
Restore IRQ
TRestoreIRQ = function(IRQMask:TIRQMask):TIRQMask;
|
Get FIQ
TGetFIQ = function:Boolean;
|
Enable FIQ
TEnableFIQ = procedure;
|
Disable FIQ
TDisableFIQ = procedure;
|
Save FIQ
TSaveFIQ = function:TFIQMask;
|
Restore FIQ
TRestoreFIQ = function(FIQMask:TFIQMask):TFIQMask;
|
Enable IRQ/FIQ
TEnableIRQFIQ = procedure;
|
Disable IRQ/FIQ
TDisableIRQFIQ = procedure;
|
Save IRQ/FIQ
TSaveIRQFIQ = function:TIRQFIQMask;
|
Restore IRQ/FIQ
TRestoreIRQFIQ = function(IRQFIQMask:TIRQFIQMask):TIRQFIQMask;
|
Get abort
TGetAbort = function:Boolean;
|
Enable abort
TEnableAbort = procedure;
|
Disable abort
TDisableAbort = procedure;
|
Save abort
TSaveAbort = function:TAbortMask;
|
Restore abort
TRestoreAbort = function(AbortMask:TAbortMask):TAbortMask;
|
Halt
THalt = procedure;
|
Pause
TPause = procedure;
|
Halt thread
THaltThread = function(ExitCode:LongWord):LongWord;
|
Send event
TSendEvent = procedure;
|
Wait for event
TWaitForEvent = procedure;
|
Wait for interrupt
TWaitForInterrupt = procedure;
|
Read memory barrier
TReadMemoryBarrier = procedure;
|
Write memory barrier
TWriteMemoryBarrier = procedure;
|
Data memory barrier
TDataMemoryBarrier = procedure;
|
Data synchronization barrier
TDataSynchronizationBarrier = procedure;
|
Instruction memory barrier
TInstructionMemoryBarrier = procedure;
|
Invalidate TLB
TInvalidateTLB = procedure;
|
Invalidate data TLB
TInvalidateDataTLB = procedure;
|
Invalidate instruction TLB
TInvalidateInstructionTLB = procedure;
|
Invalidate cache
TInvalidateCache = procedure;
|
Clean data cache
TCleanDataCache = procedure;
|
Invalidate data cache
TInvalidateDataCache = procedure;
|
Clean and invalidate data cache
TCleanAndInvalidateDataCache = procedure;
|
Invalidate instruction cache
TInvalidateInstructionCache = procedure;
|
Clean data cache range
TCleanDataCacheRange = procedure(Address:PtrUInt; Size:LongWord);
|
Invaliate data cache range
TInvalidateDataCacheRange = procedure(Address:PtrUInt; Size:LongWord);
|
Clean and invalidate data cache range
TCleanAndInvalidateDataCacheRange = procedure(Address:PtrUInt; Size:LongWord);
|
Invalidate instruction cache range
TInvalidateInstructionCacheRange = procedure(Address:PtrUInt; 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 levels
TPageTableGetLevels = function:LongWord;
|
Page directory get base
TPageDirectoryGetBase = function:PtrUInt;
|
Page directory get size
TPageDirectoryGetSize = function:LongWord;
|
Page table get base
TPageTableGetBase = function:PtrUInt;
|
Page table get size
TPageTableGetSize = function:LongWord;
|
Page table get entry
TPageTableGetEntry = procedure(Address:PtrUInt; var Entry:TPageTableEntry);
|
Page table set entry
TPageTableSetEntry = function(const Entry:TPageTableEntry):LongWord;
|
Page table get page size
TPageTableGetPageSize = function(Address:PtrUInt):LongWord;
|
Page table get page flags
TPageTableGetPageFlags = function(Address:PtrUInt):LongWord;
|
Page table get page physical
TPageTableGetPagePhysical = function(Address:PtrUInt):PtrUInt;
|
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;
|
Text IO write buffer
TTextIOWriteBuffer = function(ABuffer:PChar; ACount:LongInt; AUserData:Pointer):LongInt;
|
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;
|
Module load
TModuleLoad = function(const AName:String):THandle;
|
Module unload
TModuleUnload = function(AHandle:THandle):Boolean;
|
Module get name
TModuleGetName = function(AHandle:THandle):String;
|
Symbol add
TSymbolAdd = function(AHandle:THandle; const AName:String; AAddress:PtrUInt):Boolean;
|
Symbol remove
TSymbolRemove = function(AHandle:THandle; const AName:String):Boolean;
|
Symbol get address
TSymbolGetAddress = function(AHandle:THandle; const AName:String):PtrUInt;
|
Logging output
TLoggingOutput = procedure(const AText:String);
|
Logging output ex
TLoggingOutputEx = procedure(AFacility,ASeverity:LongWord; const ATag,AContent:String);
|
Environment get
TEnvironmentGet = function(const AName:String):String;
|
Environment set
TEnvironmentSet = function(const AName,AValue:String):LongWord;
|
Environment count
TEnvironmentCount = function(AReset:Boolean):LongWord;
|
Environment index
TEnvironmentIndex = function(const AName:String):LongWord;
|
Environment string
TEnvironmentString = function(AIndex:LongWord):String;
|
Text IO data
PTextIOData = ^TTextIOData;
TTextIOData = record
WriteChar:TTextIOWriteChar;
|
|
ReadChar:TTextIOReadChar;
|
|
UserData:Pointer;
|
Platform timer
PPlatformTimer = ^TPlatformTimer;
TPlatformTimer = record
Data:Pointer;
|
|
CreateTimer:function(Interval:LongWord; Enabled,Reschedule:Boolean; Event:TTimerEvent; Data:Pointer):TTimerHandle;
|
Platform worker
PPlatformWorker = ^TPlatformWorker;
TPlatformWorker = record
Data:Pointer;
|
|
ScheduleWorker:function(Interval:LongWord; Task:TWorkerTask; Data:Pointer; Callback:TWorkerCallback):LongWord;
|
Class definitions
Platform specific classes
EHardwareException = class(Exception)
|
EDataAbort = class(EHardwareException);
|
EPrefetchAbort = class(EHardwareException);
|
EUndefinedInstruction = class(EHardwareException);
|
Public variables
Platform logging
PLATFORM_DEFAULT_LOG_LEVEL:LongWord = PLATFORM_LOG_LEVEL_DEBUG;
|
Minimum level for Platform messages. Only messages with level greater than or equal to this will be printed. |
PLATFORM_LOG_ENABLED:Boolean;
|
IRQ logging
IRQ_DEFAULT_LOG_LEVEL:LongWord = IRQ_LOG_LEVEL_INFO;
|
Minimum level for IRQ messages. Only messages with level greater than or equal to this will be printed. |
IRQ_LOG_ENABLED:Boolean;
|
FIQ logging
FIQ_DEFAULT_LOG_LEVEL:LongWord = FIQ_LOG_LEVEL_INFO;
|
Minimum level for FIQ messages. Only messages with level greater than or equal to this will be printed. |
FIQ_LOG_ENABLED:Boolean;
|
SWI logging
SWI_DEFAULT_LOG_LEVEL:LongWord = SWI_LOG_LEVEL_INFO;
|
Minimum level for SWI messages. Only messages with level greater than or equal to this will be printed. |
SWI_LOG_ENABLED:Boolean;
|
Platform specific variables
PlatformInitialized:Boolean;
|
CPUInitialized:Boolean;
|
FPUInitialized:Boolean;
|
GPUInitialized:Boolean;
|
MMUInitialized:Boolean;
|
SMPInitialized:Boolean;
|
CacheInitialized:Boolean;
|
BoardInitialized:Boolean;
|
MemoryInitialized:Boolean;
|
ClockInitialized:Boolean;
|
PowerInitialized:Boolean;
|
MailboxInitialized:Boolean;
|
InterruptsInitialized:Boolean;
|
PeripheralsInitialized:Boolean;
|
ParseBootTagsCompleted:Boolean;
|
ParseCommandLineCompleted:Boolean;
|
ParseEnvironmentCompleted:Boolean;
|
OptionsInitCompleted:Boolean;
|
Lock variables
ClockLock:TPlatformLock;
|
PowerLock:TPlatformLock;
|
MailboxLock:TPlatformLock;
|
ShutdownLock:TPlatformLock;
|
InterruptLock:TPlatformLock;
|
PageTableLock:TPlatformLock;
|
VectorTableLock:TPlatformLock;
|
HandleNameLock:TPlatformLock;
|
HandleTableLock:TPlatformLock;
|
ShutdownTableLock:TPlatformLock;
|
UtilityLock:TPlatformLock;
|
EnvironmentLock:TPlatformLock;
|
Semaphore variables
ShutdownSemaphore:TPlatformSemaphore;
|
Worker variables
ShutdownWorker:TPlatformWorker;
|
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;
|
OptionsInitHandler:TOptionsInit;
|
Device tree handlers
DeviceTreeValidHandler:TDeviceTreeValid;
|
DeviceTreeGetBaseHandler:TDeviceTreeGetBase;
|
DeviceTreeGetSizeHandler:TDeviceTreeGetSize;
|
DeviceTreeReadHandler:TDeviceTreeRead;
|
DeviceTreeRead32Handler:TDeviceTreeRead32;
|
DeviceTreeRead64Handler:TDeviceTreeRead64;
|
DeviceTreeReadStringHandler:TDeviceTreeReadString;
|
Blink/Output handlers
BootBlinkHandler:TBootBlink;
|
BootOutputHandler:TBootOutput;
|
BootConsoleStartHandler:TBootConsoleStart;
|
BootConsoleWriteHandler:TBootConsoleWrite;
|
BootConsoleWriteExHandler:TBootConsoleWriteEx;
|
BootConsoleGetXHandler:TBootConsoleGetX;
|
BootConsoleGetYHandler:TBootConsoleGetY;
|
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;
|
MailboxPropertyTagHandler:TMailboxPropertyTag;
|
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;
|
Inter processor interrupt (IPI) handlers
RequestIPIHandler:TRequestIPI;
|
ReleaseIPIHandler:TReleaseIPI;
|
Interrupt register/deregister handlers
RegisterInterruptHandler:TRegisterInterrupt;
|
DeregisterInterruptHandler:TDeregisterInterrupt;
|
System call (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;
|
Software interrupt entry (IPI) handlers
GetSoftwareInterruptCountHandler:TGetSoftwareInterruptCount;
|
GetSoftwareInterruptStartHandler:TGetSoftwareInterruptStart;
|
GetSoftwareInterruptEntryHandler:TGetSoftwareInterruptEntry;
|
System call entry (SWI) 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;
|
CPUGetGroupHandler:TCPUGetGroup;
|
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;
|
Chip handlers
ChipGetRevisionHandler:TChipGetRevision;
|
Firmware handlers
FirmwareGetRevisionHandler:TFirmwareGetRevision;
|
FirmwareGetThrottledHandler:TFirmwareGetThrottled;
|
Machine handlers
MachineGetTypeHandler:TMachineGetType;
|
Memory handlers
MemoryGetBaseHandler:TMemoryGetBase;
|
MemoryGetSizeHandler:TMemoryGetSize;
|
MemoryGetPageSizeHandler:TMemoryGetPageSize;
|
MemoryGetLargePageSizeHandler:TMemoryGetLargePageSize;
|
MemoryGetSectionSizeHandler:TMemoryGetSectionSize;
|
MemoryGetLargeSectionSizeHandler:TMemoryGetLargeSectionSize;
|
Power handlers
PowerGetWaitHandler:TPowerGetWait;
|
PowerGetStateHandler:TPowerGetState;
|
PowerSetStateHandler:TPowerSetState;
|
Clock handlers
ClockGetCountHandler:TClockGetCount;
|
ClockGetTotalHandler:TClockGetTotal;
|
ClockUpdateOffsetHandler:TClockUpdateOffset;
|
ClockGetRateHandler:TClockGetRate;
|
ClockSetRateHandler:TClockSetRate;
|
ClockGetStateHandler:TClockGetState;
|
ClockSetStateHandler:TClockSetState;
|
ClockGetMinRateHandler:TClockGetMinRate;
|
ClockGetMaxRateHandler:TClockGetMaxRate;
|
Turbo handlers
TurboGetStateHandler:TTurboGetState;
|
TurboSetStateHandler:TTurboSetState;
|
Voltage handlers
VoltageGetValueHandler:TVoltageGetValue;
|
VoltageSetValueHandler:TVoltageSetValue;
|
VoltageGetMinValueHandler:TVoltageGetMinValue;
|
VoltageGetMaxValueHandler:TVoltageGetMaxValue;
|
Temperature handlers
TemperatureGetCurrentHandler:TTemperatureGetCurrent;
|
TemperatureGetMaximumHandler:TTemperatureGetMaximum;
|
GPU memory handlers
GPUMemoryAllocateHandler:TGPUMemoryAllocate;
|
GPUMemoryReleaseHandler:TGPUMemoryRelease;
|
GPUMemoryLockHandler:TGPUMemoryLock;
|
GPUMemoryUnlockHandler:TGPUMemoryUnlock;
|
GPU miscellaneous handlers
GPUExecuteCodeHandler:TGPUExecuteCode;
|
DispmanxHandleGetHandler:TDispmanxHandleGet;
|
EDIDBlockGetHandler:TEDIDBlockGet;
|
Framebuffer handlers
FramebufferAvailableHandler:TFramebufferAvailable;
|
FramebufferAllocateHandler:TFramebufferAllocate;
|
FramebufferReleaseHandler:TFramebufferRelease;
|
FramebufferSetStateHandler:TFramebufferSetState;
|
FramebufferGetDimensionsHandler:TFramebufferGetDimensions;
|
FramebufferGetPhysicalHandler:TFramebufferGetPhysical;
|
FramebufferSetPhysicalHandler:TFramebufferSetPhysical;
|
FramebufferTestPhysicalHandler:TFramebufferTestPhysical;
|
FramebufferGetVirtualHandler:TFramebufferGetVirtual;
|
FramebufferSetVirtualHandler:TFramebufferSetVirtual;
|
FramebufferTestVirtualHandler:TFramebufferTestVirtual;
|
FramebufferGetDepthHandler:TFramebufferGetDepth;
|
FramebufferSetDepthHandler:TFramebufferSetDepth;
|
FramebufferTestDepthHandler:TFramebufferTestDepth;
|
FramebufferGetPixelOrderHandler:TFramebufferGetPixelOrder;
|
FramebufferSetPixelOrderHandler:TFramebufferSetPixelOrder;
|
FramebufferTestPixelOrderHandler:TFramebufferTestPixelOrder;
|
FramebufferGetAlphaModeHandler:TFramebufferGetAlphaMode;
|
FramebufferSetAlphaModeHandler:TFramebufferSetAlphaMode;
|
FramebufferTestAlphaModeHandler:TFramebufferTestAlphaMode;
|
FramebufferGetPitchHandler:TFramebufferGetPitch;
|
FramebufferGetOffsetHandler:TFramebufferGetOffset;
|
FramebufferSetOffsetHandler:TFramebufferSetOffset;
|
FramebufferTestOffsetHandler:TFramebufferTestOffset;
|
FramebufferGetOverscanHandler:TFramebufferGetOverscan;
|
FramebufferSetOverscanHandler:TFramebufferSetOverscan;
|
FramebufferTestOverscanHandler:TFramebufferTestOverscan;
|
FramebufferGetPaletteHandler:TFramebufferGetPalette;
|
FramebufferSetPaletteHandler:TFramebufferSetPalette;
|
FramebufferTestPaletteHandler:TFramebufferTestPalette;
|
FramebufferGetLayerHandler:TFramebufferGetLayer;
|
FramebufferSetLayerHandler:TFramebufferSetLayer;
|
FramebufferTestLayerHandler:TFramebufferTestLayer;
|
FramebufferTestVsyncHandler:TFramebufferTestVsync;
|
FramebufferSetVsyncHandler:TFramebufferSetVsync;
|
FramebufferSetBacklightHandler:TFramebufferSetBacklight;
|
FramebufferGetNumDisplaysHandler:TFramebufferGetNumDisplays;
|
FramebufferGetDisplayIdHandler:TFramebufferGetDisplayId;
|
FramebufferSetDisplayNumHandler:TFramebufferSetDisplayNum;
|
FramebufferGetDisplaySettingsHandler:TFramebufferGetDisplaySettings;
|
FramebufferDisplayIdToNameHandler:TFramebufferDisplayIdToName;
|
Cursor handlers
CursorSetDefaultHandler:TCursorSetDefault;
|
CursorSetInfoHandler:TCursorSetInfo;
|
CursorSetStateHandler:TCursorSetState;
|
Touch handlers
TouchGetBufferHandler:TTouchGetBuffer;
|
TouchSetBufferHandler:TTouchSetBuffer;
|
DMA handlers
DMAAvailableHandler:TDMAAvailable;
|
DMATransferHandler:TDMATransfer;
|
DMAFillMemoryHandler:TDMAFillMemory;
|
DMACopyMemoryHandler:TDMACopyMemory;
|
DMAReadPeripheralHandler:TDMAReadPeripheral;
|
DMAWritePeripheralHandler:TDMAWritePeripheral;
|
DMAAllocateBufferHandler:TDMAAllocateBuffer;
|
DMAAllocateBufferExHandler:TDMAAllocateBufferEx;
|
DMAReleaseBufferHandler:TDMAReleaseBuffer;
|
DMAGetChannelsHandler:TDMAGetChannels;
|
GPIO handlers
GPIOAvailableHandler:TGPIOAvailable;
|
GPIOReadHandler:TGPIORead;
|
GPIOWriteHandler:TGPIOWrite;
|
GPIOInputGetHandler:TGPIOInputGet;
|
GPIOInputWaitHandler:TGPIOInputWait;
|
GPIOInputEventHandler:TGPIOInputEvent;
|
GPIOOutputSetHandler:TGPIOOutputSet;
|
GPIOPullGetHandler:TGPIOPullGet;
|
GPIOPullSelectHandler:TGPIOPullSelect;
|
GPIOFunctionGetHandler:TGPIOFunctionGet;
|
GPIOFunctionSelectHandler:TGPIOFunctionSelect;
|
Virtual GPIO handlers
VirtualGPIOInputGetHandler:TVirtualGPIOInputGet;
|
VirtualGPIOOutputSetHandler:TVirtualGPIOOutputSet;
|
VirtualGPIOFunctionGetHandler:TVirtualGPIOFunctionGet;
|
VirtualGPIOFunctionSelectHandler:TVirtualGPIOFunctionSelect;
|
SPI handlers
SPIAvailableHandler:TSPIAvailable;
|
SPIStartHandler:TSPIStart;
|
SPIStopHandler:TSPIStop;
|
SPIReadHandler:TSPIRead;
|
SPIWriteHandler:TSPIWrite;
|
SPIWriteReadHandler:TSPIWriteRead;
|
SPIGetModeHandler:TSPIGetMode;
|
SPISetModeHandler:TSPISetMode;
|
SPIGetClockRateHandler:TSPIGetClockRate;
|
SPISetClockRateHandler:TSPISetClockRate;
|
SPIGetClockPhaseHandler:TSPIGetClockPhase;
|
SPISetClockPhaseHandler:TSPISetClockPhase;
|
SPIGetClockPolarityHandler:TSPIGetClockPolarity;
|
SPISetClockPolarityHandler:TSPISetClockPolarity;
|
SPIGetSelectPolarityHandler:TSPIGetSelectPolarity;
|
SPISetSelectPolarityHandler:TSPISetSelectPolarity;
|
SPIGetDescriptionHandler:TSPIGetDescription;
|
I2C handlers
I2CAvailableHandler:TI2CAvailable;
|
I2CStartHandler:TI2CStart;
|
I2CStopHandler:TI2CStop;
|
I2CReadHandler:TI2CRead;
|
I2CWriteHandler:TI2CWrite;
|
I2CWriteReadHandler:TI2CWriteRead;
|
I2CWriteWriteHandler:TI2CWriteWrite;
|
I2CGetRateHandler:TI2CGetRate;
|
I2CSetRateHandler:TI2CSetRate;
|
I2CGetAddressHandler:TI2CGetAddress;
|
I2CSetAddressHandler:TI2CSetAddress;
|
I2CGetDescriptionHandler:TI2CGetDescription;
|
I2CSlaveGetDescriptionHandler:TI2CSlaveGetDescription;
|
PWM handlers
PWMAvailableHandler:TPWMAvailable;
|
PWMStartHandler:TPWMStart;
|
PWMStopHandler:TPWMStop;
|
PWMWriteHandler:TPWMWrite;
|
PWMSetModeHandler:TPWMSetMode;
|
PWMSetRangeHandler:TPWMSetRange;
|
PWMSetFrequencyHandler:TPWMSetFrequency;
|
PWMConfigureHandler:TPWMConfigure;
|
PWMGetDescriptionHandler:TPWMGetDescription;
|
RTC handlers
RTCAvailableHandler:TRTCAvailable;
|
RTCGetTimeHandler:TRTCGetTime;
|
RTCSetTimeHandler:TRTCSetTime;
|
UART handlers
UARTGetDescriptionHandler:TUARTGetDescription;
|
Serial handlers
SerialAvailableHandler:TSerialAvailable;
|
SerialOpenHandler:TSerialOpen;
|
SerialCloseHandler:TSerialClose;
|
SerialReadHandler:TSerialRead;
|
SerialWriteHandler:TSerialWrite;
|
Peripheral handlers
PeripheralGetBaseHandler:TPeripheralGetBase;
|
PeripheralGetSizeHandler:TPeripheralGetSize;
|
PeripheralReadHandler:TPeripheralRead;
|
PeripheralWriteHandler:TPeripheralWrite;
|
LocalPeripheralGetBaseHandler:TLocalPeripheralGetBase;
|
LocalPeripheralGetSizeHandler:TLocalPeripheralGetSize;
|
Get SP/PC handlers
GetSPHandler:TGetSP;
|
GetPCHandler:TGetPC;
|
Enable/Disable/Save/Restore IRQ/FIQ handlers
GetIRQHandler:TGetIRQ;
|
EnableIRQHandler:TEnableIRQ;
|
DisableIRQHandler:TDisableIRQ;
|
SaveIRQHandler:TSaveIRQ;
|
RestoreIRQHandler:TRestoreIRQ;
|
GetFIQHandler:TGetFIQ;
|
EnableFIQHandler:TEnableFIQ;
|
DisableFIQHandler:TDisableFIQ;
|
SaveFIQHandler:TSaveFIQ;
|
RestoreFIQHandler:TRestoreFIQ;
|
EnableIRQFIQHandler:TEnableIRQFIQ;
|
DisableIRQFIQHandler:TDisableIRQFIQ;
|
SaveIRQFIQHandler:TSaveIRQFIQ;
|
RestoreIRQFIQHandler:TRestoreIRQFIQ;
|
GetAbortHandler:TGetAbort;
|
EnableAbortHandler:TEnableAbort;
|
DisableAbortHandler:TDisableAbort;
|
SaveAbortHandler:TSaveAbort;
|
RestoreAbortHandler:TRestoreAbort;
|
Halt/Pause handlers
HaltHandler:THalt;
|
PauseHandler:TPause;
|
Halt thread handlers
HaltThreadHandler:THaltThread;
|
SendEvent/WaitForEvent/Interrupt handlers
SendEventHandler:TSendEvent;
|
WaitForEventHandler:TWaitForEvent;
|
WaitForInterruptHandler:TWaitForInterrupt;
|
Barrier handlers
ReadMemoryBarrierHandler:TReadMemoryBarrier;
|
WriteMemoryBarrierHandler:TWriteMemoryBarrier;
|
DataMemoryBarrierHandler:TDataMemoryBarrier;
|
DataSynchronizationBarrierHandler:TDataSynchronizationBarrier;
|
InstructionMemoryBarrierHandler:TInstructionMemoryBarrier;
|
TLB handlers
InvalidateTLBHandler:TInvalidateTLB;
|
InvalidateDataTLBHandler:TInvalidateDataTLB;
|
InvalidateInstructionTLBHandler:TInvalidateInstructionTLB;
|
Cache handlers
InvalidateCacheHandler:TInvalidateCache;
|
CleanDataCacheHandler:TCleanDataCache;
|
InvalidateDataCacheHandler:TInvalidateDataCache;
|
CleanAndInvalidateDataCacheHandler:TCleanAndInvalidateDataCache;
|
InvalidateInstructionCacheHandler:TInvalidateInstructionCache;
|
CleanDataCacheRangeHandler:TCleanDataCacheRange;
|
InvalidateDataCacheRangeHandler:TInvalidateDataCacheRange;
|
CleanAndInvalidateDataCacheRangeHandler:TCleanAndInvalidateDataCacheRange;
|
InvalidateInstructionCacheRangeHandler:TInvalidateInstructionCacheRange;
|
Prefetch buffer handlers
FlushPrefetchBufferHandler:TFlushPrefetchBuffer;
|
Branch target cache handlers
FlushBranchTargetCacheHandler:TFlushBranchTargetCache;
|
Context switch handlers
ContextSwitchHandler:TContextSwitch;
|
ContextSwitchIRQHandler:TContextSwitchIRQ;
|
ContextSwitchFIQHandler:TContextSwitchFIQ;
|
ContextSwitchSWIHandler:TContextSwitchSWI;
|
And/Xor/Or/Increment/Decrement/Exchange handlers
InterlockedOrHandler:TInterlockedOr;
|
InterlockedXorHandler:TInterlockedXor;
|
InterlockedAndHandler:TInterlockedAnd;
|
InterlockedDecrementHandler:TInterlockedDecrement;
|
InterlockedIncrementHandler:TInterlockedIncrement;
|
InterlockedExchangeHandler:TInterlockedExchange;
|
InterlockedAddExchangeHandler:TInterlockedAddExchange;
|
InterlockedCompareExchangeHandler:TInterlockedCompareExchange;
|
Page table handlers
PageTableGetLevelsHandler:TPageTableGetLevels;
|
PageDirectoryGetBaseHandler:TPageDirectoryGetBase;
|
PageDirectoryGetSizeHandler:TPageDirectoryGetSize;
|
PageTableGetBaseHandler:TPageTableGetBase;
|
PageTableGetSizeHandler:TPageTableGetSize;
|
PageTableGetEntryHandler:TPageTableGetEntry;
|
PageTableSetEntryHandler:TPageTableSetEntry;
|
PageTableGetPageSizeHandler:TPageTableGetPageSize;
|
PageTableGetPageFlagsHandler:TPageTableGetPageFlags;
|
PageTableGetPagePhysicalHandler:TPageTableGetPagePhysical;
|
Page tables handlers
PageTablesGetAddressHandler:TPageTablesGetAddress;
|
PageTablesGetLengthHandler:TPageTablesGetLength;
|
PageTablesGetCountHandler:TPageTablesGetCount;
|
PageTablesGetShiftHandler:TPageTablesGetShift;
|
PageTablesGetNextHandler:TPageTablesGetNext;
|
PageTablesGetUsedHandler:TPageTablesGetUsed;
|
PageTablesGetFreeHandler:TPageTablesGetFree;
|
Vector table handlers
VectorTableGetBaseHandler:TVectorTableGetBase;
|
VectorTableGetSizeHandler:TVectorTableGetSize;
|
VectorTableGetCountHandler:TVectorTableGetCount;
|
VectorTableGetEntryHandler:TVectorTableGetEntry;
|
VectorTableSetEntryHandler:TVectorTableSetEntry;
|
First bit set handlers
FirstBitSetHandler:TFirstBitSet;
|
Count leading zeros handlers
CountLeadingZerosHandler:TCountLeadingZeros;
|
Text IO handlers
TextIOWriteCharHandler:TTextIOWriteChar;
|
TextIOReadCharHandler:TTextIOReadChar;
|
TextIOWriteBufferHandler:TTextIOWriteBuffer;
|
Console handlers
ConsoleGetKeyHandler:TConsoleGetKey;
|
ConsolePeekKeyHandler:TConsolePeekKey;
|
ConsoleWriteCharHandler:TConsoleWriteChar;
|
ConsoleReadCharHandler:TConsoleReadChar;
|
ConsoleReadWideCharHandler:TConsoleReadWideChar;
|
ConsoleHideMouseHandler:TConsoleHideMouse;
|
ConsoleShowMouseHandler:TConsoleShowMouse;
|
ConsoleReadMouseHandler:TConsoleReadMouse;
|
Code page handlers
CodePageToWideCharHandler:TCodePageToWideChar;
|
WideCharToCodePageHandler:TWideCharToCodePage;
|
Name handlers
HostGetNameHandler:THostGetName;
|
HostSetNameHandler:THostSetName;
|
HostGetDomainHandler:THostGetDomain;
|
HostSetDomainHandler:THostSetDomain;
|
Module handlers
ModuleLoadHandler:TModuleLoad;
|
ModuleUnloadHandler:TModuleUnload;
|
ModuleGetNameHandler:TModuleGetName;
|
Symbol handlers
SymbolAddHandler:TSymbolAdd;
|
SymbolRemoveHandler:TSymbolRemove;
|
SymbolGetAddressHandler:TSymbolGetAddress;
|
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 |
---|
procedure OptionsInit;
Note | None documented |
---|
Device tree functions
function DeviceTreeValid:Boolean; inline;
Note | None documented |
---|
function DeviceTreeGetBase:PtrUInt; inline;
Note | None documented |
---|
function DeviceTreeGetSize:LongWord; inline;
Note | None documented |
---|
function DeviceTreeRead(const Path,Name:String; Buffer:Pointer; var Size:LongWord):LongWord; inline;
Path | The path of the requested property |
---|---|
Name | The name of the requested property |
Buffer | A pointer to a buffer to receive the raw value |
Size | The size in byte of the buffer, updated on return with the actual size of the value. |
Return | ERROR_SUCCESS if the property value was read or another error code on failure |
function DeviceTreeRead32(const Path,Name:String; var Value:LongWord):LongWord; inline;
Path | The path of the requested property |
---|---|
Name | The name of the requested property |
Value | The returned value of the property |
Return | ERROR_SUCCESS if the property value was read or another error code on failure |
function DeviceTreeRead64(const Path,Name:String; var Value:UInt64):LongWord; inline;
Path | The path of the requested property |
---|---|
Name | The name of the requested property |
Value | The returned value of the property |
Return | ERROR_SUCCESS if the property value was read or another error code on failure |
function DeviceTreeReadString(const Path,Name:String; var Value:String):LongWord; inline;
Path | The path of the requested property |
---|---|
Name | The name of the requested property |
Value | The returned value of the property |
Return | ERROR_SUCCESS if the property value was read or another error code on failure |
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 |
---|
procedure BootConsoleStart; inline;
Note | Intended for startup diagnostics when bootstrapping a new board |
---|
procedure BootConsoleWrite(const Value:String); inline;
Note | Intended for startup diagnostics when bootstrapping a new board |
---|
procedure BootConsoleWriteEx(const Value:String; X,Y:LongWord); inline;
Note | Intended for startup diagnostics when bootstrapping a new board |
---|
function BootConsoleGetX:LongWord; inline;
Note | Intended for startup diagnostics when bootstrapping a new board |
---|
function BootConsoleGetY: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 |
---|
function MailboxPropertyTag(Tag:LongWord; Data:Pointer; Size: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 RandomReadDouble:Double; inline;
Note | None documented |
---|
function RandomReadExtended:Extended; inline;
Note | Replaced by RandomReadDouble |
---|
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;
CPUID | CPU to route IRQ to |
---|---|
Number | IRQ number to register |
Handler | Interrupt handler function to register |
Parameter | A pointer to be passed to the handler when the interrupt occurs (Optional) |
Note | If the IRQ number is already registered then the request will fail |
function ReleaseIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
CPUID | CPU to unroute IRQ from |
---|---|
Number | IRQ number to deregister |
Handler | Interrupt handler function to deregister |
Parameter | A pointer to be passed to the handler when the interrupt occurs (Optional) |
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;
CPUID | CPU to route IRQ to |
---|---|
Number | IRQ number to register |
Handler | Interrupt handler function to register |
HandlerEx | Extended Interrupt handler function to register |
Parameter | A pointer to be passed to the handler when the interrupt occurs (Optional) |
Note | Only one of Handler or HandlerEx can be specified. 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;
CPUID | CPU to unroute IRQ from |
---|---|
Number | IRQ number to deregister |
Handler | Interrupt handler function to deregister |
HandlerEx | Extended Interrupt handler function to deregister |
Parameter | A pointer to be passed to the handler when the interrupt occurs (Optional) |
Note | Only one of Handler or HandlerEx can be specified. If the IRQ number is not currently registered then the request will fail |
function RequestFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
CPUID | CPU to route FIQ to |
---|---|
Number | FIQ number to register |
Handler | Interrupt handler function to register |
Parameter | A pointer to be passed to the handler when the interrupt occurs (Optional) |
Note | If the FIQ number is already registered then the request will fail |
function ReleaseFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
CPUID | CPU to unroute FIQ from |
---|---|
Number | FIQ number to deregister |
Handler | Interrupt handler function to deregister |
Parameter | A pointer to be passed to the handler when the interrupt occurs (Optional) |
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;
CPUID | CPU to route FIQ to |
---|---|
Number | FIQ number to register |
Handler | Interrupt handler function to register |
HandlerEx | Extended Interrupt handler function to register |
Parameter | A pointer to be passed to the handler when the interrupt occurs (Optional) |
Note | Only one of Handler or HandlerEx can be specified. 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;
CPUID | CPU to unroute FIQ from |
---|---|
Number | FIQ number to deregister |
Handler | Interrupt handler function to deregister |
HandlerEx | Extended Interrupt handler function to deregister |
Parameter | A pointer to be passed to the handler when the interrupt occurs (Optional) |
Note | Only one of Handler or HandlerEx can be specified. If the FIQ number is not currently registered then the request will fail |
Inter processor interrupt (IPI) functions
function RequestIPI(CPUID,Number:LongWord; Handler:TIPIHandler; Parameter:Pointer):LongWord; inline;
CPUID | CPU to route IPI to |
---|---|
Number | IPI number to register |
Handler | Interrupt handler function to register |
Parameter | A pointer to be passed to the handler when the interrupt occurs (Optional) |
Note | If the IPI number is already registered then the request will fail |
function ReleaseIPI(CPUID,Number:LongWord; Handler:TIPIHandler; Parameter:Pointer):LongWord; inline;
CPUID | CPU to unroute IPI from |
---|---|
Number | IPI number to deregister |
Handler | Interrupt handler function to deregister |
Parameter | A pointer to be passed to the handler when the interrupt occurs (Optional) |
Note | If the IPI number is not currently registered then the request will fail |
Interrupt register/deregister functions
function RegisterInterrupt(Number,Mask,Priority,Flags:LongWord; Handler:TSharedInterruptHandler; Parameter:Pointer):LongWord; inline;
Number | The interrupt number to register the handler for |
---|---|
Mask | The mask of CPUs to register the handler for (eg CPU_MASK_0, CPU_MASK_1) (Where Applicable) |
Priority | The priority level of the interrupt to be registered (eg INTERRUPT_PRIORITY_MAXIMUM) (Where Applicable) |
Flags | The flags to control the registration of the interrupt (eg INTERRUPT_FLAG_SHARED) (Where Applicable) |
Handler | The shared interrupt handler to be called when the interrupt occurs |
Parameter | A pointer to be passed to the handler when the interrupt occurs (Optional) |
Return | ERROR_SUCCESS if the callback was scheduled successfully or another error code on failure |
Note | None documented |
function DeregisterInterrupt(Number,Mask,Priority,Flags:LongWord; Handler:TSharedInterruptHandler; Parameter:Pointer):LongWord; inline;
Number | The interrupt number to deregister the handler for |
---|---|
Mask | The mask of CPUs to deregister the handler for (eg CPU_MASK_0, CPU_MASK_1) (Where Applicable) |
Priority | The priority level of the interrupt to be deregistered (eg INTERRUPT_PRIORITY_MAXIMUM) (Where Applicable) |
Flags | The flags to control the deregistration of the interrupt (eg INTERRUPT_FLAG_SHARED, INTERRUPT_FLAG_LOCAL, INTERRUPT_FLAG_FIQ) (Where Applicable) |
Handler | The shared interrupt handler to be called when the interrupt occurs |
Parameter | A pointer to be passed to the handler when the interrupt occurs (Optional) |
Return | ERROR_SUCCESS if the callback was scheduled successfully or another error code on failure |
Note | None documented |
System call (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; overload;
Note | None documented |
---|
function GetInterruptEntry(Number,Instance:LongWord;var Interrupt:TInterruptEntry):LongWord; inline; overload;
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;
Note | None documented |
---|
function GetLocalInterruptEntry(CPUID,Number,Instance:LongWord; var Interrupt:TInterruptEntry):LongWord; inline;
Note | None documented |
---|
Software interrupt entry (IPI) functions
function GetSoftwareInterruptCount:LongWord; inline;
Note | None documented |
---|
function GetSoftwareInterruptStart:LongWord; inline;
Note | None documented |
---|
function GetSoftwareInterruptEntry(CPUID,Number:LongWord):TInterruptEntry; overload;
Note | None documented |
---|
function GetSoftwareInterruptEntry(CPUID,Number,Instance:LongWord; var Interrupt:TInterruptEntry):LongWord; inline; overload;
Note | None documented |
---|
System call entry (SWI) functions
function GetSystemCallCount:LongWord; inline;
Note | None documented |
---|
function GetSystemCallEntry(Number:LongWord):TSystemCallEntry; inline;
Note | None documented |
---|
System functions
function SystemRestart(Delay:LongWord):LongWord;
Delay | How long to delay before commencing the restart (Milliseconds) |
---|---|
Return | ERROR_SUCCESS if the restart was successfully initiated or another error code on failure |
function SystemShutdown(Delay:LongWord):LongWord;
Delay | How long to delay before commencing the shutdown (Milliseconds) |
---|---|
Return | ERROR_SUCCESS if the shutdown was successfully initiated or another error code on failure |
function SystemRegisterShutdown(Callback:TShutdownCallback; Parameter:Pointer; Timeout:LongWord):LongWord;
Callback | The procedure to be called on shutdown or restart |
---|---|
Parameter | A pointer to be passed to the callback procedure |
Timeout | Time the shutdown process should wait for this callback to complete (0 for the default timeout) (Milliseconds) |
Return | ERROR_SUCCESS if the callback was successfully registered or another error code on failure |
function SystemDeregisterShutdown(Callback:TShutdownCallback; Parameter:Pointer):LongWord;
Callback | The procedure previously registered for shutdown or restart |
---|---|
Parameter | The pointer previously registered for the callback procedure |
Return | ERROR_SUCCESS if the callback was successfully deregistered or another error code on failure |
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 |
---|
function SystemDateToString(Date:TDateTime):String; inline;
Date | The date in Pascal TDateTime format |
---|---|
Return | The date formatted according to the system date format |
Note | Applications should use FormatDateTime or DateTimeToString directly. This function is intended to provide a uniform and generic date and time output from system functions such as logging and debug output. |
function SystemTimeToString(Time:TDateTime):String; inline;
Time | The time in Pascal TDateTime format |
---|---|
Return | The time formatted according to the system time format |
Note | Applications should use FormatDateTime or DateTimeToString directly. This function is intended to provide a uniform and generic date and time output from system functions such as logging and debug output. |
function SystemDateTimeToString(DateTime:TDateTime):String; inline;
DateTime | The date and time in Pascal TDateTime format |
---|---|
Return | The date and time formatted according to the system date and time format |
Note | Applications should use FormatDateTime or DateTimeToString directly. This function is intended to provide a uniform and generic date and time output from system functions such as logging and debug output. |
function SystemIntervalToString(Interval:TDateTime):String; inline;
Interval | The time interval in Pascal TDateTime format |
---|---|
Return | The time interval formatted according to the system time format |
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 CPUGetGroup:LongWord; inline;
Note | None documented |
---|
function CPUGetCurrent:LongWord; inline;
Note | None documented |
---|
function CPUGetMemory(var Address:PtrUInt; var Length:UInt64):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:UInt64):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 |
---|
Version functions
procedure VersionGetInfo(var Major,Minor,Revision:LongWord);
Note | None documented |
---|
function VersionGetDate:String;
Note | None documented |
---|
function VersionGetName:String;
Note | None documented |
---|
function VersionGetVersion:String;
Note | None documented |
---|
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 |
---|
Chip functions
function ChipGetRevision:LongWord; inline;
Note | None documented |
---|
Firmware functions
function FirmwareGetRevision:LongWord; inline;
Note | None documented |
---|
function FirmwareGetThrottled:LongWord; inline;
Return | A bit mask of FIRMWARE_THROTTLE_* values for the throttling state |
---|
Machine functions
function MachineGetType:LongWord; inline;
Note | None documented |
---|
Memory functions
function MemoryGetBase:PtrUInt; inline;
Note | None documented |
---|
function MemoryGetSize:UInt64; inline;
Note | None documented |
---|
function MemoryGetPageSize:LongWord; inline;
Note | None documented |
---|
function MemoryGetLargePageSize:LongWord; inline;
Note | None documented |
---|
function MemoryGetSectionSize:LongWord; inline;
Note | None documented |
---|
function MemoryGetLargeSectionSize: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 ClockTicks:LongWord;
Return | The current number of clock ticks |
---|---|
Note | When this reaches CLOCK_TICKS_PER_SECOND then ClockSeconds is incremented and this is reset to zero |
function ClockSeconds:LongWord;
Return | The current number of clock seconds |
---|---|
Note | This forms the system clock |
function ClockMilliseconds:Int64;
Return | The current number of clock milliseconds |
---|
function ClockMicroseconds:Int64;
Return | The current number of clock microseconds |
---|
function ClockNanoseconds:Int64;
Return | The current number of clock nanoseconds |
---|
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 miscellaneous 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 FramebufferGetLayer(var Layer:LongInt):LongWord; inline;
Note | None documented |
---|
function FramebufferSetLayer(var Layer:LongInt):LongWord; inline;
Note | None documented |
---|
function FramebufferTestLayer(var Layer:LongInt):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 |
---|
function FramebufferGetNumDisplays(var NumDisplays:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferGetDisplayId(DisplayNum:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferSetDisplayNum(DisplayNum:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferGetDisplaySettings(DisplayNum:LongWord; var DisplaySettings:TDisplaySettings):LongWord; inline;
Note | None documented |
---|
function FramebufferDisplayIdToName(DisplayId:LongWord):String; inline;
Note | None documented |
---|
Touch functions
function TouchGetBuffer(var Address:PtrUInt):LongWord; inline;
Note | None documented |
---|
function TouchSetBuffer(Address:PtrUInt):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 peripheral 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 |
---|
Handle functions
function HandleCreate(Data:THandle; AType:LongWord):THandle; inline;
Data | Purpose specific data to be referenced by the new handle (Optional) |
---|---|
AType | The type of the new handle (eg HANDLE_TYPE_FILE) |
Return | The newly created handle or INVALID_HANDLE_VALUE on failure |
function HandleCreateEx(const Name:String; Flags:LongWord; Data:THandle; AType:LongWord):PHandleEntry;
Name | The name of the new handle (Optional) |
---|---|
Flags | The flags for the new handle (eg HANDLE_FLAG_DUPLICATE) |
Data | Purpose specific data to be referenced by the new handle (Optional) |
AType | The type of the new handle (eg HANDLE_TYPE_FILE) |
Return | The newly created handle entry or nil on failure |
function HandleDestroy(Handle:THandle):LongWord;
Handle | The handle to be closed and destroyed |
---|---|
Return | ERROR_SUCCESS if completed successfully or another error code on failure |
Note | For handles which have been opened multiple times, the handle is not destroyed until the last reference is closed. If there are still open references to the handle the return value will be ERROR_IN_USE instead of ERROR_SUCCESS |
function HandleGet(Handle:THandle):PHandleEntry;
Handle | The handle to get the entry for |
---|---|
Return | The handle entry on success or nil on failure |
function HandleFind(const Name:String):PHandleEntry;
Name | The name of the handle to find |
---|---|
Return | The handle entry on success or nil on failure |
function HandleEnumerate(Callback:THandleEnumerate; Data:Pointer):LongWord;
Callback | The callback function to call for each handle in the table |
---|---|
Data | A private data pointer to pass to callback for each device in the table |
Return | ERROR_SUCCESS if completed or another error code on failure |
function HandleOpen(const Name:String):THandle;
Name | The name of the handle to open |
---|---|
Return | The handle matching the name or INVALID_HANDLE_VALUE on failure |
function HandleClose(Handle:THandle):LongWord; inline;
Handle | The handle to be closed |
---|---|
Return | ERROR_SUCCESS if completed successfully or another error code on failure |
Note | For handles which have been opened multiple times, the handle is destroyed when the last reference is closed |
function HandleDuplicate(Handle:THandle):THandle;
Handle | The handle to be duplicated |
---|---|
Return | The newly duplicated handle or INVALID_HANDLE_VALUE on failure |
Note | Handles must be marked as HANDLE_FLAG_DUPLICATE to support duplication |
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 GPIOLevelGet(Pin:LongWord):LongWord; inline;
Pin | The pin to get the level for (eg GPIO_PIN_1) |
---|---|
Return | The current level (eg GPIO_LEVEL_HIGH) or GPIO_LEVEL_UNKNOWN on failure |
Note | This function is a synonym for GPIOInputGet as in many cases the level can be read from a pin regardless of input or output mode. This may help to make code clearer or easier to understand in some cases. |
function GPIOLevelSet(Pin,Level:LongWord):LongWord; inline;
Pin | The pin to set the level for (eg GPIO_PIN_1) |
---|---|
Level | The level to set the pin to (eg GPIO_LEVEL_HIGH) |
Return | ERROR_SUCCESS if completed successfully or another error code on failure |
Note | This function is a synonym for GPIOOutputSet as in many cases the level can be set for a pin regardless of input or output mode. This may help to make code clearer or easier to understand in some cases. |
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;
Pin | The pin to set the state for (eg GPIO_PIN_1) |
---|---|
Level | The state to set the pin to (eg GPIO_LEVEL_HIGH) |
Return | ERROR_SUCCESS if completed successfully or another error code on failure |
function VirtualGPIOLevelGet(Pin:LongWord):LongWord; inline;
Pin | The pin to get the level for (eg GPIO_PIN_1) |
---|---|
Return | The current level (eg GPIO_LEVEL_HIGH) or GPIO_LEVEL_UNKNOWN on failure |
Note | This function is a synonym for VirtualGPIOInputGet as in many cases the level can be read from a pin regardless of input or output mode. This may help to make code clearer or easier to understand in some cases. |
function VirtualGPIOLevelSet(Pin,Level:LongWord):LongWord; inline;
Pin | The pin to set the level for (eg GPIO_PIN_1) |
---|---|
Level | The level to set the pin to (eg GPIO_LEVEL_HIGH) |
Return | ERROR_SUCCESS if completed successfully or another error code on failure |
Note | This function is a synonym for VirtualGPIOOutputSet as in many cases the level can be set for a pin regardless of input or output mode. This may help to make code clearer or easier to understand in some cases. |
function VirtualGPIOFunctionGet(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 VirtualGPIOFunctionSelect(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 |
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 |
function SPIGetDescription(Id:LongWord):String; inline;
Id | The Id number of the SPI device as shown in the official documentation |
---|---|
Return | The correct device description suitable for passing to SPIDeviceFindByDescription |
Note | The Id number supplied to this function may differ from the Ultibo device id value |
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 |
function I2CGetDescription(Id:LongWord):String; inline;
Id | The Id number of the I2C device as shown in the official documentation |
---|---|
Return | The correct device description suitable for passing to I2CDeviceFindByDescription |
Note | The Id number supplied to this function may differ from the Ultibo device id value |
function I2CSlaveGetDescription(Id:LongWord):String; inline;
Id | The Id number of the I2C slave device as shown in the official documentation |
---|---|
Return | The correct device description suitable for passing to I2CSlaveFindByDescription |
Note | The Id number supplied to this function may differ from the Ultibo device id value |
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 |
function PWMGetDescription(Id,Channel:LongWord):String; inline;
Id | The Id number of the PWM device as shown in the official documentation |
---|---|
Channel | The channel number of the PWM device as shown in the official documentation |
Return | The correct device description suitable for passing to PWMDeviceFindByDescription |
Note | The Id number supplied to this function may differ from the Ultibo device id value |
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. |
UART functions
function UARTGetDescription(Id:LongWord):String; inline;
Id | The Id number of the UART device as shown in the official documentation |
---|---|
Return | The correct device description suitable for passing to UARTDeviceFindByDescription |
Note | The Id number supplied to this function may differ from the Ultibo device id value |
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:PtrUInt; Size:LongWord); inline;
Note | None documented |
---|
procedure InvalidateDataCacheRange(Address:PtrUInt; Size:LongWord); inline;
Note | None documented |
---|
procedure CleanAndInvalidateDataCacheRange(Address:PtrUInt; Size:LongWord); inline;
Note | None documented |
---|
procedure InvalidateInstructionCacheRange(Address:PtrUInt; 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 PageTableGetLevels:LongWord; inline;
Note | None documented |
---|
function PageDirectoryGetBase:PtrUInt; inline;
Note | None documented |
---|
function PageDirectoryGetSize:LongWord; inline;
Note | None documented |
---|
function PageTableGetBase:PtrUInt; inline;
Note | None documented |
---|
function PageTableGetSize:LongWord; inline;
Note | None documented |
---|
function PageTableGetEntry(Address:PtrUInt):TPageTableEntry; overload;
Note | None documented |
---|
procedure PageTableGetEntry(Address:PtrUInt; var Entry:TPageTableEntry); inline; overload;
Note | None documented |
---|
function PageTableSetEntry(const Entry:TPageTableEntry):LongWord; inline;
Note | None documented |
---|
function PageTableGetPageSize(Address:PtrUInt):LongWord; inline;
Note | None documented |
---|
function PageTableGetPageFlags(Address:PtrUInt):LongWord; inline;
Note | None documented |
---|
function PageTableGetPageRange(Address:PtrUInt):LongWord; inline;
Note | None documented |
---|
function PageTableGetPagePhysical(Address:PtrUInt):PtrUInt; 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);
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 | Not intended to be called directly by applications, use Read or ReadLn instead |
---|
procedure TextIOWrite(var T:TextRec);
Note | Not intended to be called directly by applications, use Write or WriteLn instead |
---|
function TextIOReadData(ARead:TTextIOReadChar; AUserData:Pointer; ABuffer:PChar; ACount:LongInt):LongInt;
Note | Not intended to be called directly by applications, use Read or ReadLn instead |
---|
function TextIOWriteChar(ACh:Char; AUserData:Pointer):Boolean; inline;
Note | Not intended to be called directly by applications, use Write or WriteLn instead |
---|
function TextIOReadChar(var ACh:Char; AUserData:Pointer):Boolean; inline;
Note | Not intended to be called directly by applications, use Read or ReadLn instead |
---|
function TextIOWriteBuffer(ABuffer:PChar; ACount:LongInt; AUserData:Pointer):LongInt;
Note | Not intended to be called directly by applications, use Write or WriteLn instead |
---|
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 |
---|
Module functions
function ModuleLoad(const AName:String):THandle; inline;
Note | None documented |
---|
function ModuleUnload(AHandle:THandle):Boolean; inline;
Note | None documented |
---|
function ModuleGetName(AHandle:THandle):String; inline;
Note | None documented |
---|
Symbol functions
function SymbolAdd(AHandle:THandle; const AName:String; AAddress:PtrUInt):Boolean; inline;
Note | None documented |
---|
function SymbolRemove(AHandle:THandle; const AName:String):Boolean; inline;
Note | None documented |
---|
function SymbolGetAddress(AHandle:THandle; const AName:String):PtrUInt; 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 |
---|
Environment functions
function EnvironmentGet(const AName:String):String; inline;
Name | The name of the variable to locate (eg TZ) |
---|---|
Return | The value of the variable or an empty string if not found |
function EnvironmentSet(const AName,AValue:String):LongWord; inline;
Name | The name of the variable to add or update (eg TZ) |
---|---|
Value | The new value of the variable (eg EST+5) |
Return | ERROR_SUCCESS if the value was set or another error code on failure |
Note | Passing an empty value will delete the environment variable if it exists |
function EnvironmentCount(AReset:Boolean):LongWord; inline;
Reset | If True then force a recount |
---|---|
Return | The number of environment variables |
function EnvironmentIndex(const AName:String):LongWord; inline;
Name | The name of the variable to locate (eg TZ) |
---|---|
Return | The index of the environment variable or 0 if not found |
function EnvironmentString(AIndex:LongWord):String; inline;
Index | The index of the variable to get (1 to EnvironmentCount) |
---|---|
Return | The environment variable or an empty string if index is not valid |
function EnvironmentSetDefault(const AName,AValue:String):LongWord;
Note | Not intended to be called directly by applications, use EnvironmentSet instead |
---|
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):PtrUInt; inline;
Note | None documented |
---|
function IOAddressToPhysical(Address:Pointer):PtrUInt; inline;
Note | None documented |
---|
function PhysicalToBusAddress(Address:Pointer):PtrUInt; inline;
Note | None documented |
---|
function BusAddressToPhysical(Address:Pointer):PtrUInt; 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 WaitForEvent 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 WaitForEvent 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 WaitForEvent 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 SysUtilsGetUniversalTime(var SystemTime:TSystemTime):Boolean;
Note | None documented |
---|
function SysUtilsGetLocalTimeOffset:Integer;
Note | None documented |
---|
function SysUtilsGetLocalTimeOffsetEx(const DateTime:TDateTime; const InputIsUTC:Boolean; out Offset:Integer):Boolean;
Note | None documented |
---|
Platform helper functions
function HandleTypeToString(HandleType:LongWord):String;
Note | None documented |
---|
procedure PlatformLog(Level:LongWord; const AText:String);
Note | None documented |
---|
procedure PlatformLogInfo(const AText:String); inline;
Note | None documented |
---|
procedure PlatformLogWarn(const AText:String); inline;
Note | None documented |
---|
procedure PlatformLogError(const AText:String); inline;
Note | None documented |
---|
procedure PlatformLogDebug(const AText:String); inline;
Note | None documented |
---|
Return to Unit Reference