@memoarchitect/ontology 0.7.0 → 0.8.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/README.md +4 -2
  2. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
  3. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +7 -5
  4. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  5. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +18 -8
  6. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +341 -99
  7. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +25 -11
  8. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +328 -271
  9. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +52 -11
  10. package/examples/gpca-pump/model/catalog/gpca_context.sysml +9 -0
  11. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +9 -5
  12. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +175 -259
  13. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +82 -58
  14. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +5 -10
  15. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +101 -100
  16. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
  17. package/examples/gpca-pump/model/catalog/gpca_system.sysml +15 -2
  18. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +274 -331
  19. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +115 -35
  20. package/examples/gpca-pump/model/catalog/project.sysml +5 -0
  21. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +1 -1
  22. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +1 -1
  23. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +1 -1
  24. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +1 -1
  25. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +2 -2
  26. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +1 -1
  27. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +1 -1
  28. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +1 -1
  29. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +2 -2
  30. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +5 -2
  31. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -2
  32. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +1 -1
  33. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +1 -1
  34. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +2 -2
  35. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -2
  36. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +4 -2
  37. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +1 -1
  38. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +3 -2
  39. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
  40. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +133 -128
  41. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +139 -157
  42. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +56 -33
  43. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +25 -26
  44. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -5
  45. package/examples/ros-mobile-robot/README.md +40 -0
  46. package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
  47. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
  48. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
  49. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +13 -0
  50. package/examples/software-only-medical-device/model/catalog/project.sysml +4 -0
  51. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -5
  52. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -60
  53. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +1 -1
  54. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +10 -15
  55. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +7 -9
  56. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +42 -66
  57. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +56 -66
  58. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +26 -55
  59. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +3 -6
  60. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +0 -18
  61. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +51 -82
  62. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +21 -31
  63. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -8
  64. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +28 -21
  65. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +57 -33
  66. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +102 -79
  67. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +5 -5
  68. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +21 -6
  69. package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
  70. package/examples/ui-screen-regions/model/catalog/traces.sysml +28 -125
  71. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -1
  72. package/extensions/LICENSES/MIT.txt +19 -0
  73. package/extensions/README.md +94 -0
  74. package/extensions/aadl/memo.package.yaml +18 -0
  75. package/extensions/aadl/src/aadl_extension.sysml +6 -0
  76. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
  77. package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
  78. package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
  79. package/extensions/cloud/memo.package.yaml +18 -0
  80. package/extensions/cloud/src/cloud_extension.sysml +44 -0
  81. package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
  82. package/extensions/container/memo.package.yaml +18 -0
  83. package/extensions/container/src/container_extension.sysml +37 -0
  84. package/extensions/container/src/methodology/container_methodology.sysml +17 -0
  85. package/extensions/messaging/memo.package.yaml +18 -0
  86. package/extensions/messaging/src/messaging_extension.sysml +64 -0
  87. package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
  88. package/extensions/ros/memo.package.yaml +18 -0
  89. package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
  90. package/extensions/ros/src/ros_extension.sysml +200 -0
  91. package/extensions/template/src/extension.sysml +37 -0
  92. package/memo.manifest.yaml +13 -2
  93. package/methodologies/default/memo.package.yaml +1 -1
  94. package/methodologies/gpca/memo.package.yaml +1 -1
  95. package/ontology/memo.package.yaml +1 -1
  96. package/package.json +5 -3
  97. package/profile/memo.package.yaml +1 -1
  98. package/src/architecture/decisions/memo_decisions.sysml +23 -2
  99. package/src/architecture/functional/behavior/memo_behavior.sysml +49 -21
  100. package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
  101. package/src/architecture/functional/functions/memo_functions.sysml +91 -34
  102. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -22
  103. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +37 -10
  104. package/src/architecture/implementation/ui/memo_ui.sysml +78 -38
  105. package/src/architecture/logical/interfaces/memo_interfaces.sysml +63 -11
  106. package/src/architecture/logical/structure/memo_logical_structure.sysml +21 -20
  107. package/src/architecture/operational/activities/memo_activities.sysml +10 -3
  108. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -8
  109. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +13 -30
  110. package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -16
  111. package/src/architecture/operational/scenarios/memo_scenarios.sysml +57 -23
  112. package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -26
  113. package/src/architecture/operational/workflows/memo_workflows.sysml +29 -10
  114. package/src/architecture/realization/deployment/memo_deployment.sysml +111 -16
  115. package/src/architecture/realization/physical/memo_physical_architecture.sysml +27 -2
  116. package/src/artifacts/configuration_management/memo_configuration_management.sysml +16 -0
  117. package/src/artifacts/core/memo_controlled_artifacts.sysml +3 -1
  118. package/src/artifacts/standards/cfr_21_820.sysml +116 -0
  119. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
  120. package/src/artifacts/standards/iec_60601_1.sysml +149 -0
  121. package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
  122. package/src/artifacts/standards/iec_60812.sysml +51 -0
  123. package/src/artifacts/standards/iec_62304.sysml +210 -0
  124. package/src/artifacts/standards/iec_62366_1.sysml +113 -0
  125. package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
  126. package/src/artifacts/standards/iso_13485.sysml +113 -0
  127. package/src/artifacts/standards/iso_14971.sysml +94 -0
  128. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
  129. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
  130. package/src/artifacts/templates/dhf/21cfr820/design-input.md +1 -1
  131. package/src/artifacts/templates/dhf/21cfr820/design-output.md +5 -5
  132. package/src/artifacts/templates/dhf/21cfr820/design-review.md +1 -1
  133. package/src/artifacts/templates/dhf/21cfr820/design-validation.md +2 -2
  134. package/src/artifacts/templates/dhf/21cfr820/design-verification.md +2 -2
  135. package/src/artifacts/templates/dhf/21cfr820/dhf-index.md +2 -2
  136. package/src/artifacts/templates/dhf/21cfr820/transfer-plan.md +1 -1
  137. package/src/artifacts/templates/dhf/21cfr820/user-needs.md +1 -1
  138. package/src/artifacts/templates/dhf/21cfr820/vv-plan.md +3 -3
  139. package/src/artifacts/templates/dhf/21cfr820/vv-report.md +4 -4
  140. package/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md +1 -1
  141. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +3 -2
  142. package/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md +2 -2
  143. package/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md +4 -4
  144. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +4 -3
  145. package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
  146. package/src/artifacts/templates/dhf/iec-62304/detailed-design.md +1 -1
  147. package/src/artifacts/templates/dhf/iec-62304/integration-test.md +3 -3
  148. package/src/artifacts/templates/dhf/iec-62304/sad.md +6 -5
  149. package/src/artifacts/templates/dhf/iec-62304/sbom.md +3 -2
  150. package/src/artifacts/templates/dhf/iec-62304/sdp.md +5 -4
  151. package/src/artifacts/templates/dhf/iec-62304/soup.md +4 -2
  152. package/src/artifacts/templates/dhf/iec-62304/srs.md +54 -20
  153. package/src/artifacts/templates/dhf/iec-62304/sw-traceability.md +3 -3
  154. package/src/artifacts/templates/dhf/iec-62304/system-test.md +1 -1
  155. package/src/artifacts/templates/dhf/iec-62366/summative-eval.md +1 -1
  156. package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +40 -4
  157. package/src/artifacts/templates/dhf/iec-62366/ue-plan.md +1 -1
  158. package/src/artifacts/templates/dhf/iec-62366/urra.md +3 -3
  159. package/src/artifacts/templates/dhf/iso-14971/fmea.md +42 -19
  160. package/src/artifacts/templates/dhf/iso-14971/har.md +3 -3
  161. package/src/artifacts/templates/dhf/iso-14971/rmp.md +2 -2
  162. package/src/artifacts/templates/dhf/system/sad.md +173 -0
  163. package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
  164. package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
  165. package/src/artifacts/templates/dhf/system/syrs.md +128 -0
  166. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +39 -20
  167. package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
  168. package/src/assurance/requirements/memo_requirements.sysml +5 -2
  169. package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
  170. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
  171. package/src/assurance/safety_risk/memo_risk.sysml +78 -7
  172. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +16 -0
  173. package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
  174. package/src/core/annotations/memo_annotations.sysml +25 -6
  175. package/src/core/common/memo_common.sysml +121 -16
  176. package/src/core/consistency_rules/consistency_rules.sysml +1 -1
  177. package/src/core/dimensions/dimensions.sysml +12 -0
  178. package/src/core/enumerations/memo_enumerations.sysml +60 -14
  179. package/src/core/relationships/memo_relationships.sysml +199 -196
  180. package/src/memo_namespaces.sysml +30 -0
  181. package/src/methodology/core/memo_core.sysml +24 -0
  182. package/src/methodology/profiles/memo_profiles.sysml +1 -1
  183. package/src/rules/ontology/ontology_invariants.sysml +213 -1
  184. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +3 -3
  185. package/src/viewpoints/clinical/clinical_viewpoint.sysml +1 -1
  186. package/src/viewpoints/context/context_viewpoint.sysml +1 -1
  187. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -1
  188. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +1 -0
  189. package/src/viewpoints/functional/functional_viewpoint.sysml +1 -1
  190. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +1 -1
  191. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +1 -1
  192. package/src/viewpoints/operational/operational_viewpoint.sysml +1 -1
  193. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +1 -1
  194. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +1 -1
  195. package/src/viewpoints/verification/verification_viewpoint.sysml +1 -1
  196. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +1 -1
  197. package/examples/extensions/README.md +0 -16
  198. package/examples/extensions/template/src/extension.sysml +0 -15
  199. package/examples/gpca-pump/gpca-pump.kpar +0 -0
  200. /package/{examples/extensions → extensions}/clinical/memo.package.yaml +0 -0
  201. /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
  202. /package/{examples/extensions → extensions}/clinical/src/methodology/clinical_methodology.sysml +0 -0
  203. /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
  204. /package/{examples/extensions → extensions}/template/memo.package.yaml +0 -0
