Unit GlobalConfig

From Ultibo.org
Revision as of 04:40, 23 May 2019 by Ultibo (Talk | contribs)

Jump to: navigation, search

Return to Unit Reference


Description


Ultibo Global Configuration Defaults unit

The GlobalConfig unit contains variables used throughout Ultibo core to provide configuration and parameters to common modules and sub systems. Many of these variables may also be passed on the command line as environment variables to customize the behavior of Ultibo core without needing to recompile the application. This unit also includes a small number of widely used common functions.

Constants


None defined

Type definitions


None defined

Public variables



Compiler and RTL configuration

Kernel image sections

Note: To access these from Pascal code use the address of the variable (eg @_bss_start). Empty record definition prevents access to contents.

_text_start: record end; external name '_text_start';
_etext: record end; external name '_etext';
_data: record end; external name '_data';
_edata: record end; external name '_edata';
_bss_start: record end; external name '_bss_start';
_bss_end: record end; external name '_bss_end';

Library initialization and finalization sections

Note: To access these from Pascal code use the address of the variable (eg @__ctors_start). Empty record definition prevents access to contents.

__preinit_array_start: record end; external name '__preinit_array_start';
__preinit_array_end: record end; external name '__preinit_array_end';
__init_array_start: record end; external name '__init_array_start';
__init_array_end: record end; external name '__init_array_end';
__fini_array_start: record end; external name '__fini_array_start';
__fini_array_end: record end; external name '__fini_array_end';
__ctors_start: record end; external name '__ctors_start';
__ctors_end: record end; external name '__ctors_end';
__dtors_start: record end; external name '__dtors_start';
__dtors_end: record end; external name '__dtors_end';

RTL initial heap allocation

RtlHeapAddr:record end; external name '__fpc_initialheap';
RtlHeapSize:PtrInt; external name '__heapsize';

RTL error handling

RtlErrorBase:Pointer; external name 'FPC_ERRORBASE';

RTL initialization

RtlInitFinalTable:record end; external name 'INITFINAL';

Memory and peripheral mapping configuration

Physical to IO address mapping

IO_BASE:PtrUInt; The base for conversion from a Physical Address to an IO Address and back (Where Applicable)
IO_ALIAS:PtrUInt; The alias for conversion from a Physical Address to an IO Address and back (Where Applicable)

Physical to bus address mapping

BUS_ALIAS:PtrUInt; The mask for conversion from a Physical Address to a Bus Address and back (Where Applicable)

Secure boot

SECURE_BOOT:LongBool; True if the boot process occurs in secure mode (Where Applicable)

Startup handler address

STARTUP_ADDRESS:LongWord; The physical address of the Startup Handler on Reset

Memory base mapping

MEMORY_BASE:PtrUInt; The base (Physical) address for useable board memory
MEMORY_SIZE:LongWord; The size of the useable board address space
MEMORY_PAGE_SIZE:LongWord; The size of a memory page
MEMORY_LARGEPAGE_SIZE:LongWord; The size of a large memory page

Memory sizes

MEMORY_IRQ_SIZE:LongWord; The size of the registered IRQ memory (Per CPU) (Must be a multiple of HEAP_REQUEST_ALIGNMENT size)
MEMORY_FIQ_SIZE:LongWord; The size of the registered FIQ memory (Per CPU) (Must be a multiple of HEAP_REQUEST_ALIGNMENT size)
MEMORY_LOCAL_SIZE:LongWord; The size of the registered local memory (Per CPU) (Must be a multiple of HEAP_REQUEST_ALIGNMENT size)
MEMORY_SHARED_SIZE:LongWord; The size of the registered shared memory (Must be a multiple of HEAP_REQUEST_ALIGNMENT size)
MEMORY_DEVICE_SIZE:LongWord; The size of the registered device memory (Must be a multiple of HEAP_REQUEST_ALIGNMENT size)
MEMORY_NOCACHE_SIZE:LongWord; The size of the registered non cacheable memory (Must be a multiple of HEAP_REQUEST_ALIGNMENT size)
MEMORY_NONSHARED_SIZE:LongWord; The size of the registered non shareable memory (Must be a multiple of HEAP_REQUEST_ALIGNMENT size)

Peripheral base mapping

PERIPHERALS_BASE:PtrUInt; The base (Physical) address for accessing Peripherals
PERIPHERALS_SIZE:LongWord; The size of the Peripheral address space

Local peripheral base mapping

LOCAL_PERIPHERALS_BASE:PtrUInt; The base (Physical) address for accessing Local Peripherals (Peripherals local to each CPU)
LOCAL_PERIPHERALS_SIZE:LongWord; The size of the Local Peripheral address space

Page table base mapping

PAGE_TABLE_BASE:PtrUInt; The base (Physical) address of the first level Page Table
PAGE_TABLE_SIZE:LongWord; The size of the first level Page Table address space

Second level page tables

PAGE_TABLES_ADDRESS:PtrUInt; The base (Physical) address of the second level Page Tables
PAGE_TABLES_LENGTH:LongWord; The size of the second level Page Table address space (Rounded to Page Size)
PAGE_TABLES_COUNT:LongWord; How many second level Page Tables allocated at this address
PAGE_TABLES_SHIFT:LongWord; The multiplier (left shift) to convert count to size (PAGE_TABLES_COUNT shl PAGE_TABLES_SHIFT = Actual Size)
PAGE_TABLES_NEXT:PtrUInt; The base (Physical) address of the next available second level Page Table
PAGE_TABLES_USED:LongWord; How many second level Page Tables are in use (During boot this will be set to the number required to cover the code and data plus initial stack, heap and overhead)
PAGE_TABLES_FREE:LongWord = 1024; How many second level Page Tables are available (The initial value here will be added to the number calculated during boot to provide extras for page allocation)

Page table sizes

PAGE_MIN_SIZE:LongWord = SIZE_4K; The minimum size of a memory page in the page tables (Default 4K)
PAGE_SMALL_SIZE:LongWord = SIZE_4K; The size of a small memory page in the page tables (Default 4K)
PAGE_LARGE_SIZE:LongWord = SIZE_64K; The size of a large memory page in the page tables (Default 64K)
PAGE_SECTION_SIZE:LongWord = SIZE_1M; The size of a memory section in the page tables (Default 1M)
PAGE_SUPERSECTION_SIZE:LongWord = SIZE_16M; The size of a memory super section in the page tables (Default 16M)

Vector table base mapping

VECTOR_TABLE_BASE:PtrUInt; The base (Physical) address of the Interrupt Vector Table
VECTOR_TABLE_SIZE:LongWord; The size of the Interrupt Vector Table address space
VECTOR_TABLE_COUNT:LongWord; The number of entries in the Interrupt Vector Table

Machine and board configuration

Machine configuration

MACHINE_TYPE:LongWord;

Board configuration

BOARD_TYPE:LongWord;

CPU/FPU/GPU configuration

CPU configuration

CPU_ARCH:LongWord; The current CPU architecture for this board
CPU_TYPE:LongWord; The current CPU model for this board
CPU_COUNT:LongWord; The current CPU count for this board
CPU_MAX_COUNT:LongWord; The maximum CPU count for this board
CPU_BOOT:LongWord; Which CPU is used for the boot process
CPU_MASK:LongWord; The mask of current CPUs for scheduling affinity
CPU_MEMORY_BASE:PtrUInt; The base (Physical) address for CPU memory
CPU_MEMORY_SIZE:LongWord; The size of the CPU address space
CPU_MEMORY_RESTRICTED:LongBool; Any areas of CPU address space with no physical memory are marked as no access

FPU configuration

FPU_TYPE:LongWord; The current FPU type for this board

GPU configuration

GPU_TYPE:LongWord; The current GPU type for this board
GPU_MEMORY_BASE:PtrUInt; The base (Physical) address for GPU memory
GPU_MEMORY_SIZE:LongWord; The size of the GPU address space
GPU_MEMORY_CACHED:LongBool; The GPU memory is cached when accessed by the CPU

IRQ/FIQ/SWI configuration

IRQ_COUNT:LongWord; The total number of IRQs supported for this board
FIQ_COUNT:LongWord; The total number of FIQs supported for this board
IRQ_START:LongWord = 0; The starting number for system wide IRQs/FIQs (Where Applicable)(Normally zero)
IRQ_ROUTING:LongWord = CPU_ID_ALL; Which CPU to route system wide IRQs to (Where Applicable)(CPU_ID_ALL if system supports routing individual IRQs to any CPU)
FIQ_ROUTING:LongWord = CPU_ID_ALL; Which CPU to route system wide FIQs to (Where Applicable)(CPU_ID_ALL if system supports routing individual FIQs to any CPU)
IRQ_LOCAL_COUNT:LongWord; The number of local (Per CPU) IRQs supported for this board (Where Applicable)
FIQ_LOCAL_COUNT:LongWord; The number of local (Per CPU) FIQs supported for this board (Where Applicable)
IRQ_LOCAL_START:LongWord; The starting number for local (Per CPU) IRQs/FIQs (Where Applicable)
SWI_COUNT:LongWord; The total number of SWIs supported for this board (Where Applicable)

Interrupt and exception configuration

IRQ_ENABLED:LongBool; The current CPU supports Interrupt Requests (IRQ)
FIQ_ENABLED:LongBool; The current CPU supports Fast Interrupt Requests (FIQ)
SWI_ENABLED:LongBool; The current CPU supports Software Interrupt Handlers (SWI)
ABORT_ENABLED:LongBool; The current CPU supports Data and/or Prefetch Abort Handlers
UNDEFINED_ENABLED:LongBool; The current CPU supports Undefined Instruction Handlers
IRQ_STACK_ENABLED:LongBool; The current CPU uses an Interrupt Request Stack (IRQ)
FIQ_STACK_ENABLED:LongBool; The current CPU uses a Fast Interrupt Request Stack (FIQ)
SWI_STACK_ENABLED:LongBool; The current CPU uses a Software Interrupt Stack (SWI)
ABORT_STACK_ENABLED:LongBool; The current CPU uses a Data and/or Prefetch Abort Stack
UNDEFINED_STACK_ENABLED:LongBool; The current CPU uses an Undefined Instruction Stack

Clock and timer configuration

Clock configuration

CLOCK_FREQUENCY:LongWord; The frequency in Hz of the system timer used to provide the system clock (Clock cycles per second)
CLOCK_TICKS_PER_SECOND:LongWord = 1000; How many clock interrupts to schedule per second (1000 equals 1 per millisecond)
CLOCK_TICKS_PER_MILLISECOND:LongWord = 1; How many clock interrupts occur every millisecond (Normally 1 if CLOCK_TICKS_PER_SECOND is 1000)
CLOCK_CYCLES_PER_TICK:LongWord; How many clock cycles between clock interrupts (Normally CLOCK_FREQUENCY div CLOCK_TICKS_PER_SECOND)
CLOCK_CYCLES_PER_MILLISECOND:LongWord; How many clock cycles to a millisecond (Normally CLOCK_FREQUENCY div MILLISECONDS_PER_SECOND)
CLOCK_CYCLES_PER_MICROSECOND:LongWord; How many clock cycles to a microsecond (Normally CLOCK_FREQUENCY div MICROSECONDS_PER_SECOND)
CLOCK_CYCLES_PER_NANOSECOND:LongWord; How many clock cycles to a nanosecond (Normally CLOCK_FREQUENCY div NANOSECONDS_PER_SECOND)
CLOCK_CYCLES_TOLERANCE:LongWord; How many clock cycles tolerance when scheduling the next clock interrupt (Normally CLOCK_CYCLES_PER_TICK div 10)
CLOCK_FIQ_ENABLED:LongBool; The Clock uses Fast Interrupt Requests (FIQ) instead of IRQ
TIME_TICKS_PER_CLOCK_INTERRUPT:LongWord; How many 100 nanosecond time ticks per clock interrupt

Timer configuration

TIMER_THREAD_COUNT:LongWord = 4; How many timer threads to create
TIMER_PRIORITY_THREAD_COUNT:LongWord = 1; How many priority timer threads to create
TIMER_MESSAGESLOT_MAXIMUM:LongWord = SIZE_2K; Maximum number of messages for the timer messageslot

Worker configuration

WORKER_THREAD_COUNT:LongWord = 8; How many worker threads to create
WORKER_PRIORITY_THREAD_COUNT:LongWord = 2; How many priority worker threads to create
WORKER_MESSAGESLOT_MAXIMUM:LongWord = SIZE_2K; Maximum number of messages for the worker messageslot

Spin, mutex, semaphore, critical section, event and buffer configuration

Spin defaults

SPIN_SHARED_MEMORY:LongBool; Spin locks are allocated from Shared memory regions if True

Mutex defaults

MUTEX_SHARED_MEMORY:LongBool; Mutexs are allocated from Shared memory regions if True
MUTEX_DEFAULT_SPINCOUNT:LongWord = 0; Default number of times a mutex will spin before yielding (Overidden to 0 if CPU count equals 1)

Semaphore defaults

SEMAPHORE_SHARED_MEMORY:LongBool; Semaphores are allocated from Shared memory regions if True
SEMAPHORE_DEFAULT_MAXIMUM:LongWord = $FFFFFFFF; Default maximum count for a seamphore

Synchronizer defaults

SYNCHRONIZER_SHARED_MEMORY:LongBool; Synchronizers are allocated from Shared memory regions if True

Condition defaults

CONDITION_SHARED_MEMORY:LongBool; Condition variables are allocated from Shared memory regions if True

Completion defaults

COMPLETION_SHARED_MEMORY:LongBool; Completion variables are allocated from Shared memory regions if True

Critical section defaults

CRITICAL_SECTION_SHARED_MEMORY:LongBool; Critical Sections are allocated from Shared memory regions if True
CRITICAL_SECTION_DEFAULT_SPINCOUNT:LongWord = 0; Default number of times a critical section will spin before waiting (Overidden to 0 if CPU count equals 1)

Messageslot defaults

MESSAGESLOT_SHARED_MEMORY:LongBool; Messageslots are allocated from Shared memory regions if True
MESSAGESLOT_DEFAULT_MAXIMUM:LongWord = SIZE_1K; Default maximum number of messages that can be stored in a messageslot

Mailslot defaults

MAILSLOT_SHARED_MEMORY:LongBool; Mailslots are allocated from Shared memory regions if True

Buffer defaults

BUFFER_SHARED_MEMORY:LongBool; Buffers are allocated from Shared memory regions if True
BUFFER_MIN_SIZE:LongWord = SizeOf(Pointer); Minimum size of an item in a buffer
BUFFER_MAX_SIZE:LongWord = SIZE_4K; Maximum size of an item in a buffer
BUFFER_MAX_COUNT:LongWord = SIZE_8K; Maximum number of items in a buffer

Event defaults

EVENT_SHARED_MEMORY:LongBool; Events are allocated from Shared memory regions if True

Handle defaults

HANDLE_SHARED_MEMORY:LongBool; Handles are allocated from Shared memory regions if True

Heap, stack, and thread configuration

Heap alignment

HEAP_MIN_ALIGNMENT:LongWord = SizeOf(Pointer); The default alignment for the Heap Manager (Set by board specific initialization if not default)(Must be a power of 2)
HEAP_REQUEST_ALIGNMENT:LongWord = SIZE_4K; The required alignment for Heap Manager requests (eg RequestSharedHeapBlock etc) (Set by board specific initialization if not default)(Must be a power of 2)

Heap behaviour

HEAP_NORMAL_SHARED:LongBool; If True then Normal memory is considered Shared memory by the Heap Manager (Default False)
HEAP_NORMAL_LOCAL:LongBool; If True then Normal memory is considered Local memory by the Heap Manager (Default False)
HEAP_NORMAL_CODE:LongBool; If True then Normal memory is considered Code memory by the Heap Manager (Default False)
HEAP_NORMAL_DEVICE:LongBool; If True then Normal memory is considered Device memory by the Heap Manager (Default False)
HEAP_NORMAL_NOCACHE:LongBool; If True then Normal memory is considered Non Cached memory by the Heap Manager (Default False)
HEAP_NORMAL_NONSHARED:LongBool; If True then Normal memory is considered Non Shared memory by the Heap Manager (Default False)
HEAP_LOCAL_CACHE_COHERENT:LongBool; If True then Local memory is considered cache coherent (Default False)
HEAP_IRQ_CACHE_COHERENT:LongBool; If True then IRQ memory is considered cache coherent (Default False)
HEAP_FIQ_CACHE_COHERENT:LongBool; If True then FIQ memory is considered cache coherent (Default False)

Heap locking

HEAP_LOCK_SPIN:LongBool; If True then Heap lock uses Spin instead of Mutex (Default False)

Stack alignment

STACK_MIN_ALIGNMENT:LongWord = SizeOf(Pointer); The default alignment for Thread stacks (Set by board specific initialization if not default)(Must be a power of 2)

Threadvar alignment

THREADVAR_MIN_ALIGNMENT:LongWord = SizeOf(Pointer); The default alignment for Thread Vars (Set by board specific initialization if not default)

Initial heap allocation (Used prior to Memory Manager initialization)

INITIAL_HEAP_SIZE:LongWord = SIZE_64K; The size of the initial heap allocation (Set by board specific initialization if not default)
INITIAL_HEAP_BASE:PtrUInt; The base address of the initial heap allocation (Set by StartupHandler)

Initial thread defaults

(The first created thread for the primary CPU which becomes either IRQ_THREAD_HANDLE[CPU_ID_0] or FIQ_THREAD_HANDLE[CPU_ID_0])

INITIAL_TLS_SIZE:LongWord = SIZE_16K; Default TLS (Thread Var) block size for the Initial Thread (Calculated TLS size is used for all other threads)
INITIAL_STACK_SIZE:LongWord = SIZE_32K; Default stack size for the Initial Thread
INITIAL_STACK_BASE:PtrUInt; The base address (Top) of the stack for the Initial Thread (Set by StartupHandler)

Boot thread defaults

(The first created thread for each secondary CPU which becomes either IRQ_THREAD_HANDLE[CPUID] or FIQ_THREAD_HANDLE[CPUID])

BOOT_STACK_SIZE:LongWord = SIZE_32K; Default stack size for the Boot Threads
BOOT_STACK_BASE:array of PtrUInt; The base address (Top) of the stack for the Boot Threads (One per CPU, allocated by threads initialization)
BOOT_THREAD_HANDLE:array of TThreadHandle; Handles of the Boot Threads (One per CPU, allocated by threads initialization)

Idle thread defaults

IDLE_STACK_SIZE:LongWord = SIZE_32K; Default stack size for Idle Threads
IDLE_THREAD_HANDLE:array of TThreadHandle; Handles of the Idle Threads (One per CPU, allocated by threads initialization)

IRQ thread defaults

IRQ_STACK_SIZE:LongWord = SIZE_32K; Default stack size for IRQ Threads
IRQ_STACK_BASE:array of PtrUInt; The base address (Top) of the stack for the IRQ Threads (One per CPU, allocated by threads initialization)
IRQ_THREAD_HANDLE:array of TThreadHandle; Handles of the IRQ Threads (One per CPU, allocated by threads initialization)

FIQ thread defaults

FIQ_STACK_SIZE:LongWord = SIZE_32K; Default stack size for FIQ Threads
FIQ_STACK_BASE:array of PtrUInt; The base address (Top) of the stack for the FIQ Threads (One per CPU, allocated by threads initialization)
FIQ_THREAD_HANDLE:array of TThreadHandle; Handles of the FIQ Threads (One per CPU, allocated by threads initialization)

SWI thread defaults

SWI_STACK_SIZE:LongWord = SIZE_32K; Default stack size for Software Interrupt Handlers (SWI)
SWI_STACK_BASE:array of PtrUInt; The base address (Top) of the stack for the Software Interrupt Handlers (One per CPU, allocated by threads initialization)
SWI_THREAD_HANDLE:array of TThreadHandle; Handles of the Software Interrupt Handler (SWI) Threads (One per CPU, allocated by threads initialization)

Thread defaults

THREAD_SHARED_MEMORY:LongBool; Threads are allocated from Shared memory regions if True
THREAD_STACK_DEFAULT_SIZE:LongWord = SIZE_256K; Default stack size for all threads (Unless specified during creation)
THREAD_STACK_MINIMUM_SIZE:LongWord = SIZE_4K; Minimum thread stack size
THREAD_STACK_MAXIMUM_SIZE:LongWord = SIZE_4M; Maximum thread stack size
THREAD_STACK_GUARD_ENABLED:LongBool = True; If True then each thread stack includes a guard page to detect stack overflows
THREAD_NAME_DEFAULT:String; The default name for new threads
THREAD_MESSAGES_MAXIMUM:LongWord = SIZE_256; Maximum number of messages that can be stored in a thread message list

ABORT stack defaults

ABORT_STACK_SIZE:LongWord = SIZE_4K; Default stack size for Data and/or Prefetch Abort Handlers
ABORT_STACK_BASE:array of PtrUInt; The base address (Top) of the stack for the Data and/or Prefetch Abort Handlers (One per CPU, allocated by threads initialization)

UNDEFINED stack defaults

UNDEFINED_STACK_SIZE:LongWord = SIZE_4K; Default stack size for Undefined Instruction Handlers
UNDEFINED_STACK_BASE:array of PtrUInt; The base address (Top) of the stack for the Undefined Instruction Handlers (One per CPU, allocated by threads initialization)

Scheduler configuration

