<?xml version="1.0" encoding="UTF-8"?>
<!-- ***************************************************************************************************
                                    Schema templates for XML Mast Model File
												(Version MAST 2.0.0 )
													(MAST Project)

	By: 	Cesar Cuevas Cuesta (cuevasce@unican.es) 
			Jose M. Drake Moyano (drakej@unican.es)
            Patricia Lopez Martinez (lopezpa@unican.es)
           

    Grupo de Computadores y Tiempo Real (CTR)
    Universidad de Cantabria

	Santander, 16-Marzo-2010
********************************************************************************************************-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mast_mdl="http://mast.unican.es/xmlmast/model" targetNamespace="http://mast.unican.es/xmlmast/model" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<!-- SIMPLE TYPES -->
	<xs:simpleType name="Identifier">
		<xs:restriction base="xs:NCName">
			<xs:pattern value="([a-z]|[A-Z])([a-z]|[A-Z]|[0-9]|.|_)*"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Identifier_Ref">
		<xs:restriction base="mast_mdl:Identifier"/>
	</xs:simpleType>
	<xs:simpleType name="Identifier_Ref_List">
		<xs:restriction base="xs:NMTOKENS"/>
	</xs:simpleType>
	<xs:simpleType name="Priority">
		<xs:restriction base="xs:nonNegativeInteger"/>
	</xs:simpleType>
	<xs:simpleType name="Interrupt_Priority">
		<xs:restriction base="xs:nonNegativeInteger"/>
	</xs:simpleType>
	<xs:simpleType name="Preemption_Level">
		<xs:restriction base="xs:nonNegativeInteger"/>
	</xs:simpleType>
	<xs:simpleType name="Time">
		<xs:restriction base="xs:double">
			<xs:minInclusive value="0.0"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Normalized_Execution_Time">
		<xs:restriction base="xs:double">
			<xs:minInclusive value="0.0"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Absolute_Time">
		<xs:restriction base="xs:double">
			<xs:minInclusive value="0.0"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Bit_Count">
		<xs:restriction base="xs:nonNegativeInteger"/>
	</xs:simpleType>
	<xs:simpleType name="Throughput">
		<xs:restriction base="xs:double">
			<xs:minInclusive value="0.0"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Float">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="Natural">
		<xs:restriction base="xs:nonNegativeInteger"/>
	</xs:simpleType>
	<xs:simpleType name="Positive">
		<xs:restriction base="xs:positiveInteger"/>
	</xs:simpleType>
	<xs:simpleType name="Percentage">
		<xs:restriction base="xs:float">
			<xs:minInclusive value="0.0"/>
			<xs:maxInclusive value="100.0"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Assertion">
		<xs:restriction base="xs:string">
			<xs:enumeration value="YES"/>
			<xs:enumeration value="NO"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Date_Time">
		<xs:restriction base="xs:dateTime"/>
	</xs:simpleType>
	<xs:simpleType name="Pathname">
		<xs:restriction base="xs:string"/>
	</xs:simpleType>
	<xs:simpleType name="Transmission_Type">
		<xs:restriction base="xs:string">
			<xs:enumeration value="SIMPLEX"/>
			<xs:enumeration value="HALF_DUPLEX"/>
			<xs:enumeration value="FULL_DUPLEX"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Distribution_Type">
		<xs:restriction base="xs:string">
			<xs:enumeration value="UNIFORM"/>
			<xs:enumeration value="POISSON"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Request_Policy_Type">
		<xs:restriction base="xs:string">
			<xs:enumeration value="PRIORITY"/>
			<xs:enumeration value="FIFO"/>
			<xs:enumeration value="LIFO"/>
			<xs:enumeration value="SCAN"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Delivery_Policy_Type">
		<xs:restriction base="xs:string">
			<xs:enumeration value="SCAN"/>
			<xs:enumeration value="RANDOM"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Queueing_Policy_Type">
		<xs:restriction base="xs:string">
			<xs:enumeration value="FIFO"/>
			<xs:enumeration value="PRIORITY"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Priority_Inheritance_Protocol">
		<xs:restriction base="xs:string">
			<xs:enumeration value="STRICT"/>
			<xs:enumeration value="POSIX"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- TIMING OBJECTS -->
	<xs:complexType name="Clock_Synchronization_Object">
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Precision" type="mast_mdl:Time" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Ticker">
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Max_Overhead" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Overhead" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Min_Overhead" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Period" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Is_Locally_Synchronized" type="mast_mdl:Assertion" use="optional"/>
		<xs:attribute name="Precision" type="mast_mdl:Time" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Alarm_Clock">
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Max_Overhead" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Overhead" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Min_Overhead" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Is_Locally_Synchronized" type="mast_mdl:Assertion" use="optional"/>
		<xs:attribute name="Precision" type="mast_mdl:Time" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Timer_Ref">
		<xs:attribute name="Name" type="mast_mdl:Identifier_Ref"/>
	</xs:complexType>
	<!--  PROCESSING RESOURCES -->
	<!-- Computing resources -->
	<xs:complexType name="Regular_Processor">
		<xs:sequence minOccurs="0" maxOccurs="unbounded">
			<xs:element name="Timer" type="mast_mdl:Timer_Ref"/>
		</xs:sequence>
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Speed_Factor" type="mast_mdl:Float" use="optional"/>
		<xs:attribute name="System_Timer" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Synchronization_Source" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Max_Interrupt_Priority" type="mast_mdl:Interrupt_Priority" use="optional"/>
		<xs:attribute name="Min_Interrupt_Priority" type="mast_mdl:Interrupt_Priority" use="optional"/>
		<xs:attribute name="Worst_ISR_Switch" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_ISR_Switch" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Best_ISR_Switch" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
	</xs:complexType>
	<!-- Networks -->
	<xs:complexType name="Packet_Based_Network">
		<xs:sequence minOccurs="0">
			<xs:choice maxOccurs="unbounded">
				<xs:element name="Packet_Driver" type="mast_mdl:Packet_Driver"/>
				<xs:element name="Character_Packet_Driver" type="mast_mdl:Character_Packet_Driver"/>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Speed_Factor" type="mast_mdl:Float" use="optional"/>
		<xs:attribute name="Synchronization_Source" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Throughput" type="mast_mdl:Throughput" use="optional"/>
		<xs:attribute name="Transmission_Kind" type="mast_mdl:Transmission_Type" use="optional"/>
		<xs:attribute name="Max_Blocking" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Max_Packet_Size" type="mast_mdl:Bit_Count" use="optional"/>
		<xs:attribute name="Min_Packet_Size" type="mast_mdl:Bit_Count" use="optional"/>
	</xs:complexType>
	<xs:complexType name="RTEP_Network">
		<xs:sequence minOccurs="0">
			<xs:element name="RTEP_Packet_Driver" type="mast_mdl:RTEP_Packet_Driver" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Speed_Factor" type="mast_mdl:Float" use="optional"/>
		<xs:attribute name="Synchronization_Source" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Throughput" type="mast_mdl:Throughput" use="optional"/>
		<xs:attribute name="Transmission_Kind" type="mast_mdl:Transmission_Type" use="optional"/>
		<xs:attribute name="Max_Blocking" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Max_Packet_Size" type="mast_mdl:Bit_Count" use="optional"/>
		<xs:attribute name="Min_Packet_Size" type="mast_mdl:Bit_Count" use="optional"/>
		<xs:attribute name="Number_Of_Stations" type="mast_mdl:Positive" use="required"/>
		<xs:attribute name="Token_Delay" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Failure_Timeout" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Token_Transmission_Retries" type="mast_mdl:Natural" use="optional"/>
		<xs:attribute name="Packet_Transmission_Retries" type="mast_mdl:Natural" use="optional"/>
		<xs:attribute name="Arbitration_Token_Size" type="mast_mdl:Bit_Count" use="optional"/>
		<xs:attribute name="Transmitt_Token_Size" type="mast_mdl:Bit_Count" use="optional"/>
	</xs:complexType>
	<xs:complexType name="AFDX_Link">
		<xs:sequence minOccurs="0">
			<xs:choice maxOccurs="unbounded">
				<xs:element name="Packet_Driver" type="mast_mdl:Packet_Driver"/>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Speed_Factor" type="mast_mdl:Float" use="optional"/>
		<xs:attribute name="Synchronization_Source" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Throughput" type="mast_mdl:Throughput" use="optional"/>
		<xs:attribute name="Max_Packet_Size" type="mast_mdl:Bit_Count" use="optional"/>
		<xs:attribute name="Min_Packet_Size" type="mast_mdl:Bit_Count" use="optional"/>
		<xs:attribute name="Max_HW_Tx_Latency" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Avg_HW_Tx_Latency" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Min_HW_Tx_Latency" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Max_HW_Rx_Latency" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Avg_HW_Rx_Latency" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Min_HW_Rx_Latency" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Ethernet_Overhead" type="mast_mdl:Bit_Count" fixed="180"/>
		<xs:attribute name="Protocol_Overhead" type="mast_mdl:Bit_Count" fixed="376"/>
	</xs:complexType>
	<!-- Drivers-->
	<xs:complexType name="Packet_Driver">
		<xs:attribute name="Packet_Send_Operation" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Packet_Receive_Operation" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Packet_Server" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Message_Partitioning" type="mast_mdl:Assertion" use="optional"/>
		<xs:attribute name="High_Utilization_Mode" type="mast_mdl:Assertion" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Character_Packet_Driver">
		<xs:attribute name="Packet_Send_Operation" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Packet_Receive_Operation" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Character_Send_Operation" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Character_Receive_Operation" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Packet_Server" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Character_Server" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Character_Transmission_Time" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Message_Partitioning" type="mast_mdl:Assertion" use="optional"/>
		<xs:attribute name="High_Utilization_Mode" type="mast_mdl:Assertion" use="optional"/>
	</xs:complexType>
	<xs:complexType name="RTEP_Packet_Driver">
		<xs:attribute name="Packet_Send_Operation" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Packet_Receive_Operation" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Packet_Server" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Packet_Interrupt_Server" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Packet_ISR_Operation" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Token_Check_Operation" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Token_Manage_Operation" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Packet_Discard_Operation" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Token_Retransmission_Operation" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Packet_Retransmission_Operation" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Message_Partitioning" type="mast_mdl:Assertion" use="optional"/>
		<xs:attribute name="High_Utilization_Mode" type="mast_mdl:Assertion" use="optional"/>
	</xs:complexType>
	<!--Switches & routers  -->
	<xs:complexType name="Regular_Switch">
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Speed_Factor" type="mast_mdl:Float" use="optional"/>
		<xs:attribute name="Synchronization_Source" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Max_Fixed_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Fixed_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Min_Fixed_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Max_Variable_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Variable_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Min_Variable_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Max_Delivery_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Delivery_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Min_Delivery_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
	</xs:complexType>
	<xs:complexType name="AFDX_Switch">
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Speed_Factor" type="mast_mdl:Float" use="optional"/>
		<xs:attribute name="Synchronization_Source" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Max_Fixed_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Fixed_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Min_Fixed_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Max_Variable_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Variable_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Min_Variable_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Max_Delivery_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Delivery_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Min_Delivery_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Regular_Router">
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Speed_Factor" type="mast_mdl:Float" use="optional"/>
		<xs:attribute name="Synchronization_Source" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Max_Fixed_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Fixed_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Min_Fixed_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Max_Variable_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Variable_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Min_Variable_Fork_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Max_Delivery_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Delivery_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Min_Delivery_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Max_Fixed_Branch_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Fixed_Branch_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Min_Fixed_Branch_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Max_Variable_Branch_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Variable_Branch_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Min_Variable_Branch_Latency" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
	</xs:complexType>
	<!-- SCHEDULERS -->
	<xs:complexType name="Primary_Scheduler">
		<xs:choice>
			<xs:element name="Fixed_Priority_Policy" type="mast_mdl:Fixed_Priority_Policy"/>
			<xs:element name="EDF_Policy" type="mast_mdl:EDF_Policy"/>
			<xs:element name="FP_Packet_Based_Policy" type="mast_mdl:FP_Packet_Based_Policy"/>
			<xs:element name="Timetable_Driven_Policy" type="mast_mdl:Timetable_Driven_Policy"/>
			<xs:element name="Timetable_Driven_Packet_Based_Policy" type="mast_mdl:Timetable_Driven_Packet_Based_Policy"/>
			<xs:element name="AFDX_Policy" type="mast_mdl:AFDX_Policy"/>
		</xs:choice>
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Host" type="mast_mdl:Identifier_Ref" use="required"/>
	</xs:complexType>
	<xs:complexType name="Secondary_Scheduler">
		<xs:choice>
			<xs:element name="Fixed_Priority_Policy" type="mast_mdl:Fixed_Priority_Policy"/>
			<xs:element name="EDF_Policy" type="mast_mdl:EDF_Policy"/>
			<xs:element name="FP_Packet_Based_Policy" type="mast_mdl:FP_Packet_Based_Policy"/>
			<xs:element name="Timetable_Driven_Policy" type="mast_mdl:Timetable_Driven_Policy"/>
			<xs:element name="Timetable_Driven_Packet_Based_Policy" type="mast_mdl:Timetable_Driven_Packet_Based_Policy"/>
			<xs:element name="AFDX_Policy" type="mast_mdl:AFDX_Policy"/>
		</xs:choice>
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Host" type="mast_mdl:Identifier_Ref" use="required"/>
	</xs:complexType>
	<!-- Scheduling policies -->
	<xs:complexType name="Fixed_Priority_Policy">
		<xs:attribute name="Worst_Context_Switch" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Context_Switch" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Best_Context_Switch" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Max_Priority" type="mast_mdl:Priority" use="optional"/>
		<xs:attribute name="Min_Priority" type="mast_mdl:Priority" use="optional"/>
	</xs:complexType>
	<xs:complexType name="EDF_Policy">
		<xs:attribute name="Worst_Context_Switch" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Context_Switch" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Best_Context_Switch" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
	</xs:complexType>
	<xs:complexType name="FP_Packet_Based_Policy">
		<xs:attribute name="Max_Priority" type="mast_mdl:Priority" use="optional"/>
		<xs:attribute name="Min_Priority" type="mast_mdl:Priority" use="optional"/>
		<xs:attribute name="Packet_Overhead_Max_Size" type="mast_mdl:Bit_Count"/>
		<xs:attribute name="Packet_Overhead_Min_Size" type="mast_mdl:Bit_Count"/>
		<xs:attribute name="Packet_Overhead_Avg_Size" type="mast_mdl:Bit_Count"/>
	</xs:complexType>
	<xs:complexType name="Timetable_Driven_Policy">
		<xs:sequence maxOccurs="unbounded">
			<xs:element name="Partition" type="mast_mdl:Partition_Window"/>
		</xs:sequence>
		<xs:attribute name="MAF" type="mast_mdl:Time" use="required"/>
		<xs:attribute name="Worst_Context_Switch" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Context_Switch" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Best_Context_Switch" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Timetable_Driven_Packet_Based_Policy">
		<xs:sequence maxOccurs="unbounded">
			<xs:element name="Partition" type="mast_mdl:Partition_Window"/>
		</xs:sequence>
		<xs:attribute name="MAF" type="mast_mdl:Time" use="required"/>
	</xs:complexType>
	<xs:complexType name="AFDX_Policy"/>
	<xs:complexType name="Partition_Window">
		<xs:attribute name="Partition_Id" type="mast_mdl:Natural" use="required"/>
		<xs:attribute name="Partition_Name" type="mast_mdl:Identifier" use="optional"/>
		<xs:attribute name="Start_Time" type="mast_mdl:Time" use="required"/>
		<xs:attribute name="Length" type="mast_mdl:Time" use="required"/>
	</xs:complexType>
	<!-- SCHEDULABLE RESOURCES -->
	<xs:complexType name="Thread">
		<xs:sequence>
			<xs:choice>
				<xs:element name="Non_Preemptible_FP_Params" type="mast_mdl:Non_Preemptible_FP_Params"/>
				<xs:element name="Fixed_Priority_Params" type="mast_mdl:Fixed_Priority_Params"/>
				<xs:element name="Interrupt_FP_Params" type="mast_mdl:Interrupt_FP_Params"/>
				<xs:element name="Polling_Params" type="mast_mdl:Polling_Params"/>
				<xs:element name="Periodic_Server_Params" type="mast_mdl:Periodic_Server_Params"/>
				<xs:element name="Sporadic_Server_Params" type="mast_mdl:Sporadic_Server_Params"/>
				<xs:element name="EDF_Params" type="mast_mdl:EDF_Params"/>
				<xs:element name="Timetable_Driven_Params" type="mast_mdl:Partition_Params"/>
				<xs:element name="AFDX_Virtual_Link" type="mast_mdl:AFDX_Virtual_Link"/>
			</xs:choice>
			<xs:element name="SRP_Params" type="mast_mdl:SRP_Params" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Scheduler" type="mast_mdl:Identifier_Ref" use="required"/>
	</xs:complexType>
	<xs:complexType name="Communication_Channel">
		<xs:choice>
			<xs:element name="Non_Preemptible_FP_Params" type="mast_mdl:Non_Preemptible_FP_Params"/>
			<xs:element name="Fixed_Priority_Params" type="mast_mdl:Fixed_Priority_Params"/>
			<xs:element name="Polling_Params" type="mast_mdl:Polling_Params"/>
			<xs:element name="Periodic_Server_Comm_Params" type="mast_mdl:Periodic_Server_Comm_Params"/>
			<xs:element name="Sporadic_Server_Comm_Params" type="mast_mdl:Sporadic_Server_Comm_Params"/>
			<xs:element name="EDF_Params" type="mast_mdl:EDF_Params"/>
			<xs:element name="Timetable_Driven_Params" type="mast_mdl:Partition_Params"/>
			<xs:element name="AFDX_Virtual_Link" type="mast_mdl:AFDX_Virtual_Link"/>
		</xs:choice>
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Scheduler" type="mast_mdl:Identifier_Ref" use="required"/>
	</xs:complexType>
	<xs:complexType name="Virtual_Schedulable_Resource">
		<xs:sequence>
			<xs:choice>
				<xs:element name="Virtual_Periodic_Server_Params" type="mast_mdl:Virtual_Resource_Params"/>
				<xs:element name="Virtual_Deferrable_Server_Params" type="mast_mdl:Virtual_Resource_Params"/>
				<xs:element name="Virtual_Sporadic_Server_Params" type="mast_mdl:Virtual_Resource_Params"/>
			</xs:choice>
			<xs:choice minOccurs="0">
				<xs:element name="Non_Preemptible_FP_Params" type="mast_mdl:Non_Preemptible_FP_Params"/>
				<xs:element name="Fixed_Priority_Params" type="mast_mdl:Fixed_Priority_Params"/>
				<xs:element name="Interrupt_FP_Params" type="mast_mdl:Interrupt_FP_Params"/>
				<xs:element name="Polling_Params" type="mast_mdl:Polling_Params"/>
				<xs:element name="Periodic_Server_Params" type="mast_mdl:Periodic_Server_Params"/>
				<xs:element name="Sporadic_Server_Params" type="mast_mdl:Sporadic_Server_Params"/>
				<xs:element name="EDF_Params" type="mast_mdl:EDF_Params"/>
				<xs:element name="Timetable_Driven_Params" type="mast_mdl:Partition_Params"/>
				<xs:element name="AFDX_Virtual_Link" type="mast_mdl:AFDX_Virtual_Link"/>
			</xs:choice>
			<xs:element name="SRP_Parameters" type="mast_mdl:SRP_Params" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Scheduler" type="mast_mdl:Identifier_Ref" use="required"/>
	</xs:complexType>
	<xs:complexType name="Virtual_Communication_Channel">
		<xs:sequence>
			<xs:choice>
				<xs:element name="Virtual_Periodic_Comm_Params" type="mast_mdl:Virtual_Communication_Channel_Params"/>
				<xs:element name="Virtual_Deferrable_Comm_Params" type="mast_mdl:Virtual_Communication_Channel_Params"/>
				<xs:element name="Virtual_Sporadic_Comm_Params" type="mast_mdl:Virtual_Communication_Channel_Params"/>
				<xs:element name="Virtual_Token_Bucket_Comm_Params" type="mast_mdl:Virtual_Token_Bucket_Comm_Params"/>
			</xs:choice>
			<xs:choice minOccurs="0">
				<xs:element name="Non_Preemptible_FP_Params" type="mast_mdl:Non_Preemptible_FP_Params"/>
				<xs:element name="Fixed_Priority_Params" type="mast_mdl:Fixed_Priority_Params"/>
				<xs:element name="Polling_Params" type="mast_mdl:Polling_Params"/>
				<xs:element name="Periodic_Server_Comm_Params" type="mast_mdl:Periodic_Server_Comm_Params"/>
				<xs:element name="Sporadic_Server_Comm_Params" type="mast_mdl:Sporadic_Server_Comm_Params"/>
				<xs:element name="EDF_Params" type="mast_mdl:EDF_Params"/>
				<xs:element name="Time_Table_Driven_Params" type="mast_mdl:Partition_Params"/>
				<xs:element name="AFDX_Virtual_Link" type="mast_mdl:AFDX_Virtual_Link"/>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Scheduler" type="mast_mdl:Identifier_Ref" use="required"/>
	</xs:complexType>
	<!-- Synchronization Parameters -->
	<xs:complexType name="SRP_Params">
		<xs:attribute name="Preemption_Level" type="mast_mdl:Preemption_Level" use="required"/>
		<xs:attribute name="Preassigned" type="mast_mdl:Assertion" use="optional"/>
	</xs:complexType>
	<!--Scheduling Parameters -->
	<xs:complexType name="Non_Preemptible_FP_Params">
		<xs:attribute name="Priority" type="mast_mdl:Priority" use="optional"/>
		<xs:attribute name="Preassigned" type="mast_mdl:Assertion" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Fixed_Priority_Params">
		<xs:attribute name="Priority" type="mast_mdl:Priority" use="optional"/>
		<xs:attribute name="Preassigned" type="mast_mdl:Assertion" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Interrupt_FP_Params">
		<xs:attribute name="Priority" type="mast_mdl:Interrupt_Priority" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Polling_Params">
		<xs:attribute name="Priority" type="mast_mdl:Priority" use="optional"/>
		<xs:attribute name="Preassigned" type="mast_mdl:Assertion" use="optional"/>
		<xs:attribute name="Polling_Period" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Polling_Worst_Overhead" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Polling_Avg_Overhead" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Polling_Best_Overhead" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Periodic_Server_Params">
		<xs:attribute name="Priority" type="mast_mdl:Priority" use="optional"/>
		<xs:attribute name="Preassigned" type="mast_mdl:Assertion" use="optional"/>
		<xs:attribute name="Replenishment_Period" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Initial_Capacity" type="mast_mdl:Time" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Sporadic_Server_Params">
		<xs:attribute name="Priority" type="mast_mdl:Priority" use="optional"/>
		<xs:attribute name="Preassigned" type="mast_mdl:Assertion" use="optional"/>
		<xs:attribute name="Initial_Capacity" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Replenishment_Period" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Background_Priority" type="mast_mdl:Priority" use="optional"/>
		<xs:attribute name="Max_Pending_Replenishments" type="mast_mdl:Positive" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Periodic_Server_Comm_Params">
		<xs:attribute name="Priority" type="mast_mdl:Priority" use="optional"/>
		<xs:attribute name="Preassigned" type="mast_mdl:Assertion" use="optional"/>
		<xs:attribute name="Initial_Capacity" type="mast_mdl:Bit_Count" use="optional"/>
		<xs:attribute name="Replenishment_Period" type="mast_mdl:Time" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Sporadic_Server_Comm_Params">
		<xs:attribute name="Priority" type="mast_mdl:Priority" use="optional"/>
		<xs:attribute name="Preassigned" type="mast_mdl:Assertion" use="optional"/>
		<xs:attribute name="Initial_Capacity" type="mast_mdl:Bit_Count" use="optional"/>
		<xs:attribute name="Replenishment_Period" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Background_Priority" type="mast_mdl:Priority" use="optional"/>
		<xs:attribute name="Max_Pending_Replenishments" type="mast_mdl:Positive" use="optional"/>
	</xs:complexType>
	<xs:complexType name="EDF_Params">
		<xs:attribute name="Deadline" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Preassigned" type="mast_mdl:Assertion" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Virtual_Resource_Params">
		<xs:attribute name="Preassigned" type="mast_mdl:Assertion" use="optional"/>
		<xs:attribute name="Budget" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Deadline" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Period" type="mast_mdl:Time" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Virtual_Communication_Channel_Params">
		<xs:attribute name="Preassigned" type="mast_mdl:Assertion" use="optional"/>
		<xs:attribute name="Budget" type="mast_mdl:Bit_Count" use="optional"/>
		<xs:attribute name="Deadline" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Period" type="mast_mdl:Time" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Virtual_Token_Bucket_Comm_Params">
		<xs:attribute name="Preassigned" type="mast_mdl:Assertion" use="optional"/>
		<xs:attribute name="Budget" type="mast_mdl:Bit_Count" use="optional"/>
		<xs:attribute name="Max_Throughput" type="mast_mdl:Throughput" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Partition_Params">
		<xs:attribute name="Partition_Id" type="mast_mdl:Natural" use="optional"/>
		<xs:attribute name="Partition_Name" type="mast_mdl:Identifier_Ref" use="optional"/>
	</xs:complexType>
	<xs:complexType name="AFDX_Virtual_Link">
		<xs:attribute name="LMax" type="mast_mdl:Bit_Count" use="optional"/>
		<xs:attribute name="BAG" type="mast_mdl:Time" use="optional"/>
	</xs:complexType>
	<!-- MUTUAL EXCLUSION RESOURCES -->
	<xs:complexType name="Immediate_Ceiling_Mutex">
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Ceiling" type="mast_mdl:Priority" use="optional"/>
		<xs:attribute name="Preassigned" type="mast_mdl:Assertion" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Priority_Inheritance_Mutex">
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
	</xs:complexType>
	<xs:complexType name="SRP_Mutex">
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Preemption_Level" type="mast_mdl:Preemption_Level" use="optional"/>
		<xs:attribute name="Preassigned" type="mast_mdl:Assertion" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Mutex_Ref">
		<xs:attribute name="Name" type="mast_mdl:Identifier_Ref"/>
	</xs:complexType>
	<!-- OPERATIONS -->
	<xs:complexType name="Overridden_Fixed_Priority">
		<xs:attribute name="Priority" type="mast_mdl:Priority" use="required"/>
	</xs:complexType>
	<xs:complexType name="Overridden_Permanent_FP">
		<xs:attribute name="Priority" type="mast_mdl:Priority" use="required"/>
	</xs:complexType>
	<xs:complexType name="Overridden_Deadline">
		<xs:attribute name="Deadline" type="mast_mdl:Time" use="required"/>
	</xs:complexType>
	<xs:complexType name="Operation_Ref">
		<xs:attribute name="Name" type="mast_mdl:Identifier_Ref"/>
	</xs:complexType>
	<xs:complexType name="Simple_Operation">
		<xs:sequence>
			<xs:choice minOccurs="0">
				<xs:element name="Overridden_Fixed_Priority" type="mast_mdl:Overridden_Fixed_Priority"/>
				<xs:element name="Overridden_Permanent_FP" type="mast_mdl:Overridden_Permanent_FP"/>
				<xs:element name="Overridden_Deadline" type="mast_mdl:Overridden_Deadline"/>
			</xs:choice>
			<xs:sequence minOccurs="0">
				<xs:choice maxOccurs="unbounded">
					<xs:element name="Mutex" type="mast_mdl:Mutex_Ref"/>
					<xs:element name="Mutex_To_Lock" type="mast_mdl:Mutex_Ref"/>
					<xs:element name="Mutex_To_Unlock" type="mast_mdl:Mutex_Ref"/>
				</xs:choice>
			</xs:sequence>
		</xs:sequence>
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Worst_Case_Execution_Time" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Case_Execution_Time" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Best_Case_Execution_Time" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Message">
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Max_Message_Size" type="mast_mdl:Bit_Count" use="optional"/>
		<xs:attribute name="Avg_Message_Size" type="mast_mdl:Bit_Count" use="optional"/>
		<xs:attribute name="Min_Message_Size" type="mast_mdl:Bit_Count" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Message_Ref">
		<xs:attribute name="Name" type="mast_mdl:Identifier_Ref"/>
	</xs:complexType>
	<xs:complexType name="Composite_Operation">
		<xs:sequence>
			<xs:choice minOccurs="0">
				<xs:element name="Overridden_Fixed_Priority" type="mast_mdl:Overridden_Fixed_Priority"/>
				<xs:element name="Overridden_Permanent_FP" type="mast_mdl:Overridden_Permanent_FP"/>
				<xs:element name="Overridden_Deadline" type="mast_mdl:Overridden_Deadline"/>
			</xs:choice>
			<xs:sequence>
				<xs:element name="Operation" type="mast_mdl:Operation_Ref" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:sequence>
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
	</xs:complexType>
	<xs:complexType name="Enclosing_Operation">
		<xs:sequence>
			<xs:choice minOccurs="0">
				<xs:element name="Overridden_Fixed_Priority" type="mast_mdl:Overridden_Fixed_Priority"/>
				<xs:element name="Overridden_Permanent_FP" type="mast_mdl:Overridden_Permanent_FP"/>
				<xs:element name="Overridden_Deadline" type="mast_mdl:Overridden_Deadline"/>
			</xs:choice>
			<xs:sequence>
				<xs:element name="Operation" type="mast_mdl:Operation_Ref" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:sequence>
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Worst_Case_Execution_Time" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Avg_Case_Execution_Time" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
		<xs:attribute name="Best_Case_Execution_Time" type="mast_mdl:Normalized_Execution_Time" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Composite_Message">
		<xs:sequence>
			<xs:element name="Message" type="mast_mdl:Message_Ref" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
	</xs:complexType>
	<!-- FLOW -->
	<!-- Workload events-->
	<xs:complexType name="Periodic_Event">
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Period" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Max_Jitter" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Phase" type="mast_mdl:Absolute_Time" use="optional"/>
		<xs:attribute name="Timer" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Synchronized" type="mast_mdl:Assertion" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Sporadic_Event">
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Avg_Interarrival" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Distribution" type="mast_mdl:Distribution_Type" use="optional"/>
		<xs:attribute name="Min_Interarrival" type="mast_mdl:Time" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Unbounded_Event">
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Avg_Interarrival" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Distribution" type="mast_mdl:Distribution_Type" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Bursty_Event">
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Avg_Interarrival" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Distribution" type="mast_mdl:Distribution_Type" use="optional"/>
		<xs:attribute name="Bound_Interval" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Max_Arrivals" type="xs:positiveInteger" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Singular_Event">
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
		<xs:attribute name="Phase" type="mast_mdl:Absolute_Time" use="optional"/>
		<xs:attribute name="Timer" type="mast_mdl:Identifier_Ref" use="optional"/>
	</xs:complexType>
	<!-- Observers -->
	<xs:complexType name="Global_Max_Miss_Ratio">
		<xs:attribute name="Deadline" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Ratio" type="mast_mdl:Percentage" use="optional"/>
		<xs:attribute name="Referenced_Event" type="mast_mdl:Identifier_Ref" use="required"/>
	</xs:complexType>
	<xs:complexType name="Soft_Global_Deadline">
		<xs:attribute name="Deadline" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Referenced_Event" type="mast_mdl:Identifier_Ref" use="required"/>
	</xs:complexType>
	<xs:complexType name="Soft_Global_Relative_Deadline">
		<xs:attribute name="Deadline" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Referenced_Event" type="mast_mdl:Identifier_Ref" use="required"/>
	</xs:complexType>
	<xs:complexType name="Hard_Global_Deadline">
		<xs:attribute name="Deadline" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Referenced_Event" type="mast_mdl:Identifier_Ref" use="required"/>
	</xs:complexType>
	<xs:complexType name="Hard_Global_Relative_Deadline">
		<xs:attribute name="Deadline" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Referenced_Event" type="mast_mdl:Identifier_Ref" use="required"/>
	</xs:complexType>
	<xs:complexType name="Local_Max_Miss_Ratio">
		<xs:attribute name="Deadline" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Ratio" type="mast_mdl:Percentage" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Soft_Local_Deadline">
		<xs:attribute name="Deadline" type="mast_mdl:Time" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Hard_Local_Deadline">
		<xs:attribute name="Deadline" type="mast_mdl:Time" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Max_Output_Jitter_Req">
		<xs:attribute name="Max_Output_Jitter" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Referenced_Event" type="mast_mdl:Identifier_Ref" use="required"/>
	</xs:complexType>
	<xs:complexType name="Queue_Size_Req">
		<xs:attribute name="Max_Events" type="mast_mdl:Natural" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Composite_Observer">
		<xs:sequence maxOccurs="unbounded">
			<xs:choice>
				<xs:element name="Max_Output_Jitter_Req" type="mast_mdl:Max_Output_Jitter_Req"/>
				<xs:element name="Hard_Global_Deadline" type="mast_mdl:Hard_Global_Deadline"/>
				<xs:element name="Soft_Global_Deadline" type="mast_mdl:Soft_Global_Deadline"/>
				<xs:element name="Global_Max_Miss_Ratio" type="mast_mdl:Global_Max_Miss_Ratio"/>
				<xs:element name="Hard_Local_Deadline" type="mast_mdl:Hard_Local_Deadline"/>
				<xs:element name="Soft_Local_Deadline" type="mast_mdl:Soft_Local_Deadline"/>
				<xs:element name="Local_Max_Miss_Ratio" type="mast_mdl:Local_Max_Miss_Ratio"/>
				<xs:element name="Queue_Size_Req" type="mast_mdl:Queue_Size_Req"/>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
	<!-- Internal events -->
	<xs:complexType name="Internal_Event">
		<xs:sequence minOccurs="0">
			<xs:choice maxOccurs="unbounded">
				<xs:element name="Max_Output_Jitter_Req" type="mast_mdl:Max_Output_Jitter_Req"/>
				<xs:element name="Hard_Global_Deadline" type="mast_mdl:Hard_Global_Deadline"/>
				<xs:element name="Soft_Global_Deadline" type="mast_mdl:Soft_Global_Deadline"/>
				<xs:element name="Global_Max_Miss_Ratio" type="mast_mdl:Global_Max_Miss_Ratio"/>
				<xs:element name="Hard_Local_Deadline" type="mast_mdl:Hard_Local_Deadline"/>
				<xs:element name="Soft_Local_Deadline" type="mast_mdl:Soft_Local_Deadline"/>
				<xs:element name="Local_Max_Miss_Ratio" type="mast_mdl:Local_Max_Miss_Ratio"/>
				<xs:element name="Queue_Size_Req" type="mast_mdl:Queue_Size_Req"/>
				<xs:element name="Composite_Observer" type="mast_mdl:Composite_Observer"/>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
	</xs:complexType>
	<!-- Event handlers -->
	<xs:complexType name="Step">
		<xs:attribute name="Input_Event" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Output_Event" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Step_Operation" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Step_Schedulable_Resource" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Hold_Schedulable_Resource" type="mast_mdl:Assertion" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Merge">
		<xs:attribute name="Output_Event" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Input_Events_List" type="mast_mdl:Identifier_Ref_List" use="required"/>
	</xs:complexType>
	<xs:complexType name="Join">
		<xs:attribute name="Output_Event" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Input_Events_List" type="mast_mdl:Identifier_Ref_List" use="required"/>
	</xs:complexType>
	<xs:complexType name="Output_Branch_Weight">
		<xs:attribute name="Weight" type="mast_mdl:Float" use="required"/>
	</xs:complexType>
	<xs:complexType name="Branch">
		<xs:sequence minOccurs="0">
			<xs:element name="Output_Weight" type="mast_mdl:Output_Branch_Weight" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="Input_Event" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Output_Events_List" type="mast_mdl:Identifier_Ref_List" use="required"/>
		<xs:attribute name="Delivery_Policy" type="mast_mdl:Delivery_Policy_Type" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Queried_Branch">
		<xs:attribute name="Input_Event" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Output_Events_List" type="mast_mdl:Identifier_Ref_List" use="required"/>
		<xs:attribute name="Request_Policy" type="mast_mdl:Request_Policy_Type" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Fork">
		<xs:attribute name="Input_Event" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Output_Events_List" type="mast_mdl:Identifier_Ref_List" use="required"/>
	</xs:complexType>
	<xs:complexType name="Message_Fork">
		<xs:attribute name="Input_Event" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Output_Events_List" type="mast_mdl:Identifier_Ref_List" use="required"/>
		<xs:attribute name="Switch" type="mast_mdl:Identifier_Ref" use="required"/>
	</xs:complexType>
	<xs:complexType name="Message_Delivery">
		<xs:attribute name="Input_Event" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Output_Event" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Switch" type="mast_mdl:Identifier_Ref" use="required"/>
	</xs:complexType>
	<xs:complexType name="Message_Branch">
		<xs:sequence minOccurs="0" maxOccurs="unbounded">
			<xs:element name="Output_Weight" type="mast_mdl:Output_Branch_Weight"/>
		</xs:sequence>
		<xs:attribute name="Input_Event" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Output_Events_List" type="mast_mdl:Identifier_Ref_List" use="required"/>
		<xs:attribute name="Delivery_Policy" type="mast_mdl:Delivery_Policy_Type" use="optional"/>
		<xs:attribute name="Switch" type="mast_mdl:Identifier_Ref" use="required"/>
	</xs:complexType>
	<xs:complexType name="Rate_Divisor">
		<xs:attribute name="Rate_Factor" type="mast_mdl:Positive" use="optional"/>
		<xs:attribute name="Input_Event" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Output_Event" type="mast_mdl:Identifier_Ref" use="required"/>
	</xs:complexType>
	<xs:complexType name="Delay">
		<xs:attribute name="Input_Event" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Output_Event" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Delay_Max_Interval" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Delay_Avg_Interval" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Delay_Min_Interval" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Timer" type="mast_mdl:Identifier_Ref" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Offset">
		<xs:attribute name="Input_Event" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Output_Event" type="mast_mdl:Identifier_Ref" use="required"/>
		<xs:attribute name="Delay_Max_Interval" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Delay_Avg_Interval" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Delay_Min_Interval" type="mast_mdl:Time" use="optional"/>
		<xs:attribute name="Timer" type="mast_mdl:Identifier_Ref" use="optional"/>
		<xs:attribute name="Referenced_Event" type="mast_mdl:Identifier_Ref" use="required"/>
	</xs:complexType>
	<!-- End-to-End Flows -->
	<xs:complexType name="Regular_End_To_End_Flow">
		<xs:sequence maxOccurs="unbounded">
			<xs:choice>
				<!-- External events -->
				<xs:element name="Periodic_Event" type="mast_mdl:Periodic_Event"/>
				<xs:element name="Sporadic_Event" type="mast_mdl:Sporadic_Event"/>
				<xs:element name="Unbounded_Event" type="mast_mdl:Unbounded_Event"/>
				<xs:element name="Bursty_Event" type="mast_mdl:Bursty_Event"/>
				<xs:element name="Singular_Event" type="mast_mdl:Singular_Event"/>
				<!-- Internal events -->
				<xs:element name="Internal_Event" type="mast_mdl:Internal_Event"/>
				<!-- Event handlers  -->
				<xs:element name="Step" type="mast_mdl:Step"/>
				<xs:element name="Merge" type="mast_mdl:Merge"/>
				<xs:element name="Join" type="mast_mdl:Join"/>
				<xs:element name="Branch" type="mast_mdl:Branch"/>
				<xs:element name="Queried_Branch" type="mast_mdl:Queried_Branch"/>
				<xs:element name="Fork" type="mast_mdl:Fork"/>
				<xs:element name="Rate_Divisor" type="mast_mdl:Rate_Divisor"/>
				<xs:element name="Delay" type="mast_mdl:Delay"/>
				<xs:element name="Offset" type="mast_mdl:Offset"/>
				<xs:element name="Message_Fork" type="mast_mdl:Message_Fork"/>
				<xs:element name="Message_Delivery" type="mast_mdl:Message_Delivery"/>
				<xs:element name="Message_Branch" type="mast_mdl:Message_Branch"/>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="Name" type="mast_mdl:Identifier" use="required"/>
	</xs:complexType>
	<!-- MAST MODEL (root element) -->
	<xs:element name="MAST_MODEL">
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:choice>
					<!-- Processing Resources -->
					<xs:element name="Regular_Processor" type="mast_mdl:Regular_Processor"/>
					<xs:element name="Packet_Based_Network" type="mast_mdl:Packet_Based_Network"/>
					<xs:element name="RTEP_Network" type="mast_mdl:RTEP_Network"/>
					<xs:element name="AFDX_Link" type="mast_mdl:AFDX_Link"/>
					<xs:element name="Regular_Switch" type="mast_mdl:Regular_Switch"/>
					<xs:element name="AFDX_Switch" type="mast_mdl:AFDX_Switch"/>
					<xs:element name="Regular_Router" type="mast_mdl:Regular_Router"/>
					<!-- Timing Objects -->
					<xs:element name="Clock_Synchronization_Object" type="mast_mdl:Clock_Synchronization_Object"/>
					<xs:element name="Ticker" type="mast_mdl:Ticker"/>
					<xs:element name="Alarm_Clock" type="mast_mdl:Alarm_Clock"/>
					<!-- Schedulers -->
					<xs:element name="Primary_Scheduler" type="mast_mdl:Primary_Scheduler"/>
					<xs:element name="Secondary_Scheduler" type="mast_mdl:Secondary_Scheduler"/>
					<!-- Schedulable resources -->
					<xs:element name="Thread" type="mast_mdl:Thread"/>
					<xs:element name="Communication_Channel" type="mast_mdl:Communication_Channel"/>
					<xs:element name="Virtual_Schedulable_Resource" type="mast_mdl:Virtual_Schedulable_Resource"/>
					<xs:element name="Virtual_Communication_Channel" type="mast_mdl:Virtual_Communication_Channel"/>
					<!-- Mutual exclusion resources -->
					<xs:element name="Immediate_Ceiling_Mutex" type="mast_mdl:Immediate_Ceiling_Mutex"/>
					<xs:element name="Priority_Inheritance_Mutex" type="mast_mdl:Priority_Inheritance_Mutex"/>
					<xs:element name="SRP_Mutex" type="mast_mdl:SRP_Mutex"/>
					<!-- Operations -->
					<xs:element name="Simple_Operation" type="mast_mdl:Simple_Operation"/>
					<xs:element name="Message" type="mast_mdl:Message"/>
					<xs:element name="Composite_Operation" type="mast_mdl:Composite_Operation"/>
					<xs:element name="Enclosing_Operation" type="mast_mdl:Enclosing_Operation"/>
					<xs:element name="Composite_Message" type="mast_mdl:Composite_Message"/>
					<!-- Transactions -->
					<xs:element name="Regular_End_To_End_Flow" type="mast_mdl:Regular_End_To_End_Flow"/>
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="Model_Name" type="mast_mdl:Identifier" use="required"/>
			<xs:attribute name="Model_Date" type="mast_mdl:Date_Time" use="required"/>
			<xs:attribute name="System_PiP_Behaviour" type="mast_mdl:Priority_Inheritance_Protocol" use="optional"/>
			<xs:attribute name="Step_Queueing_Policy" type="mast_mdl:Queueing_Policy_Type" use="optional"/>
		</xs:complexType>
	</xs:element>
</xs:schema>
