Closed juli1 closed 11 years ago
Julien,
I fixed the name resolver (Aadl2LinkingService) to address the problem. In order for it to work Lutz needs to make a change to the Meta model, namely specify that SubprogramType has CallContext as one of its superclasses. I tried out the change by patching the Ecore model and it worked. I talked to him and he will make the change with you.
Peter
It seems that subprogram implementation calls are not supported. See the model below :
package imported::runtime public with runtime::common; with SEI; with ARINC653;
data generictype end generictype;
subprogram vrs1 features from_MGR : in parameter generictype; from_App0_DM : in parameter generictype; from_App1_DM : in parameter generictype; from_App2_DM : in parameter generictype; from_App3_DM : in parameter generictype; end vrs1;
subprogram vrs2 features to_MGR : out parameter generictype; end vrs2;
subprogram VR features from_MGR : in parameter generictype; from_App0_DM : in parameter generictype; from_App1_DM : in parameter generictype; from_App2_DM : in parameter generictype; from_App3_DM : in parameter generictype; to_MGR : out parameter generictype; end VR;
subprogram implementation VR.i calls mycall : { call1 : subprogram VRs1; call2 : subprogram VRs2; }; connections parameter call2.to_MGR -> to_MGR; end VR.i;
thread thr_VR features from_MGR : in event data port generictype; from_App0_DM : in event data port generictype; from_App1_DM : in event data port generictype; from_App2_DM : in event data port generictype; from_App3_DM : in event data port generictype; to_MGR : out event data port generictype; end thr_VR;
thread implementation thr_VR.i calls mycall : { call1 : subprogram VR.i; }; connections parameter from_MGR -> call1.from_MGR; parameter from_App0_DM -> call1.from_App0_DM; parameter from_App1_DM -> call1.from_App1_DM; parameter from_App2_DM -> call1.from_App2_DM; parameter from_App3_DM -> call1.from_App3_DM; parameter call1.to_MGR -> to_MGR; end thr_VR.i;
process pr_VR features from_MGR : in event data port generictype; from_App0_DM : in event data port generictype; from_App1_DM : in event data port generictype; from_App2_DM : in event data port generictype; from_App3_DM : in event data port generictype; to_MGR : out event data port generictype; end pr_VR;
process implementation pr_VR.i subcomponents thr : thread thr_VR.i;
connections port from_MGR -> thr.from_MGR; port from_App0_DM -> thr.from_App0_DM; port from_App1_DM -> thr.from_App1_DM; port from_App2_DM -> thr.from_App2_DM; port from_App3_DM -> thr.from_App3_DM; port thr.to_MGR -> to_MGR; end pr_VR.i;
subprogram App3 features to_App3_DM : out parameter generictype; end App3;
thread thr_App3 features to_App3_DM : out event data port generictype; end thr_App3;
thread implementation thr_App3.i calls mycall : { call1 : subprogram App3; }; connections parameter call1.to_App3_DM -> to_App3_DM; end thr_App3.i;
process pr_App3 features to_App3_DM : out event data port generictype; end pr_App3;
process implementation pr_App3.i subcomponents thr : thread thr_App3.i;
connections port thr.to_App3_DM -> to_App3_DM; end pr_App3.i;
subprogram App2 features to_App2_DM : out parameter generictype; end App2;
thread thr_App2 features to_App2_DM : out event data port generictype; end thr_App2;
thread implementation thr_App2.i calls mycall : { call1 : subprogram App2; }; connections parameter call1.to_App2_DM -> to_App2_DM; end thr_App2.i;
process pr_App2 features to_App2_DM : out event data port generictype; end pr_App2;
process implementation pr_App2.i subcomponents thr : thread thr_App2.i;
connections port thr.to_App2_DM -> to_App2_DM; end pr_App2.i;
subprogram App2_DM features from_App2 : in parameter generictype; from_MGR : in parameter generictype; to_VR : out parameter generictype; end App2_DM;
thread thr_App2_DM features from_App2 : in event data port generictype; from_MGR : in event data port generictype; to_VR : out event data port generictype; end thr_App2_DM;
thread implementation thr_App2_DM.i calls mycall : { call1 : subprogram App2_DM; }; connections parameter from_App2 -> call1.from_App2; parameter from_MGR -> call1.from_MGR; parameter call1.to_VR -> to_VR; end thr_App2_DM.i;
process pr_App2_DM features from_App2 : in event data port generictype; from_MGR : in event data port generictype; to_VR : out event data port generictype; end pr_App2_DM;
process implementation pr_App2_DM.i subcomponents thr : thread thr_App2_DM.i;
connections port from_App2 -> thr.from_App2; port from_MGR -> thr.from_MGR; port thr.to_VR -> to_VR; end pr_App2_DM.i;
subprogram App1 features to_App1_DM : out parameter generictype; end App1;
thread thr_App1 features to_App1_DM : out event data port generictype; end thr_App1;
thread implementation thr_App1.i calls mycall : { call1 : subprogram App1; }; connections parameter call1.to_App1_DM -> to_App1_DM; end thr_App1.i;
process pr_App1 features to_App1_DM : out event data port generictype; end pr_App1;
process implementation pr_App1.i subcomponents thr : thread thr_App1.i;
connections port thr.to_App1_DM -> to_App1_DM; end pr_App1.i;
subprogram MGR features from_VR : in parameter generictype; to_VR : out parameter generictype; to_App0_DM : out parameter generictype; to_App1_DM : out parameter generictype; to_App2_DM : out parameter generictype; to_App3_DM : out parameter generictype; end MGR;
thread thr_MGR features from_VR : in event data port generictype; to_VR : out event data port generictype; to_App0_DM : out event data port generictype; to_App1_DM : out event data port generictype; to_App2_DM : out event data port generictype; to_App3_DM : out event data port generictype; end thr_MGR;
thread implementation thr_MGR.i calls mycall : { call1 : subprogram MGR; }; connections parameter from_VR -> call1.from_VR; parameter call1.to_VR -> to_VR; parameter call1.to_App0_DM -> to_App0_DM; parameter call1.to_App1_DM -> to_App1_DM; parameter call1.to_App2_DM -> to_App2_DM; parameter call1.to_App3_DM -> to_App3_DM; end thr_MGR.i;
process pr_MGR features from_VR : in event data port generictype; to_VR : out event data port generictype; to_App0_DM : out event data port generictype; to_App1_DM : out event data port generictype; to_App2_DM : out event data port generictype; to_App3_DM : out event data port generictype; end pr_MGR;
process implementation pr_MGR.i subcomponents thr : thread thr_MGR.i;
connections port from_VR -> thr.from_VR; port thr.to_VR -> to_VR; port thr.to_App0_DM -> to_App0_DM; port thr.to_App1_DM -> to_App1_DM; port thr.to_App2_DM -> to_App2_DM; port thr.to_App3_DM -> to_App3_DM; end pr_MGR.i;
subprogram App1_DM features from_App1 : in parameter generictype; from_MGR : in parameter generictype; to_VR : out parameter generictype; end App1_DM;
thread thr_App1_DM features from_App1 : in event data port generictype; from_MGR : in event data port generictype; to_VR : out event data port generictype; end thr_App1_DM;
thread implementation thr_App1_DM.i calls mycall : { call1 : subprogram App1_DM; }; connections parameter from_App1 -> call1.from_App1; parameter from_MGR -> call1.from_MGR; parameter call1.to_VR -> to_VR; end thr_App1_DM.i;
process pr_App1_DM features from_App1 : in event data port generictype; from_MGR : in event data port generictype; to_VR : out event data port generictype; end pr_App1_DM;
process implementation pr_App1_DM.i subcomponents thr : thread thr_App1_DM.i;
connections port from_App1 -> thr.from_App1; port from_MGR -> thr.from_MGR; port thr.to_VR -> to_VR; end pr_App1_DM.i;
subprogram App0 features to_App0_DM : out parameter generictype; end App0;
thread thr_App0 features to_App0_DM : out event data port generictype; end thr_App0;
thread implementation thr_App0.i calls mycall : { call1 : subprogram App0; }; connections parameter call1.to_App0_DM -> to_App0_DM; end thr_App0.i;
process pr_App0 features to_App0_DM : out event data port generictype; end pr_App0;
process implementation pr_App0.i subcomponents thr : thread thr_App0.i;
connections port thr.to_App0_DM -> to_App0_DM; end pr_App0.i;
subprogram App3_DM features from_App3 : in parameter generictype; from_MGR : in parameter generictype; to_VR : out parameter generictype; end App3_DM;
thread thr_App3_DM features from_App3 : in event data port generictype; from_MGR : in event data port generictype; to_VR : out event data port generictype; end thr_App3_DM;
thread implementation thr_App3_DM.i calls mycall : { call1 : subprogram App3_DM; }; connections parameter from_App3 -> call1.from_App3; parameter from_MGR -> call1.from_MGR; parameter call1.to_VR -> to_VR; end thr_App3_DM.i;
process pr_App3_DM features from_App3 : in event data port generictype; from_MGR : in event data port generictype; to_VR : out event data port generictype; end pr_App3_DM;
process implementation pr_App3_DM.i subcomponents thr : thread thr_App3_DM.i;
connections port from_App3 -> thr.from_App3; port from_MGR -> thr.from_MGR; port thr.to_VR -> to_VR; end pr_App3_DM.i;
subprogram App0_DM features from_App0 : in parameter generictype; from_MGR : in parameter generictype; to_VR : out parameter generictype; end App0_DM;
thread thr_App0_DM features from_App0 : in event data port generictype; from_MGR : in event data port generictype; to_VR : out event data port generictype; end thr_App0_DM;
thread implementation thr_App0_DM.i calls mycall : { call1 : subprogram App0_DM; }; connections parameter from_App0 -> call1.from_App0; parameter from_MGR -> call1.from_MGR; parameter call1.to_VR -> to_VR; end thr_App0_DM.i;
process pr_App0_DM features from_App0 : in event data port generictype; from_MGR : in event data port generictype; to_VR : out event data port generictype; end pr_App0_DM;
process implementation pr_App0_DM.i subcomponents thr : thread thr_App0_DM.i;
connections port from_App0 -> thr.from_App0; port from_MGR -> thr.from_MGR; port thr.to_VR -> to_VR; end pr_App0_DM.i;
processor module extends runtime::common::module end module; processor implementation module.i subcomponents VR : virtual processor runtime::common::partition.i {ARINC653::Criticality => LEVEL_C;}; App3 : virtual processor runtime::common::partition.i {ARINC653::Criticality => LEVEL_C;}; App2 : virtual processor runtime::common::partition.i {ARINC653::Criticality => LEVEL_C;}; App2_DM : virtual processor runtime::common::partition.i {ARINC653::Criticality => LEVEL_C;}; App1 : virtual processor runtime::common::partition.i {ARINC653::Criticality => LEVEL_C;}; MGR : virtual processor runtime::common::partition.i {ARINC653::Criticality => LEVEL_C;}; App1_DM : virtual processor runtime::common::partition.i {ARINC653::Criticality => LEVEL_C;}; App0 : virtual processor runtime::common::partition.i {ARINC653::Criticality => LEVEL_C;}; App3_DM : virtual processor runtime::common::partition.i {ARINC653::Criticality => LEVEL_C;}; App0_DM : virtual processor runtime::common::partition.i {ARINC653::Criticality => LEVEL_C;}; properties ARINC653::Module_Major_Frame => 10100ms; ARINC653::Partition_Slots => (100ms,100ms,100ms,100ms,100ms,100ms,100ms,100ms,100ms,100ms); ARINC653::Slots_Allocation => (reference(VR),reference(App3),reference(App2),reference(App2_DM),reference(App1),reference(MGR),reference(App1_DM),reference(App0),reference(App3_DM),reference(App0_DM)); end module.i; memory ram extends runtime::common::ram end ram; memory implementation ram.i subcomponents VR : memory runtime::common::segment.i; App3 : memory runtime::common::segment.i; App2 : memory runtime::common::segment.i; App2_DM : memory runtime::common::segment.i; App1 : memory runtime::common::segment.i; MGR : memory runtime::common::segment.i; App1_DM : memory runtime::common::segment.i; App0 : memory runtime::common::segment.i; App3_DM : memory runtime::common::segment.i; App0_DM : memory runtime::common::segment.i; end ram.i; system mainsystem end mainsystem; system implementation mainsystem.i subcomponents VR : process pr_VR.i; App3 : process pr_App3.i; App2 : process pr_App2.i; App2_DM : process pr_App2_DM.i; App1 : process pr_App1.i; MGR : process pr_MGR.i; App1_DM : process pr_App1_DM.i; App0 : process pr_App0.i; App3_DM : process pr_App3_DM.i; App0_DM : process pr_App0_DM.i; module : processor module.i; ram : memory ram.i; connections port VR.to_MGR->MGR.from_VR; port App3.to_App3_DM->App3_DM.from_App3; port App2.to_App2_DM->App2_DM.from_App2; port App2_DM.to_VR->VR.from_App2_DM; port App1.to_App1_DM->App1_DM.from_App1; port MGR.to_VR->VR.from_MGR; port MGR.to_App0_DM->App0_DM.from_MGR; port MGR.to_App1_DM->App1_DM.from_MGR; port MGR.to_App2_DM->App2_DM.from_MGR; port MGR.to_App3_DM->App3_DM.from_MGR; port App1_DM.to_VR->VR.from_App1_DM; port App0.to_App0_DM->App0_DM.from_App0; port App3_DM.to_VR->VR.from_App3_DM; port App0_DM.to_VR->VR.from_App0_DM; properties Actual_Processor_Binding => (reference (module.VR)) applies to VR; Actual_Memory_Binding => (reference (ram.VR)) applies to VR; Actual_Processor_Binding => (reference (module.App3)) applies to App3; Actual_Memory_Binding => (reference (ram.App3)) applies to App3; Actual_Processor_Binding => (reference (module.App2)) applies to App2; Actual_Memory_Binding => (reference (ram.App2)) applies to App2; Actual_Processor_Binding => (reference (module.App2_DM)) applies to App2_DM; Actual_Memory_Binding => (reference (ram.App2_DM)) applies to App2_DM; Actual_Processor_Binding => (reference (module.App1)) applies to App1; Actual_Memory_Binding => (reference (ram.App1)) applies to App1; Actual_Processor_Binding => (reference (module.MGR)) applies to MGR; Actual_Memory_Binding => (reference (ram.MGR)) applies to MGR; Actual_Processor_Binding => (reference (module.App1_DM)) applies to App1_DM; Actual_Memory_Binding => (reference (ram.App1_DM)) applies to App1_DM; Actual_Processor_Binding => (reference (module.App0)) applies to App0; Actual_Memory_Binding => (reference (ram.App0)) applies to App0; Actual_Processor_Binding => (reference (module.App3_DM)) applies to App3_DM; Actual_Memory_Binding => (reference (ram.App3_DM)) applies to App3_DM; Actual_Processor_Binding => (reference (module.App0_DM)) applies to App0_DM; Actual_Memory_Binding => (reference (ram.App0_DM)) applies to App0_DM; end mainsystem.i; end imported::runtime;
package runtime::common public with ARINC653; with SEI; virtual processor partition end partition; virtual processor implementation partition.i end partition.i; processor module end module; memory ram end ram; memory segment end segment; memory implementation segment.i end segment.i; end runtime::common;