Scheduler defaults

SCHEDULER_INTERRUPTS_PER_SECOND:LongWord = 1000; How many scheduler interrupts to schedule per second (1000 equals 1 per millisecond)
SCHEDULER_INTERRUPTS_PER_MILLISECOND:LongWord = 1; How many scheduler interrupts occur every millisecond (Normally 1 if SCHEDULER_INTERRUPTS_PER_SECOND is 1000)
SCHEDULER_CLOCKS_PER_INTERRUPT:LongWord; How many clock cycles between scheduler interrupts (Normally CLOCK_FREQUENCY div SCHEDULER_INTERRUPTS_PER_SECOND)
SCHEDULER_CLOCKS_TOLERANCE:LongWord; How many clock cycles tolerance when scheduling the next scheduler interrupt (Normally SCHEDULER_CLOCKS_PER_INTERRUPT div 10)
SCHEDULER_CPU_COUNT:LongWord; The current CPU count used by the scheduler (Requested from CPUGetCount) (Set by threads initialization)
SCHEDULER_CPU_MASK:LongWord; The current CPU mask used by the scheduler (Requested from CPUGetMask) (Set by threads initialization)
SCHEDULER_CPU_BOOT:LongWord; The current boot CPU Id used by the scheduler (Requested from CPUGetBoot) (Set by threads initialization)
SCHEDULER_THREAD_QUANTUM:LongWord = 6; How many scheduler interrupts for the base thread quantum (Actual quantum is adjusted by priority)
SCHEDULER_PRIORITY_QUANTUM:array of LongWord; How many scheduler interrupts to adjust the base thread quantum for each priority level (One per priority level, allocated by threads initialization)
SCHEDULER_MIGRATION_QUANTUM:LongWord = 100; How many scheduler thread switches between thread migration checks
SCHEDULER_STARVATION_QUANTUM:LongWord = 5; How many scheduler thread switches between thread starvation checks
SCHEDULER_TERMINATION_INITIAL:LongWord = 100; How many scheduler interrupts to wait between thread termination and stack release
SCHEDULER_TERMINATION_QUANTUM:LongWord = 30000; How many scheduler interrupts to wait between thread termination and thread destruction
SCHEDULER_MIGRATION_OFFSET:LongWord = 5; The minimum offset between CPU thread counts for a migration to occur
SCHEDULER_PRIORITY_MASK:array of LongWord; Mask value of each thread priority level used for determining highest priority thread (One per priority level, allocated by threads initialization)
SCHEDULER_FIQ_ENABLED:LongBool; The Scheduler uses Fast Interrupt Requests (FIQ) instead of IRQ
SCHEDULER_SWI_ENABLED:LongBool; The Scheduler uses Software Interrupts for rescheduling instead of direct context switch
SCHEDULER_SECONDARY_WAIT:LongBool = False; If True all secondary CPUs wait until initialization is completed
SCHEDULER_SECONDARY_DISABLED:LongBool; If True all secondary CPUs will be put to sleep during boot
SCHEDULER_IDLE_WAIT:LongBool; If True then the idle loop will wait in low power state on each iteration (May affect utilization calculation)
SCHEDULER_IDLE_OFFSET:LongWord; Idle loop delay per iteration (Milliseconds)
SCHEDULER_IDLE_PER_SECOND:LongWord; How many idle loops complete in one second when no other tasks are running (Set by threads initialization)
TIME_TICKS_PER_SCHEDULER_INTERRUPT:LongWord; How many 100 nanosecond time ticks per scheduler interrupt

Peripheral configuration (Set by PeripheralInit)

Peripheral addresses

INTERRUPT_REGS_BASE:LongWord; The base address of the Interrupt Controller registers (If Applicable)
SYSTEMTIMER_REGS_BASE:LongWord; The base address of the System Timer registers (If Applicable)
TIMER_REGS_BASE:LongWord; The base address of the Timer registers (If Applicable)
GPIO_REGS_BASE:LongWord; The base address of the GPIO registers (If Applicable)
UART_REGS_BASE:LongWord; The base address of the primary UART registers (If Applicable)
SPI_REGS_BASE:LongWord; The base address of the primary SPI registers (If Applicable)
I2C_REGS_BASE:LongWord; The base address of the primary I2C registers (If Applicable)
I2S_REGS_BASE:LongWord; The base address of the primary I2S registers (If Applicable)
PWM_REGS_BASE:LongWord; The base address of the primary PWM registers (If Applicable)

LED configuration (Set by specific PlatformInit)

Power LED

POWER_LED_PIN:LongWord = GPIO_PIN_UNKNOWN; The GPIO Pin for the Power LED (Where Applicable)
POWER_LED_PULL:LongWord = GPIO_PULL_UNKNOWN; The GPIO Pull Select for the Power LED (Where Applicable)
POWER_LED_FUNCTION:LongWord = GPIO_FUNCTION_UNKNOWN; The GPIO Function Select for the Power LED (Where Applicable)
POWER_LED_ACTIVE_LOW:LongBool; If True the Power LED is Active Low (Clear Pin to Turn On) (Where Applicable)

Activity LED

ACTIVITY_LED_PIN:LongWord = GPIO_PIN_UNKNOWN; The GPIO Pin for the Activity LED (Where Applicable)
ACTIVITY_LED_PULL:LongWord = GPIO_PULL_UNKNOWN; The GPIO Pull Select for the Activity LED (Where Applicable)
ACTIVITY_LED_FUNCTION:LongWord = GPIO_FUNCTION_UNKNOWN; The GPIO Function Select for the Activity LED (Where Applicable)
ACTIVITY_LED_ACTIVE_LOW:LongBool; If True the Activity LED is Active Low (Clear Pin to Turn On) (Where Applicable)

Console and frameBuffer configuration

Console

CONSOLE_DEFAULT_FORECOLOR:LongWord; The default foreground color for the console
CONSOLE_DEFAULT_BACKCOLOR:LongWord; The default background color for the console
CONSOLE_DEFAULT_BORDERWIDTH:LongWord; The default border width for the console
CONSOLE_DEFAULT_BORDERCOLOR:LongWord; The default border color for the console
CONSOLE_DEFAULT_FONT:THandle = INVALID_HANDLE_VALUE; The default Font for the console
CONSOLE_DEFAULT_FONT_NAME:String; The default Font name for the console
CONSOLE_LINE_WRAP:LongBool = True; If True then wrap long lines to the next line when writing to the console (Sets CONSOLE_FLAG_LINE_WRAP on device/WINDOW_FLAG_LINE_WRAP on windows)
CONSOLE_AUTO_SCROLL:LongBool = True; If True then automatically scroll up on reaching the last line of the console (Sets CONSOLE_FLAG_AUTO_SCROLL on device/WINDOW_FLAG_AUTO_SCROLL on windows)
CONSOLE_FOCUS_CURSOR:LongBool = True; If True then cursor (caret) is only visible on the focused (active) window (Sets CONSOLE_FLAG_FOCUS_CARET on device / WINDOW_FLAG_FOCUS_CURSOR on windows)
CONSOLE_CURSOR_BLINK_RATE:LongWord = 500; Blink rate (in milliseconds) of the console cursor (caret)
CONSOLE_DMA_BOX:LongBool = True; If True then use DMA (If available) to draw console window boxes (Sets CONSOLE_FLAG_DMA_BOX on device)
CONSOLE_DMA_TEXT:LongBool = False; If True then use DMA (If available) to draw console window text (Sets CONSOLE_FLAG_DMA_TEXT on device)
CONSOLE_DMA_LINE:LongBool = True; If True then use DMA (If available) to draw console window lines (Sets CONSOLE_FLAG_DMA_LINE on device)
CONSOLE_DMA_FILL:LongBool = True; If True then use DMA (If available) to fill console windows (Sets CONSOLE_FLAG_DMA_FILL on device)
CONSOLE_DMA_CLEAR:LongBool = True; If True then use DMA (If available) to clear console windows (Sets CONSOLE_FLAG_DMA_CLEAR on device)
CONSOLE_DMA_SCROLL:LongBool = True; If True then use DMA (If available) to scroll console windows (Sets CONSOLE_FLAG_DMA_SCROLL on device)
CONSOLE_REGISTER_LOGGING:LongBool = False; If True then register any Console device as a Logging device (Only if Console unit included)
CONSOLE_LOGGING_DEFAULT:LongBool = False; If True then a Console device can be the default Logging device
CONSOLE_LOGGING_POSITION:LongWord = CONSOLE_POSITION_RIGHT; The default Console Window position for the console Logging device
CONSOLE_LOGGING_DEVICE:String; The console device Name (or Desription) to create the Logging window on, if blank create on default device
CONSOLE_CRT_POSITION:LongWord = CONSOLE_POSITION_FULL; The default Console Window position for the CRT unit (Only if CRT unit included)
CONSOLE_VIDEO_POSITION:LongWord = CONSOLE_POSITION_FULL; The default Console Window position for the ConsoleVideo unit (Only if ConsoleVideo unit included)
CONSOLE_VIDEO_DEVICE:String; The console device Name (or Description) to create the ConsoleVideo window on, if blank create on default device
CONSOLE_VIDEO_WINDOW:THandle = INVALID_HANDLE_VALUE; The console window used or created by the ConsoleVideo unit
CONSOLE_VIDEO_FONT:String; The font name to use for the ConsoleVideo window, if blank use the default font (Default8x16)

Window

WINDOW_DEFAULT_FORECOLOR:LongWord; The default foreground color for console windows
WINDOW_DEFAULT_BACKCOLOR:LongWord; The default background color for console windows
WINDOW_DEFAULT_BORDERWIDTH:LongWord; The default border width for console windows
WINDOW_DEFAULT_BORDERCOLOR:LongWord; The default border color for console windows
WINDOW_DEFAULT_ACTIVEBORDER:LongWord; The default active border color for console windows
WINDOW_DEFAULT_FONT:THandle = INVALID_HANDLE_VALUE; The default Font for console windows
WINDOW_DEFAULT_FONT_NAME:String; The default Font name for console windows

Framebuffer console

FRAMEBUFFER_CONSOLE_AUTOCREATE:LongBool = True; If True then auto create a console on any framebuffer device (Only if Console unit included)
FRAMEBUFFER_CONSOLE_DEFAULT_DESKTOPOFFSET:LongWord; The default desktop offset for the framebuffer console
FRAMEBUFFER_CONSOLE_DEFAULT_DESKTOPCOLOR:LongWord; The default desktop color for the framebuffer console

Framebuffer