@@ -14,7 +14,7 @@ package memo_examples_gpca_pump_gpca_interfaces {
14
14
  attribute :>> protocolSemantics = "flow, air, occlusion, door, battery, cpu, memory, pump state";
15
15
  }
16
16
  port def SensorInputPort :> SensorPort {
17
- in item sensorData : MemoExchangeItem;
17
+ in item sensorData : MemoItem;
18
18
  attribute :>> interfaceType = "SensorDataInterface";
19
19
  attribute :>> sensorDomain = "physiological and device state";
20
20
  }
@@ -582,10 +582,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
582
582
  attribute :>> id = "CE-001";
583
583
  attribute :>> name = "SensorStatusVectorExchange";
584
584
  attribute :>> exchangeKind = FlowKind::measurement;
585
- ref :>> sourceEndpoint = gpcaDeviceSensors;
586
- attribute :>> sourcePortPath = "HW-001: GPCA_HW_Sensors";
587
- ref :>> targetEndpoint = portSensorIn;
588
- attribute :>> targetPortPath = "GPCA_SW.SENSOR_IN (PORT-04)";
585
+ ref :>> sourceEndpoint = gpcaDevice.gpcaDeviceSensors;
586
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.portSensorIn;
589
587
  ref :>> allocatedExchanges = lfSensorAcquisition;
590
588
  attribute :>> direction = DirectionKind::input;
591
589
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
@@ -595,10 +593,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
595
593
  attribute :>> id = "CE-002";
596
594
  attribute :>> name = "FlowCommandExchange";
597
595
  attribute :>> exchangeKind = FlowKind::command;
598
- ref :>> sourceEndpoint = portGpcaSwOut;
599
- attribute :>> sourcePortPath = "GPCA_SW.GPCA_SW_OUT (Commanded_Flow_Rate)";
596
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portGpcaSwOut;
600
597
  ref :>> targetEndpoint = pumpMotorAssembly;
601
- attribute :>> targetPortPath = "HW-003: PumpMotorAssembly";
602
598
  ref :>> allocatedExchanges = lfFlowCommand;
603
599
  attribute :>> direction = DirectionKind::output;
604
600
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
@@ -608,10 +604,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
608
604
  attribute :>> id = "CE-003";
609
605
  attribute :>> name = "AlarmAnnunciationExchange";
610
606
  attribute :>> exchangeKind = FlowKind::alarm;
611
- ref :>> sourceEndpoint = portGpcaSwOut;
612
- attribute :>> sourcePortPath = "GPCA_SW.GPCA_SW_OUT (Notification_Message, Is_Audio_Disabled)";
607
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portGpcaSwOut;
613
608
  ref :>> targetEndpoint = audibleAlarm;
614
- attribute :>> targetPortPath = "HW-004: AudibleAlarmAnnunciator / HW-005: OperatorDisplay";
615
609
  ref :>> allocatedExchanges = lfAlarmSignal;
616
610
  attribute :>> direction = DirectionKind::output;
