Add FWU documentation
Adds documentation to describe FWU support. Gives an overall
design description and explains the platform configuration
model.
Signed-off-by: Julian Hall <julian.hall@arm.com>
Change-Id: Ib7b362ec645c7afca198f4b5138a249c17bc5056
diff --git a/docs/services/uml/FwStoreClassDiagram.puml b/docs/services/uml/FwStoreClassDiagram.puml
new file mode 100644
index 0000000..228c3db
--- /dev/null
+++ b/docs/services/uml/FwStoreClassDiagram.puml
@@ -0,0 +1,104 @@
+'-------------------------------------------------------------------------------
+' Copyright (c) 2023, Arm Limited and Contributors. All rights reserved.
+'
+' SPDX-License-Identifier: BSD-3-Clause
+'
+'-------------------------------------------------------------------------------
+
+@startuml
+
+ class fw_store
+class bank_tracker
+class metadata_manager
+class metadata_serializer
+class installer_index
+class volume_index
+class installer
+class volume
+
+class bank_tracker {
+ +accept()
+ +copy_accept()
+ +set_no_content()
+ +set_holds_content()
+ +set_holds_acceped_content()
+ +is_content()
+ +is_accepted()
+ +is_all_accepted()
+}
+
+class fw_store {
+ +synchronize()
+ +begin_install()
+ +cancel_install()
+ +finalize_install()
+ +select_installer()
+ +write_image()
+ +commit_image()
+ +notify_accepted()
+ +is_accepted()
+ +is_trial()
+ +commit_to_update()
+ +revert_to_previous()
+ +export()
+}
+
+class metadata_manager {
+ +check_and_repair()
+ +update()
+ +get_active_indices()
+ +preload_bank_tracker()
+}
+
+class metadata_serializer {
+ +serialize()
+ +size()
+ +max_size()
+ +deserialize_bank_info()
+ +deserialize_active_indices()
+}
+
+class installer_index {
+ +register()
+ +find()
+ +get()
+ +get_location_ids()
+}
+
+class installer {
+ +begin()
+ +finalize()
+ +abort()
+ +open()
+ +commit()
+ +write()
+ +enumerate()
+}
+
+class volume_index {
+ +add()
+ +find()
+}
+
+class volume {
+ +open()
+ +close()
+ +seek()
+ +size()
+ +read()
+ +write()
+ +erase()
+ +get_storage_ids()
+}
+
+fw_store -> metadata_manager
+fw_store -> bank_tracker
+fw_store -> installer_index
+fw_store -> volume_index
+metadata_manager -> metadata_serializer
+installer_index -> "*" installer
+volume_index -> "*" volume
+metadata_manager -> "2" volume
+installer ..> volume
+
+@enduml
diff --git a/docs/services/uml/UpdateAgentClassDiagram.puml b/docs/services/uml/UpdateAgentClassDiagram.puml
new file mode 100644
index 0000000..0dad627
--- /dev/null
+++ b/docs/services/uml/UpdateAgentClassDiagram.puml
@@ -0,0 +1,100 @@
+'-------------------------------------------------------------------------------
+' Copyright (c) 2023, Arm Limited and Contributors. All rights reserved.
+'
+' SPDX-License-Identifier: BSD-3-Clause
+'
+'-------------------------------------------------------------------------------
+
+@startuml
+
+class fw_directory
+class fw_inspector
+class img_dir_serializer
+class stream_manager
+class update_agent
+class fw_store
+class installer
+
+class update_agent {
+ +begin_staging()
+ +end_staging()
+ +cancel_staging()
+ +accept()
+ +select_previous()
+ +open()
+ +commit()
+ +read_stream()
+ +write_stream()
+}
+
+class fw_directory {
+ +set_boot_info()
+ +add_image_info()
+ +find_image_info()
+ +get_image_info()
+ +num_images()
+}
+
+class fw_inspector {
+ +inspect
+}
+
+class img_dir_serializer {
+ +serialize()
+ +get_len()
+}
+
+class stream_manager {
+ +open_buffer_stream()
+ +open_install_stream()
+ +close_stream()
+ +cancel_streams()
+ +is_open_streams()
+ +read()
+ +write()
+}
+
+class fw_store {
+ +synchronize()
+ +begin_install()
+ +cancel_install()
+ +finalize_install()
+ +select_installer()
+ +write_image()
+ +commit_image()
+ +notify_accepted()
+ +is_accepted()
+ +is_trial()
+ +commit_to_update()
+ +revert_to_previous()
+ +export()
+}
+
+class installer {
+ +begin()
+ +finalize()
+ +abort()
+ +open()
+ +commit()
+ +write()
+ +enumerate()
+}
+
+class installer_index {
+ +register()
+ +find()
+ +get()
+ +get_location_ids()
+}
+
+update_agent -> fw_store
+update_agent -> fw_directory
+update_agent -> fw_inspector
+update_agent -> stream_manager
+update_agent -> img_dir_serializer
+img_dir_serializer ..> fw_directory
+fw_inspector -> installer_index
+fw_inspector ..> installer
+stream_manager ..> installer
+
+@enduml