FRAMEBUFFER_DEFAULT_DEPTH:LongWord = FRAMEBUFFER_DEPTH_32; The default (Detected/Configured) Framebuffer depth in bits per pixel
FRAMEBUFFER_DEFAULT_ORDER:LongWord = FRAMEBUFFER_ORDER_RGB; The default (Detected/Configured) Framebuffer pixel order
FRAMEBUFFER_DEFAULT_MODE:LongWord = FRAMEBUFFER_MODE_ENABLED; The default (Detected/Configured) Framebuffer alpha mode
FRAMEBUFFER_DEFAULT_WIDTH:LongWord; The default (Detected/Configured) Framebuffer width in pixels
FRAMEBUFFER_DEFAULT_HEIGHT:LongWord; The default (Detected/Configured) Framebuffer height in pixels
FRAMEBUFFER_DEFAULT_OFFSET_X:LongWord; The default (Configured) Framebuffer X offset in pixels
FRAMEBUFFER_DEFAULT_OFFSET_Y:LongWord; The default (Configured) Framebuffer Y offset in pixels
FRAMEBUFFER_DEFAULT_OVERSCAN_TOP:LongWord; The default (Detected/Configured) Framebuffer Top overscan in pixels
FRAMEBUFFER_DEFAULT_OVERSCAN_BOTTOM:LongWord; The default (Detected/Configured) Framebuffer Bottom overscan in pixels
FRAMEBUFFER_DEFAULT_OVERSCAN_LEFT:LongWord; The default (Detected/Configured) Framebuffer Left overscan in pixels
FRAMEBUFFER_DEFAULT_OVERSCAN_RIGHT:LongWord; The default (Detected/Configured) Framebuffer Right overscan in pixels
FRAMEBUFFER_DEFAULT_ROTATION:LongWord = FRAMEBUFFER_ROTATION_0; The default (Detected/Configured) Framebuffer rotation on degress (Where Applicable)

Command line and environment configuration

Command line

KERNEL_NAME:PChar; The name of the Kernel image (Returned by ParamStr(0) or argv[0])
KERNEL_CONFIG:PChar; The name of the Kernel configuration file (Where Applicable)
KERNEL_COMMAND:PChar; The name of the Kernel command line file (Where Applicable)
FIRMWARE_FILES:PChar; The name of the Firmare files (Where Applicable)

Environment

ENVIRONMENT_STRING_COUNT:LongWord = SIZE_64; How many strings are allocated in the environment block (for Get/SetEnvironmentVariable)

Timezone configuration

TIMEZONE_TIME_OFFSET:LongInt; The current time offset between UTC and Local time (Minutes)
TIMEZONE_TIME_ADJUST:LongInt; The current time offset between Local and Adjusted time (Minutes)
TIMEZONE_UPDATE_LAST:Int64; The clock time of the last timezone update check
TIMEZONE_UPDATE_CURRENT:LongBool; If true then a timezone update check is in progress
TIMEZONE_DEFAULT_NAME:String; The name of the default timezone

DMA configuration

DMA defaults

DMA_ALIGNMENT:LongWord; The default alignment for DMA memory allocations
DMA_MULTIPLIER:LongWord; The default multiplier for DMA memory allocations
DMA_SHARED_MEMORY:LongBool; DMA control blocks and DMA buffers are allocated from Shared memory regions if True
DMA_NOCACHE_MEMORY:LongBool; DMA control blocks and DMA buffers are allocated from Non Cached memory regions if True
DMA_BUS_ADDRESSES:LongBool; DMA control blocks and DMA buffers are referenced by Bus addresses if True
DMA_CACHE_COHERENT:LongBool; DMA control blocks and DMA buffers are considered cache coherent if True

Device configuration

Device defaults

DEVICE_SHARED_MEMORY:LongBool; Devices are allocated from Shared memory regions if True
DEVICE_REGISTER_CLOCK:LongBool = False; If True then register the default clock device handlers (Default False)
DEVICE_REGISTER_TIMER:LongBool = True; If True then register the default timer device handlers
DEVICE_REGISTER_RANDOM:LongBool = True; If True then register the default random device handlers
DEVICE_REGISTER_MAILBOX:LongBool = True; If True then register the default mailbox device handlers
DEVICE_REGISTER_WATCHDOG:LongBool = True; If True then register the default watchdog device handlers

Driver configuration

Driver defaults

DRIVER_SHARED_MEMORY:LongBool; Drivers are allocated from Shared memory regions if True

Host configuration

Host defaults

HOST_SHARED_MEMORY:LongBool; Hosts are allocated from Shared memory regions if True

Serial configuration

SERIAL_REGISTER_LOGGING:LongBool = False; If True then register any Serial device as a Logging device (Only if Serial unit included)
SERIAL_LOGGING_DEFAULT:LongBool = False; If True then a Serial device can be the default Logging device
SERIAL_LOGGING_PARAMETERS:String = '0,N,8,1'; The default serial settings for the serial logging device (BaudRate,Parity,DataBits,StopBits)(BaudRate 0 equals use default rate)

Logging configuration

Logging defaults

LOGGING_DIRECT_ENABLE:LongBool; If True then logging output is written directly and not scheduled via the logging thread
LOGGING_INCLUDE_COUNTER:LongBool = True; If True then logging output includes an incrementing counter to detect missed entries
LOGGING_INCLUDE_DATETIME:LongBool; If True then logging output includes the current date and time for each entry
LOGGING_INCLUDE_TICKCOUNT:LongBool; If True then logging output includes the 64-bit tick count value for each entry
LOGGING_MESSAGESLOT_MAXIMUM:LongWord = SIZE_8K; Maximum number of messages for the logging messageslot

Syscalls configuration

SYSCALLS_HEAP_BASE:PtrUInt = $C0000000; The starting address for the dynamic C library heap space (Only if Syscalls unit included)(0 equals use static heap space only)
SYSCALLS_HEAP_MIN:LongWord = SIZE_2M; The minimum size of the dynamic C library heap space (Only if Syscalls unit included)(Or the total size if using static heap space)
SYSCALLS_HEAP_MAX:LongWord = SIZE_1G; The maximum size of the dynamic C library heap space (Only if Syscalls unit included)(Ignored if using static heap space only)
SYSCALLS_HEAP_BLOCKSIZE:LongWord = SIZE_1M; The block size to request from the heap manager on each expansion of the dynamic C library heap space (Only if Syscalls unit included)

Generic Peripheral configuration (Set by PeripheralInit)

GPIO

GPIO_PIN_COUNT:LongWord; The number of GPIO pins available on this board

Virtual GPIO

VIRTUAL_GPIO_PIN_COUNT:LongWord; The number of Virtual GPIO pins available on this board

Keyboard

KEYBOARD_NUM_LOCK_DEFAULT:LongBool = True; If True then set Num Lock to On by default for all keyboards (Default: True)
KEYBOARD_CAPS_LOCK_DEFAULT:LongBool = False; If True then set Caps Lock to On by default for all keyboards
KEYBOARD_SCROLL_LOCK_DEFAULT:LongBool = False; If True then set Scroll Lock to On by default for all keyboards
KEYBOARD_CTRL_ALT_IS_ALTGR:LongBool = False; If True then pressing Ctrl+Alt acts as the AltGr key
KEYBOARD_SHIFT_IS_CAPS_LOCK_OFF:LongBool = False; If True then pressing Shift turns Off Caps Lock

Mouse

MOUSE_SWAP_BUTTONS_DEFAULT:LongBool = False; If True then set Swap Buttons (Left <-> Right) to On by default for all mice

Touch

TOUCH_MOUSE_DATA_DEFAULT:LongBool = True; If True then set all touch devices to add mouse data events for compatibility (Default: True)

USB

USB_AUTOSTART:LongBool = True; If True then auto start the USB subsystem on boot (Only if USB unit included)
USB_ASYNCSTART:LongBool = True; If True then auto start asynchronously using a worker thread instead of the main thread
USB_DMA_ALIGNMENT:LongWord; The default alignment for USB DMA memory allocations
USB_DMA_MULTIPLIER:LongWord; The default multiplier for USB DMA memory allocations
USB_DMA_SHARED_MEMORY:LongBool; USB DMA buffers are allocated from Shared memory regions if True
USB_DMA_NOCACHE_MEMORY:LongBool; USB DMA buffers are allocated from Non Cached memory regions if True
USB_DMA_BUS_ADDRESSES:LongBool; USB DMA buffers are referenced by Bus addresses if True
USB_DMA_CACHE_COHERENT:LongBool; USB DMA buffers are considered cache coherent if True

MMC

MMC_AUTOSTART:LongBool = True; If True then auto start the MMC/SD subsystem on boot (Only if MMC unit included)
MMC_ASYNCSTART:LongBool = True; If True then auto start asynchronously using a worker thread instead of the main thread
MMC_DMA_ALIGNMENT:LongWord; The default alignment for MMC DMA memory allocations
MMC_DMA_MULTIPLIER:LongWord; The default multiplier for MMC DMA memory allocations
MMC_DMA_SHARED_MEMORY:LongBool; MMC DMA buffers are allocated from Shared memory regions if True
MMC_DMA_NOCACHE_MEMORY:LongBool; MMC DMA buffers are allocated from Non Cached memory regions if True
MMC_DMA_BUS_ADDRESSES:LongBool; MMC DMA buffers are referenced by Bus addresses if True
MMC_DMA_CACHE_COHERENT:LongBool; MMC DMA buffers are considered cache coherent if True

USB hub

USB_HUB_MESSAGESLOT_MAXIMUM:LongWord = SIZE_512; Maximum number of messages for the USB hub messageslot
USB_HUB_REGISTER_DRIVER:LongBool = True; If True then register the USB HUB driver during boot (Only if USB unit included) Note: USB cannot function correctly without a hub driver

USB keyboard

USB_KEYBOARD_POLLING_INTERVAL:LongWord = 10; Override the default polling interval for a USB keyboard (Milliseconds)
USB_KEYBOARD_REGISTER_DRIVER:LongBool = True; If True then register the USB Keyboard driver during boot (Only if Keyboard unit included)

USB mouse

USB_MOUSE_POLLING_INTERVAL:LongWord = 10; Override the default polling interval for a USB mouse (Milliseconds)
USB_MOUSE_REGISTER_DRIVER:LongBool = True; If True then register the USB Mouse driver during boot (Only if Mouse unit included)

USB storage

USB_STORAGE_FORCE_REMOVABLE:LongBool; If True then all USB storage devices will be assumed to be removable
USB_STORAGE_REGISTER_DRIVER:LongBool = True; If True then register the USB Storage driver during boot (Only if Storage unit included)

Specific Peripheral configuration (Set by PeripheralInit)

DWCOTG (Synopsys DesignWare Hi-Speed USB 2.0 On-The-Go Controller)

