osate / osate2

Open Source AADL2 Tool Environment
http://osate.org
Eclipse Public License 2.0
39 stars 8 forks source link

System subcomponents become Abstract when instantiated #307

Closed brlarson closed 11 years ago

brlarson commented 11 years ago

and they lose all their connections:

pca_imp_instance

This is the offending code, but it happens in other instantiations too:

system implementation pca.imp subcomponents safety: system PCA_Safety::safety.imp; --safety subsystem power: system PCA_Power::power.imp; --power subsystem operation: system PCA_Operation::operation.imp; --operation subsystem fluid: system PCA_Fluid::fluid.imp; --liquid subsystem connections --patient button pb: port Button_Press->operation.Button_Press; --connections to safety subsystem al: feature group alarm<->safety.alrm; --alarm to ICE interface alm: port safety.Alarm->operation.Alarm; --alarm to control panel war: port safety.Warning->operation.Warning; --warning to control panel hdf: port safety.HW_Detected_Failure->operation.HW_Detected_Failure; --infusion rate changes due to faults spco: port safety.Stop_Pump_Completely->operation.Stop_Pump_Completely; spcf: port safety.Stop_Pump_Completely->fluid.Halt; pak: port safety.Pump_At_KVO_Rate->operation.Pump_At_KVO_Rate; --problems from operation to safety mdw: port operation.Max_Dose_Warning->safety.Max_Dose_Warning; hlv: port operation.Hard_Limit_Violated->safety.Hard_Limit_Violated; nil: port operation.Drug_Not_In_Library->safety.Drug_Not_In_Library; --drug reservoir problems er: port fluid.Empty_Reservoir->safety.Empty_Reservoir;
lr: port fluid.Low_Reservoir->safety.Low_Reservoir;
--power problems db: port power.Defective_Btty->safety.Defective_Battery; lbs: port power.Low_Battery_Warning->safety.Low_Battery; lbo: port power.Low_Battery_Warning->operation.Low_Battery_Warning; vo: port power.Voltage_OOR->safety.Voltage_OOR; rbt: port power.Remaining_Battery_Time->operation.Remaining_Battery_Time; ubp: port power.Using_Battery_Power->operation.Using_Battery_Power; --pump problems bu: port fluid.Bubble->safety.Bubble; pth: port fluid.Pump_Too_Hot->safety.Pump_Too_Hot; pf: port fluid.Prime_Failure->safety.Prime_Failure; uoc: port fluid.Upstream_Occlusion->safety.Upstream_Occlusion; doc: port fluid.Downstream_Occlusion->safety.Downstream_Occlusion; pfr: port operation.Infusion_Flow_Rate->safety.Infusion_Flow_Rate; ufr: port fluid.Upstream_Flow_Rate->safety.Upstream_Flow_Rate; dfr: port fluid.Downstream_Flow_Rate->safety.Downstream_Flow_Rate; --fault log gfl: port in_get_fault_log->safety.get_fault_log; tfl: port safety.The_Fault_Log->out_the_fault_log; --connections to operation --ICE interface com: feature group command<->operation.command; par: feature group parameters<->operation.parameters; sta: feature group status<->operation.status; sec: feature group security<->operation.security; --pump contol rat: port operation.Infusion_Flow_Rate->fluid.Rate_To_Pump; -- pri: port operation.Prime->fluid.Prime; -- cr: port operation.Change_Rate->fluid.Change_Rate; do: port fluid.Door_Open->operation.Door_Open; --security sf: port operation.Security_Fault->safety.Security_Fault; --security violation sp: port in_security_provisioning->operation.security_provisioning; --event log gel: port in_get_event_log->operation.get_event_log; tel: port operation.the_event_log->out_the_event_log; --drug library ldl: port in_load_drug_library->operation.load_drug_library;
--drug outlet drg: port fluid.drug_outlet->out_infused_drug; annex EMV2 { use types ErrorLibrary, PCA_Error_Model; use behavior PCA_Error_Model::CompositeFailStop;
error propagations end propagations; composite error behavior -- states -- [safety.failed or power.failed or operation.failed or fluid.failed]->failed; -- [safety.working and power.working and operation.working and fluid.working]->working; end composite;
}; --end of EMV2 end pca.imp;

and its component type:

system pca extends ICE::ICE_Interface --specification of prototype features (alarm_type=>feature group PCA_Alarms, --alarm status_type=>feature group PCA_Status, --status param_type=>feature group PCA_Parameters, --param command_type=>feature group PCA_Commands, --command security_type=>feature group PCA_Security --pki ) features --EXTERNAL EFFECT --drug infused into patient out_infused_drug : out data port Physical_Types::Fluid_Flow {BLESS::Assertion=>"<<:=INFUSION_RATE>>";}; --infusion rate into patient is value of Infused_Drug port --EXTERNAL PHENOMENON Button_Press: in event port; --physically depressing the patient button --EXTERNAL PHENOMENON Stand_Alone_Switch_Position: in data port; --physical position of the switch --EXTERNAL EFFECT LightToEye: out data port; --image seen by clinician --EXTERNAL PHENOMENON
FingerPress: in event data port; --clinician touches screen --EXTERNAL EFFECT Sound: out data port; --noise made by speaker, heard by clinician

