@memoarchitect/ontology 0.8.22 → 0.10.9
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.
- package/README.md +1 -1
- package/examples/connected-patient-monitor/memo.package.yaml +3 -0
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
- package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
- package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
- package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +11 -9
- package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
- package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
- package/examples/functional-logical-physical/memo.package.yaml +3 -0
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +9 -7
- package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
- package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
- package/examples/gpca-pump/memo.identity.yaml +2179 -0
- package/examples/gpca-pump/memo.package.yaml +3 -0
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +27 -23
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +15 -15
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +146 -180
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +290 -288
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +21 -33
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -11
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
- package/examples/gpca-pump/model/catalog/project.sysml +3 -1
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +7 -7
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +7 -7
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +7 -8
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +8 -9
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +7 -7
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +8 -9
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +8 -9
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +6 -6
- package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +10 -8
- package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
- package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
- package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +7 -5
- package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
- package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
- package/examples/multidimensional-layers/memo.package.yaml +3 -0
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
- package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
- package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
- package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +6 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -1
- package/examples/reusable-instrument/memo.package.yaml +3 -0
- package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +23 -31
- package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
- package/examples/ros-mobile-robot/memo.package.yaml +3 -0
- package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +0 -1
- package/examples/software-only-medical-device/memo.package.yaml +3 -0
- package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -9
- package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
- package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
- package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -69
- package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
- package/examples/surgical-robot/memo.package.yaml +3 -0
- package/examples/surgical-robot/model/catalog/project.sysml +3 -1
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
- package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
- package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
- package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -11
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +4 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +3 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +17 -16
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +9 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +4 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +3 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +4 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -9
- package/examples/temperature-alarm/memo.identity.yaml +64 -0
- package/examples/temperature-alarm/memo.package.yaml +3 -0
- package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +30 -29
- package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
- package/examples/ui-screen-regions/memo.package.yaml +3 -0
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +14 -12
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
- package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
- package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +6 -5
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +6 -5
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +6 -5
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +4 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +4 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +4 -3
- package/extensions/aadl/memo.package.yaml +1 -1
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
- package/extensions/cloud/memo.package.yaml +1 -1
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/container/src/container_extension.sysml +2 -2
- package/extensions/container/src/methodology/container_methodology.sysml +3 -1
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
- package/extensions/ros/memo.package.yaml +1 -1
- package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
- package/extensions/template/src/extension.sysml +3 -1
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +1 -1
- package/ontology/memo.package.yaml +1 -1
- package/package.json +2 -2
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/functional/behavior/memo_behavior.sysml +5 -5
- package/src/architecture/functional/functions/memo_functions.sysml +6 -6
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +7 -7
- package/src/architecture/implementation/ui/memo_ui.sysml +8 -31
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +4 -2
- package/src/architecture/logical/structure/memo_logical_structure.sysml +5 -5
- package/src/architecture/operational/activities/memo_activities.sysml +19 -28
- package/src/architecture/operational/context/actors/memo_actors.sysml +5 -4
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +7 -7
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +5 -14
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +12 -104
- package/src/architecture/operational/structure/memo_operational.sysml +42 -13
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -12
- package/src/architecture/operational/workflows/memo_workflows.sysml +20 -42
- package/src/architecture/realization/deployment/memo_deployment.sysml +26 -19
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
- package/src/artifacts/standards/cfr_21_820.sysml +80 -89
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
- package/src/artifacts/standards/iec_60601_1.sysml +108 -121
- package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
- package/src/artifacts/standards/iec_60812.sysml +21 -22
- package/src/artifacts/standards/iec_62304.sysml +150 -169
- package/src/artifacts/standards/iec_62366_1.sysml +80 -89
- package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
- package/src/artifacts/standards/iso_13485.sysml +80 -89
- package/src/artifacts/standards/iso_14971.sysml +66 -73
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
- package/src/artifacts/templates/dhf/system/sad.md +3 -3
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +2 -2
- package/src/assurance/human_factors/memo_human_factors.sysml +2 -2
- package/src/assurance/requirements/memo_requirements.sysml +2 -18
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +1 -1
- package/src/assurance/safety_risk/memo_risk.sysml +12 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
- package/src/core/common/memo_common.sysml +59 -55
- package/src/core/enumerations/memo_enumerations.sysml +1 -1
- package/src/core/relationships/memo_relationships.sysml +29 -56
- package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
- package/src/methodology/core/memo_core.sysml +0 -10
- package/src/methodology/profiles/memo_profiles.sysml +18 -16
- package/src/methodology/workflow/memo_workflow.sysml +5 -5
- package/src/rules/closure/closure_rules.sysml +22 -20
- package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
- package/src/rules/ontology/ontology_invariants.sysml +121 -48
- package/src/rules/quantitative/quantitative_rules.sysml +4 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +58 -57
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +5 -4
- package/src/viewpoints/context/context_viewpoint.sysml +6 -5
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +6 -5
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +6 -6
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +36 -4
- package/src/viewpoints/functional/functional_viewpoint.sysml +6 -5
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +6 -5
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +6 -5
- package/src/viewpoints/logical/logical_viewpoint.sysml +5 -4
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +6 -5
- package/src/viewpoints/operational/operational_viewpoint.sysml +6 -5
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +7 -6
- package/src/viewpoints/physical/physical_viewpoint.sysml +5 -4
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +6 -5
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +6 -5
- package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +5 -4
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +6 -5
- package/src/viewpoints/risk/risk_viewpoint.sysml +5 -4
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +6 -5
- package/src/viewpoints/software/software_viewpoint.sysml +5 -4
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +6 -5
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +5 -4
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
- package/src/viewpoints/usability/usability_viewpoint.sysml +5 -4
- package/src/viewpoints/verification/verification_viewpoint.sysml +5 -4
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +6 -5
- package/templates/connected-device/memo.package.yaml +2 -0
- package/templates/connected-device/model/catalog/project.sysml +3 -1
- package/templates/default/memo.package.yaml +2 -0
- package/templates/default/model/catalog/project.sysml +3 -1
- package/templates/infusion-pump/memo.package.yaml +2 -0
- package/templates/infusion-pump/model/catalog/project.sysml +3 -1
- package/templates/monitoring-device/memo.package.yaml +2 -0
- package/templates/monitoring-device/model/catalog/project.sysml +3 -1
- package/templates/samd/memo.package.yaml +2 -0
- package/templates/samd/model/catalog/project.sysml +3 -1
|
@@ -13,37 +13,38 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
13
13
|
private import memo_core_common::*;
|
|
14
14
|
private import memo_core_dimensions::*;
|
|
15
15
|
|
|
16
|
+
private import memo_core_common::MemoIdentity;
|
|
16
17
|
// ── Logical components ──────────────────────────────────────
|
|
17
18
|
part lcTherapyControl : LogicalComponent {
|
|
18
|
-
|
|
19
|
+
@MemoIdentity { :>> providedId = "LC-001"; }
|
|
19
20
|
attribute :>> name = "TherapyControlSubsystem";
|
|
20
21
|
attribute :>> responsibility = "Owns therapy state, prescription execution, and dose limiting.";
|
|
21
22
|
attribute :>> decompositionLevel = "subsystem";
|
|
22
23
|
attribute :>> safetyPartition = "safety-critical partition";
|
|
23
24
|
}
|
|
24
25
|
part lcSafetyMonitoring : LogicalComponent {
|
|
25
|
-
|
|
26
|
+
@MemoIdentity { :>> providedId = "LC-002"; }
|
|
26
27
|
attribute :>> name = "SafetyMonitoringSubsystem";
|
|
27
28
|
attribute :>> responsibility = "Detects exceptional conditions and drives the pump to a safe state.";
|
|
28
29
|
attribute :>> decompositionLevel = "subsystem";
|
|
29
30
|
attribute :>> safetyPartition = "safety-critical partition";
|
|
30
31
|
}
|
|
31
32
|
part lcOperatorInterface : LogicalComponent {
|
|
32
|
-
|
|
33
|
+
@MemoIdentity { :>> providedId = "LC-003"; }
|
|
33
34
|
attribute :>> name = "OperatorInterfaceSubsystem";
|
|
34
35
|
attribute :>> responsibility = "Prescription entry, status display, and alarm annunciation to users.";
|
|
35
36
|
attribute :>> decompositionLevel = "subsystem";
|
|
36
37
|
attribute :>> safetyPartition = "interference-free from therapy control";
|
|
37
38
|
}
|
|
38
39
|
part lcDrugDelivery : LogicalComponent {
|
|
39
|
-
|
|
40
|
+
@MemoIdentity { :>> providedId = "LC-004"; }
|
|
40
41
|
attribute :>> name = "DrugDeliverySubsystem";
|
|
41
42
|
attribute :>> responsibility = "Fluid path: reservoir, tubing, pump mechanism, and delivery sensors.";
|
|
42
43
|
attribute :>> decompositionLevel = "subsystem";
|
|
43
44
|
attribute :>> safetyPartition = "safety-critical partition";
|
|
44
45
|
}
|
|
45
46
|
part lcPowerSubsystem : LogicalComponent {
|
|
46
|
-
|
|
47
|
+
@MemoIdentity { :>> providedId = "LC-005"; }
|
|
47
48
|
attribute :>> name = "PowerSubsystem";
|
|
48
49
|
attribute :>> responsibility = "Mains and battery power management with depletion warning.";
|
|
49
50
|
attribute :>> decompositionLevel = "subsystem";
|
|
@@ -58,48 +59,48 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
58
59
|
// The AADL top-level `GPCA_Device` system. GPCA_Device.Impl declares only
|
|
59
60
|
// GPCA_HW_Sensors, GPCA_SW, and GPCA_HW_Actuators as subcomponents.
|
|
60
61
|
part gpcaDevice : PhysicalAssembly {
|
|
61
|
-
|
|
62
|
+
@MemoIdentity { :>> providedId = "HW-000"; }
|
|
62
63
|
attribute :>> name = "GPCA_Device";
|
|
63
64
|
attribute :>> responsibility = "AADL device boundary containing the sensor wrapper, GPCA software, and actuator wrapper.";
|
|
64
65
|
attribute :>> safetyRole = "device boundary carrying the intended use and the risk-control architecture";
|
|
65
66
|
attribute :>> partNumber = "GPCA-DEV-001";
|
|
66
67
|
|
|
67
|
-
in port devOpCmdIn : PhysicalPort {
|
|
68
|
-
in port devDbIn : PhysicalPort {
|
|
69
|
-
in port devPresIn : PhysicalPort {
|
|
70
|
-
in port devPatientIn : PhysicalPort {
|
|
71
|
-
out port devGpcaOut : PhysicalPort {
|
|
68
|
+
in port devOpCmdIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-01"; } attribute :>> name = "OP_CMD_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_Device.aadl"; } }
|
|
69
|
+
in port devDbIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-02"; } attribute :>> name = "DB_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_Device.aadl"; } }
|
|
70
|
+
in port devPresIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-03"; } attribute :>> name = "PRES_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_Device.aadl"; } }
|
|
71
|
+
in port devPatientIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-04"; } attribute :>> name = "PATIENT_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_Device.aadl"; } }
|
|
72
|
+
out port devGpcaOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-05"; } attribute :>> name = "GPCA_OUT"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_Device.aadl"; } }
|
|
72
73
|
|
|
73
74
|
part gpcaDeviceSensors : HardwareAssembly {
|
|
74
|
-
|
|
75
|
+
@MemoIdentity { :>> providedId = "HW-001"; }
|
|
75
76
|
attribute :>> name = "GPCA_HW_Sensors";
|
|
76
77
|
attribute :>> responsibility = "Map inputs to software-visible signals.";
|
|
77
78
|
attribute :>> safetyRole = "input acquisition";
|
|
78
79
|
|
|
79
|
-
in port snsOpCmdIn : PhysicalPort {
|
|
80
|
-
in port snsDbIn : PhysicalPort {
|
|
81
|
-
in port snsPresIn : PhysicalPort {
|
|
82
|
-
in port snsPatientIn : PhysicalPort {
|
|
83
|
-
out port snsOpCmdOut : PhysicalPort {
|
|
84
|
-
out port snsPresOut : PhysicalPort {
|
|
85
|
-
out port snsPatientOut : PhysicalPort {
|
|
86
|
-
out port snsSensorOut : PhysicalPort {
|
|
87
|
-
out port snsConstOut : PhysicalPort {
|
|
88
|
-
out port snsDbOut : PhysicalPort {
|
|
80
|
+
in port snsOpCmdIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-01"; } attribute :>> name = "OP_CMD_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
81
|
+
in port snsDbIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-02"; } attribute :>> name = "DB_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
82
|
+
in port snsPresIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-03"; } attribute :>> name = "PRES_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
83
|
+
in port snsPatientIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-04"; } attribute :>> name = "PATIENT_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
84
|
+
out port snsOpCmdOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-05"; } attribute :>> name = "OP_CMD_OUT"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
85
|
+
out port snsPresOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-06"; } attribute :>> name = "PRES_OUT"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
86
|
+
out port snsPatientOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-07"; } attribute :>> name = "PATIENT_OUT"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
87
|
+
out port snsSensorOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-08"; } attribute :>> name = "SENSOR_OUT"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
88
|
+
out port snsConstOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-09"; } attribute :>> name = "CONST_OUT"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
89
|
+
out port snsDbOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-10"; } attribute :>> name = "DB_OUT"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
89
90
|
}
|
|
90
91
|
|
|
91
92
|
part gpcaActuators : HardwareAssembly {
|
|
92
|
-
|
|
93
|
+
@MemoIdentity { :>> providedId = "HW-002"; }
|
|
93
94
|
attribute :>> name = "GPCA_HW_Actuators";
|
|
94
95
|
attribute :>> responsibility = "Expose software outputs to physical outputs.";
|
|
95
96
|
attribute :>> safetyRole = "actuation and operator output";
|
|
96
97
|
|
|
97
|
-
in port actGpcaSwIn : PhysicalPort {
|
|
98
|
-
out port actGpcaOut : PhysicalPort {
|
|
98
|
+
in port actGpcaSwIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-ACT-01"; } attribute :>> name = "GPCA_SW_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Actuators.aadl"; } }
|
|
99
|
+
out port actGpcaOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-ACT-02"; } attribute :>> name = "GPCA_OUT"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Actuators.aadl"; } }
|
|
99
100
|
}
|
|
100
101
|
|
|
101
102
|
part gpcaSoftware : SoftwareSystem {
|
|
102
|
-
|
|
103
|
+
@MemoIdentity { :>> providedId = "SWS-001"; }
|
|
103
104
|
attribute :>> name = "GPCA_Software";
|
|
104
105
|
attribute :>> version = "2.0";
|
|
105
106
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
@@ -108,176 +109,176 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
108
109
|
attribute :>> operatingSystem = "synchronous data-flow execution; AADL immediate port semantics (source specifies no timing)";
|
|
109
110
|
|
|
110
111
|
in port portOpCmdIn : SoftwarePort {
|
|
111
|
-
|
|
112
|
+
@MemoIdentity { :>> providedId = "PORT-01"; } attribute :>> name = "OP_CMD_IN";
|
|
112
113
|
attribute :>> description = "Operator commands (System_Start/Stop, Infusion_Initiate/Inhibit, Notification_Cancel, Disable/Enable_Audio, DataConfig) from the data entry interface (I 2).";
|
|
113
114
|
attribute :>> portKind = InterfaceKind::control;
|
|
114
115
|
attribute :>> dataTypeName = "DATATYPES::Operator_Commands.Impl";
|
|
115
|
-
|
|
116
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
116
117
|
}
|
|
117
118
|
in port portPresIn : SoftwarePort {
|
|
118
|
-
|
|
119
|
+
@MemoIdentity { :>> providedId = "PORT-02"; } attribute :>> name = "PRES_IN";
|
|
119
120
|
attribute :>> description = "Prescription data entry fields (I 1, 13 fields PatientID_prog..NumberMax_pbolus_prog).";
|
|
120
121
|
attribute :>> portKind = InterfaceKind::data;
|
|
121
122
|
attribute :>> dataTypeName = "DATATYPES::Prescription_Inputs.Impl";
|
|
122
|
-
|
|
123
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
123
124
|
}
|
|
124
125
|
in port portPatientIn : SoftwarePort {
|
|
125
|
-
|
|
126
|
+
@MemoIdentity { :>> providedId = "PORT-03"; } attribute :>> name = "PATIENT_IN";
|
|
126
127
|
attribute :>> description = "Patient bolus request (I 4, BolusRequest_prog).";
|
|
127
128
|
attribute :>> portKind = InterfaceKind::userInteraction;
|
|
128
129
|
attribute :>> dataTypeName = "DATATYPES::Patient_Inputs.Impl";
|
|
129
|
-
|
|
130
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
130
131
|
}
|
|
131
132
|
in port portSensorIn : SoftwarePort {
|
|
132
|
-
|
|
133
|
+
@MemoIdentity { :>> providedId = "PORT-04"; } attribute :>> name = "SENSOR_IN";
|
|
133
134
|
attribute :>> description = "Device sensor inputs (air-in-line, occlusion, door, reservoir, flow).";
|
|
134
135
|
attribute :>> portKind = InterfaceKind::digitalSignal;
|
|
135
136
|
attribute :>> dataTypeName = "DATATYPES::Device_Sensor_Inputs.Impl";
|
|
136
|
-
|
|
137
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
137
138
|
}
|
|
138
139
|
in port portConstIn : SoftwarePort {
|
|
139
|
-
|
|
140
|
+
@MemoIdentity { :>> providedId = "PORT-05"; } attribute :>> name = "CONST_IN";
|
|
140
141
|
attribute :>> description = "Device configuration constants (App. A.4 values such as Empty_Reservoir, tolerances).";
|
|
141
142
|
attribute :>> portKind = InterfaceKind::data;
|
|
142
143
|
attribute :>> dataTypeName = "DATATYPES::Device_Configuration_Inputs.Impl";
|
|
143
|
-
|
|
144
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
144
145
|
}
|
|
145
146
|
in port portDbIn : SoftwarePort {
|
|
146
|
-
|
|
147
|
+
@MemoIdentity { :>> providedId = "PORT-06"; } attribute :>> name = "DB_IN";
|
|
147
148
|
attribute :>> description = "Hospital pharmacy database safe values (I 9-I 11); realizes SI-005 HospitalPharmacyDatabaseInterface.";
|
|
148
149
|
attribute :>> portKind = InterfaceKind::data;
|
|
149
150
|
attribute :>> dataTypeName = "DATATYPES::Drug_Database_Inputs.Impl";
|
|
150
|
-
|
|
151
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
151
152
|
}
|
|
152
153
|
out port portGpcaSwOut : SoftwarePort {
|
|
153
|
-
|
|
154
|
+
@MemoIdentity { :>> providedId = "PORT-07"; } attribute :>> name = "GPCA_SW_OUT";
|
|
154
155
|
attribute :>> description = "Aggregated software output vector (Current_System_Mode, Commanded_Flow_Rate, notifications, prescription echo, status).";
|
|
155
156
|
attribute :>> portKind = InterfaceKind::data;
|
|
156
157
|
attribute :>> dataTypeName = "DATATYPES::GPCA_SW_Outputs.Impl";
|
|
157
|
-
|
|
158
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
158
159
|
}
|
|
159
160
|
|
|
160
161
|
part tlm : SoftwareModule {
|
|
161
|
-
|
|
162
|
+
@MemoIdentity { :>> providedId = "SW-001"; }
|
|
162
163
|
attribute :>> name = "Top_Level_Mode";
|
|
163
164
|
attribute :>> responsibility = "Ensure system ON/OFF behavior and startup/shutdown checks.";
|
|
164
165
|
attribute :>> safetyClass = SafetyClassKind::C;
|
|
165
166
|
attribute :>> complexity = ComplexityKind::medium;
|
|
166
167
|
|
|
167
|
-
in port portTlmConstIn : SoftwarePort {
|
|
168
|
-
in port portTlmOpCmdIn : SoftwarePort {
|
|
169
|
-
out port portTlmTlmModeOut : SoftwarePort {
|
|
168
|
+
in port portTlmConstIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-TLM-01"; } attribute :>> name = "CONST_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (TLM)"; } }
|
|
169
|
+
in port portTlmOpCmdIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-TLM-02"; } attribute :>> name = "OP_CMD_IN"; attribute :>> portKind = InterfaceKind::control; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (TLM)"; } }
|
|
170
|
+
out port portTlmTlmModeOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-TLM-03"; } attribute :>> name = "TLM_MODE_OUT"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (TLM)"; } }
|
|
170
171
|
}
|
|
171
172
|
|
|
172
173
|
part config : SoftwareModule {
|
|
173
|
-
|
|
174
|
+
@MemoIdentity { :>> providedId = "SW-002"; }
|
|
174
175
|
attribute :>> name = "Config";
|
|
175
176
|
attribute :>> responsibility = "Prescription entry, drug-library limit checking, confirmation, and persistent storage.";
|
|
176
177
|
attribute :>> safetyClass = SafetyClassKind::C;
|
|
177
178
|
attribute :>> complexity = ComplexityKind::high;
|
|
178
179
|
|
|
179
|
-
out port portConfigConfigOut : SoftwarePort {
|
|
180
|
-
in port portConfigConstIn : SoftwarePort {
|
|
181
|
-
in port portConfigDbIn : SoftwarePort {
|
|
182
|
-
in port portConfigOpCmdIn : SoftwarePort {
|
|
183
|
-
in port portConfigPresIn : SoftwarePort {
|
|
184
|
-
in port portConfigSysStatIn : SoftwarePort {
|
|
185
|
-
in port portConfigTlmModeIn : SoftwarePort {
|
|
180
|
+
out port portConfigConfigOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-01"; } attribute :>> name = "CONFIG_OUT"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
|
|
181
|
+
in port portConfigConstIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-02"; } attribute :>> name = "CONST_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
|
|
182
|
+
in port portConfigDbIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-03"; } attribute :>> name = "DB_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
|
|
183
|
+
in port portConfigOpCmdIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-04"; } attribute :>> name = "OP_CMD_IN"; attribute :>> portKind = InterfaceKind::control; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
|
|
184
|
+
in port portConfigPresIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-05"; } attribute :>> name = "PRES_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
|
|
185
|
+
in port portConfigSysStatIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-06"; } attribute :>> name = "SYS_STAT_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
|
|
186
|
+
in port portConfigTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-07"; } attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
|
|
186
187
|
}
|
|
187
188
|
|
|
188
189
|
part alarm : SoftwareModule {
|
|
189
|
-
|
|
190
|
+
@MemoIdentity { :>> providedId = "SW-003"; }
|
|
190
191
|
attribute :>> name = "Alarm";
|
|
191
192
|
attribute :>> responsibility = "Monitor and notify exceptional conditions.";
|
|
192
193
|
attribute :>> safetyClass = SafetyClassKind::C;
|
|
193
194
|
attribute :>> complexity = ComplexityKind::high;
|
|
194
195
|
|
|
195
|
-
out port portAlarmAlarmOut : SoftwarePort {
|
|
196
|
-
in port portAlarmConfigIn : SoftwarePort {
|
|
197
|
-
in port portAlarmConstIn : SoftwarePort {
|
|
198
|
-
in port portAlarmDbIn : SoftwarePort {
|
|
199
|
-
in port portAlarmImIn : SoftwarePort {
|
|
200
|
-
in port portAlarmOpCmdIn : SoftwarePort {
|
|
201
|
-
in port portAlarmSensorIn : SoftwarePort {
|
|
202
|
-
in port portAlarmSysMonIn : SoftwarePort {
|
|
203
|
-
in port portAlarmSysStatIn : SoftwarePort {
|
|
204
|
-
in port portAlarmTlmModeIn : SoftwarePort {
|
|
196
|
+
out port portAlarmAlarmOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-01"; } attribute :>> name = "ALARM_OUT"; attribute :>> portKind = InterfaceKind::notification; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
197
|
+
in port portAlarmConfigIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-02"; } attribute :>> name = "CONFIG_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
198
|
+
in port portAlarmConstIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-03"; } attribute :>> name = "CONST_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
199
|
+
in port portAlarmDbIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-04"; } attribute :>> name = "DB_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
200
|
+
in port portAlarmImIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-05"; } attribute :>> name = "IM_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
201
|
+
in port portAlarmOpCmdIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-06"; } attribute :>> name = "OP_CMD_IN"; attribute :>> portKind = InterfaceKind::control; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
202
|
+
in port portAlarmSensorIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-07"; } attribute :>> name = "SENSOR_IN"; attribute :>> portKind = InterfaceKind::digitalSignal; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
203
|
+
in port portAlarmSysMonIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-08"; } attribute :>> name = "SYS_MON_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
204
|
+
in port portAlarmSysStatIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-09"; } attribute :>> name = "SYS_STAT_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
205
|
+
in port portAlarmTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-10"; } attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
205
206
|
}
|
|
206
207
|
|
|
207
208
|
part logging : SoftwareModule {
|
|
208
|
-
|
|
209
|
+
@MemoIdentity { :>> providedId = "SW-004"; }
|
|
209
210
|
attribute :>> name = "Logging";
|
|
210
211
|
attribute :>> responsibility = "Append-only event log of doses, mode changes, alarms, and configuration changes.";
|
|
211
212
|
attribute :>> safetyClass = SafetyClassKind::B;
|
|
212
213
|
attribute :>> complexity = ComplexityKind::medium;
|
|
213
214
|
|
|
214
|
-
in port portLogAlarmIn : SoftwarePort {
|
|
215
|
-
in port portLogConfigIn : SoftwarePort {
|
|
216
|
-
in port portLogImIn : SoftwarePort {
|
|
217
|
-
out port portLogLogOut : SoftwarePort {
|
|
218
|
-
in port portLogSysStatIn : SoftwarePort {
|
|
219
|
-
in port portLogTlmModeIn : SoftwarePort {
|
|
215
|
+
in port portLogAlarmIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-01"; } attribute :>> name = "ALARM_IN"; attribute :>> portKind = InterfaceKind::notification; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
|
|
216
|
+
in port portLogConfigIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-02"; } attribute :>> name = "CONFIG_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
|
|
217
|
+
in port portLogImIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-03"; } attribute :>> name = "IM_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
|
|
218
|
+
out port portLogLogOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-04"; } attribute :>> name = "LOG_OUT"; attribute :>> portKind = InterfaceKind::logging; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
|
|
219
|
+
in port portLogSysStatIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-05"; } attribute :>> name = "SYS_STAT_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
|
|
220
|
+
in port portLogTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-06"; } attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
|
|
220
221
|
}
|
|
221
222
|
|
|
222
223
|
part infusionMgr : SoftwareModule {
|
|
223
|
-
|
|
224
|
+
@MemoIdentity { :>> providedId = "SW-005"; }
|
|
224
225
|
attribute :>> name = "Infusion_Manager";
|
|
225
226
|
attribute :>> responsibility = "Handle drug infusion commands and therapy parameters.";
|
|
226
227
|
attribute :>> safetyClass = SafetyClassKind::C;
|
|
227
228
|
attribute :>> complexity = ComplexityKind::high;
|
|
228
229
|
|
|
229
|
-
in port portImAlarmIn : SoftwarePort {
|
|
230
|
-
in port portImConfigIn : SoftwarePort {
|
|
231
|
-
out port portImImOut : SoftwarePort {
|
|
232
|
-
in port portImOpCmdIn : SoftwarePort {
|
|
233
|
-
in port portImPatientIn : SoftwarePort {
|
|
234
|
-
in port portImSysStatIn : SoftwarePort {
|
|
235
|
-
in port portImTlmModeIn : SoftwarePort {
|
|
230
|
+
in port portImAlarmIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-01"; } attribute :>> name = "ALARM_IN"; attribute :>> portKind = InterfaceKind::notification; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
|
|
231
|
+
in port portImConfigIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-02"; } attribute :>> name = "CONFIG_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
|
|
232
|
+
out port portImImOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-03"; } attribute :>> name = "IM_OUT"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
|
|
233
|
+
in port portImOpCmdIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-04"; } attribute :>> name = "OP_CMD_IN"; attribute :>> portKind = InterfaceKind::control; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
|
|
234
|
+
in port portImPatientIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-05"; } attribute :>> name = "PATIENT_IN"; attribute :>> portKind = InterfaceKind::userInteraction; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
|
|
235
|
+
in port portImSysStatIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-06"; } attribute :>> name = "SYS_STAT_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
|
|
236
|
+
in port portImTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-07"; } attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
|
|
236
237
|
}
|
|
237
238
|
|
|
238
239
|
part systemMonitor : SoftwareModule {
|
|
239
|
-
|
|
240
|
+
@MemoIdentity { :>> providedId = "SW-006"; }
|
|
240
241
|
attribute :>> name = "System_Monitor";
|
|
241
242
|
attribute :>> responsibility = "POST, periodic CPU/RAM/ROM checks, watchdog kicking, and battery supervision.";
|
|
242
243
|
attribute :>> safetyClass = SafetyClassKind::C;
|
|
243
244
|
attribute :>> complexity = ComplexityKind::medium;
|
|
244
245
|
|
|
245
|
-
out port portSysMonSysMonOut : SoftwarePort {
|
|
246
|
-
in port portSysMonTlmModeIn : SoftwarePort {
|
|
246
|
+
out port portSysMonSysMonOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-MON-01"; } attribute :>> name = "SYS_MON_OUT"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_MON)"; } }
|
|
247
|
+
in port portSysMonTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-MON-02"; } attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_MON)"; } }
|
|
247
248
|
}
|
|
248
249
|
|
|
249
250
|
part systemStatus : SoftwareModule {
|
|
250
|
-
|
|
251
|
+
@MemoIdentity { :>> providedId = "SW-007"; }
|
|
251
252
|
attribute :>> name = "System_Status";
|
|
252
253
|
attribute :>> responsibility = "Maintain the shared system status vector (Reservoir_Volume, Volume_Infused, Reservoir_Empty, In_Therapy) consumed by Alarm, Config, and Infusion_Manager.";
|
|
253
254
|
attribute :>> safetyClass = SafetyClassKind::C;
|
|
254
255
|
attribute :>> complexity = ComplexityKind::medium;
|
|
255
|
-
|
|
256
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/System_Status.aadl"; }
|
|
256
257
|
|
|
257
|
-
in port portSysStatConfigIn : SoftwarePort {
|
|
258
|
-
in port portSysStatConstIn : SoftwarePort {
|
|
259
|
-
in port portSysStatImIn : SoftwarePort {
|
|
260
|
-
in port portSysStatSensorIn : SoftwarePort {
|
|
261
|
-
out port portSysStatSysStatOut : SoftwarePort {
|
|
262
|
-
in port portSysStatTlmModeIn : SoftwarePort {
|
|
258
|
+
in port portSysStatConfigIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-01"; } attribute :>> name = "CONFIG_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
|
|
259
|
+
in port portSysStatConstIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-02"; } attribute :>> name = "CONST_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
|
|
260
|
+
in port portSysStatImIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-03"; } attribute :>> name = "IM_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
|
|
261
|
+
in port portSysStatSensorIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-04"; } attribute :>> name = "SENSOR_IN"; attribute :>> portKind = InterfaceKind::digitalSignal; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
|
|
262
|
+
out port portSysStatSysStatOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-05"; } attribute :>> name = "SYS_STAT_OUT"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
|
|
263
|
+
in port portSysStatTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-06"; } attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
|
|
263
264
|
}
|
|
264
265
|
|
|
265
266
|
part outputBus : SoftwareModule {
|
|
266
|
-
|
|
267
|
+
@MemoIdentity { :>> providedId = "SW-008"; }
|
|
267
268
|
attribute :>> name = "OutputBus";
|
|
268
269
|
attribute :>> responsibility = "Aggregate all subsystem outputs into the single GPCA_SW_OUT output vector (mode, commanded flow rate, notifications, prescription echo, status).";
|
|
269
270
|
attribute :>> safetyClass = SafetyClassKind::C;
|
|
270
271
|
attribute :>> complexity = ComplexityKind::low;
|
|
271
|
-
|
|
272
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/OutputBus.aadl"; }
|
|
272
273
|
|
|
273
|
-
in port portOutputAlarmIn : SoftwarePort {
|
|
274
|
-
in port portOutputConfigIn : SoftwarePort {
|
|
275
|
-
out port portOutputGpcaSwOut : SoftwarePort {
|
|
276
|
-
in port portOutputImIn : SoftwarePort {
|
|
277
|
-
in port portOutputLogIn : SoftwarePort {
|
|
278
|
-
in port portOutputSysMonIn : SoftwarePort {
|
|
279
|
-
in port portOutputSysStatIn : SoftwarePort {
|
|
280
|
-
in port portOutputTlmModeIn : SoftwarePort {
|
|
274
|
+
in port portOutputAlarmIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-01"; } attribute :>> name = "ALARM_IN"; attribute :>> portKind = InterfaceKind::notification; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
|
|
275
|
+
in port portOutputConfigIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-02"; } attribute :>> name = "CONFIG_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
|
|
276
|
+
out port portOutputGpcaSwOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-03"; } attribute :>> name = "GPCA_SW_OUT"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
|
|
277
|
+
in port portOutputImIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-04"; } attribute :>> name = "IM_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
|
|
278
|
+
in port portOutputLogIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-05"; } attribute :>> name = "LOG_IN"; attribute :>> portKind = InterfaceKind::logging; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
|
|
279
|
+
in port portOutputSysMonIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-06"; } attribute :>> name = "SYS_MON_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
|
|
280
|
+
in port portOutputSysStatIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-07"; } attribute :>> name = "SYS_STAT_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
|
|
281
|
+
in port portOutputTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-08"; } attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
|
|
281
282
|
}
|
|
282
283
|
}
|
|
283
284
|
}
|
|
@@ -285,7 +286,7 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
285
286
|
// ── Hardware: aggregates (UMN AADL architectural model) ─────
|
|
286
287
|
// ── Hardware: sensor suite ──────────────────────────────────
|
|
287
288
|
part airInLineSensor : HardwareAssembly {
|
|
288
|
-
|
|
289
|
+
@MemoIdentity { :>> providedId = "HW-006"; }
|
|
289
290
|
attribute :>> name = "AirInLineSensor";
|
|
290
291
|
attribute :>> responsibility = "Ultrasonic detection of air bubbles in the delivery tubing.";
|
|
291
292
|
attribute :>> safetyRole = "detects air embolism precursor; feeds High-priority Air embolism notification";
|
|
@@ -293,7 +294,7 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
293
294
|
attribute :>> mtbfHours = "150000";
|
|
294
295
|
}
|
|
295
296
|
part occlusionSensor : HardwareAssembly {
|
|
296
|
-
|
|
297
|
+
@MemoIdentity { :>> providedId = "HW-007"; }
|
|
297
298
|
attribute :>> name = "OcclusionPressureSensor";
|
|
298
299
|
attribute :>> responsibility = "Measures downstream line pressure to detect occlusion.";
|
|
299
300
|
attribute :>> safetyRole = "detects blocked line (under-infusion, post-occlusion bolus)";
|
|
@@ -301,7 +302,7 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
301
302
|
attribute :>> mtbfHours = "150000";
|
|
302
303
|
}
|
|
303
304
|
part reservoirSensor : HardwareAssembly {
|
|
304
|
-
|
|
305
|
+
@MemoIdentity { :>> providedId = "HW-008"; }
|
|
305
306
|
attribute :>> name = "ReservoirVolumeSensor";
|
|
306
307
|
attribute :>> responsibility = "Reports remaining reservoir volume and empty condition.";
|
|
307
308
|
attribute :>> safetyRole = "prevents dry pumping and undetected therapy interruption";
|
|
@@ -309,7 +310,7 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
309
310
|
attribute :>> mtbfHours = "120000";
|
|
310
311
|
}
|
|
311
312
|
part doorSensor : HardwareAssembly {
|
|
312
|
-
|
|
313
|
+
@MemoIdentity { :>> providedId = "HW-009"; }
|
|
313
314
|
attribute :>> name = "DoorLatchSensor";
|
|
314
315
|
attribute :>> responsibility = "Detects open reservoir door / unlatched pumping chamber.";
|
|
315
316
|
attribute :>> safetyRole = "prevents free flow and tampering with the fluid path";
|
|
@@ -317,7 +318,7 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
317
318
|
attribute :>> mtbfHours = "200000";
|
|
318
319
|
}
|
|
319
320
|
part flowSensor : HardwareAssembly {
|
|
320
|
-
|
|
321
|
+
@MemoIdentity { :>> providedId = "HW-010"; }
|
|
321
322
|
attribute :>> name = "DeliveryFlowSensor";
|
|
322
323
|
attribute :>> responsibility = "Independent measurement of delivered flow for cross-check against commanded flow.";
|
|
323
324
|
attribute :>> safetyRole = "detects over/under-infusion independent of motor control";
|
|
@@ -325,7 +326,7 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
325
326
|
attribute :>> mtbfHours = "100000";
|
|
326
327
|
}
|
|
327
328
|
part bolusButton : HardwareAssembly {
|
|
328
|
-
|
|
329
|
+
@MemoIdentity { :>> providedId = "HW-011"; }
|
|
329
330
|
attribute :>> name = "PatientBolusButton";
|
|
330
331
|
attribute :>> responsibility = "Debounced patient pendant switch for bolus requests.";
|
|
331
332
|
attribute :>> safetyRole = "sole patient input; stuck-button detection required";
|
|
@@ -333,7 +334,7 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
333
334
|
attribute :>> mtbfHours = "80000";
|
|
334
335
|
}
|
|
335
336
|
part operatorKeypad : HardwareAssembly {
|
|
336
|
-
|
|
337
|
+
@MemoIdentity { :>> providedId = "HW-012"; }
|
|
337
338
|
attribute :>> name = "OperatorKeypad";
|
|
338
339
|
attribute :>> responsibility = "Clinician input for prescription programming and alarm handling.";
|
|
339
340
|
attribute :>> safetyRole = "prescription entry path; key-lock guarded";
|
|
@@ -342,7 +343,7 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
342
343
|
|
|
343
344
|
// ── Hardware: actuator and output suite ─────────────────────
|
|
344
345
|
part pumpMotorAssembly : HardwareAssembly {
|
|
345
|
-
|
|
346
|
+
@MemoIdentity { :>> providedId = "HW-003"; }
|
|
346
347
|
attribute :>> name = "PumpMotorAssembly";
|
|
347
348
|
attribute :>> responsibility = "Peristaltic pump mechanism and stepper motor driving drug delivery.";
|
|
348
349
|
attribute :>> safetyRole = "single point of drug delivery; rotation monitored by flow sensor";
|
|
@@ -350,21 +351,21 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
350
351
|
attribute :>> mtbfHours = "60000";
|
|
351
352
|
}
|
|
352
353
|
part antiFreeFlowValve : HardwareAssembly {
|
|
353
|
-
|
|
354
|
+
@MemoIdentity { :>> providedId = "HW-013"; }
|
|
354
355
|
attribute :>> name = "AntiFreeFlowValve";
|
|
355
356
|
attribute :>> responsibility = "Mechanical valve that blocks gravity free flow whenever the pumping chamber is disengaged.";
|
|
356
357
|
attribute :>> safetyRole = "inherent safe design against free-flow overdose";
|
|
357
358
|
attribute :>> partNumber = "GPCA-ACT-AFF";
|
|
358
359
|
}
|
|
359
360
|
part audibleAlarm : HardwareAssembly {
|
|
360
|
-
|
|
361
|
+
@MemoIdentity { :>> providedId = "HW-004"; }
|
|
361
362
|
attribute :>> name = "AudibleAlarmAnnunciator";
|
|
362
363
|
attribute :>> responsibility = "Buzzer producing multi-priority alarm tones at or above 45 dB(A) at 1 m.";
|
|
363
364
|
attribute :>> safetyRole = "primary alarm annunciation path";
|
|
364
365
|
attribute :>> partNumber = "GPCA-ACT-BZR";
|
|
365
366
|
}
|
|
366
367
|
part operatorDisplay : HardwareAssembly {
|
|
367
|
-
|
|
368
|
+
@MemoIdentity { :>> providedId = "HW-005"; }
|
|
368
369
|
attribute :>> name = "OperatorDisplay";
|
|
369
370
|
attribute :>> responsibility = "Displays mode, prescription, delivered dose, and alarm messages.";
|
|
370
371
|
attribute :>> safetyRole = "visual alarm annunciation and prescription confirmation readback";
|
|
@@ -373,7 +374,7 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
373
374
|
|
|
374
375
|
// ── Hardware: platform ──────────────────────────────────────
|
|
375
376
|
part controllerBoard : HardwareAssembly {
|
|
376
|
-
|
|
377
|
+
@MemoIdentity { :>> providedId = "HW-014"; }
|
|
377
378
|
attribute :>> name = "MainControllerBoard";
|
|
378
379
|
attribute :>> responsibility = "Hosts the microcontroller, memory, and hardware watchdog executing the GPCA software.";
|
|
379
380
|
attribute :>> safetyRole = "computing platform; watchdog forces safe state on CPU hang";
|
|
@@ -381,7 +382,7 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
381
382
|
attribute :>> mtbfHours = "250000";
|
|
382
383
|
}
|
|
383
384
|
part batteryPack : HardwareAssembly {
|
|
384
|
-
|
|
385
|
+
@MemoIdentity { :>> providedId = "HW-015"; }
|
|
385
386
|
attribute :>> name = "BatteryPack";
|
|
386
387
|
attribute :>> responsibility = "Rechargeable backup battery sustaining at least 4 hours of therapy.";
|
|
387
388
|
attribute :>> safetyRole = "keeps therapy and alarms alive during mains loss";
|
|
@@ -389,7 +390,7 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
389
390
|
attribute :>> mtbfHours = "20000";
|
|
390
391
|
}
|
|
391
392
|
part powerSupply : HardwareAssembly {
|
|
392
|
-
|
|
393
|
+
@MemoIdentity { :>> providedId = "HW-016"; }
|
|
393
394
|
attribute :>> name = "MainsPowerSupply";
|
|
394
395
|
attribute :>> responsibility = "Medical-grade AC/DC supply with charger and mains-loss signal.";
|
|
395
396
|
attribute :>> safetyRole = "isolation per IEC 60601-1; signals switchover to battery";
|
|
@@ -398,7 +399,7 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
398
399
|
attribute :>> ipRating = "IPX2";
|
|
399
400
|
}
|
|
400
401
|
part enclosure : HardwareAssembly {
|
|
401
|
-
|
|
402
|
+
@MemoIdentity { :>> providedId = "HW-017"; }
|
|
402
403
|
attribute :>> name = "DeviceEnclosure";
|
|
403
404
|
attribute :>> responsibility = "Impact-resistant, liquid-ingress-protected housing for the pump.";
|
|
404
405
|
attribute :>> safetyRole = "carries the drop and liquid-ingress requirements REQ-CS-83/84";
|