DWCOTG_IRQ:LongWord; The IRQ number of the DWCOTG device
DWCOTG_POWER_ID:LongWord; The power Id of the DWCOTG device
DWCOTG_REGS_BASE:LongWord; The base address of the DWCOTG registers
DWCOTG_FIQ_ENABLED:LongBool; The DWCOTG device uses Fast Interrupt Requests (FIQ) instead of IRQ
DWCOTG_DMA_ALIGNMENT:LongWord; The default alignment for DWCOTG DMA memory allocations
DWCOTG_DMA_MULTIPLIER:LongWord; The default multiplier for DWCOTG DMA memory allocations
DWCOTG_DMA_SHARED_MEMORY:LongBool; DWCOTG DMA buffers are allocated from Shared memory regions if True
DWCOTG_DMA_NOCACHE_MEMORY:LongBool; DWCOTG DMA buffers are allocated from Non Cached memory regions if True
DWCOTG_DMA_BUS_ADDRESSES:LongBool; DWCOTG DMA buffers are referenced by Bus addresses if True
DWCOTG_DMA_CACHE_COHERENT:LongBool; DWCOTG DMA buffers are considered cache coherent if True
DWCOTG_HOST_FRAME_INTERVAL:LongBool; Update the host frame interval register on root port enable if True

SMSC95XX (SMSC LAN95xx USB Ethernet Driver)

SMSC95XX_MAC_ADDRESS:String; The preconfigured MAC address for a SMSC95XX device

BCM2708

BCM2708DMA_ALIGNMENT:LongWord; The default alignment for BCM2708 DMA memory allocations
BCM2708DMA_MULTIPLIER:LongWord; The default multiplier for BCM2708 DMA memory allocations
BCM2708DMA_SHARED_MEMORY:LongBool; BCM2708 DMA control blocks and DMA buffers are allocated from Shared memory regions if True
BCM2708DMA_NOCACHE_MEMORY:LongBool; BCM2708 DMA control blocks and DMA buffers are allocated from Non Cached memory regions if True
BCM2708DMA_BUS_ADDRESSES:LongBool; BCM2708 DMA control blocks and DMA buffers are referenced by Bus addresses if True
BCM2708DMA_CACHE_COHERENT:LongBool; BCM2708 DMA control blocks and DMA buffers are considered cache coherent if True
BCM2708I2C_COMBINED_WRITEREAD:LongBool; If True then the BCM2708 I2C driver can do combined Write/Read transactions
BCM2708GPIO_FIQ_ENABLED:LongBool; The BCM2708 GPIO device uses Fast Interrupt Requests (FIQ) instead of IRQ. Note: Only one device can be enabled for FIQ at once, ensure you do not attempt to enable multiple.
BCM2708GPIO_FIQ_BANK_NO:LongWord; The BCM2708 GPIO bank number for Fast Interrupt Requests (FIQ) (0 or 1) (Only if Enabled). Note: Only one device can be enabled for FIQ at once, ensure you do not attempt to enable multiple.
BCM2708SDHCI_FIQ_ENABLED:LongBool; The BCM2708 SDHCI device uses Fast Interrupt Requests (FIQ) instead of IRQ
BCM2708ARM_TIMER_FIQ_ENABLED:LongBool; The BCM2708 ARM Timer device uses Fast Interrupt Requests (FIQ) instead of IRQ
BCM2708FRAMEBUFFER_ALIGNMENT:LongWord; The memory alignment for the BCM2708 Framebuffer device
BCM2708FRAMEBUFFER_CACHED:LongBool; If True then the BCM2708 Framebuffer device is in cached memory (Requires CleanCacheRange on write)
BCM2708_REGISTER_SPI0:LongBool = True; If True then register the BCM2708 SPI0 device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_SPI1:LongBool = True; If True then register the BCM2708 SPI1 device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_SPI2:LongBool = True; If True then register the BCM2708 SPI2 device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_I2C0:LongBool = True; If True then register the BCM2708 I2C0 device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_I2C1:LongBool = True; If True then register the BCM2708 I2C1 device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_DMA:LongBool = True; If True then register the BCM2708 DMA host during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_PWM:LongBool = True; If True then register the BCM2708 PWM device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_PCM:LongBool = True; If True then register the BCM2708 PCM device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_GPIO:LongBool = True; If True then register the BCM2708 GPIO device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_UART0:LongBool = True; If True then register the BCM2708 UART0 device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_UART1:LongBool = True; If True then register the BCM2708 UART1 device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_SDHCI:LongBool = True; If True then register the BCM2708 SDHCI host during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_SPISLAVE:LongBool = True; If True then register the BCM2708 SPI slave device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_I2CSLAVE:LongBool = True; If True then register the BCM2708 I2C slave device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_PWMAUDIO:LongBool = True; If True then register the BCM2708 PWM Audio device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_SYS_CLOCK:LongBool = True; If True then register the BCM2708 System Timer Clock device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_ARM_CLOCK:LongBool = True; If True then register the BCM2708 ARM Timer Clock device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_ARM_TIMER:LongBool = True; If True then register the BCM2708 ARM Timer device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_RANDOM:LongBool = True; If True then register the BCM2708 Random device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_MAILBOX:LongBool = True; If True then register the BCM2708 Mailbox device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_WATCHDOG:LongBool = True; If True then register the BCM2708 Watchdog device during boot (Only if BCM2708 unit included)
BCM2708_REGISTER_FRAMEBUFFER:LongBool = True; If True then register the BCM2708 Framebuffer device during boot (Only if BCM2708 unit included)

BCM2709

BCM2709DMA_ALIGNMENT:LongWord; The default alignment for BCM2709 DMA memory allocations
BCM2709DMA_MULTIPLIER:LongWord; The default multiplier for BCM2709 DMA memory allocations
BCM2709DMA_SHARED_MEMORY:LongBool; BCM2709 DMA control blocks and DMA buffers are allocated from Shared memory regions if True
BCM2709DMA_NOCACHE_MEMORY:LongBool; BCM2709 DMA control blocks and DMA buffers are allocated from Non Cached memory regions if True
BCM2709DMA_BUS_ADDRESSES:LongBool; BCM2709 DMA control blocks and DMA buffers are referenced by Bus addresses if True
BCM2709DMA_CACHE_COHERENT:LongBool; BCM2709 DMA control blocks and DMA buffers are considered cache coherent if True
BCM2709I2C_COMBINED_WRITEREAD:LongBool; If True then the BCM2709 I2C driver can do combined Write/Read transactions
BCM2709SDHCI_FIQ_ENABLED:LongBool; The BCM2709 SDHCI device uses Fast Interrupt Requests (FIQ) instead of IRQ
BCM2709ARM_TIMER_FIQ_ENABLED:LongBool; The BCM2709 ARM Timer device uses Fast Interrupt Requests (FIQ) instead of IRQ
BCM2709LOCAL_TIMER_FIQ_ENABLED:LongBool; The BCM2709 Local Timer device uses Fast Interrupt Requests (FIQ) instead of IRQ
BCM2709FRAMEBUFFER_ALIGNMENT:LongWord; The memory alignment for the BCM2709 Framebuffer device
BCM2709FRAMEBUFFER_CACHED:LongBool; If True then the BCM2709 Framebuffer device is in cached memory (Requires CleanCacheRange on write)
BCM2709_REGISTER_SPI0:LongBool = True; If True then register the BCM2709 SPI0 device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_SPI1:LongBool = True; If True then register the BCM2709 SPI1 device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_SPI2:LongBool = True; If True then register the BCM2709 SPI2 device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_I2C0:LongBool = True; If True then register the BCM2709 I2C0 device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_I2C1:LongBool = True; If True then register the BCM2709 I2C1 device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_DMA:LongBool = True; If True then register the BCM2709 DMA host during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_PWM:LongBool = True; If True then register the BCM2709 PWM device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_PCM:LongBool = True; If True then register the BCM2709 PCM device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_GPIO:LongBool = True; If True then register the BCM2709 GPIO device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_UART0:LongBool = True; If True then register the BCM2709 UART0 device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_UART1:LongBool = True; If True then register the BCM2709 UART1 device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_SDHCI:LongBool = True; If True then register the BCM2709 SDHCI host during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_SPISLAVE:LongBool = True; If True then register the BCM2709 SPI slave device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_I2CSLAVE:LongBool = True; If True then register the BCM2709 I2C slave device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_PWMAUDIO:LongBool = True; If True then register the BCM2709 PWM Audio device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_SYS_CLOCK:LongBool = True; If True then register the BCM2709 System Timer Clock device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_ARM_CLOCK:LongBool = True; If True then register the BCM2709 ARM Timer Clock device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_LOCAL_CLOCK:LongBool = True; If True then register the BCM2709 Local Timer Clock device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_ARM_TIMER:LongBool = True; If True then register the BCM2709 ARM Timer device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_LOCAL_TIMER:LongBool = True; If True then register the BCM2709 Local Timer device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_RANDOM:LongBool = True; If True then register the BCM2709 Random device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_MAILBOX:LongBool = True; If True then register the BCM2709 Mailbox device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_WATCHDOG:LongBool = True; If True then register the BCM2709 Watchdog device during boot (Only if BCM2709 unit included)
BCM2709_REGISTER_FRAMEBUFFER:LongBool = True; If True then register the BCM2709 Framebuffer device during boot (Only if BCM2709 unit included)

BCM2710