--hospital technician features --fault log in_get_fault_log : in event port --put out fault log next period {BLESS::Assertion=>"<<The_Fault_Log'=FAULT_LOG>>";}; out_the_fault_log : out event data port PCA_Types::Fault_Log --output fault log {BLESS::Assertion=>"<<:=FAULT_LOG>>";}; --event log in_get_event_log : in event port --put out event log next period {BLESS::Assertion=>"<<The_Event_Log'=EVENT_LOG>>";}; out_the_event_log : out event data port PCA_Types::Event_Log --output event log {BLESS::Assertion=>"<<:=EVENT_LOG>>";}; --download drug library in_load_drug_library : in event data port PCA_Types::Drug_Library {BLESS::Assertion=>"<<DRUG_LIBRARY'=Load_Drug_Library>>";}; --next period the library will be stored or updated --provisioning channel in_security_provisioning : in event data port; --type T.B.D. flows -- Drug_To_Patient : flow sink Infused_Drug; Drug_Through_PCA : flow source out_infused_drug; properties Timing_Properties::Period => PCA_Properties::PCA_Period; BLESS::Assertion => "<>" applies to alarm.Immediate; --high priority BLESS::Assertion => "<>" applies to alarm.Prompt; --medium priority BLESS::Assertion => "<>" applies to alarm.Delayed; --low priority BLESS::Assertion => "<>" applies to alarm.Malfunction; --hardware failure, threads may not be running BLESS::Assertion => "<>" applies to alarm.Alarm_Signal; --on, alarm off, alarm paused, audio off, or audio paused BLESS::Assertion => "<>" applies to alarm.Alarm_Type; --indicate what alarm (high&medium) was raised BLESS::Assertion => "<>" applies to alarm.Warning_Type; --indicate what caused warning --reset alarm from ICE BLESS::Assertion => "<<((ALARM_TYPE()=PCA_Types::Alarm_Type#none) and (WARNING_TYPE()=PCA_Types::Warning_Type#none))^(-1)>>" applies to alarm.Reset_Alarm; BLESS::Assertion => "<>" applies to status.On; --"on" signal to ICE only sent if pwered-up and intitalized BLESS::Assertion => "<<not HW_FAIL()>>" applies to status.Okay; --no hardware failures BLESS::Assertion => "<>" applies to status.AppConnected; --ICE app is controlling this PCA pump BLESS::Assertion => "<>" applies to status.Status; --tell ICE current kind of infusion: "Stopped","Bolus","Basal","KVO","Square_Bolus" BLESS::Assertion => "<>" applies to parameters.Current_Flow_Rate; --tell ICE current infusion rate measured by downstream monitor BLESS::Assertion => "<>" applies to parameters.Basal_Flow_Rate; --prescribed rates BLESS::Assertion => "<>" applies to parameters.Bolus_Flow_Rate; BLESS::Assertion => "<>" applies to parameters.KVO_Flow_Rate; BLESS::Assertion => "<>" applies to parameters.Volume_To_Be_Infused; --prescribed volume to be infused BLESS::Assertion => "<>" applies to parameters.Clinican_Requested_Bolus_Duration; --time for clinician-requested infusion BLESS::Assertion => "<>" applies to parameters.Square_Flow_Rate; --rate for clinician-requested infusion -- ("command.Start",""), --start infusion -- ("command.Suspend",""), --suspend infusion -- ("command.Request_Bolus",""), --start clinician requested bolus -- ("command.Load_Drug_Library","DRUG_LIBRARY'=command.Load_Drug_Library"), --load drug library -- ("command.Set_Clinican_Requested_Bolus_Duration","SQUARE_BOLUS_DURATION=command.Set_Clinican_Requested_Bolus_Duration"), -- ("command.Pause_Infusion",""), --pause infusion -- ("command.Resume_Infusion","") --resume infusion -- ); end pca;

juli1 commented 11 years ago

Hi Brian,

Please provide the complete information (models, procedure, etc) to reproduce the model. Complete instructions for making bug reports can be found on https://wiki.sei.cmu.edu/aadl/index.php/Reporting_a_bug

Thanks.

brlarson commented 11 years ago

How do I upload whole OSATE projects to Gist?

To create the bug above, create instance model of "pca.imp" and look at it with IMV.

juli1 commented 11 years ago

You can drop several files or gist. If you prefer, send a zip that contains the whole project. Thanks for the instructions, I am looking forward to receive the package and try to reproduce the bug.

juli1 commented 11 years ago

Please use the develop version, the bug does not happen when using it (see below).

Thanks.

pca_imp_instance