617
611
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
@@ -622,9 +616,7 @@ package memo_examples_gpca_pump_gpca_interfaces {
622
616
  attribute :>> name = "PrescriptionEntryExchange";
623
617
  attribute :>> exchangeKind = FlowKind::configuration;
624
618
  ref :>> sourceEndpoint = operatorKeypad;
625
- attribute :>> sourcePortPath = "HW-012: OperatorKeypad";
626
- ref :>> targetEndpoint = portPresIn;
627
- attribute :>> targetPortPath = "GPCA_SW.PRES_IN / GPCA_SW.OP_CMD_IN (PORT-02, PORT-01)";
619
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.portPresIn;
628
620
  ref :>> allocatedExchanges = lfPrescriptionEntry;
629
621
  attribute :>> direction = DirectionKind::input;
630
622
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
@@ -636,94 +628,31 @@ package memo_examples_gpca_pump_gpca_interfaces {
636
628
  // not decompose into the individual physical parts modelled elsewhere in
637
629
  // this MEMO example. These features and their connections are therefore
638
630
  // kept exact and separate from that extended physical design content.
639
- part devOpCmdIn : PhysicalPort { attribute :>> id = "PORT-DEV-01"; attribute :>> name = "OP_CMD_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
640
- part devDbIn : PhysicalPort { attribute :>> id = "PORT-DEV-02"; attribute :>> name = "DB_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
641
- part devPresIn : PhysicalPort { attribute :>> id = "PORT-DEV-03"; attribute :>> name = "PRES_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
642
- part devPatientIn : PhysicalPort { attribute :>> id = "PORT-DEV-04"; attribute :>> name = "PATIENT_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
643
- part devGpcaOut : PhysicalPort { attribute :>> id = "PORT-DEV-05"; attribute :>> name = "GPCA_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
644
-
645
- part snsOpCmdIn : PhysicalPort { attribute :>> id = "PORT-SNS-01"; attribute :>> name = "OP_CMD_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
646
- part snsDbIn : PhysicalPort { attribute :>> id = "PORT-SNS-02"; attribute :>> name = "DB_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
647
- part snsPresIn : PhysicalPort { attribute :>> id = "PORT-SNS-03"; attribute :>> name = "PRES_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
648
- part snsPatientIn : PhysicalPort { attribute :>> id = "PORT-SNS-04"; attribute :>> name = "PATIENT_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
649
- part snsOpCmdOut : PhysicalPort { attribute :>> id = "PORT-SNS-05"; attribute :>> name = "OP_CMD_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
650
- part snsPresOut : PhysicalPort { attribute :>> id = "PORT-SNS-06"; attribute :>> name = "PRES_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
651
- part snsPatientOut : PhysicalPort { attribute :>> id = "PORT-SNS-07"; attribute :>> name = "PATIENT_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
652
- part snsSensorOut : PhysicalPort { attribute :>> id = "PORT-SNS-08"; attribute :>> name = "SENSOR_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
653
- part snsConstOut : PhysicalPort { attribute :>> id = "PORT-SNS-09"; attribute :>> name = "CONST_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
654
- part snsDbOut : PhysicalPort { attribute :>> id = "PORT-SNS-10"; attribute :>> name = "DB_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
655
-
656
- part actGpcaSwIn : PhysicalPort { attribute :>> id = "PORT-ACT-01"; attribute :>> name = "GPCA_SW_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_HW_Actuators.aadl"; }
657
- part actGpcaOut : PhysicalPort { attribute :>> id = "PORT-ACT-02"; attribute :>> name = "GPCA_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Actuators.aadl"; }
658
-
659
631
  // ── GPCA_SW top-level ports (AADL GPCA_SW.aadl features) ────
660
- part portOpCmdIn : SoftwarePort {
661
- attribute :>> id = "PORT-01"; attribute :>> name = "OP_CMD_IN";
662
- attribute :>> description = "Operator commands (System_Start/Stop, Infusion_Initiate/Inhibit, Notification_Cancel, Disable/Enable_Audio, DataConfig) from the data entry interface (I 2).";
663
- attribute :>> portKind = InterfaceKind::control;
664
- attribute :>> direction = DirectionKind::input;
665
- attribute :>> dataTypeName = "DATATYPES::Operator_Commands.Impl";
666
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
667
- }
668
- part portPresIn : SoftwarePort {
669
- attribute :>> id = "PORT-02"; attribute :>> name = "PRES_IN";
670
- attribute :>> description = "Prescription data entry fields (I 1, 13 fields PatientID_prog..NumberMax_pbolus_prog).";
671
- attribute :>> portKind = InterfaceKind::data;
672
- attribute :>> direction = DirectionKind::input;
673
- attribute :>> dataTypeName = "DATATYPES::Prescription_Inputs.Impl";
674
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
675
- }
676
- part portPatientIn : SoftwarePort {
677
- attribute :>> id = "PORT-03"; attribute :>> name = "PATIENT_IN";
678
- attribute :>> description = "Patient bolus request (I 4, BolusRequest_prog).";
679
- attribute :>> portKind = InterfaceKind::userInteraction;
680
- attribute :>> direction = DirectionKind::input;
681
- attribute :>> dataTypeName = "DATATYPES::Patient_Inputs.Impl";
682
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
683
- }
684
- part portSensorIn : SoftwarePort {
685
- attribute :>> id = "PORT-04"; attribute :>> name = "SENSOR_IN";
686
- attribute :>> description = "Device sensor inputs (air-in-line, occlusion, door, reservoir, flow).";
687
- attribute :>> portKind = InterfaceKind::digitalSignal;
688
- attribute :>> direction = DirectionKind::input;
689
- attribute :>> dataTypeName = "DATATYPES::Device_Sensor_Inputs.Impl";
690
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
691
- }
692
- part portConstIn : SoftwarePort {
693
- attribute :>> id = "PORT-05"; attribute :>> name = "CONST_IN";
694
- attribute :>> description = "Device configuration constants (App. A.4 values such as Empty_Reservoir, tolerances).";
695
- attribute :>> portKind = InterfaceKind::data;
696
- attribute :>> direction = DirectionKind::input;
697
- attribute :>> dataTypeName = "DATATYPES::Device_Configuration_Inputs.Impl";
698
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
699
- }
700
- part portDbIn : SoftwarePort {
701
- attribute :>> id = "PORT-06"; attribute :>> name = "DB_IN";
702
- attribute :>> description = "Hospital pharmacy database safe values (I 9-I 11); realizes SI-005 HospitalPharmacyDatabaseInterface.";
703
- attribute :>> portKind = InterfaceKind::data;
704
- attribute :>> direction = DirectionKind::input;
705
- attribute :>> dataTypeName = "DATATYPES::Drug_Database_Inputs.Impl";
706
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
707
- }
708
- part portGpcaSwOut : SoftwarePort {
709
- attribute :>> id = "PORT-07"; attribute :>> name = "GPCA_SW_OUT";
710
- attribute :>> description = "Aggregated software output vector (Current_System_Mode, Commanded_Flow_Rate, notifications, prescription echo, status).";
711
- attribute :>> portKind = InterfaceKind::data;
712
- attribute :>> direction = DirectionKind::output;
713
- attribute :>> dataTypeName = "DATATYPES::GPCA_SW_Outputs.Impl";
714
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
715
- }
716
-
632
+ // ── Software-module ports (AADL GPCA_SW.Impl subcomponent features) ──
633
+ // These 49 were `sourcePortPath` / `targetPortPath` STRINGS until now
634
+ // (§13.3): "TLM.OP_CMD_IN" and the like, which nothing could follow to an
635
+ // element. The AADL packages declare them as real features, so they are
636
+ // declared as real ports here and the exchanges below reference them
637
+ // directly. `portKind` follows the seven top-level GPCA_SW ports wherever
638
+ // the feature name matches one of them, and otherwise the single FlowKind
639
+ // every exchange across that feature carries — no path carried two.
640
+ // TLM
641
+ // CONFIG
642
+ // ALARM
643
+ // LOG
644
+ // IM
645
+ // OUTPUT
646
+ // SYS_MON
647
+ // SYS_STAT
717
648
  // ── GPCA_SW.Impl inter-component connections (AADL, 1:1) ────
718
649
  // ALARM_to_IM immediate is the same-step alarm-response
719
650
  // mechanism the formal properties rely on.
720
651
  part ceOpCmdToTlm : ComponentExchange {
721
652
  attribute :>> id = "CE-101"; attribute :>> name = "OP_CMDtoTLM";
722
653
  attribute :>> exchangeKind = FlowKind::command;
723
- ref :>> sourceEndpoint = portOpCmdIn;
724
- attribute :>> sourcePortPath = "OP_CMD_IN";
725
- ref :>> targetEndpoint = tlm;
726
- attribute :>> targetPortPath = "TLM.OP_CMD_IN";
654
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portOpCmdIn;
655
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmOpCmdIn;
727
656
  attribute :>> direction = DirectionKind::input;
728
657
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
729
658
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -731,10 +660,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
731
660
  part ceConstToTlm : ComponentExchange {
732
661
  attribute :>> id = "CE-102"; attribute :>> name = "CONSTtoTLM";
733
662
  attribute :>> exchangeKind = FlowKind::configuration;
734
- ref :>> sourceEndpoint = portConstIn;
735
- attribute :>> sourcePortPath = "CONST_IN";
736
- ref :>> targetEndpoint = tlm;
737
- attribute :>> targetPortPath = "TLM.CONST_IN";
663
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portConstIn;
664
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmConstIn;
738
665
  attribute :>> direction = DirectionKind::input;
739
666
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
740
667
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -742,40 +669,32 @@ package memo_examples_gpca_pump_gpca_interfaces {
742
669
  part ceTlmOutToOutput : ComponentExchange {
743
670
  attribute :>> id = "CE-103"; attribute :>> name = "TLM_OUT_toOUTPUT";
744
671
  attribute :>> exchangeKind = FlowKind::status;
745
- ref :>> sourceEndpoint = tlm;
746
- attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
747
- ref :>> targetEndpoint = outputBus;
748
- attribute :>> targetPortPath = "OUTPUT.TLM_MODE_IN";
672
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
673
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputTlmModeIn;
749
674
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
750
675
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
751
676
  }
752
677
  part ceImToSysStat : ComponentExchange {
753
678
  attribute :>> id = "CE-104"; attribute :>> name = "IM_to_SYS_STAT";
754
679
  attribute :>> exchangeKind = FlowKind::status;
755
- ref :>> sourceEndpoint = infusionMgr;
756
- attribute :>> sourcePortPath = "IM.IM_OUT";
757
- ref :>> targetEndpoint = systemStatus;
758
- attribute :>> targetPortPath = "SYS_STAT.IM_IN";
680
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImImOut;
681
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatImIn;
759
682
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
760
683
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
761
684
  }
762
685
  part ceTlmToSysStat : ComponentExchange {
763
686
  attribute :>> id = "CE-105"; attribute :>> name = "TLM_to_SYS_STAT";
764
687
  attribute :>> exchangeKind = FlowKind::status;
765
- ref :>> sourceEndpoint = tlm;
766
- attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
767
- ref :>> targetEndpoint = systemStatus;
768
- attribute :>> targetPortPath = "SYS_STAT.TLM_MODE_IN";
688
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
689
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatTlmModeIn;
769
690
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
770
691
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
771
692
  }
772
693
  part ceSensorToSysStat : ComponentExchange {
773
694
  attribute :>> id = "CE-106"; attribute :>> name = "SENSOR_to_SYS_STAT";
774
695
  attribute :>> exchangeKind = FlowKind::measurement;
775
- ref :>> sourceEndpoint = portSensorIn;
776
- attribute :>> sourcePortPath = "SENSOR_IN";
777
- ref :>> targetEndpoint = systemStatus;
778
- attribute :>> targetPortPath = "SYS_STAT.SENSOR_IN";
696
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portSensorIn;
697
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSensorIn;
779
698
  attribute :>> direction = DirectionKind::input;
780
699
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
781
700
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -783,10 +702,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
783
702
  part ceConstToSysStat : ComponentExchange {
784
703
  attribute :>> id = "CE-107"; attribute :>> name = "CONST_to_SYS_STAT";
785
704
  attribute :>> exchangeKind = FlowKind::configuration;
786
- ref :>> sourceEndpoint = portConstIn;
787
- attribute :>> sourcePortPath = "CONST_IN";
788
- ref :>> targetEndpoint = systemStatus;
789
- attribute :>> targetPortPath = "SYS_STAT.CONST_IN";
705
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portConstIn;
706
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatConstIn;
790
707
  attribute :>> direction = DirectionKind::input;
791
708
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
792
709
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -794,60 +711,48 @@ package memo_examples_gpca_pump_gpca_interfaces {
794
711
  part ceConfigToSysStat : ComponentExchange {
795
712
  attribute :>> id = "CE-108"; attribute :>> name = "CONFIG_to_SYS_STAT";
796
713
  attribute :>> exchangeKind = FlowKind::configuration;
797
- ref :>> sourceEndpoint = config;
798
- attribute :>> sourcePortPath = "CONFIG.CONFIG_OUT";
799
- ref :>> targetEndpoint = systemStatus;
800
- attribute :>> targetPortPath = "SYS_STAT.CONFIG_IN";
714
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
715
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatConfigIn;
801
716
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
802
717
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
803
718
  }
804
719
  part ceSysStatOutToOutput : ComponentExchange {
805
720
  attribute :>> id = "CE-109"; attribute :>> name = "SYS_STAT_OUT_toOUTPUT";
806
721
  attribute :>> exchangeKind = FlowKind::status;
807
- ref :>> sourceEndpoint = systemStatus;
808
- attribute :>> sourcePortPath = "SYS_STAT.SYS_STAT_OUT";
809
- ref :>> targetEndpoint = outputBus;
810
- attribute :>> targetPortPath = "OUTPUT.SYS_STAT_IN";
722
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
723
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputSysStatIn;
811
724
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
812
725
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
813
726
  }
814
727
  part ceImToAlarm : ComponentExchange {
815
728
  attribute :>> id = "CE-110"; attribute :>> name = "IM_to_ALARM";
816
729
  attribute :>> exchangeKind = FlowKind::status;
817
- ref :>> sourceEndpoint = infusionMgr;
818
- attribute :>> sourcePortPath = "IM.IM_OUT";
819
- ref :>> targetEndpoint = alarm;
820
- attribute :>> targetPortPath = "ALARM.IM_IN";
730
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImImOut;
731
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmImIn;
821
732
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
822
733
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
823
734
  }
824
735
  part ceTlmToAlarm : ComponentExchange {
825
736
  attribute :>> id = "CE-111"; attribute :>> name = "TLM_to_ALARM";
826
737
  attribute :>> exchangeKind = FlowKind::status;
827
- ref :>> sourceEndpoint = tlm;
828
- attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
829
- ref :>> targetEndpoint = alarm;
830
- attribute :>> targetPortPath = "ALARM.TLM_MODE_IN";
738
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
739
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmTlmModeIn;
831
740
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
832
741
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
833
742
  }
834
743
  part ceSysMonToAlarm : ComponentExchange {
835
744
  attribute :>> id = "CE-112"; attribute :>> name = "SYS_MON_to_ALARM";
836
745
  attribute :>> exchangeKind = FlowKind::status;
837
- ref :>> sourceEndpoint = systemMonitor;
838
- attribute :>> sourcePortPath = "SYS_MON.SYS_MON_OUT";
839
- ref :>> targetEndpoint = alarm;
840
- attribute :>> targetPortPath = "ALARM.SYS_MON_IN";
746
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemMonitor.portSysMonSysMonOut;
747
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmSysMonIn;
841
748
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
842
749
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
843
750
  }
844
751
  part ceOpCmdToAlarm : ComponentExchange {
845
752
  attribute :>> id = "CE-113"; attribute :>> name = "OP_CMD_to_ALARM";
846
753
  attribute :>> exchangeKind = FlowKind::command;
847
- ref :>> sourceEndpoint = portOpCmdIn;
848
- attribute :>> sourcePortPath = "OP_CMD_IN";
849
- ref :>> targetEndpoint = alarm;
850
- attribute :>> targetPortPath = "ALARM.OP_CMD_IN";
754
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portOpCmdIn;
755
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmOpCmdIn;
851
756
  attribute :>> direction = DirectionKind::input;
852
757
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
853
758
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -855,10 +760,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
855
760
  part ceDbToAlarm : ComponentExchange {
856
761
  attribute :>> id = "CE-114"; attribute :>> name = "DB_to_ALARM";
857
762
  attribute :>> exchangeKind = FlowKind::configuration;
858
- ref :>> sourceEndpoint = portDbIn;
859
- attribute :>> sourcePortPath = "DB_IN";
860
- ref :>> targetEndpoint = alarm;
861
- attribute :>> targetPortPath = "ALARM.DB_IN";
763
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portDbIn;
764
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmDbIn;
862
765
  attribute :>> direction = DirectionKind::input;
863
766
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
864
767
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -866,10 +769,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
866
769
  part ceSensorToAlarm : ComponentExchange {
867
770
  attribute :>> id = "CE-115"; attribute :>> name = "SENSOR_to_ALARM";
868
771
  attribute :>> exchangeKind = FlowKind::measurement;
869
- ref :>> sourceEndpoint = portSensorIn;
870
- attribute :>> sourcePortPath = "SENSOR_IN";
871
- ref :>> targetEndpoint = alarm;
872
- attribute :>> targetPortPath = "ALARM.SENSOR_IN";
772
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portSensorIn;
773
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmSensorIn;
873
774
  attribute :>> direction = DirectionKind::input;
874
775
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
875
776
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -877,10 +778,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
877
778
  part ceConstToAlarm : ComponentExchange {
878
779
  attribute :>> id = "CE-116"; attribute :>> name = "CONST_to_ALARM";
879
780
  attribute :>> exchangeKind = FlowKind::configuration;
880
- ref :>> sourceEndpoint = portConstIn;
881
- attribute :>> sourcePortPath = "CONST_IN";
882
- ref :>> targetEndpoint = alarm;
883
- attribute :>> targetPortPath = "ALARM.CONST_IN";
781
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portConstIn;
782
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmConstIn;
884
783
  attribute :>> direction = DirectionKind::input;
885
784
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
886
785
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -888,50 +787,40 @@ package memo_examples_gpca_pump_gpca_interfaces {
888
787
  part ceSysStatToAlarm : ComponentExchange {
889
788
  attribute :>> id = "CE-117"; attribute :>> name = "SYS_STAT_to_ALARM";
890
789
  attribute :>> exchangeKind = FlowKind::status;
891
- ref :>> sourceEndpoint = systemStatus;
892
- attribute :>> sourcePortPath = "SYS_STAT.SYS_STAT_OUT";
893
- ref :>> targetEndpoint = alarm;
894
- attribute :>> targetPortPath = "ALARM.SYS_STAT_IN";
790
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
791
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmSysStatIn;
895
792
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
896
793
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
897
794
  }
898
795
  part ceConfigToAlarm : ComponentExchange {
899
796
  attribute :>> id = "CE-118"; attribute :>> name = "CONFIG_to_ALARM";
900
797
  attribute :>> exchangeKind = FlowKind::configuration;
901
- ref :>> sourceEndpoint = config;
902
- attribute :>> sourcePortPath = "CONFIG.CONFIG_OUT";
903
- ref :>> targetEndpoint = alarm;
904
- attribute :>> targetPortPath = "ALARM.CONFIG_IN";
798
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
799
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmConfigIn;
905
800
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
906
801
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
907
802
  }
908
803
  part ceAlarmOutToOutput : ComponentExchange {
909
804
  attribute :>> id = "CE-119"; attribute :>> name = "ALARM_OUT_toOUTPUT";
910
805
  attribute :>> exchangeKind = FlowKind::alarm;
911
- ref :>> sourceEndpoint = alarm;
912
- attribute :>> sourcePortPath = "ALARM.ALARM_OUT";
913
- ref :>> targetEndpoint = outputBus;
914
- attribute :>> targetPortPath = "OUTPUT.ALARM_IN";
806
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut;
807
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputAlarmIn;
915
808
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
916
809
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
917
810
  }
918
811
  part ceTlmToConfig : ComponentExchange {
919
812
  attribute :>> id = "CE-120"; attribute :>> name = "TLM_to_CONFIG";
920
813
  attribute :>> exchangeKind = FlowKind::status;
921
- ref :>> sourceEndpoint = tlm;
922
- attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
923
- ref :>> targetEndpoint = config;
924
- attribute :>> targetPortPath = "CONFIG.TLM_MODE_IN";
814
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
815
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigTlmModeIn;
925
816
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
926
817
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
927
818
  }
928
819
  part cePresToConfig : ComponentExchange {
929
820
  attribute :>> id = "CE-121"; attribute :>> name = "PRES_to_CONFIG";
930
821
  attribute :>> exchangeKind = FlowKind::configuration;
931
- ref :>> sourceEndpoint = portPresIn;
932
- attribute :>> sourcePortPath = "PRES_IN";
933
- ref :>> targetEndpoint = config;
934
- attribute :>> targetPortPath = "CONFIG.PRES_IN";
822
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portPresIn;
823
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigPresIn;
935
824
  attribute :>> direction = DirectionKind::input;
936
825
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
937
826
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -939,10 +828,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
939
828
  part ceOpCmdToConfig : ComponentExchange {
940
829
  attribute :>> id = "CE-122"; attribute :>> name = "OP_CMD_to_CONFIG";
941
830
  attribute :>> exchangeKind = FlowKind::command;
942
- ref :>> sourceEndpoint = portOpCmdIn;
943
- attribute :>> sourcePortPath = "OP_CMD_IN";
944
- ref :>> targetEndpoint = config;
945
- attribute :>> targetPortPath = "CONFIG.OP_CMD_IN";
831
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portOpCmdIn;
832
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigOpCmdIn;
946
833
  attribute :>> direction = DirectionKind::input;
947
834
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
948
835
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -950,10 +837,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
950
837
  part ceDbToConfig : ComponentExchange {
951
838
  attribute :>> id = "CE-123"; attribute :>> name = "DB_to_CONFIG";
952
839
  attribute :>> exchangeKind = FlowKind::configuration;
953
- ref :>> sourceEndpoint = portDbIn;
954
- attribute :>> sourcePortPath = "DB_IN";
955
- ref :>> targetEndpoint = config;
956
- attribute :>> targetPortPath = "CONFIG.DB_IN";
840
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portDbIn;
841
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigDbIn;
957
842
  attribute :>> direction = DirectionKind::input;
958
843
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
959
844
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -961,10 +846,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
961
846
  part ceConsToConfig : ComponentExchange {
962
847
  attribute :>> id = "CE-124"; attribute :>> name = "CONS_to_CONFIG";
963
848
  attribute :>> exchangeKind = FlowKind::configuration;
964
- ref :>> sourceEndpoint = portConstIn;
965
- attribute :>> sourcePortPath = "CONST_IN";
966
- ref :>> targetEndpoint = config;
967
- attribute :>> targetPortPath = "CONFIG.CONST_IN";
849
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portConstIn;
850
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConstIn;
968
851
  attribute :>> direction = DirectionKind::input;
969
852
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
970
853
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -972,40 +855,32 @@ package memo_examples_gpca_pump_gpca_interfaces {
972
855
  part ceSysStatToConfig : ComponentExchange {
973
856
  attribute :>> id = "CE-125"; attribute :>> name = "SYS_STAT_to_CONFIG";
974
857
  attribute :>> exchangeKind = FlowKind::status;
975
- ref :>> sourceEndpoint = systemStatus;
976
- attribute :>> sourcePortPath = "SYS_STAT.SYS_STAT_OUT";
977
- ref :>> targetEndpoint = config;
978
- attribute :>> targetPortPath = "CONFIG.SYS_STAT_IN";
858
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
859
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigSysStatIn;
979
860
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
980
861
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
981
862
  }
982
863
  part ceConfigToOutput : ComponentExchange {
983
864
  attribute :>> id = "CE-126"; attribute :>> name = "CONFIG_toOUTPUT";
984
865
  attribute :>> exchangeKind = FlowKind::configuration;
985
- ref :>> sourceEndpoint = config;
986
- attribute :>> sourcePortPath = "CONFIG.CONFIG_OUT";
987
- ref :>> targetEndpoint = outputBus;
988
- attribute :>> targetPortPath = "OUTPUT.CONFIG_IN";
866
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
867
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputConfigIn;
989
868
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
990
869
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
991
870
  }
992
871
  part ceTlmToIm : ComponentExchange {
993
872
  attribute :>> id = "CE-127"; attribute :>> name = "TLM_to_IM";
994
873
  attribute :>> exchangeKind = FlowKind::status;
995
- ref :>> sourceEndpoint = tlm;
996
- attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
997
- ref :>> targetEndpoint = infusionMgr;
998
- attribute :>> targetPortPath = "IM.TLM_MODE_IN";
874
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
875
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImTlmModeIn;
999
876
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1000
877
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1001
878
  }
1002
879
  part ceOpCmdToIm : ComponentExchange {
1003
880
  attribute :>> id = "CE-128"; attribute :>> name = "OP_CMD_to_IM";
1004
881
  attribute :>> exchangeKind = FlowKind::command;
1005
- ref :>> sourceEndpoint = portOpCmdIn;
1006
- attribute :>> sourcePortPath = "OP_CMD_IN";
1007
- ref :>> targetEndpoint = infusionMgr;
1008
- attribute :>> targetPortPath = "IM.OP_CMD_IN";
882
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portOpCmdIn;
883
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImOpCmdIn;
1009
884
  attribute :>> direction = DirectionKind::input;
1010
885
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1011
886
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -1013,10 +888,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
1013
888
  part cePatientToIm : ComponentExchange {
1014
889
  attribute :>> id = "CE-129"; attribute :>> name = "PATIENT_to_IM";
1015
890
  attribute :>> exchangeKind = FlowKind::command;
1016
- ref :>> sourceEndpoint = portPatientIn;
1017
- attribute :>> sourcePortPath = "PATIENT_IN";
1018
- ref :>> targetEndpoint = infusionMgr;
1019
- attribute :>> targetPortPath = "IM.PATIENT_IN";
891
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portPatientIn;
892
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImPatientIn;
1020
893
  attribute :>> direction = DirectionKind::input;
1021
894
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1022
895
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -1024,130 +897,104 @@ package memo_examples_gpca_pump_gpca_interfaces {
1024
897
  part ceConfigToIm : ComponentExchange {
1025
898
  attribute :>> id = "CE-130"; attribute :>> name = "CONFIG_to_IM";
1026
899
  attribute :>> exchangeKind = FlowKind::configuration;
1027
- ref :>> sourceEndpoint = config;
1028
- attribute :>> sourcePortPath = "CONFIG.CONFIG_OUT";
1029
- ref :>> targetEndpoint = infusionMgr;
1030
- attribute :>> targetPortPath = "IM.CONFIG_IN";
900
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
901
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImConfigIn;
1031
902
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1032
903
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1033
904
  }
1034
905
  part ceAlarmToIm : ComponentExchange {
1035
906
  attribute :>> id = "CE-131"; attribute :>> name = "ALARM_to_IM";
1036
907
  attribute :>> exchangeKind = FlowKind::alarm;
1037
- ref :>> sourceEndpoint = alarm;
1038
- attribute :>> sourcePortPath = "ALARM.ALARM_OUT";
1039
- ref :>> targetEndpoint = infusionMgr;
1040
- attribute :>> targetPortPath = "IM.ALARM_IN";
908
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut;
909
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImAlarmIn;
1041
910
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1042
911
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1043
912
  }
1044
913
  part ceSysStatToIm : ComponentExchange {
1045
914
  attribute :>> id = "CE-132"; attribute :>> name = "SYS_STAT_to_IM";
1046
915
  attribute :>> exchangeKind = FlowKind::status;
1047
- ref :>> sourceEndpoint = systemStatus;
1048
- attribute :>> sourcePortPath = "SYS_STAT.SYS_STAT_OUT";
1049
- ref :>> targetEndpoint = infusionMgr;
1050
- attribute :>> targetPortPath = "IM.SYS_STAT_IN";
916
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
917
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImSysStatIn;
1051
918
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1052
919
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1053
920
  }
1054
921
  part ceImToOutput : ComponentExchange {
1055
922
  attribute :>> id = "CE-133"; attribute :>> name = "IM_toOUTPUT";
1056
923
  attribute :>> exchangeKind = FlowKind::status;
1057
- ref :>> sourceEndpoint = infusionMgr;
1058
- attribute :>> sourcePortPath = "IM.IM_OUT";
1059
- ref :>> targetEndpoint = outputBus;
1060
- attribute :>> targetPortPath = "OUTPUT.IM_IN";
924
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImImOut;
925
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputImIn;
1061
926
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1062
927
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1063
928
  }
1064
929
  part ceTlmToSysMon : ComponentExchange {
1065
930
  attribute :>> id = "CE-134"; attribute :>> name = "TLM_to_SYS_MON";
1066
931
  attribute :>> exchangeKind = FlowKind::status;
1067
- ref :>> sourceEndpoint = tlm;
1068
- attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
1069
- ref :>> targetEndpoint = systemMonitor;
1070
- attribute :>> targetPortPath = "SYS_MON.TLM_MODE_IN";
932
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
933
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemMonitor.portSysMonTlmModeIn;
1071
934
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1072
935
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1073
936
  }
1074
937
  part ceSysMonToOutput : ComponentExchange {
1075
938
  attribute :>> id = "CE-135"; attribute :>> name = "SYS_MON_toOUTPUT";
1076
939
  attribute :>> exchangeKind = FlowKind::status;
1077
- ref :>> sourceEndpoint = systemMonitor;
1078
- attribute :>> sourcePortPath = "SYS_MON.SYS_MON_OUT";
1079
- ref :>> targetEndpoint = outputBus;
1080
- attribute :>> targetPortPath = "OUTPUT.SYS_MON_IN";
940
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemMonitor.portSysMonSysMonOut;
941
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputSysMonIn;
1081
942
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1082
943
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1083
944
  }
1084
945
  part ceTlmToLog : ComponentExchange {
1085
946
  attribute :>> id = "CE-136"; attribute :>> name = "TLM_to_LOG";
1086
947
  attribute :>> exchangeKind = FlowKind::status;
1087
- ref :>> sourceEndpoint = tlm;
1088
- attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
1089
- ref :>> targetEndpoint = logging;
1090
- attribute :>> targetPortPath = "LOG.TLM_MODE_IN";
948
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
949
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogTlmModeIn;
1091
950
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1092
951
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1093
952
  }
1094
953
  part ceConfigToLog : ComponentExchange {
1095
954
  attribute :>> id = "CE-137"; attribute :>> name = "CONFIG_to_LOG";
1096
955
  attribute :>> exchangeKind = FlowKind::configuration;
1097
- ref :>> sourceEndpoint = config;
1098
- attribute :>> sourcePortPath = "CONFIG.CONFIG_OUT";
1099
- ref :>> targetEndpoint = logging;
1100
- attribute :>> targetPortPath = "LOG.CONFIG_IN";
956
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
957
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogConfigIn;
1101
958
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1102
959
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1103
960
  }
1104
961
  part ceAlarmToLog : ComponentExchange {
1105
962
  attribute :>> id = "CE-138"; attribute :>> name = "ALARM_to_LOG";
1106
963
  attribute :>> exchangeKind = FlowKind::alarm;
1107
- ref :>> sourceEndpoint = alarm;
1108
- attribute :>> sourcePortPath = "ALARM.ALARM_OUT";
1109
- ref :>> targetEndpoint = logging;
1110
- attribute :>> targetPortPath = "LOG.ALARM_IN";
964
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut;
965
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogAlarmIn;
1111
966
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1112
967
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1113
968
  }
1114
969
  part ceSysStatToLog : ComponentExchange {
1115
970
  attribute :>> id = "CE-139"; attribute :>> name = "SYS_STAT_to_LOG";
1116
971
  attribute :>> exchangeKind = FlowKind::status;
1117
- ref :>> sourceEndpoint = systemStatus;
1118
- attribute :>> sourcePortPath = "SYS_STAT.SYS_STAT_OUT";
1119
- ref :>> targetEndpoint = logging;
1120
- attribute :>> targetPortPath = "LOG.SYS_STAT_IN";
972
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
973
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogSysStatIn;
1121
974
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1122
975
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1123
976
  }
1124
977
  part ceImToLog : ComponentExchange {
1125
978
  attribute :>> id = "CE-140"; attribute :>> name = "IM_to_LOG";
1126
979
  attribute :>> exchangeKind = FlowKind::status;
1127
- ref :>> sourceEndpoint = infusionMgr;
1128
- attribute :>> sourcePortPath = "IM.IM_OUT";
1129
- ref :>> targetEndpoint = logging;
1130
- attribute :>> targetPortPath = "LOG.IM_IN";
980
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImImOut;
981
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogImIn;
1131
982
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1132
983
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1133
984
  }
1134
985
  part ceLogToOutput : ComponentExchange {
1135
986
  attribute :>> id = "CE-141"; attribute :>> name = "LOG_toOUTPUT";
1136
987
  attribute :>> exchangeKind = FlowKind::audit;
1137
- ref :>> sourceEndpoint = logging;
1138
- attribute :>> sourcePortPath = "LOG.LOG_OUT";
1139
- ref :>> targetEndpoint = outputBus;
1140
- attribute :>> targetPortPath = "OUTPUT.LOG_IN";
988
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.logging.portLogLogOut;
989
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputLogIn;
1141
990
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1142
991
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1143
992
  }
1144
993
  part ceOutputToGpcaOut : ComponentExchange {
1145
994
  attribute :>> id = "CE-142"; attribute :>> name = "OUTPUT_to_GPCA_OUT";
1146
995
  attribute :>> exchangeKind = FlowKind::status;
1147
- ref :>> sourceEndpoint = outputBus;
1148
- attribute :>> sourcePortPath = "OUTPUT.GPCA_SW_OUT";
1149
- ref :>> targetEndpoint = portGpcaSwOut;
1150
- attribute :>> targetPortPath = "GPCA_SW_OUT";
996
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputGpcaSwOut;
997
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.portGpcaSwOut;
1151
998
  attribute :>> direction = DirectionKind::output;
1152
999
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1153
1000
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -1213,4 +1060,73 @@ package memo_examples_gpca_pump_gpca_interfaces {
1213
1060
  attribute :>> encoding = "Boolean";
1214
1061
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros";
1215
1062
  }
1063
+
1064
+ // ── The exchanges as FLOWS (Track A3) ────────────────────────────
1065
+ // The flow is the edge; the ComponentExchange part above it carries the
1066
+ // budget and assurance attributes. Each flow is NAMED with its exchange,
1067
+ // and that shared identifier IS the binding between the two halves —
1068
+ // `relationships["ceOpCmdToTlm"]` and `elements["ceOpCmdToTlm"]` are one
1069
+ // statement, checked by CR-ONT-076. A named flow needs the grammar to
1070
+ // accept a name at all, which is why this could not land before the
1071
+ // productions did.
1072
+ //
1073
+ // The ends are the PORTS, not the components — the port-level topology the
1074
+ // *PortPath strings used to approximate. gpca_trace.sysml keeps the
1075
+ // component-level dependencies; AADL distinguishes the two granularities
1076
+ // and so does this.
1077
+ //
1078
+ // Two spellings, because AADL's two connection kinds are two different
1079
+ // things. A `flow` transports an item between components and runs `out` to
1080
+ // `in`. A `bind` is a DELEGATION between a boundary port and the interior
1081
+ // it stands for: `in` to `in`, or `out` to `out`, because nothing travels —
1082
+ // the two features are the same feature. SysML v2 keeps them apart the same
1083
+ // way (training ch. 13 and ch. 12), and the 15 delegations recorded below
1084
+ // are the ones gpca_trace.sysml therefore cannot restate at component
1085
+ // granularity.
1086
+ flow of InterfaceItem from gpcaDevice.gpcaDeviceSensors to gpcaDevice.gpcaSoftware.portSensorIn;
1087
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.portGpcaSwOut to pumpMotorAssembly;
1088
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.portGpcaSwOut to audibleAlarm;
1089
+ flow of InterfaceItem from operatorKeypad to gpcaDevice.gpcaSoftware.portPresIn;
1090
+ bind gpcaDevice.gpcaSoftware.portOpCmdIn = gpcaDevice.gpcaSoftware.tlm.portTlmOpCmdIn;
1091
+ bind gpcaDevice.gpcaSoftware.portConstIn = gpcaDevice.gpcaSoftware.tlm.portTlmConstIn;
1092
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.outputBus.portOutputTlmModeIn;
1093
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.infusionMgr.portImImOut to gpcaDevice.gpcaSoftware.systemStatus.portSysStatImIn;
1094
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.systemStatus.portSysStatTlmModeIn;
1095
+ bind gpcaDevice.gpcaSoftware.portSensorIn = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSensorIn;
1096
+ bind gpcaDevice.gpcaSoftware.portConstIn = gpcaDevice.gpcaSoftware.systemStatus.portSysStatConstIn;
1097
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.config.portConfigConfigOut to gpcaDevice.gpcaSoftware.systemStatus.portSysStatConfigIn;
1098
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaDevice.gpcaSoftware.outputBus.portOutputSysStatIn;
1099
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.infusionMgr.portImImOut to gpcaDevice.gpcaSoftware.alarm.portAlarmImIn;
1100
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.alarm.portAlarmTlmModeIn;
1101
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemMonitor.portSysMonSysMonOut to gpcaDevice.gpcaSoftware.alarm.portAlarmSysMonIn;
1102
+ bind gpcaDevice.gpcaSoftware.portOpCmdIn = gpcaDevice.gpcaSoftware.alarm.portAlarmOpCmdIn;
1103
+ bind gpcaDevice.gpcaSoftware.portDbIn = gpcaDevice.gpcaSoftware.alarm.portAlarmDbIn;
1104
+ bind gpcaDevice.gpcaSoftware.portSensorIn = gpcaDevice.gpcaSoftware.alarm.portAlarmSensorIn;
1105
+ bind gpcaDevice.gpcaSoftware.portConstIn = gpcaDevice.gpcaSoftware.alarm.portAlarmConstIn;
1106
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaDevice.gpcaSoftware.alarm.portAlarmSysStatIn;
1107
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.config.portConfigConfigOut to gpcaDevice.gpcaSoftware.alarm.portAlarmConfigIn;
1108
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut to gpcaDevice.gpcaSoftware.outputBus.portOutputAlarmIn;
1109
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.config.portConfigTlmModeIn;
1110
+ bind gpcaDevice.gpcaSoftware.portPresIn = gpcaDevice.gpcaSoftware.config.portConfigPresIn;
1111
+ bind gpcaDevice.gpcaSoftware.portOpCmdIn = gpcaDevice.gpcaSoftware.config.portConfigOpCmdIn;
1112
+ bind gpcaDevice.gpcaSoftware.portDbIn = gpcaDevice.gpcaSoftware.config.portConfigDbIn;
1113
+ bind gpcaDevice.gpcaSoftware.portConstIn = gpcaDevice.gpcaSoftware.config.portConfigConstIn;
1114
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaDevice.gpcaSoftware.config.portConfigSysStatIn;
1115
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.config.portConfigConfigOut to gpcaDevice.gpcaSoftware.outputBus.portOutputConfigIn;
1116
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.infusionMgr.portImTlmModeIn;
1117
+ bind gpcaDevice.gpcaSoftware.portOpCmdIn = gpcaDevice.gpcaSoftware.infusionMgr.portImOpCmdIn;
1118
+ bind gpcaDevice.gpcaSoftware.portPatientIn = gpcaDevice.gpcaSoftware.infusionMgr.portImPatientIn;
1119
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.config.portConfigConfigOut to gpcaDevice.gpcaSoftware.infusionMgr.portImConfigIn;
1120
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut to gpcaDevice.gpcaSoftware.infusionMgr.portImAlarmIn;
1121
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaDevice.gpcaSoftware.infusionMgr.portImSysStatIn;
1122
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.infusionMgr.portImImOut to gpcaDevice.gpcaSoftware.outputBus.portOutputImIn;
1123
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.systemMonitor.portSysMonTlmModeIn;
1124
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemMonitor.portSysMonSysMonOut to gpcaDevice.gpcaSoftware.outputBus.portOutputSysMonIn;
1125
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.logging.portLogTlmModeIn;
1126
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.config.portConfigConfigOut to gpcaDevice.gpcaSoftware.logging.portLogConfigIn;
1127
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut to gpcaDevice.gpcaSoftware.logging.portLogAlarmIn;
1128
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaDevice.gpcaSoftware.logging.portLogSysStatIn;
1129
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.infusionMgr.portImImOut to gpcaDevice.gpcaSoftware.logging.portLogImIn;
1130
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.logging.portLogLogOut to gpcaDevice.gpcaSoftware.outputBus.portOutputLogIn;
1131
+ bind gpcaDevice.gpcaSoftware.outputBus.portOutputGpcaSwOut = gpcaDevice.gpcaSoftware.portGpcaSwOut;
1216
1132
  }