Commit 579cc85b authored by hugues.jerome's avatar hugues.jerome

* Extend the instanciation mechanism for data component types:

	reuse an existing instance of a	     data component type only for
        access components, this allow to have subcomponent-specific
        properties to be correctly attached to the corresponing
	instance of subcomponents



git-svn-id: https://tecsw.estec.esa.int/svn/taste/trunk/ocarina@1486 129961e7-ef38-4bb5-a8f7-c9a525a55882
parent f43d6356
......@@ -156,34 +156,34 @@ CM(11:declaration,1,3,1,19:Msg_Types is [msg];)
CM(11:declaration,1,4,1,6:Domain)
CM(11:declaration,1,5,1,32:mess is <Threads_Ids,Msg_Types>;)
CM(11:declaration,1,6,1,3:Var)
CM(11:declaration,1,7,1,57: x, y, x575, x636, x709, x768, x879, x941 in Threads_Ids;)
CM(11:declaration,1,7,1,57: x, y, x580, x641, x714, x773, x884, x946 in Threads_Ids;)
CM(11:declaration,1,8,1,16: m in Msg_Types;)
CN(10:transition,1123)
CT(4:name,1123,37:proc_capteur_droit_th_c_Init_Dispatch)
CA(3:arc,1128,1115,1123)
CT(9:valuation,1128,6:<x575>)
CT(9:valuation,1128,6:<x580>)
CA(3:arc,2597,1294,1123)
CT(9:valuation,2597,6:<x636>)
CT(9:valuation,2597,6:<x641>)
CA(3:arc,2607,1473,1123)
CT(9:valuation,2607,6:<x709>)
CT(9:valuation,2607,6:<x714>)
CA(3:arc,2637,1751,1123)
CT(9:valuation,2637,6:<x768>)
CT(9:valuation,2637,6:<x773>)
CA(3:arc,2667,2029,1123)
CT(9:valuation,2667,6:<x879>)
CT(9:valuation,2667,6:<x884>)
CA(3:arc,2697,2259,1123)
CT(9:valuation,2697,6:<x941>)
CT(9:valuation,2697,6:<x946>)
CA(3:arc,1133,1123,1119)
CT(9:valuation,1133,6:<x575>)
CT(9:valuation,1133,6:<x580>)
CA(3:arc,2602,1123,1298)
CT(9:valuation,2602,6:<x636>)
CT(9:valuation,2602,6:<x641>)
CA(3:arc,2612,1123,1477)
CT(9:valuation,2612,6:<x709>)
CT(9:valuation,2612,6:<x714>)
CA(3:arc,2642,1123,1755)
CT(9:valuation,2642,6:<x768>)
CT(9:valuation,2642,6:<x773>)
CA(3:arc,2672,1123,2033)
CT(9:valuation,2672,6:<x879>)
CT(9:valuation,2672,6:<x884>)
CA(3:arc,2702,1123,2263)
CT(9:valuation,2702,6:<x941>)
CT(9:valuation,2702,6:<x946>)
CN(5:place,1115)
CT(4:name,1115,30:proc_capteur_droit_th_c_Halted)
CT(6:domain,1115,11:Threads_Ids)
......
all.aadl:66:03: warning: Field references a component type
all.aadl:66:03: warning: Field references a component type
all.aadl:124:03: warning: proc_1 references a component type
all.aadl:125:03: warning: proc_2 references a component type
all.aadl:126:03: warning: ram references a component type
all.aadl:127:03: warning: ram_2 references a component type
ocarina: Total: 0 error and 5 warnings
ocarina: Total: 0 error and 6 warnings
resources execution
requirement : connections
theorem connections is: TRUE
......@@ -14,6 +15,6 @@ theorem mutexes is: TRUE
requirement : latency
requirement : buses_rate
lib.real:12:33 Backends: warning : property "assert_properties::access_bandwidth" is not defined on element Bus_Set
lib.real:12:72 Backends: error : Property is false for instance 582 (shared.impl_a_bus)
lib.real:12:72 Backends: error : Property is false for instance 607 (shared.impl_a_bus)
theorem buses_rate is: FALSE
lib.real:85:01 Backends: fatal error : requirements are not fulfilled
......@@ -781,6 +781,8 @@ package body Ocarina.Backends.C_Common.Mapping is
----------------------------------
procedure Bind_AADL_To_Type_Definition (G : Node_Id; A : Node_Id) is
pragma Assert (Present (A));
N : Node_Id;
begin
N := AIN.Backend_Node (G);
......@@ -1204,6 +1206,7 @@ package body Ocarina.Backends.C_Common.Mapping is
begin
if Get_Current_Backend_Kind = PolyORB_Kernel_C then
Add_Include (PKR.RH (RH_Gtypes));
elsif Get_Current_Backend_Kind = PolyORB_HI_C then
Add_Include (PHR.RH (RH_Types));
end if;
......@@ -1217,13 +1220,16 @@ package body Ocarina.Backends.C_Common.Mapping is
if Kind (N) = K_Defining_Identifier then
return N;
elsif Kind (N) = K_Array_Declaration then
return Defining_Identifier (N);
end if;
return No_Node;
else
return No_Node;
-- XXX why do we need this hack?
return Map_C_Defining_Identifier (E);
end if;
return No_Node;
end Map_C_Data_Type_Designator;
---------------------------------
......
......@@ -1220,10 +1220,10 @@ package body Ocarina.Backends.Properties is
(D : Node_Id)
return Supported_Data_Access
is
T_Name : Name_Id;
begin
pragma Assert (AINU.Is_Data (D));
T_Name : Name_Id;
begin
if Is_Defined_Enumeration_Property (D, Data_Required_Access) then
T_Name := Get_Enumeration_Property (D, Data_Required_Access);
......@@ -1993,36 +1993,39 @@ package body Ocarina.Backends.Properties is
Property_Type_Range := Type_Range (Property_Type);
when AADL_V2 =>
if Present (Parent_Subcomponent (E)) then
Process_Inst := Parent_Subcomponent
(Parent_Component (Parent_Subcomponent (E)));
Process_Inst := Parent_Subcomponent
(Parent_Component (Parent_Subcomponent (E)));
if Present (Process_Inst) then
if Get_Category_Of_Component (Process_Inst)
= CC_Thread
then
Process_Inst := Parent_Subcomponent
(Parent_Component (Process_Inst));
end if;
Processor_Inst := Get_Bound_Processor
(Corresponding_Instance (Process_Inst));
if Present (Process_Inst) then
if Get_Category_Of_Component (Process_Inst) = CC_Thread then
Process_Inst := Parent_Subcomponent
(Parent_Component (Process_Inst));
end if;
Processor_Inst := Get_Bound_Processor
(Corresponding_Instance (Process_Inst));
if Is_Defined_Range_Property (Processor_Inst,
Get_String_Name
("priority_range"))
then
Property_Type :=
(AIN.Property_Association_Value
(AIEP.Find_Property_Association_From_Name
(Property_List => AIN.Properties (Processor_Inst),
Property_Name => Get_String_Name
("priority_range"))));
Property_Type_Range := Single_Value (Property_Type);
else
Display_Located_Error
(AIN.Loc (Processor_Inst),
"Priority_Range property is not defined",
Fatal => False,
Warning => True);
if Is_Defined_Range_Property
(Processor_Inst, Get_String_Name ("priority_range"))
then
Property_Type :=
(AIN.Property_Association_Value
(AIEP.Find_Property_Association_From_Name
(Property_List =>
AIN.Properties (Processor_Inst),
Property_Name => Get_String_Name
("priority_range"))));
Property_Type_Range := Single_Value (Property_Type);
else
Display_Located_Error
(AIN.Loc (Processor_Inst),
"Priority_Range property is not defined",
Fatal => False,
Warning => True);
end if;
end if;
end if;
end case;
......@@ -2252,10 +2255,12 @@ package body Ocarina.Backends.Properties is
begin
if Is_Defined_String_Property (T, Initialize_Entrypoint) then
return Get_String_Property (T, Initialize_Entrypoint);
elsif Is_Defined_String_Property
(T, Initialize_Entrypoint_Source_Text) then
(T, Initialize_Entrypoint_Source_Text)
then
return Get_String_Property
(T, Initialize_Entrypoint_Source_Text);
(T, Initialize_Entrypoint_Source_Text);
else
return No_Name;
end if;
......
......@@ -967,12 +967,15 @@ package body Ocarina.Backends.Utils is
begin
case Comparison is
when By_Name =>
Get_Name_String (Compute_Full_Name_Of_Instance (E));
Get_Name_String (Map_Ada_Defining_Identifier (E));
-- Get_Name_String (Compute_Full_Name_Of_Instance (E));
when By_Node =>
Set_Nat_To_Name_Buffer (Nat (E));
end case;
Add_Str_To_Name_Buffer ("%Handling%" & Handling'Img);
return Name_Find;
end Get_Handling_Internal_Name;
......@@ -988,6 +991,7 @@ package body Ocarina.Backends.Utils is
is
Internal_Name : constant Name_Id := Get_Handling_Internal_Name
(E, Comparison, Handling);
begin
Set_Name_Table_Info (Internal_Name, Nat (A));
May_Be_Append_Handling_Entry (E, Comparison, Handling, A);
......@@ -1122,14 +1126,12 @@ package body Ocarina.Backends.Utils is
----------------------------------
function Map_Ada_Data_Type_Designator (E : Node_Id) return Node_Id is
begin
pragma Assert (AAU.Is_Data (E));
begin
return ADU.Extract_Designator
(ADN.Type_Definition_Node
(Backend_Node
(Identifier
(E))));
(Backend_Node (Identifier (E))));
end Map_Ada_Data_Type_Designator;
---------------------------------
......@@ -1244,7 +1246,7 @@ package body Ocarina.Backends.Utils is
Suffix : String := "")
return Name_Id
is
I : Node_Id := A;
I : Node_Id := A;
N : Node_Id := No_Node;
J : Node_Id;
Name_List : List_Id;
......@@ -1255,6 +1257,7 @@ package body Ocarina.Backends.Utils is
if Kind (A) = K_Component_Instance then
N := Namespace (A);
elsif Kind (A) = K_Subcomponent_Instance then
if Present (Parent_Component (A)) then
N := Namespace (Parent_Component (A));
......@@ -2182,7 +2185,8 @@ package body Ocarina.Backends.Utils is
Display_Located_Error
(Loc (F),
"This IN parameter is not connected to"
& " any source",
& " any source"
& Image (Loc (Caller)),
Fatal => True);
elsif AAU.Length (Sources (F)) > 1 then
Display_Located_Error
......
......@@ -170,9 +170,7 @@ package body Ocarina.Instances.Components.Features is
New_List (K_List_Id, No_Location));
New_Subinstance := Instantiate_Corresponding_Entity
(Instance_Root,
Feature,
Container);
(Instance_Root, Feature, Container);
if Present (New_Subinstance) then
Set_Corresponding_Instance (New_Instance, New_Subinstance);
......@@ -192,9 +190,7 @@ package body Ocarina.Instances.Components.Features is
-- Instantiate the corresponding subprogram component
New_Subinstance := Instantiate_Corresponding_Entity
(Instance_Root,
Feature,
Container);
(Instance_Root, Feature, Container);
if Present (New_Subinstance) then
Set_Corresponding_Instance (New_Instance, New_Subinstance);
......@@ -209,8 +205,10 @@ package body Ocarina.Instances.Components.Features is
AIN.Set_Is_Data (New_Instance,
Component_Category'Val
(Subcomponent_Category (Feature)) = CC_Data);
AIN.Set_Identifier (New_Instance,
Duplicate_Identifier (ATN.Identifier (Feature)));
AIN.Set_Identifier
(New_Instance,
Duplicate_Identifier (ATN.Identifier (Feature)));
Set_Sources (New_Instance, New_List (K_List_Id, No_Location));
Set_Destinations (New_Instance, New_List (K_List_Id, No_Location));
......@@ -224,15 +222,32 @@ package body Ocarina.Instances.Components.Features is
-- 2 - POSTPONE the resolution of this at the connection
-- instantiation.
New_Subinstance := Instantiate_Corresponding_Entity
(Instance_Root,
Feature,
Container);
if Component_Category'Val
(Subcomponent_Category (Feature)) = CC_Data
and then Present (Get_Instance (ATE.Get_Referenced_Entity
(Entity_Ref (Feature))))
then
-- XXX If the component type denotes a data type, we
-- recycle an existing instance. this is done to avoid
-- infinite recursion, may lead to incorrect
-- properties being set. We should definitely
-- implement the recommandation above. Yet, this
-- removes a dirtier hack in Instantiate_Component
Set_Corresponding_Instance
(New_Instance,
Get_Instance (ATE.Get_Referenced_Entity
(Entity_Ref (Feature))));
if Present (New_Subinstance) then
Set_Corresponding_Instance (New_Instance, New_Subinstance);
else
Success := False;
New_Subinstance := Instantiate_Corresponding_Entity
(Instance_Root, Feature, Container);
if Present (New_Subinstance) then
Set_Corresponding_Instance (New_Instance, New_Subinstance);
else
Success := False;
end if;
end if;
when others =>
......@@ -300,12 +315,12 @@ package body Ocarina.Instances.Components.Features is
return New_Subinstance;
end if;
-- If the component isn't instantiateed yet, instantiate it...
-- If the component isn't instantiated yet, instantiate it...
New_Subinstance := Instantiate_Component (Instance_Root, C);
if Present (New_Subinstance) then
-- Instantiation is successful, append the compoent to the
-- Instantiation is successful, append the component to the
-- declarations of its namespace. If the component has
-- subcomponents, they will be added recursivly.
......@@ -313,8 +328,8 @@ package body Ocarina.Instances.Components.Features is
-- list because we cannot append the same node in two
-- different lists.
Append_To_Namespace_Instance
(Instance_Root, New_Subinstance);
Append_To_Namespace_Instance (Instance_Root, New_Subinstance);
else
-- Something went wrong, propagate the information by
-- returning No_Node.
......
......@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 2005-2009, GET-Telecom Paris. --
-- Copyright (C) 2005-2010, GET-Telecom Paris. --
-- --
-- Ocarina is free software; you can redistribute it and/or modify --
-- it under terms of the GNU General Public License as published by the --
......@@ -108,9 +108,9 @@ package body Ocarina.Instances.Components is
---------------------------
function Instantiate_Component
(Instance_Root : Node_Id;
Component : Node_Id;
Existing_Instance : Node_Id := No_Node)
(Instance_Root : Node_Id;
Component : Node_Id;
Existing_Instance : Node_Id := No_Node)
return Node_Id
is
pragma Assert (AIN.Kind (Instance_Root) = K_Architecture_Instance);
......@@ -122,25 +122,8 @@ package body Ocarina.Instances.Components is
Instance_Node : Node_Id;
Success : Boolean := True;
Namespace_Instance : Node_Id;
begin
-- Data components have to be instantiated only once. Other
-- components may be instantiated more than once. This avoids
-- infinite recursion in the case subprograms are features of
-- data and require/provide access to the same data. However,
-- if different data components inherit from the same parent
-- data component, the later has to be instantiated for each
-- child. This case is known if the Existing_Instance parameter
-- is not null. If different data component are implementations
-- of the same component type, the later has to be instantiated
-- for each implementation.
if No (Existing_Instance)
and then Component_Category'Val (Category (Component)) = CC_Data
and then Present (Get_Instance (Component))
then
return Get_Instance (Component);
end if;
begin
-- Getting the component namespace
Namespace_Instance := Instantiate_Namespace
......@@ -177,7 +160,7 @@ package body Ocarina.Instances.Components is
-- 1 - For component types:
-- (a) we instantite the features of the component
-- (a) we instantiate the features of the component
-- (b) we instantiate recursively the parents of the component
......@@ -218,8 +201,8 @@ package body Ocarina.Instances.Components is
declare
Component_Type : constant Node_Id := ATN.Corresponding_Entity
(Component_Type_Identifier
(Component));
(Component_Type_Identifier (Component));
begin
-- Annotate the component type node with the
-- component implementation node.
......@@ -250,7 +233,6 @@ package body Ocarina.Instances.Components is
List_Node := ATN.First_Node (ATN.Subcomponents (Component));
while Present (List_Node) loop
-- XXX Changed call Get_First_Homonym by this
if No (Get_First_Homonym_Instance
(AIN.Subcomponents (New_Instance),
List_Node))
......@@ -258,8 +240,7 @@ package body Ocarina.Instances.Components is
-- We do not re-instantiate subcomponent refinements
Instance_Node := Instantiate_Subcomponent
(Instance_Root,
List_Node);
(Instance_Root, List_Node);
if Present (Instance_Node) then
-- Annotate the corresponding component of the
......@@ -277,8 +258,7 @@ package body Ocarina.Instances.Components is
Append_Node_To_List
(Instance_Node,
AIN.Subcomponents
(New_Instance));
AIN.Subcomponents (New_Instance));
-- We apply the properties to the component
-- corresponding to the subcomponent.
......@@ -289,6 +269,7 @@ package body Ocarina.Instances.Components is
ATN.Properties (List_Node),
Override_Mode => True)
and then Success;
else
Display_Instantiation_Error (List_Node);
Success := False;
......@@ -394,9 +375,11 @@ package body Ocarina.Instances.Components is
ATN.Properties (List_Node),
Override_Mode => True)
and then Success;
Append_Node_To_List
(Instance_Node,
AIN.Features (New_Instance));
Set_Parent_Component (Instance_Node, New_Instance);
else
Display_Instantiation_Error (List_Node);
......@@ -442,9 +425,7 @@ package body Ocarina.Instances.Components is
-- Instantiate the parent component
New_Instance := Instantiate_Component
(Instance_Root,
The_Parent,
New_Instance);
(Instance_Root, The_Parent, New_Instance);
end;
end if;
......@@ -472,9 +453,9 @@ package body Ocarina.Instances.Components is
(AIN.Connections (New_Instance),
List_Node))
then
Instance_Node := Instantiate_Connection (Instance_Root,
New_Instance,
List_Node);
Instance_Node := Instantiate_Connection
(Instance_Root, New_Instance, List_Node);
if Present (Instance_Node) then
Append_Node_To_List (Instance_Node,
AIN.Connections (New_Instance));
......
......@@ -137,13 +137,14 @@ package body Ocarina.Instances.Properties is
is
pragma Assert
(Kind (Entity_Instance) = K_Component_Instance
or else Kind (Entity_Instance) = K_Port_Spec_Instance
or else Kind (Entity_Instance) = K_Feature_Group_Spec_Instance
or else Kind (Entity_Instance) = K_Parameter_Instance
or else Kind (Entity_Instance) = K_Subcomponent_Access_Instance
or else Kind (Entity_Instance) = K_Subprogram_Spec_Instance
or else Kind (Entity_Instance) = K_Connection_Instance
or else Kind (Entity_Instance) = K_Mode_Instance);
or else Kind (Entity_Instance) = K_Port_Spec_Instance
or else Kind (Entity_Instance) = K_Feature_Group_Spec_Instance
or else Kind (Entity_Instance) = K_Parameter_Instance
or else Kind (Entity_Instance) = K_Subcomponent_Access_Instance
or else Kind (Entity_Instance) = K_Subcomponent_Instance
or else Kind (Entity_Instance) = K_Subprogram_Spec_Instance
or else Kind (Entity_Instance) = K_Connection_Instance
or else Kind (Entity_Instance) = K_Mode_Instance);
Property_Instance : Node_Id;
Pointed_Instance : Node_Id;
......@@ -755,6 +756,7 @@ package body Ocarina.Instances.Properties is
Instantiate_Component
(Instance_Root,
ATE.Get_Referenced_Entity (Property_Value)));
Set_Component_Cat (Instantiated_Value,
Component_Cat (Property_Value));
......
......@@ -3459,6 +3459,7 @@ package body Ocarina.Analyzer.AADL.Links is
if Present (Unit_Designator (Property_Type)) then
return Recursive_Unwind_Units_Type
(Unit_Designator (Property_Type));
else
return No_Node;
end if;
......@@ -3496,8 +3497,8 @@ package body Ocarina.Analyzer.AADL.Links is
(Number_Type (Property_Type));
when K_Unique_Property_Type_Identifier =>
-- Link the property type because it may not be
-- linked yet.
-- Link the property type because it may not be linked
-- yet.
declare
Pointed_Node : Node_Id;
......@@ -3513,22 +3514,32 @@ package body Ocarina.Analyzer.AADL.Links is
DAE (Node1 => Property_Type,
Message1 => "does not point to anything");
return No_Node;
elsif Kind (Pointed_Node)
/= K_Property_Type_Declaration then
/= K_Property_Type_Declaration
then
DAE (Node1 => Property_Type,
Message1 => " points to ",
Node2 => Pointed_Node,
Message2 => ", which is not a property type");
return No_Node;
else
Set_Referenced_Entity (Property_Type, Pointed_Node);
end if;
end if;
if Kind (Get_Referenced_Entity (Property_Type)) /=
K_Property_Type_Declaration
then
DAE (Node1 => Property_Type,
Message1 => "is not a property type");
return No_Node;
end if;
return Recursive_Unwind_Units_Type
(Property_Type_Designator
(Get_Referenced_Entity
(Property_Type)));
(Get_Referenced_Entity (Property_Type)));
end;
when K_Units_Type =>
......@@ -3541,6 +3552,7 @@ package body Ocarina.Analyzer.AADL.Links is
end case;
end Recursive_Unwind_Units_Type;
begin
return Recursive_Unwind_Units_Type (Property_Type);
end Unwind_Units_Type;
......
......@@ -80,26 +80,26 @@ CM(11:declaration,1,3,1,19:Msg_Types is [msg];)
CM(11:declaration,1,4,1,6:Domain)
CM(11:declaration,1,5,1,32:mess is <Threads_Ids,Msg_Types>;)
CM(11:declaration,1,6,1,3:Var)
CM(11:declaration,1,7,1,45: x, y, x356, x400, x483, x527 in Threads_Ids;)
CM(11:declaration,1,7,1,45: x, y, x361, x405, x488, x532 in Threads_Ids;)
CM(11:declaration,1,8,1,16: m in Msg_Types;)
CN(10:transition,739)
CT(4:name,739,27:pr_A_Producer_Init_Dispatch)
CA(3:arc,744,731,739)
CT(9:valuation,744,6:<x356>)
CT(9:valuation,744,6:<x361>)
CA(3:arc,1587,910,739)
CT(9:valuation,1587,6:<x400>)
CT(9:valuation,1587,6:<x405>)
CA(3:arc,1607,1129,739)
CT(9:valuation,1607,6:<x483>)
CT(9:valuation,1607,6:<x488>)
CA(3:arc,1627,1348,739)
CT(9:valuation,1627,6:<x527>)
CT(9:valuation,1627,6:<x532>)
CA(3:arc,749,739,735)
CT(9:valuation,749,6:<x356>)
CT(9:valuation,749,6:<x361>)
CA(3:arc,1592,739,914)
CT(9:valuation,1592,6:<x400>)
CT(9:valuation,1592,6:<x405>)
CA(3:arc,1612,739,1133)
CT(9:valuation,1612,6:<x483>)
CT(9:valuation,1612,6:<x488>)
CA(3:arc,1632,739,1352)
CT(9:valuation,1632,6:<x527>)
CT(9:valuation,1632,6:<x532>)
CN(5:place,731)
CT(4:name,731,20:pr_A_Producer_Halted)
CT(6:domain,731,11:Threads_Ids)
......
......@@ -25,10 +25,25 @@ fcs.aadl:88:02: warning: Altitude references a component type
fcs.aadl:68:02: warning: Degs references a component type
fcs.aadl:69:02: warning: Mins references a component type
fcs.aadl:70:02: warning: Secs references a component type
fcs.aadl:68:02: warning: Degs references a component type
fcs.aadl:69:02: warning: Mins references a component type
fcs.aadl:70:02: warning: Secs references a component type
fcs.aadl:68:02: warning: Degs references a component type
fcs.aadl:69:02: warning: Mins references a component type
fcs.aadl:70:02: warning: Secs references a component type
fcs.aadl:68:02: warning: Degs references a component type
fcs.aadl:69:02: warning: Mins references a component type
fcs.aadl:70:02: warning: Secs references a component type
fcs.aadl:508:02: warning: Dev_Bus references a component type
fcs.aadl:509:02: warning: Mem_Bus references a component type
fcs.aadl:346:02: warning: Dev_Bus references a component type
fcs.aadl:347:02: warning: Mem_Bus references a component type
fcs.aadl:68:02: warning: Degs references a component type
fcs.aadl:69:02: warning: Mins references a component type
fcs.aadl:70:02: warning: Secs references a component type
fcs.aadl:68:02: warning: Degs references a component type
fcs.aadl:69:02: warning: Mins references a component type
fcs.aadl:70:02: warning: Secs references a component type
fcs.aadl:278:02: warning: D_AP_Airspeed references a component type
fcs.aadl:279:02: warning: D_AP_Altitude references a component type
fcs.aadl:354:02: warning: GPS_Loc references a component type
......@@ -38,7 +53,7 @@ fcs.aadl:360:02: warning: Aileron_Controller references a component type
fcs.aadl:361:02: warning: Rudder_Controller references a component type
fcs.aadl:362:02: warning: Elevator_Controller references a component type
fcs.aadl:542:02: warning: LAN references a component type
ocarina: Total: 0 error and 18 warnings
ocarina: Total: 0 error and 33 warnings
package Nav_Types
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment