property set Data_Model is Base_Type : list of classifier ( data) applies to (data); Code_Set : aadlinteger applies to (data); Data_Digits : aadlinteger applies to (data); Data_Scale : aadlinteger applies to (data); Data_Representation : enumeration (Array, Boolean, Character, Enum, Float, Fixed, Integer, String, Struct, Union) applies to (data); Dimension : list of aadlinteger applies to (data); Element_Names : list of aadlstring applies to (data); Enumerators : list of aadlstring applies to (data); IEEE754_Precision : enumeration (Simple, Double) applies to (data); Initial_Value : list of aadlstring applies to (data, port, parameter); Integer_Range : range of aadlinteger applies to (data, port, parameter); Measurement_Unit : aadlstring applies to (data, port, parameter); Number_Representation : enumeration (Signed, Unsigned) applies to (data); Real_Range : range of aadlreal applies to (data, port, parameter); Representation : list of aadlstring applies to (data); end Data_Model; package Base_Types public with data_model; data Boolean properties Data_Model::Data_Representation => Boolean; end Boolean; data Integer properties Data_Model::Data_Representation => Integer; end Integer; data Integer_8 extends Integer properties Data_Model::Number_Representation => Signed; Source_Data_Size => 1 Bytes; end Integer_8; data Integer_16 extends Integer properties Data_Model::Number_Representation => Signed; Source_Data_Size => 2 Bytes; end Integer_16; data Integer_32 extends Integer properties Data_Model::Number_Representation => Signed; Source_Data_Size => 4 Bytes; end Integer_32; data Integer_64 extends Integer properties Data_Model::Number_Representation => Signed; Source_Data_Size => 8 Bytes; end Integer_64; data Unsigned_8 extends Integer properties Data_Model::Number_Representation => Unsigned; Source_Data_Size => 1 Bytes; end Unsigned_8; data Unsigned_16 extends Integer properties Data_Model::Number_Representation => Unsigned; Source_Data_Size => 2 Bytes; end Unsigned_16; data Unsigned_32 extends Integer properties Data_Model::Number_Representation => Unsigned; Source_Data_Size => 4 Bytes; end Unsigned_32; data Unsigned_64 extends Integer properties Data_Model::Number_Representation => Unsigned; Source_Data_Size => 8 Bytes; end Unsigned_64; data Natural extends Integer properties Data_Model::Integer_Range => 0 .. Max_Target_Integer; end Natural; data Float properties Data_Model::Data_Representation => Float; end Float; data Float_32 extends Float properties Data_Model::IEEE754_Precision => Simple; Source_Data_Size => 4 Bytes; end Float_32; data Float_64 extends Float properties Data_Model::IEEE754_Precision => Double; Source_Data_Size => 8 Bytes; end Float_64; data Character properties Data_Model::Data_Representation => Character; end Character; data String properties Data_Model::Data_Representation => String; end String; end Base_Types; package Test public with Base_types, Data_Model; thread sender features d : out event data port Base_Types::Integer; a : in event data port Base_Types::Integer; properties Dispatch_Protocol => Timed; Period => 10 Ms; end sender; thread implementation sender.v1 subcomponents v : data Base_Types::Integer; annex behavior_specification {** states st : initial complete state; sf : complete state; s1, s2 : state; transitions st -[on dispatch timeout]-> st { v := 1; d!(v) }; st -[on dispatch a]-> s1; s1 -[a = 1]-> sf; s1 -[a = 0]-> st; sf -[on dispatch timeout]-> sf { v := 0; d!(v) }; sf -[on dispatch a]-> s2; s2 -[a = 0]-> st; s2 -[a = 1]-> sf; **}; end sender.v1; thread implementation sender.v2 annex behavior_specification {** states st : initial complete state; sf : complete state; s1, s2 : state; transitions st -[on dispatch timeout]-> st { d!(1) }; st -[on dispatch a]-> s1; s1 -[a = 1]-> sf; s1 -[a = 0]-> st; sf -[on dispatch timeout]-> sf { d!(0) }; sf -[on dispatch a]-> s2; s2 -[a = 0]-> st; s2 -[a = 1]-> sf; **}; end sender.v2; thread implementation sender.v3 annex behavior_specification {** states st : initial complete state; sf : complete state; transitions st -[on dispatch timeout]-> st { d!(1) }; st -[on dispatch a(1)]-> sf; st -[on dispatch a(others)]-> st; sf -[on dispatch timeout]-> sf { d!(0) }; sf -[on dispatch a(0)]-> st; sf -[on dispatch a(others)]-> sf; **}; end sender.v3; end Test;