14.2 Project-Specific Property Set
There is a set of enumeration property types and property constants for which enumeration literals and property constant values can be defined for different systems modeled in AADL. This set of property types is declared in a property set named AADL_Project. All of the property enumeration types listed in this section must be declared in this property set. The set of enumeration literals may vary.  This property set  is a part of every AADL specification.
The set of values for the property types in this property set are to be provided by tool suppliers for the AADL and can be tailored by AADL users on a project by project basis to reflect those capabilities provided by tool suppliers that are actually being made use of in a particular project.
NOTES:
The label <project-specified> indicates that actual values are to be supplied by the person providing a project-specific property set.  The actual values do not include the < and >symbols.
Propertyset AADL_Project is 
Default_Active_Thread_Handling_Protocol: constant
   Supported_Active_Thread_Handling_Protocols => <project-specified> ;
The Default_Active_Thread_Handling_Protocolproperty constant specifies the default value of the Active_Thread_Handling_Protocolproperty.
Supported_Active_Thread_Handling_Protocols: type enumeration
                                                    (<project-specified>);
-- The following are example protocols.
-- (abort, complete_one_flush_queue, complete_one_transfer_queue,
--  complete_one_preserve_queue,  complete_all);
The Supported_Active_Thread_Handling_Protocolsproperty enumeration type specifies the set of possible actions that can be taken to handle threads that are in the state of performing computation at the time instant of actual mode switch. One of the available choices must be the default value of the Active_Thread_Handling_Protocol property.
Supported_Connection_Protocols: type enumeration(<project-specified>);
-- The following are example protocols:
-- (HTTPS, IP/TPC);
The Supported_Connection_Protocolsproperty enumeration type specifies the set of connection protocols that are supported.
Supported_Concurrency_Control_Protocols: type enumeration (NoneSpecified,
                                                         <project-specified>);
-- The following are example concurrency control protocols:
-- (Interrupt_Masking, Maximum_Priority, Priority_Inheritance,
--  Priority_Ceiling)
The Supported_Concurrency_Control_Protocolsproperty enumeration type specifies the set of concurrency control protocols that are supported.
Supported_Dispatch_Protocols: type enumeration (Periodic,
                                                <project-specified>);
-- The following are protocols for which the semantics are defined:
-- (Periodic, Sporadic, Aperiodic, Background);
The Supported_Dispatch_Protocolsproperty enumeration type specifies the set of thread dispatch protocols that are supported.
Periodicrepresents periodic dispatch of threads with hard deadlines. Sporadicrepresents event- triggered dispatching of threads with soft deadlines. Aperiodicrepresents event-triggered dispatch of threads with hard deadlines. Backgroundrepresents threads that are dispatched once and execute until completion.
Supported_Hardware_Source_Languages: type enumeration(<project-specified>);
-- The following is an example hardware description language:
-- (VHDL)
The Supported_Hardware_Source_Languagesproperty enumeration type specifies the set of hardware description languages that are supported.
Supported_Queue_Processing_Protocols: type enumeration (FIFO,
                                                        <project-specified>);
The Supported_Queue_Processing_Protocolsproperty enumeration type specifies the set of queue processing protocols that are supported.
Supported_Scheduling_Protocols: typeenumeration(<project-specified>);
-- The following are examples of scheduling protocols:
-- (RMS, EDF, Sporadicserver, SlackServer, ARINC653)
The Supported_Scheduling_Protocolsproperty enumeration type specifies the set of scheduling protocols that are supported.
Scheduling protocols that can be provided by implementers include:
  • None (single thread).
  • Interrupt-driven (handling of interrupt service routines (ISR)).
  • Forperiodic task sets:  static time (cyclic executive), deadline monotonic, least laxity.
  • For hybrid task set:
    • Fixed priority server based on Rate Monotonic Scheduling (RMS) (polling server, deferrable server, sporadic server, slack stealer).
    • Dynamic priority server based on Earliest Deadline First (EDF) (dynamic polling server, dynamic deferrable server, dynamic sporadic server, total bandwidth server, constant bandwidth server).

Scheduling protocols have a policy for scheduling periodic threads, for aperiodic/sporadic threads, and for background threads.  In the case of RMS, the periodic thread policy is priority assignment according to decreasing rate, aperiodics and sporadics according to their minimum inter-arrival time, and background as FIFO.  Others have similar characteristics. 
Supported_Source_Languages: typeenumeration(<project-specified>);
-- The following are example software source languages:
-- ( Ada95, C, Simulink_6_5 ) 
The Supported_Source_Languagesproperty enumeration type specifies the set of software source languages that are supported.
Max_Aadlinteger: constant aadlinteger=> <project-specified-integer-literal>;
The property constantMax_Aadlintegerspecifies the largest machine representable integer value that may be used as the maximum value in property associations.
Max_Base_Address: constantaadlinteger => <project-specified-integer-literal>;
The property constantMax_Base_Addressspecifies the maximum value that can be declared in for the Base_Addressproperty.
Max_Memory_Size: constant Size => <project-specified-aadl-integer>;
The property constantMax_Memory_Sizespecifies the maximum memory size that can be declared in for the Sizeproperty, expressed in the specified unit of Size.
Max_Queue_Size: constant aadlinteger=> <project-specified-integer-literal>;
The property constantMax_Queue_Sizespecifies the maximum value that can be declared in for the Queue_Sizeproperty.
Max_Thread_Limit: constantaadlinteger => <project-specified-integer-literal>;
The property constantMax_Thread_Limitspecifies the maximum value that can be declared in for the Thread_Limitproperty.
Max_Time: constant Time => <project-specified-integer-literal>;
The property constantMax_Timespecifies the maximum value that can be declared in for the Timeproperty, expressed in the specified  unit of Time.
Max_Urgency: constant aadlinteger=> <project-specified-integer-literal>;
The property constant Max_Urgency specifies the maximum value that can be declared in for the Urgency property.
Max_Word_Count: constant aadlinteger=> <project-specified-integer-literal>;
The property constantMax_Word_Countspecifies the maximum value that can be declared in for the Word_Countproperty.
Max_Word_Space: constant aadlinteger=> <project-specified-integer-literal>;
The property constantMax_Word_Spacespecifies the maximum value that can be declared in for the Word_Spaceproperty.
Size_Units: type units (bits, B => bits * 8, KB => B * 1000,
                  MB => KB * 1000, GB => MB * 1000);
The type Size_Units defines a measurement of size that is available for use in other property definitions.  Users may append to this type.
Time_Units: type units (ps, ns => ps * 1000, us => ns * 1000, ms => us * 1000,
          sec => ms * 1000,  min => sec * 60, hr => min * 60);
The type Time_Units defines a measurement of time that is available for use in other property defintions. Users may append to this type.
 
endAADL_Project;