BCM2710DMA_ALIGNMENT:LongWord; The default alignment for BCM2710 DMA memory allocations
BCM2710DMA_MULTIPLIER:LongWord; The default multiplier for BCM2710 DMA memory allocations
BCM2710DMA_SHARED_MEMORY:LongBool; BCM2710 DMA control blocks and DMA buffers are allocated from Shared memory regions if True
BCM2710DMA_NOCACHE_MEMORY:LongBool; BCM2710 DMA control blocks and DMA buffers are allocated from Non Cached memory regions if True
BCM2710DMA_BUS_ADDRESSES:LongBool; BCM2710 DMA control blocks and DMA buffers are referenced by Bus addresses if True
BCM2710DMA_CACHE_COHERENT:LongBool; BCM2710 DMA control blocks and DMA buffers are considered cache coherent if True
BCM2710I2C_COMBINED_WRITEREAD:LongBool; If True then the BCM2710 I2C driver can do combined Write/Read transactions
BCM2710SDHCI_FIQ_ENABLED:LongBool; The BCM2710 SDHCI device uses Fast Interrupt Requests (FIQ) instead of IRQ
BCM2710ARM_TIMER_FIQ_ENABLED:LongBool; The BCM2710 ARM Timer device uses Fast Interrupt Requests (FIQ) instead of IRQ
BCM2710LOCAL_TIMER_FIQ_ENABLED:LongBool; The BCM2710 Local Timer device uses Fast Interrupt Requests (FIQ) instead of IRQ
BCM2710FRAMEBUFFER_ALIGNMENT:LongWord; The memory alignment for the BCM2710 Framebuffer device
BCM2710FRAMEBUFFER_CACHED:LongBool; If True then the BCM2710 Framebuffer device is in cached memory (Requires CleanCacheRange on write)
BCM2710_REGISTER_SPI0:LongBool = True; If True then register the BCM2710 SPI0 device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_SPI1:LongBool = True; If True then register the BCM2710 SPI1 device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_SPI2:LongBool = True; If True then register the BCM2710 SPI2 device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_I2C0:LongBool = True; If True then register the BCM2710 I2C0 device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_I2C1:LongBool = True; If True then register the BCM2710 I2C1 device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_DMA:LongBool = True; If True then register the BCM2710 DMA host during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_PWM:LongBool = True; If True then register the BCM2710 PWM device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_PCM:LongBool = True; If True then register the BCM2710 PCM device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_GPIO:LongBool = True; If True then register the BCM2710 GPIO device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_UART0:LongBool = True; If True then register the BCM2710 UART0 device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_UART1:LongBool = True; If True then register the BCM2710 UART1 device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_SDHCI:LongBool = True; If True then register the BCM2710 SDHCI host during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_SPISLAVE:LongBool = True; If True then register the BCM2710 SPI slave device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_I2CSLAVE:LongBool = True; If True then register the BCM2710 I2C slave device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_PWMAUDIO:LongBool = True; If True then register the BCM2710 PWM Audio device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_SYS_CLOCK:LongBool = True; If True then register the BCM2710 System Timer Clock device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_ARM_CLOCK:LongBool = True; If True then register the BCM2710 ARM Timer Clock device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_LOCAL_CLOCK:LongBool = True; If True then register the BCM2710 Local Timer Clock device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_ARM_TIMER:LongBool = True; If True then register the BCM2710 ARM Timer device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_LOCAL_TIMER:LongBool = True; If True then register the BCM2710 Local Timer device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_RANDOM:LongBool = True; If True then register the BCM2710 Random device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_MAILBOX:LongBool = True; If True then register the BCM2710 Mailbox device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_WATCHDOG:LongBool = True; If True then register the BCM2710 Watchdog device during boot (Only if BCM2710 unit included)
BCM2710_REGISTER_FRAMEBUFFER:LongBool = True; If True then register the BCM2710 Framebuffer device during boot (Only if BCM2710 unit included)

QEMUVPB

QEMUVPB_REGISTER_DMA:LongBool = True; If True then register the QEMU VersatilePB DMA device during boot (Only if QEMUVersatilePB unit included)
QEMUVPB_REGISTER_UART0:LongBool = True; If True then register the QEMU VersatilePB UART0 device during boot (Only if QEMUVersatilePB unit included)
QEMUVPB_REGISTER_UART1:LongBool = True; If True then register the QEMU VersatilePB UART1 device during boot (Only if QEMUVersatilePB unit included)
QEMUVPB_REGISTER_UART2:LongBool = True; If True then register the QEMU VersatilePB UART2 device during boot (Only if QEMUVersatilePB unit included)
QEMUVPB_REGISTER_UART3:LongBool = True; If True then register the QEMU VersatilePB UART3 device during boot (Only if QEMUVersatilePB unit included)
QEMUVPB_REGISTER_RTC:LongBool = True; If True then register the QEMU VersatilePB RTC device during boot (Only if QEMUVersatilePB unit included)
QEMUVPB_REGISTER_CLOCK:LongBool = True; If True then register the QEMU VersatilePB 24MHz Clock device during boot (Only if QEMUVersatilePB unit included)
QEMUVPB_REGISTER_MMC0:LongBool = True; If True then register the QEMU VersatilePB MMC0 device during boot (Only if QEMUVersatilePB unit included)
QEMUVPB_REGISTER_MMC1:LongBool = True; If True then register the QEMU VersatilePB MMC1 device during boot (Only if QEMUVersatilePB unit included)
QEMUVPB_REGISTER_NETWORK:LongBool = True; If True then register the QEMU VersatilePB Network device during boot (Only if QEMUVersatilePB unit included)
QEMUVPB_REGISTER_FRAMEBUFFER:LongBool = True; If True then register the QEMU VersatilePB Framebuffer device during boot (Only if QEMUVersatilePB unit included)
QEMUVPB_REGISTER_MOUSE:LongBool = True; If True then register the QEMU VersatilePB Mouse device during boot (Only if QEMUVersatilePB unit included)
QEMUVPB_REGISTER_KEYBOARD:LongBool = True; If True then register the QEMU VersatilePB Keyboard device during boot (Only if QEMUVersatilePB unit included)

Country, codepage, locale and language configuration

COUNTRY_DEFAULT:LongWord = 0; The current default country code
CODEPAGE_OEM_DEFAULT:LongWord = 437; The current OEM default code page
CODEPAGE_ANSI_DEFAULT:LongWord = 1252; The current ANSI default code page
CODEPAGE_CONSOLE_INPUT:LongWord = 1252; The current console input code page
CODEPAGE_CONSOLE_OUTPUT:LongWord = 1252; The current console output code page
LOCALE_DEFAULT:LongWord; (LCID) The current default locale
LANGUAGE_DEFAULT:Word; (LANGID) The current default language identifier
KEYMAP_DEFAULT:String = 'US'; The name of the default keymap

Disk, controller, filesystem and cache configuration

Filesystem configuration

FILESYS_AUTOSTART:LongBool = True; If True then auto start the filesystem on boot (Only if FileSystem unit included)
FILESYS_ASYNCSTART:LongBool = True; If True then auto start asynchronously using a worker thread instead of the main thread
FILESYS_REGISTER_LOGGING:LongBool = True; If True then register filesystem as a Logging device on boot (Only if FileSystem unit included)
FILESYS_LOGGING_DEFAULT:LongBool = False; If True then filesystem can be the default Logging device (Only if FileSystem unit included)
FILESYS_LOGGING_FILE:String; The name of the file to log messages to
FILESYS_LOGGING_MAXSIZE:LongWord; The maximum size of the logging file before rollover (0 for no maximum)
FILESYS_LOGGING_MAXCOPIES:LongWord; The number of old logging files to keep on rollover (0 for no copies)

Cache configuration

FILESYS_CACHE_SIZE:LongWord = SIZE_16M; The default filesystem cache size
FILESYS_CACHE_PAGE:LongWord = SIZE_32K; The size of a filesystem cache page
FILESYS_CACHE_KEYS:LongWord = 12; The number of hash keys for the filesystem cache
FILESYS_CACHE_MODE:LongWord = FILESYS_CACHE_MODE_READWRITE; The default filesystem cache mode

Filesystem support configuration

FILESYS_FLOPPY_ENABLED:LongBool = True; Enable filesystem floppy drive support
FILESYS_DRIVES_ENABLED:LongBool = True; Enable filesystem drive letter support
FILESYS_ATA_ENABLED:LongBool = True; Enable filesystem ATA controller support
FILESYS_ATAPI_ENABLED:LongBool = True; Enable filesystem ATAPI controller support
FILESYS_SCSI_ENABLED:LongBool = True; Enable filesystem SCSI controller support
FILESYS_USB_ENABLED:LongBool = True; Enable filesystem USB controller support
FILESYS_MMC_ENABLED:LongBool = True; Enable filesystem MMC/SD controller support
FILESYS_VIRTUAL_ENABLED:LongBool = True; Enable filesystem virtual disk controller support
FILESYS_FAT_ENABLED:LongBool = True; Enable FAT filesystem support
FILESYS_NTFS_ENABLED:LongBool = True; Enable NTFS filesystem support
FILESYS_EXTFS_ENABLED:LongBool = True; Enable EXTFS filesystem support
FILESYS_CDFS_ENABLED:LongBool = True; Enable CDFS filesystem support
FILESYS_CASE_FLAGS:LongBool = True; Enable support for case flags in filesystem entries (Where Applicable)
FILESYS_LONG_NAMES:LongBool = True; Enable support for long file names (greater than 8.3) (Where Applicable)
FILESYS_OEM_CONVERT:LongBool = True; Enable support for ANSI to OEM/OEM to ANSI character set conversion (Where Applicable)
FILESYS_NUMERIC_TAIL:LongBool = True; Enable support for numeric tail on generated short file names (Where Applicable)
FILESYS_DIRTY_CHECK:LongBool = True; Enable support for dirty check on volume mount (Where Applicable)
FILESYS_QUICK_CHECK:LongBool = True; Enable support for quick volume checking (Where Applicable)
FILESYS_UPDATE_ACCESSTIME:LongBool = True; Enable support for updating last access time field (Where Applicable)
FILESYS_GLOBAL_CURRENTDIR:LongBool = False; If True then make the current directory global instead of per thread (Default False)

FAT configuration

FAT_DEFAULT:LongBool = True; Enable default recognition of non partitioned media as FAT
FAT_CASE_FLAGS:LongBool = True; Enable support for case flags in FAT filesystem entries
FAT_LONG_NAMES:LongBool = True; Enable support for FAT long file names (greater than 8.3)
FAT_OEM_CONVERT:LongBool = True; Enable support for FAT ANSI to OEM/OEM to ANSI character set conversion
FAT_NUMERIC_TAIL:LongBool = True; Enable support for numeric tail on generated FAT short file names
FAT_DIRTY_CHECK:LongBool = True; Enable support for dirty check on FAT volume mount
FAT_QUICK_CHECK:LongBool = True; Enable support for quick FAT volume checking

NTFS configuration

NTFS_DEFAULT:LongBool = False; Enable default recognition of non partitioned media as NTFS
NTFS_RESET_LOG:LongBool = True; Reset the NTFS Log File if it was dirty on mount
NTFS_FIXED_ZONE:LongBool = True; Use the Windows Vista/2008/7 Fixed MFT Zone values (not the Windows NT/2000/XP percentages)
NTFS_ALT_LAYOUT:LongBool = False; Use the Windows Vista/2008/7 Volume Layout values (not the Windows NT/2000/XP layout)
NTFS_LENIENT:LongBool = False; Allow certain non fatal errors to be ignored
NTFS_DEFENSIVE:LongBool = False; Perform more defensive checking of structures and values
NTFS_AGGRESSIVE:LongBool = False; Attempt to correct certain errors during operation
NTFS_NO_SHORT_NAMES:LongBool = False; Do not create alternate short file names
NTFS_NULL_SECURITY:LongBool = False; Do not apply security when creating files and folders (only apply security when SetSecurity called)
NTFS_DEFAULT_SECURITY:LongBool = False; Apply default permissions (Everyone, Full Control) when creating files and folders

EXTFS configuration

EXTFS_DEFAULT:LongBool = False; Enable default recognition of non partitioned media as EXTFS

CDFS configuration

CDFS_DEFAULT:LongBool = False; Enable default recognition of non partitioned media as CDFS
CDFS_LONG_NAMES:LongBool = True; Enable support for CDFS long file names (greater than 8.3)
CDFS_SWAP_SERIAL:LongBool = False; Swap the byte order of the CDFS serial number (Set to True for Windows 9x compatibility)

