SCHEMA ARINC_653_Schema; USE FROM Basic_Types; (*"DecOrHexValueType" pattern value="[+-]{0,1}[0-9]+|[+-]{0,1}0x[0-9a-fA-F]+" *) TYPE DecOrHexValueType = STRING; END_TYPE; (*"IdentifierValueType" Restricts indentifiers to hex or decimal numbers *) TYPE IdentifierValueType = DecOrHexValueType; END_TYPE; (*"NameType" A 1..30 character string *) TYPE NameType = STRING ( 30 ); END_TYPE; ENTITY ARINC_653_Object; END_ENTITY; (*"ModuleActionType" The actions to take when module level errors occur. *) TYPE ModuleActionType = ENUMERATION OF ( IGNORE, SHUTDOWN, RESET ); END_TYPE; (*"PartitionActionType" The actions to take when partition level errors occur. *) TYPE PartitionActionType = ENUMERATION OF ( IGNORE, IDLE, WARM_START, COLD_START ); END_TYPE; ENTITY Error_ID_Type SUBTYPE OF ( ARINC_653_Object ); ErrorIdentifier : IdentifierValueType; Description : OPTIONAL NameType; PartitionAction : OPTIONAL PartitionActionType; ModuleAction : OPTIONAL ModuleActionType; END_ENTITY; (*"Error_ID_Action_Type" The error code and the action to taken *) ENTITY Error_ID_Action_Type SUBTYPE OF ( Error_ID_Type ); END_ENTITY; (*"ErrorLevelType" MODULE, PARTITION, or PROCESS level error. *) TYPE ErrorLevelType = ENUMERATION OF ( MODULE, PARTITION, PROCESS ); END_TYPE; (*"ErrorCodeType" The predefined ARINC 653 process errors. *) TYPE ErrorCodeType = ENUMERATION OF ( DEADLINE_MISSED, APPLICATION_ERROR, NUMERIC_ERROR, ILLEGAL_REQUEST, STACK_OVERFLOW, MEMORY_VIOLATION, HARDWARE_FAULT, POWER_FAILURE ); END_TYPE; (*"Error_ID_Level_Type" The mapping of error IDs to the module, partition or process level. *) ENTITY Error_ID_Level_Type SUBTYPE OF ( Error_ID_Type ); ErrorLevel : ErrorLevelType; ErrorCode : OPTIONAL ErrorCodeType; END_ENTITY; TYPE Error_ID_Type_Iterator = Iterator; END_TYPE; TYPE Error_ID_Type_List = LIST OF Error_ID_Level_Type; END_TYPE; ENTITY Error_ID_Type_List_Package; iterator : Error_ID_Type_Iterator; List_ : Error_ID_Type_List; END_ENTITY; ENTITY System_State_Entry_Type SUBTYPE OF ( ARINC_653_Object ); Error_ID_Action : Error_ID_Type_List; SystemState : IdentifierValueType; Description : OPTIONAL NameType; END_ENTITY; TYPE System_State_Entry_Type_Iterator = Iterator; END_TYPE; TYPE System_State_Entry_Type_List = LIST OF System_State_Entry_Type; END_TYPE; ENTITY System_State_Entry_Type_List_Package; iterator : System_State_Entry_Type_Iterator; List_ : System_State_Entry_Type_List; END_ENTITY; (*"SysHM_Ext_Type" Provider UNIQUE FOR Sys_HM level attributes.Implementer UNIQUE extension root.Subtypes can be defined specifically BY implementer *) ENTITY SysHM_Ext_Type ABSTRACT SUPERTYPE SUBTYPE OF ( ARINC_653_Object ); END_ENTITY; TYPE SysHM_Ext_Type_Iterator = Iterator; END_TYPE; TYPE SysHM_Ext_Type_List = LIST OF SysHM_Ext_Type; END_TYPE; ENTITY SysHM_Ext_Type_List_Package; iterator : SysHM_Ext_Type_Iterator; List_ : SysHM_Ext_Type_List; END_ENTITY; (*"System_HM_TableType" The system states and error codes are mapped to the Module, Partition or Process level. *) ENTITY System_HM_TableType SUBTYPE OF ( ARINC_653_Object ); System_State_Entry : System_State_Entry_Type_List; SysHM_Ext : SysHM_Ext_Type_List; END_ENTITY; (*"Mod_HM_Ext_Type" Provider UNIQUE FOR Mod_HM level attributes.Implementer UNIQUE extension root.Subtypes can be defined specifically BY implementer *) ENTITY Mod_HM_Ext_Type ABSTRACT SUPERTYPE SUBTYPE OF ( ARINC_653_Object ); END_ENTITY; TYPE Mod_HM_Ext_Type_Iterator = Iterator; END_TYPE; TYPE Mod_HM_Ext_Type_List = LIST OF Mod_HM_Ext_Type; END_TYPE; ENTITY Mod_HM_Ext_Type_List_Package; iterator : Mod_HM_Ext_Type_Iterator; List_ : Mod_HM_Ext_Type_List; END_ENTITY; (*"Module_HM_Type" System state and error codes are mapped to actions taken at the module level. *) ENTITY Module_HM_Type SUBTYPE OF ( ARINC_653_Object ); System_State_Entry : System_State_Entry_Type_List; Mod_HM_Ext : Mod_HM_Ext_Type_List; ModuleCallback : OPTIONAL NameType; END_ENTITY; (*"PortExt_Type" Provider Unique for PortType level attributes. Implementer unique extension root. Subtypes can be defined specifically by implementers *) ENTITY PortExt_Type ABSTRACT SUPERTYPE SUBTYPE OF ( ARINC_653_Object ); END_ENTITY; TYPE PortExt_Type_Iterator = Iterator; END_TYPE; TYPE PortExt_Type_List = LIST OF PortExt_Type; END_TYPE; ENTITY PortExt_Type_List_Package; iterator : PortExt_Type_Iterator; List_ : PortExt_Type_List; END_ENTITY; TYPE DirectionType = ENUMERATION OF ( SOURCE, DESTINATION ); END_TYPE; (*"PortType" The base port attributes of both sampling and queuing ports *) ENTITY PortType SUBTYPE OF ( ARINC_653_Object ); PortExt : PortExt_Type_List; Name : NameType; MaxMessageSize : DecOrHexValueType; Direction : DirectionType; END_ENTITY; (*"SamplingPortType" The configurable attributes of the sampling port. *) ENTITY SamplingPortType SUBTYPE OF ( PortType ); RefreshRateSeconds : REAL; END_ENTITY; (*"ProcExt_Type" Provider Unique for ProcType level attributes. Implementer unique extension root. Subtypes can be defined specifically by implementers *) ENTITY ProcExt_Type ABSTRACT SUPERTYPE SUBTYPE OF ( ARINC_653_Object ); END_ENTITY; TYPE ProcExt_Type_Iterator = Iterator; END_TYPE; TYPE ProcExt_Type_List = LIST OF ProcExt_Type; END_TYPE; ENTITY ProcExt_Type_List_Package; iterator : ProcExt_Type_Iterator; List_ : ProcExt_Type_List; END_ENTITY; ENTITY ProcessType SUBTYPE OF ( ARINC_653_Object ); ProcExt : ProcExt_Type_List; Name : OPTIONAL NameType; StackSize : OPTIONAL DecOrHexValueType; END_ENTITY; (*"QueuingPortType" The configurable attributes of the queuing port. *) ENTITY QueuingPortType SUBTYPE OF ( PortType ); MaxNbMessages : INTEGER; END_ENTITY; TYPE SamplingPortType_Iterator = Iterator; END_TYPE; TYPE SamplingPortType_List = LIST OF SamplingPortType; END_TYPE; ENTITY SamplingPortType_List_Package; iterator : SamplingPortType_Iterator; List_ : SamplingPortType_List; END_ENTITY; TYPE QueuingPortType_Iterator = Iterator; END_TYPE; TYPE QueuingPortType_List = LIST OF QueuingPortType; END_TYPE; ENTITY QueuingPortType_List_Package; iterator : QueuingPortType_Iterator; List_ : QueuingPortType_List; END_ENTITY; TYPE ProcessType_Iterator = Iterator; END_TYPE; TYPE ProcessType_List = LIST OF ProcessType; END_TYPE; ENTITY ProcessType_List_Package; iterator : ProcessType_Iterator; List_ : ProcessType_List; END_ENTITY; (*"PartitionExt_Type" Provider UNIQUE FOR Partition level attributes.Implementer UNIQUE extension root.Subtypes can be defined specifically BY implementer *) ENTITY PartitionExt_Type ABSTRACT SUPERTYPE SUBTYPE OF ( ARINC_653_Object ); END_ENTITY; TYPE PartitionExt_Type_Iterator = Iterator; END_TYPE; TYPE PartitionExt_Type_List = LIST OF PartitionExt_Type; END_TYPE; ENTITY PartitionExt_Type_List_Package; iterator : PartitionExt_Type_Iterator; List_ : PartitionExt_Type_List; END_ENTITY; TYPE CriticalityType = ENUMERATION OF ( LEVEL_A, LEVEL_B, LEVEL_C, LEVEL_D, LEVEL_E ); END_TYPE; (*"PartitionType" The system and application partition type definition. *) ENTITY PartitionType SUBTYPE OF ( ARINC_653_Object ); (*"PartitionType.Sampling_Port" The sampling ports for this partition. *) Sampling_Port : SamplingPortType_List; (*"PartitionType.Queuing_Port" The queuing ports for this partition. *) Queuing_Port : QueuingPortType_List; (*"PartitionType.Process" Optional process attributes for this partition. *) Process : ProcessType_List; (*"PartitionType.PartitionExt" Specific Partition extensions. *) PartitionExt : PartitionExt_Type_List; PartitionIdentifier : IdentifierValueType; PartitionName : OPTIONAL NameType; (*"PartitionType.Criticality" default = "LEVEL_A" *) Criticality : CriticalityType; (*"PartitionType.SystemPartition" default = "False" *) SystemPartition : BOOLEAN; EntryPoint : NameType; END_ENTITY; TYPE PartitionType_Iterator = Iterator; END_TYPE; TYPE PartitionType_List = LIST OF PartitionType; END_TYPE; ENTITY PartitionType_List_Package; iterator : PartitionType_Iterator; List_ : PartitionType_List; END_ENTITY; (*"Memory_Requirements" A single partition can have multiple mapping requirements. Defines memory bounds of the partition, with appropriate code/data segregation. *) ENTITY Memory_Requirements SUBTYPE OF ( ARINC_653_Object ); regionName : OPTIONAL NameType; memory_type : STRING; sizeBytes : DecOrHexValueType; physicalAddress : OPTIONAL DecOrHexValueType; memoryAccess : STRING; END_ENTITY; (*"Memory_Ext_Type" Implementer unique extension root. Subtypes can be defined specifically by implementers *) ENTITY Memory_Ext_Type SUBTYPE OF ( ARINC_653_Object ); END_ENTITY; TYPE Memory_Ext_Type_Iterator = Iterator; END_TYPE; TYPE Memory_Ext_Type_List = LIST OF Memory_Ext_Type; END_TYPE; ENTITY Memory_Ext_Type_List_Package; iterator : Memory_Ext_Type_Iterator; List_ : Memory_Ext_Type_List; END_ENTITY; ENTITY Partition_Memory_Element SUBTYPE OF ( ARINC_653_Object ); Memory_Requirements : Memory_Requirements; Memory_Ext : Memory_Ext_Type_List; PartitionIdentifier : IdentifierValueType; PartitionName : OPTIONAL NameType; END_ENTITY; TYPE Partition_Memory_Element_Iterator = Iterator; END_TYPE; TYPE Partition_Memory_Element_List = LIST OF Partition_Memory_Element; END_TYPE; ENTITY Partition_Memory_Element_List_Package; iterator : Partition_Memory_Element_Iterator; List_ : Partition_Memory_Element_List; END_ENTITY; (*"Partition_Sched_Ext_Type" Implementer unique extension root. Subtypes can be defined specifically by implementers *) ENTITY Partition_Sched_Ext_Type ABSTRACT SUPERTYPE SUBTYPE OF ( ARINC_653_Object ); END_ENTITY; TYPE Partition_Sched_Ext_Type_Iterator = Iterator; END_TYPE; TYPE Partition_Sched_Ext_Type_List = LIST OF Partition_Sched_Ext_Type; END_TYPE; ENTITY Partition_Sched_Ext_Type_List_Package; iterator : Partition_Sched_Ext_Type_Iterator; List_ : Partition_Sched_Ext_Type_List; END_ENTITY; ENTITY Window_Schedule_Element SUBTYPE OF ( ARINC_653_Object ); WindowIdentifier : DecOrHexValueType; WindowStartSeconds : REAL; WindowDurationSeconds : REAL; (*"Window_Schedule_Element.PartitionPeriodStart" default="false" *) PartitionPeriodStart : BOOLEAN; END_ENTITY; TYPE Window_Schedule_Element_Iterator = Iterator; END_TYPE; TYPE Window_Schedule_Element_List = LIST OF Window_Schedule_Element; END_TYPE; ENTITY Window_Schedule_Element_List_Package; iterator : Window_Schedule_Element_Iterator; List_ : Window_Schedule_Element_List; END_ENTITY; (*"Window_Sched_Ext_Type" Implementer unique extension root. Subtypes can be defined specifically by implementers *) ENTITY Window_Sched_Ext_Type ABSTRACT SUPERTYPE SUBTYPE OF ( ARINC_653_Object ); END_ENTITY; TYPE Window_Sched_Ext_Type_Iterator = Iterator; END_TYPE; TYPE Window_Sched_Ext_Type_List = LIST OF Window_Sched_Ext_Type; END_TYPE; ENTITY Window_Sched_Ext_Type_List_Package; iterator : Window_Sched_Ext_Type_Iterator; List_ : Window_Sched_Ext_Type_List; END_ENTITY; ENTITY Partition_Schedule_Element SUBTYPE OF ( ARINC_653_Object ); (*"Partition_Schedule_Element.Window_Schedule" The allocation of the partition to partition windows within a major frame. *) Window_Schedule : Window_Schedule_Element_List; Window_Sched_Ext : Window_Sched_Ext_Type_List; PartitionIdentifier : IdentifierValueType; PartitionName : OPTIONAL NameType; PeriodSeconds : REAL; PeriodDurationSeconds : REAL; END_ENTITY; TYPE Partition_Schedule_Element_Iterator = Iterator; END_TYPE; TYPE Partition_Schedule_Element_List = LIST OF Partition_Schedule_Element; END_TYPE; ENTITY Partition_Schedule_Element_List_Package; iterator : Partition_Schedule_Element_Iterator; List_ : Partition_Schedule_Element_List; END_ENTITY; (*"Module_Schedule_Type" The scheduling requirements for the module *) ENTITY Module_Schedule_Type SUBTYPE OF ( ARINC_653_Object ); (*"Module_Schedule_Type.Partition_Schedule" The scheduling requirements for partitions within the module. *) Partition_Schedule : Partition_Schedule_Element_List; Partition_Sched_Ext : Partition_Sched_Ext_Type_List; MajorFrameSeconds : REAL; END_ENTITY; (*"Part_HM_Ext_Type" Provider UNIQUE FOR Partition_HM level attributes.Implementer UNIQUE extension root.Subtypes can be defined specifically BY implementer *) ENTITY Part_HM_Ext_Type ABSTRACT SUPERTYPE SUBTYPE OF ( ARINC_653_Object ); END_ENTITY; TYPE Part_HM_Ext_Type_Iterator = Iterator; END_TYPE; TYPE Part_HM_Ext_Type_List = LIST OF Part_HM_Ext_Type; END_TYPE; ENTITY Part_HM_Ext_Type_List_Package; iterator : Part_HM_Ext_Type_Iterator; List_ : Part_HM_Ext_Type_List; END_ENTITY; (*"Partition_HM_Type" Error codes are mapped to actions taken at the partition level. *) ENTITY Partition_HM_Type SUBTYPE OF ( ARINC_653_Object ); (*"System_State_Entry" The state of the system when the error occurred. *) System_State_Entry : System_State_Entry_Type_List; Part_HM_Ext : Part_HM_Ext_Type_List; PartitionIdentifier : IdentifierValueType; PartitionName : OPTIONAL NameType; PartitionCallback : OPTIONAL NameType; END_ENTITY; TYPE Partition_HM_Type_Iterator = Iterator; END_TYPE; TYPE Partition_HM_Type_List = LIST OF Partition_HM_Type; END_TYPE; ENTITY Partition_HM_Type_List_Package; iterator : Partition_HM_Type_Iterator; List_ : Partition_HM_Type_List; END_ENTITY; (*"Pseudo_Partition" A partition that is external to the module *) ENTITY Pseudo_Partition SUBTYPE OF ( ARINC_653_Object ); Name : OPTIONAL NameType; PhysicalAddress : OPTIONAL DecOrHexValueType; partition_procedure : OPTIONAL NameType; END_ENTITY; (*"Standard_Partition" A partition within the module. *) ENTITY Standard_Partition SUBTYPE OF ( ARINC_653_Object ); PartitionIdentifier : IdentifierValueType; PartitionName : OPTIONAL NameType; PortName : NameType; PhysicalAddress : OPTIONAL DecOrHexValueType; END_ENTITY; TYPE PortMappingType_Choice_Type = ENUMERATION OF ( Pseudo_Partition_Choice, Standard_Partition_Choice ); END_TYPE; ENTITY Pseudo_Partition_Choice_Type; pseudo_partition : Pseudo_Partition; END_ENTITY; ENTITY Standard_Partition_Choice_Type; standard_partition : Standard_Partition; END_ENTITY; ENTITY PortMappingType_Choice_Union; pseudo_partition_Choice : Pseudo_Partition_Choice_Type; standard_partition_Choice : Standard_Partition_Choice_Type; END_ENTITY; ENTITY PortMappingType_Choice; type_of_PortMappingType_Choice : PortMappingType_Choice_Type; union : PortMappingType_Choice_Union; END_ENTITY; (*"PortMap_Ext_Type" Provider UNIQUE FOR PortMap level attributes.Implementer UNIQUE extension root.Subtypes can be defined specifically BY implementer *) ENTITY PortMap_Ext_Type ABSTRACT SUPERTYPE SUBTYPE OF ( ARINC_653_Object ); END_ENTITY; TYPE PortMap_Ext_Type_Iterator = Iterator; END_TYPE; TYPE PortMap_Ext_Type_List = LIST OF PortMap_Ext_Type; END_TYPE; ENTITY PortMap_Ext_Type_List_Package; iterator : PortMap_Ext_Type_Iterator; List_ : PortMap_Ext_Type_List; END_ENTITY; (*"PortMappingType" The port communication mapping. *) ENTITY PortMappingType SUBTYPE OF ( ARINC_653_Object ); choice : PortMappingType_Choice; PortMap_Ext : PortMap_Ext_Type_List; END_ENTITY; TYPE PortMappingType_Iterator = Iterator; END_TYPE; TYPE PortMappingType_List = LIST OF PortMappingType; END_TYPE; ENTITY PortMappingType_List_Package; iterator : PortMappingType_Iterator; List_ : PortMappingType_List; END_ENTITY; (*"Channel" Globally identifies a channel connected to a module. *) ENTITY Channel SUBTYPE OF ( ARINC_653_Object ); (*"Channel.Source" The source port for the channel. *) Source : PortMappingType; (*"Channel.Destination" The destination ports for the channel. *) Destination : PortMappingType_List; ChannelIdentifier : IdentifierValueType; ChannelName : OPTIONAL NameType; END_ENTITY; TYPE Channel_Iterator = Iterator; END_TYPE; TYPE Channel_List = LIST OF Channel; END_TYPE; ENTITY Channel_List_Package; iterator : Channel_Iterator; List_ : Channel_List; END_ENTITY; (*"ModExt_Type" Provider Unique for Module level attributes. Implementer unique extension root. Subtypes can be defined specifically by implementers *) ENTITY ModExt_Type ABSTRACT SUPERTYPE SUBTYPE OF ( ARINC_653_Object ); END_ENTITY; TYPE ModExt_Type_Iterator = Iterator; END_TYPE; TYPE ModExt_Type_List = LIST OF ModExt_Type; END_TYPE; ENTITY ModExt_Type_List_Package; iterator : ModExt_Type_Iterator; List_ : ModExt_Type_List; END_ENTITY; (*"ARINC_653_Module" Schema for configuring an ARINC 653 instance *) ENTITY ARINC_653_Module SUBTYPE OF ( ARINC_653_Object ); (*"ARINC_653_Module.System_HM_List" The List that maps the system state and error IDs to an error level. *) System_HM_List : System_HM_TableType; (*"ARINC_653_Module.Module_HM_List" The actions to take when a module level error occurs. *) Module_HM_List : Module_HM_Type; (*"ARINC_653_Module.Partition" The application space and its ports. Where the Applications resides. Uses ARINC 653 API *) Partition : PartitionType_List; (*"ARINC_653_Module.Partition_Memory" Partition memory requirements. *) Partition_Memory : Partition_Memory_Element_List; (*"ARINC_653_Module.Module_Schedule" The scheduling requirements for the module *) Module_Schedule : Module_Schedule_Type; (*"ARINC_653_Module.Partition_HM_List"The actions to take when a partition level error occurs. *) Partition_HM_List : Partition_HM_Type_List; (*"ARINC_653_Module.Connection_List" A List of channels and their port mappings *) Connection_List : Channel_List; (*"ARINC_653_Module.ModExt" Implementer specific extensions *) ModExt : ModExt_Type_List; ModuleName : OPTIONAL NameType; ModuleVersion : OPTIONAL NameType; ModuleId : OPTIONAL IdentifierValueType; END_ENTITY; END_SCHEMA;