Architecture ============ Architecture Decisions ---------------------- .. list-table:: :header-rows: 1 * - ADR - Status * - :doc:`ADR-001_Event_Driven_Runtime_Dispatch ` - accepted * - :doc:`ADR-002_Safety_First_Override_Policy ` - accepted .. toctree:: :maxdepth: 1 :hidden: :caption: Architecture Decisions /generated/adrs/adr-001-event-driven-runtime-dispatch-660008ec-f372-4600-b6dc-4eb9314699a3 /generated/adrs/adr-002-safety-first-override-policy-8a166617-f320-4a16-add3-b2a7fdaea047 System Diagram -------------- .. image:: /_static/architecture/architecture-overview.svg :alt: Architecture overview with selected top-level components and subcomponents :class: dblclick-open-image Components ---------- .. list-table:: :header-rows: 1 :class: dd-fullwidth-table * - Component - Requirements - SW Units * - :doc:`Comms_Modbus_RTU ` - * :doc:`REQ-IFC-001 ` * :doc:`REQ-IFC-002 ` * :doc:`REQ-IFC-003 ` * :doc:`REQ-IFC-004 ` - * :doc:`ao_modbus_server ` * - :doc:`Config_Manager ` - * :doc:`REQ-CTL-003 ` * :doc:`REQ-IFC-003 ` * :doc:`REQ-IFC-004 ` - * :doc:`ao_config_manager ` * - :doc:`Control_Manager ` - * :doc:`REQ-CTL-001 ` * :doc:`REQ-CTL-002 ` * :doc:`REQ-CTL-004 ` * :doc:`REQ-REL-003 ` - * :doc:`ao_control ` * :doc:`sm_fan_control ` * - :doc:`Diagnostics_Manager ` - * :doc:`REQ-DIA-001 ` * :doc:`REQ-DIA-002 ` * :doc:`REQ-DIA-003 ` * :doc:`REQ-DIA-004 ` - * :doc:`ao_diagnostics ` * - :doc:`Monitoring_Manager ` - * :doc:`REQ-MON-001 ` * :doc:`REQ-MON-002 ` * :doc:`REQ-MON-003 ` * :doc:`REQ-MON-004 ` * :doc:`REQ-REL-002 ` - * :doc:`ao_monitoring ` * - :doc:`Platform_HAL ` - * :doc:`REQ-IFC-001 ` * :doc:`REQ-IFC-005 ` - * :doc:`hal_event_adapter ` * :doc:`standard_lib ` * - :doc:`RGB_LED_Driver ` - * :doc:`REQ-IFC-005 ` - * :doc:`drv_rgb_led ` * - :doc:`Runtime_Manager ` - * :doc:`REQ-REL-001 ` * :doc:`REQ-REL-004 ` - * :doc:`ao_runtime_supervisor ` * :doc:`evt_dispatcher ` * :doc:`evt_timer_service ` * :doc:`sm_operation_mode ` * - :doc:`Safety_Manager ` - * :doc:`REQ-SAF-001 ` * :doc:`REQ-SAF-002 ` * :doc:`REQ-SAF-003 ` * :doc:`REQ-SAF-004 ` * :doc:`REQ-REL-002 ` - * :doc:`ao_safety ` * :doc:`sm_protection ` * - :doc:`Status_Indication_Manager ` - * :doc:`REQ-IFC-005 ` * :doc:`REQ-DIA-003 ` - * :doc:`ao_status_indication ` * :doc:`sm_led_indication ` .. toctree:: :maxdepth: 1 :hidden: :caption: Components /generated/architecture/comms-modbus-rtu-0c1dd904-b8d3-4c1d-afbd-c026dd6fb637 /generated/architecture/config-manager-632717e3-ea34-4327-9a88-6bb1d8939152 /generated/architecture/control-manager-5d7aa461-6b3a-4d7a-958a-4dedb378d932 /generated/architecture/diagnostics-manager-ae6163b2-5d17-4e61-8dd9-ebab88ad79a5 /generated/architecture/monitoring-manager-62cbb1ac-6119-42cb-bdea-ff4737e1e316 /generated/architecture/platform-hal-447497f7-c591-4474-9cc4-6721081a69fe /generated/architecture/rgb-led-driver-0f6fe814-e3b7-4f6f-a143-4bf245ee5f86 /generated/architecture/runtime-manager-67b5054c-aedb-47b5-8258-c8d97c4f7d69 /generated/architecture/safety-manager-02c1300e-5e7b-42c1-b86c-e6624aed8975 /generated/architecture/status-indication-manager-aa910425-e9ef-4a91-ab5f-b0f1a7cccfaf Interfaces ---------- .. list-table:: :header-rows: 1 :class: dd-fullwidth-table * - Interface - Requirements - SW Unit Relations - Integration Tests * - :doc:`IF_ConfigUpdate ` - * :doc:`REQ-IFC-003 ` * :doc:`REQ-IFC-004 ` - * :doc:`SWR-020 ` - * :doc:`ITC-011_Modbus_ConfigWrite_Valid_Contract ` * :doc:`ITC-012_Modbus_ConfigWrite_Invalid_Handling ` * :doc:`ITC-013_Modbus_Service_Response_Timing ` * - :doc:`IF_FanCommand ` - * :doc:`REQ-CTL-001 ` * :doc:`REQ-CTL-002 ` * :doc:`REQ-SAF-004 ` - * :doc:`SWR-012 ` - * :doc:`ITC-004_Control_Safety_FanCommand_Coordination ` * - :doc:`IF_FaultEvent ` - * :doc:`REQ-DIA-001 ` * :doc:`REQ-DIA-002 ` * :doc:`REQ-DIA-004 ` * :doc:`REQ-IFC-002 ` - * :doc:`SWR-013 ` - * :doc:`ITC-005_Control_To_Diagnostics_Fault_And_Status_Path ` * :doc:`ITC-010_Modbus_Read_Service_Flow ` * - :doc:`IF_OperatingStatus ` - * :doc:`REQ-DIA-003 ` * :doc:`REQ-REL-004 ` * :doc:`REQ-IFC-002 ` - * :doc:`SWR-013 ` * :doc:`SWR-014 ` * :doc:`SWR-015 ` - * :doc:`ITC-005_Control_To_Diagnostics_Fault_And_Status_Path ` * :doc:`ITC-006_Safety_To_Diagnostics_Status_Path ` * :doc:`ITC-007_Diagnostics_To_StatusIndication_To_LED ` * :doc:`ITC-010_Modbus_Read_Service_Flow ` * - :doc:`IF_SensorSnapshot ` - * :doc:`REQ-MON-001 ` * :doc:`REQ-MON-002 ` * :doc:`REQ-MON-003 ` * :doc:`REQ-MON-004 ` - * :doc:`SWR-021 ` * :doc:`SWR-022 ` - * :doc:`ITC-002_Monitoring_To_Control_SensorSnapshot_Contract ` * :doc:`ITC-003_Monitoring_To_Safety_SensorSnapshot_Contract ` * - :doc:`IF_StatusLedCommand ` - * :doc:`REQ-IFC-005 ` * :doc:`REQ-DIA-003 ` - * :doc:`SWR-016 ` - * :doc:`ITC-007_Diagnostics_To_StatusIndication_To_LED ` * :doc:`ITC-009_Status_To_LED_Response_Timing ` .. toctree:: :maxdepth: 1 :hidden: :caption: Interfaces /generated/interfaces/if-configupdate-f20fedaa-4e6c-420f-8340-89cf13274267 /generated/interfaces/if-fancommand-bd286a07-57b3-4d28-9762-ff7aa19bf414 /generated/interfaces/if-faultevent-e07297fe-3438-4072-9d68-a195d67a36c3 /generated/interfaces/if-operatingstatus-cfa0a86c-8a29-4fa0-a301-507ba81c0911 /generated/interfaces/if-sensorsnapshot-ec44cda0-afb5-4c44-8043-e39117a90ffb /generated/interfaces/if-statusledcommand-84e97e18-5de1-44e9-8d1b-a743918bb9bf SW Component Connections ------------------------ .. list-table:: :header-rows: 1 :class: dd-fullwidth-table * - SW Connection - Source - Target - Interface * - :doc:`ACONN-001 ` - :doc:`Runtime_Manager ` - :doc:`Monitoring_Manager ` - n/a * - :doc:`ACONN-002 ` - :doc:`Runtime_Manager ` - :doc:`Control_Manager ` - n/a * - :doc:`ACONN-003 ` - :doc:`Runtime_Manager ` - :doc:`Safety_Manager ` - n/a * - :doc:`ACONN-004 ` - :doc:`Runtime_Manager ` - :doc:`Diagnostics_Manager ` - n/a * - :doc:`ACONN-005 ` - :doc:`Comms_Modbus_RTU ` - :doc:`Config_Manager ` - * :doc:`IF_ConfigUpdate ` * - :doc:`ACONN-006 ` - :doc:`Monitoring_Manager ` - :doc:`Control_Manager ` - * :doc:`IF_SensorSnapshot ` * - :doc:`ACONN-007 ` - :doc:`Monitoring_Manager ` - :doc:`Safety_Manager ` - * :doc:`IF_SensorSnapshot ` * - :doc:`ACONN-008 ` - :doc:`Control_Manager ` - :doc:`Safety_Manager ` - * :doc:`IF_FanCommand ` * - :doc:`ACONN-009 ` - :doc:`Control_Manager ` - :doc:`Diagnostics_Manager ` - * :doc:`IF_OperatingStatus ` * :doc:`IF_FaultEvent ` * - :doc:`ACONN-010 ` - :doc:`Safety_Manager ` - :doc:`Diagnostics_Manager ` - * :doc:`IF_OperatingStatus ` * - :doc:`ACONN-011 ` - :doc:`Monitoring_Manager ` - :doc:`Platform_HAL ` - n/a * - :doc:`ACONN-012 ` - :doc:`Comms_Modbus_RTU ` - :doc:`Platform_HAL ` - n/a * - :doc:`ACONN-013 ` - :doc:`Diagnostics_Manager ` - :doc:`Status_Indication_Manager ` - * :doc:`IF_OperatingStatus ` * - :doc:`ACONN-014 ` - :doc:`Status_Indication_Manager ` - :doc:`RGB_LED_Driver ` - * :doc:`IF_StatusLedCommand ` * - :doc:`ACONN-015 ` - :doc:`RGB_LED_Driver ` - :doc:`Platform_HAL ` - n/a .. toctree:: :maxdepth: 1 :hidden: :caption: Connections /generated/connections/aconn-001-7dcda1e9-f347-4dcd-aaf9-dde44605f579 /generated/connections/aconn-002-ecb2aecd-8413-4cb2-b48b-d7fc52feebb3 /generated/connections/aconn-003-a0519cec-6040-4051-a24e-fe5f677e2017 /generated/connections/aconn-004-35221ad2-2afa-4522-bab3-1a6fd2610c6d /generated/connections/aconn-005-523db1a1-ea65-423d-94f3-13cf7fd08fff /generated/connections/aconn-006-b4427979-631b-4442-8857-d6e42b9751ee /generated/connections/aconn-007-6bec80bf-ea90-4bec-8c5b-2ade851c16b8 /generated/connections/aconn-008-b3d0f336-a3e1-43d0-9a40-66c4f66b754a /generated/connections/aconn-009-77cdeeac-1e44-47cd-9b42-93e5f5005d12 /generated/connections/aconn-010-00b62541-e28e-40b6-a40b-b9f0a78d6507 /generated/connections/aconn-011-59fbca37-9d82-49fb-ad23-5e1370d43354 /generated/connections/aconn-012-73605a87-9067-4360-bf91-3cc3501b251c /generated/connections/aconn-013-84b0fd5d-0e58-44b0-95f3-c1d0ed85d5cf /generated/connections/aconn-014-beefaf4b-299a-4eef-913e-d1b25740b846 /generated/connections/aconn-015-b1e49aca-8dc5-41e4-9dc8-31e29e8a8c3c