Network, transport, protocol and sockets configuration

Host configuration

HOST_NAME:String = 'localhost'; The network host name of the local machine
HOST_DOMAIN:String = 'localdomain'; The network domain name of the local machine

Winsock configuration

WINSOCK_NAME:String = 'Ultibo Winsock Version 1.1';
WINSOCK_LOW_VERSION:Word = $101;
WINSOCK_HIGH_VERSION:Word = $101;
WINSOCK_BUILD_VERSION:String = '1.10.43';
WINSOCK_MAX_SOCKETS:Word = SIZE_1K;
WINSOCK_MAX_UDP:Word = SIZE_8K;
WINSOCK_AUTOSTART:LongBool = True; If True then auto start the Winsock layer on boot (Only if Winsock unit included)
WINSOCK_ASYNCSTART:LongBool = True; If True then auto start asynchronously using a worker thread instead of the main thread

Winsock2 configuration

WINSOCK2_NAME:String = 'Ultibo Winsock Version 2.2';
WINSOCK2_LOW_VERSION:Word = $101;
WINSOCK2_HIGH_VERSION:Word = $202;
WINSOCK2_BUILD_VERSION:String = '2.20.03';
WINSOCK2_MAX_SOCKETS:Word = SIZE_1K; Note: As per Winsock2 specification, this value is for compatibility only and is ignored by the network stack
WINSOCK2_MAX_UDP:Word = SIZE_8K; Note: As per Winsock2 specification, this value is for compatibility only and is ignored by the network stack
WINSOCK2_AUTOSTART:LongBool = True; If True then auto start the Winsock2 layer on boot (Only if Winsock2 unit included)
WINSOCK2_ASYNCSTART:LongBool = True; If True then auto start asynchronously using a worker thread instead of the main thread

Sockets configuration

SOCKETS_AUTOSTART:LongBool = True; If True then auto start the sockets layer on boot (Only if Sockets unit included)
SOCKETS_ASYNCSTART:LongBool = True; If True then auto start asynchronously using a worker thread instead of the main thread

Client configuration

DNS_CLIENT_ENABLED:LongBool = True; DNS client is enabled if True

Protocol configuration

RAW_PROTOCOL_ENABLED:LongBool = True; Raw socket protocol is enabled if True
UDP_PROTOCOL_ENABLED:LongBool = True; UDP protocol is enabled if True
TCP_PROTOCOL_ENABLED:LongBool = True; TCP protocol is enabled if True
ICMP_PROTOCOL_ENABLED:LongBool = True; ICMP protocol is enabled if True
ICMP6_PROTOCOL_ENABLED:LongBool = False; ICMPv6 protocol is enabled if True
IGMP_PROTOCOL_ENABLED:LongBool = True; IGMP protocol is enabled if True
TCP_MIN_BACKLOG:LongWord = 5; Minimum accept queue length for listening sockets (per socket)
TCP_MAX_BACKLOG:LongWord = 200; Maximum accept queue length for listening sockets (per socket)
TCP_RECEIVE_BACKLOG:LongWord = SIZE_1K; Queue length for SYN received connections (per listening socket)
ARP_CONFIG_ENABLED:LongBool = True; ARP configuration is enabled if True
RARP_CONFIG_ENABLED:LongBool = False; RARP configuration is enabled if True
BOOTP_CONFIG_ENABLED:LongBool = False; BOOTP configuration is enabled if True
DHCP_CONFIG_ENABLED:LongBool = True; DHCP configuration is enabled if True
STATIC_CONFIG_ENABLED:LongBool = True; Static configuration is enabled if True
LOOPBACK_CONFIG_ENABLED:LongBool = True; Loopback configuration is enabled if True

Transport configuration

IP_TRANSPORT_ENABLED:LongBool = True; IP transport is enabled if True
IP6_TRANSPORT_ENABLED:LongBool = False; IPv6 transport is enabled if True
ARP_TRANSPORT_ENABLED:LongBool = True; ARP transport is enabled if True
RARP_TRANSPORT_ENABLED:LongBool = True; RARP transport is enabled if True
RSN_TRANSPORT_ENABLED:LongBool = True; RSN transport is enabled if True
EAPOL_TRANSPORT_ENABLED:LongBool = True; EAPOL transport is enabled if True

Network configuration

WIRED_NETWORK_ENABLED:LongBool = True; Wired network adapters are enabled if True
LOOPBACK_NETWORK_ENABLED:LongBool = True; Loopback network adapter is enabled if True
WIRELESS_NETWORK_ENABLED:LongBool = True; Wireless network adapters are enabled if True

Shell configuration

CONSOLE_SHELL_ENABLED:LongBool = True; If True then automatically create a console shell window when a new console is registered (Only if ConsoleShell unit included)
CONSOLE_SHELL_POSITION:LongWord = CONSOLE_POSITION_RIGHT; The default Console Window position for the console shell
CONSOLE_SHELL_DEVICE:String; The console device Name (or Description) to create the shell window on, if blank create on default device unless forced (Only if ConsoleShell unit included)

Specific service configuration

NTP

NTP_SERVER_DEFAULT:String = 'pool.ntp.org'; The default NTP server(s) to poll
NTP_PORT_DEFAULT:Word = 123; The default NTP port to poll
NTP_POLLING_INTERVAL:LongWord = 300; The default NTP polling interval (300 seconds/5 minutes)
NTP_POLLING_TIMEOUT:LongWord = 2000; The default NTP polling timeout (2000 milliseconds/2 seconds)
NTP_POLLING_RETRIES:LongWord = 3; The default NTP polling retry count
NTP_RETRY_TIMEOUT:LongWord = 1000; The default NTP retry interval (1000 milliseconds/1 second)
NTP_AUTOSTART:LongBool = True; If True then auto start the NTP client on boot (Only if Services unit included)

Telnet

TELNET_PORT_DEFAULT:Word = 23; The default Telnet port
TELNET_AUTOSTART:LongBool = True; If True then auto start the Telnet server on boot (Only if RemoteShell unit included)

SSH

SSH_PORT_DEFAULT:Word = 22; The default SSH port
SSH_AUTOSTART:LongBool = True; If True then auto start the SSH server on boot (Only if RemoteShell unit included)

SysLog

SYSLOG_BOUND_PORT:Word; The local port for SysLog to bind to (0 for dynamic port)
SYSLOG_SERVER_DEFAULT:String = '127.0.0.1'; The default SysLog server to send messages to
SYSLOG_PORT_DEFAULT:Word = 514; The default SysLog port
SYSLOG_PROTOCOL_DEFAULT:LongWord = LOGGING_PROTOCOL_UDP; The default SysLog protocol
SYSLOG_OCTET_COUNTING:LongBool; If True use the Octet Counting method of framing the SysLog message (LOGGING_PROTOCOL_TCP only)(See: RFC6587)
SYSLOG_AUTOSTART:LongBool = True; If True then auto start the SysLog client on boot (Only if Services unit included)
SYSLOG_REGISTER_LOGGING:LongBool = True; If True then register SysLog as a Logging device on boot (Only if Services unit included)
SYSLOG_LOGGING_DEFAULT:LongBool = True; If True then SysLog can be the default Logging device (Only if Services unit included)

POP3

POP3_PORT_DEFAULT:Word = 110; The default POP3 port

IMAP4

IMAP4_PORT_DEFAULT:Word = 143; The default IMAP4 port

SMTP

SMTP_PORT_DEFAULT:Word = 25; The default SMTP port

HTTP

HTTP_PORT_DEFAULT:Word = 80; The default HTTP port
HTTPS_PORT_DEFAULT:Word = 443; The default HTTPS port

CIFS

CIFS_PORT_DEFAULT:Word = 445; The default CIFS port
CIFS_CLIENT_AUTOSTART:LongBool = True; If True then auto start the CIFS client on boot (Only if CIFS unit included)
CIFS_SERVER_AUTOSTART:LongBool = True; If True then auto start the CIFS server on boot (Only if CIFS unit included)

NFS

NFS_PORT_DEFAULT:Word = 111; The default NFS port
NFSv4_PORT_DEFAULT:Word = 2049; The default NFSv4 port
NFS_CLIENT_AUTOSTART:LongBool = True; If True then auto start the NFS client on boot (Only if NFS unit included)
NFS_SERVER_AUTOSTART:LongBool = True; If True then auto start the NFS server on boot (Only if NFS unit included)

Specific driver configuration

PL2303

PL2303_MAX_TRANSMIT:LongWord; The maximum transmit size of the PL2303 USB to Serial converter (Defaults to maximum supported by the device if not specified)

FTDI serial

FTDISERIAL_MAX_TRANSMIT:LongWord; The maximum transmit size of the FTDI USB to Serial converter (Defaults to maximum supported by the device if not specified)

USB CDC ACM

CDCACM_MAX_TRANSMIT:LongWord; The maximum transmit size for USB CDC ACM Serial devices (Defaults to maximum supported by the device if not specified)

DS1307

DS1307_CHIP_TYPE:LongWord; The specific chip to support in the DS1307 driver (See the DS1307_CHIP_* constants in the driver)
DS1307_I2C_ADDRESS:Word = $68; The I2C address to use for the DS1307 RTC device
DS1307_I2C_DEVICE:String = 'I2C0'; The I2C device (Name or Description) to use for the DS1307 RTC device

RT2800USB

RT2800USB_HARDWARE_ENCRYPTION_DISABLED:LongBool; If True then use software only encryption for RT2800USB

AF16x2LCD

AF16X2LCD_AUTOSTART:LongBool = True; If True then auto start the AF16x2LCD device on boot (Only if AF16x2LCD unit included)

PiTFT28

PiTFT28_AUTOSTART:LongBool = True; If True then auto start the PiTFT28 device on boot (Only if PiTFT28 unit included)

PiTFT35

PiTFT35_AUTOSTART:LongBool = True; If True then auto start the PiTFT35 device on boot (Only if PiTFT35 unit included)

RPiSenseHat

RPISENSE_AUTOSTART:LongBool = True; If True then auto start the RPiSenseHat device on boot (Only if RPiSenseHat unit included)

Global handlers

GetLastErrorHandler:TGetLastError; Registered handler for the global GetLastError function
SetLastErrorHandler:TSetLastError; Registered handler for the global SetLastError function


Function declarations



Global functions

function Min(A,B:LongInt):LongInt; inline;
Description: Return the minimum value of A and B
Note None applicable


function Max(A,B:LongInt):LongInt; inline;
Description: Return the maximum value of A and B
Note None applicable


function Clamp(Value,Low,High:LongInt):LongInt;
Description: To be documented
Note None applicable


function RoundUp(Value,Multiple:LongWord):LongWord;
Description: Round Value to the next highest multiple of Multiple
Note None applicable


function RoundDown(Value,Multiple:LongWord):LongWord;
Description: Round Value to the next lowest multiple of Multiple
Note None applicable


function DivRoundUp(Value,Divisor:LongInt):LongWord;
Description: To be documented
Note None applicable


function DivRoundClosest(Value,Divisor:LongInt):LongWord;
Description: To be documented
Note None applicable


function IsPowerOf2(Value:LongWord):Boolean;
Description: To be documented
Note None documented


function HIWORD(L:LongInt):Word; inline;
Description: Return the high word of L
Note None applicable


function LOWORD(L:LongInt):Word; inline;
Description: Return the low word of L
Note None applicable


function HIBYTE(W:LongInt):Byte; inline;
Description: Return the high byte of W
Note None applicable


function LOBYTE(W:LongInt):Byte; inline;
Description: Return the low byte of W
Note None applicable


function MAKELONG(A,B:LongInt):LongInt; inline;
Description: Make a longword value from A and B
Note None applicable


function MAKEWORD(A,B:LongInt):Word; inline;
Description: Make a word value from A and B
Note None applicable


function MAKELANGID(PrimaryLang,SubLang:USHORT):WORD; inline;
Description: Construct a language identifier from a primary language and a sub language
Note None applicable


function WordNtoBE(Value:Word):Word; inline;
Description: Convert word Value from native to big endian
Note These functions are simply wrappers to force the compiler to select the correct function without typecasting


function WordBEtoN(Value:Word):Word; inline;
Description: Convert word Value from big endian to native
Note These functions are simply wrappers to force the compiler to select the correct function without typecasting


function WordNtoLE(Value:Word):Word; inline;
Description: To be documented
Note These functions are simply wrappers to force the compiler to select the correct function without typecasting


function WordLEtoN(Value:Word):Word; inline;
Description: To be documented
Note These functions are simply wrappers to force the compiler to select the correct function without typecasting


function LongWordNtoBE(Value:LongWord):LongWord; inline;
Description: Convert longword Value from native to big endian
Note These functions are simply wrappers to force the compiler to select the correct function without typecasting


function LongWordBEtoN(Value:LongWord):LongWord; inline;
Description: Convert longword Value from big endian to native
Note These functions are simply wrappers to force the compiler to select the correct function without typecasting


function LongWordNtoLE(Value:LongWord):LongWord; inline;
Description: To be documented
Note These functions are simply wrappers to force the compiler to select the correct function without typecasting


function LongWordLEtoN(Value:LongWord):LongWord; inline;
Description: To be documented
Note These functions are simply wrappers to force the compiler to select the correct function without typecasting


function Int64NtoBE(const Value:Int64):Int64; inline;
Description: Convert int64 Value from native to big endian
Note These functions are simply wrappers to force the compiler to select the correct function without typecasting


function Int64BEtoN(const Value:Int64):Int64; inline;
Description: Convert int64 Value from big endian to native
Note These functions are simply wrappers to force the compiler to select the correct function without typecasting


function Int64NtoLE(const Value:Int64):Int64; inline;
Description: To be documented
Note These functions are simply wrappers to force the compiler to select the correct function without typecasting


function Int64LEtoN(const Value:Int64):Int64; inline;
Description: To be documented
Note These functions are simply wrappers to force the compiler to select the correct function without typecasting


function BCDtoBin(Value:Byte):Byte; inline;
Description: To be documented
Note None applicable


function BintoBCD(Value:Byte):Byte; inline;
Description: To be documented
Note None applicable


function GetLastError:LongWord; inline;
Description: Return the last error code for the current thread
Note None applicable


procedure SetLastError(LastError:LongWord); inline;
Description: Set the last error code for the current thread
Note None applicable


function StringHash(const Text:String):LongWord;
Description: Calculate the sum of (byte value + 1) * (position + 257) for all bytes in an uppercase string
Note Case Insensitive Hash


Conversion functions

function ErrorToString(Error:LongWord):String;
Description: Convert an error code value to a string
Note None applicable


function SysErrorToString(ErrorCode:Integer):String;
Description: Convert an error code value to a string (RTL)
Note None applicable


function BooleanToString(Value:Boolean):String;
Description: Convert a boolean value to a string
Note None applicable


function CPUArchToString(CPUArch:LongWord):String;
Description: To be documented
Note None applicable


function CPUTypeToString(CPUType:LongWord):String;
Description: Convert a CPU type constant to a string
Note None applicable


function CPUModelToString(CPUModel:LongWord):String;
Description: Convert a CPU model constant to a string
Note None applicable


function CPUIDToString(CPUID:LongWord):String;
Description: Convert a CPU Id constant to a string
Note None applicable


function CPUGroupToString(CPUGroup:LongWord):String;
Description: To be documented
Note None documented


function FPUTypeToString(FPUType:LongWord):String;
Description: Convert a FPU type constant to a string
Note None applicable


function GPUTypeToString(GPUType:LongWord):String;
Description: Convert a GPU type constant to a string
Note None applicable


function CacheTypeToString(CacheType:LongWord):String;
Description: Convert a filesystem Cache type constant to a string
Note None applicable


function BoardTypeToString(BoardType:LongWord):String;
Description: Convert a Board type constant to a string
Note None applicable


function MachineTypeToString(MachineType:LongWord):String;
Description: Convert a Machine type constant to a string
Note None applicable


function PowerIDToString(PowerID:LongWord):String;
Description: Convert a Power Id constant to a string
Note None applicable


function PowerStateToString(PowerState:LongWord):String;
Description: Convert a Power state constant to a string
Note None applicable


function ClockIDToString(ClockID:LongWord):String;
Description: Convert a Clock Id constant to a string
Note None applicable


function ClockStateToString(ClockState:LongWord):String;
Description: Convert a Clock state constant to a string
Note None applicable


function TurboIDToString(TurboID:LongWord):String;
Description: Convert a Turbo Id constant to a string
Note None applicable


function VoltageIDToString(VoltageID:LongWord):String;
Description: Convert a Voltage Id constant to a string
Note None applicable


function TemperatureIDToString(TemperatureID:LongWord):String;
Description: Convert a Temperature Id constant to a string
Note None applicable


function ColorFormatToBytes(Format:LongWord):LongWord;
Description: Convert a color format constant into the number of bytes per pixel
Format The color format constant to get bytes for (eg COLOR_FORMAT_ARGB32)
Return The number of bytes required for each pixel


function ColorFormatToString(Format:LongWord):String;
Description: To be documented
Note None applicable


function ColorFormatToMask(Format:LongWord; Reverse:Boolean):LongWord;
Description: Convert a color format constant into the mask needed for color inversion
Format The color format constant to get the mask for (eg COLOR_FORMAT_ARGB32)
Reverse If true then reverse the byte order of the mask
Return The mask required for color inversion
Note XOR the color with the returned mask to produce the inverted color

eg Result := Color xor Mask


procedure ColorDefaultToFormat(Format,Color:LongWord; Dest:Pointer; Reverse:Boolean); inline;
Description: Convert a color value in the default format to the specified format
Format The color format to convert to (eg COLOR_FORMAT_RGB24)
Color The color to be converted (Must be in the default format - See: COLOR_FORMAT_DEFAULT)
Dest Pointer to the destination buffer for the converted color
Reverse If true then reverse the byte order of the destination after conversion


procedure ColorFormatToDefault(Format:LongWord; Source:Pointer; var Color:LongWord; Reverse:Boolean); inline;
Description: Convert a color value in the specified format to the default format
Format The color format to convert from (eg COLOR_FORMAT_RGB24)
Source Pointer to the source buffer for the color to convert
Color The converted color (Will be returned in the default format - See: COLOR_FORMAT_DEFAULT)
Reverse If true then reverse the byte order of the color after conversion


procedure ColorDefaultAltToFormat(Format,Color:LongWord; Dest:Pointer; Reverse:Boolean);
Description: Convert a color value in the default format to the specified format (Alternate)
Format The color format to convert to (eg COLOR_FORMAT_RGB24)
Color The color to be converted (Must be in the default format - See: COLOR_FORMAT_DEFAULT)
Dest Pointer to the destination buffer for the converted color
Reverse If true then reverse the byte order of the destination before conversion (Differs from ColorDefaultToFormat)
Note Not inline


procedure ColorFormatAltToDefault(Format:LongWord; Source:Pointer; var Color:LongWord; Reverse:Boolean); inline;
Description: Convert a color value in the specified format to the default format (Alternate)
Format The color format to convert from (eg COLOR_FORMAT_RGB24)
Source Pointer to the source buffer for the color to convert
Color The converted color (Will be returned in the default format - See: COLOR_FORMAT_DEFAULT)
Reverse If true then reverse the byte order of the source before conversion (Differs from ColorFormatToDefault)


procedure PixelsDefaultToFormat(Format:LongWord; Source,Dest:Pointer; Count:LongWord; Reverse:Boolean);
Description: Convert one or more pixels in the default color format to the specified format
Format The color format to convert to (eg COLOR_FORMAT_RGB24)
Source Pointer to the source buffer for the pixels to convert
Dest Pointer to the destination buffer for the converted pixels
Count The number of pixels to be converted
Reverse If true then reverse the byte order of the destination after conversion


procedure PixelsFormatToDefault(Format:LongWord; Source,Dest:Pointer; Count:LongWord; Reverse:Boolean);
Description: Convert one or more pixels in the specified color format to the default format
Format The color format to convert from (eg COLOR_FORMAT_RGB24)
Source Pointer to the source buffer for the pixels to convert
Dest Pointer to the destination buffer for the converted pixels
Count The number of pixels to be converted
Reverse If true then reverse the byte order of the destination after conversion


procedure PixelsDefaultAltToFormat(Format:LongWord; Source,Dest:Pointer; Count:LongWord; Reverse:Boolean);
Description: Convert one or more pixels in the default color format to the specified format (Alternate)
Format The color format to convert to (eg COLOR_FORMAT_RGB24)
Source Pointer to the source buffer for the pixels to convert
Dest Pointer to the destination buffer for the converted pixels
Count The number of pixels to be converted
Reverse If true then reverse the byte order of the source before conversion (Differs from PixelsDefaultToFormat)


procedure PixelsFormatAltToDefault(Format:LongWord; Source,Dest:Pointer; Count:LongWord; Reverse:Boolean);
Description: Convert one or more pixels in the specified color format to the default format (Alternate)
Format The color format to convert from (eg COLOR_FORMAT_RGB24)
Source Pointer to the source buffer for the pixels to convert
Dest Pointer to the destination buffer for the converted pixels
Count The number of pixels to be converted
Reverse If true then reverse the byte order of the source before conversion (Differs from PixelsFormatToDefault)


function LogLevelToLoggingSeverity(LogLevel:LongWord):LongWord;
Description: Convert a log level constant to a severity level
Note None applicable


Return to Unit Reference