ao_config_manager
=================
Applies validated configuration updates and maintains active control configuration for runtime consumers.
Inherited Component
-------------------
- :doc:`Config_Manager `
Inherited Requirements
----------------------
- :doc:`REQ-CTL-003 `
- :doc:`REQ-IFC-003 `
- :doc:`REQ-IFC-004 `
Relationship Diagram
--------------------
.. image:: /_static/sw_unit_uml/ao_config_manager_75815879-88a1-4581-88cc-9ba567d73b34_uml.svg
:alt: UML class diagram for ao_config_manager
:class: dblclick-open-image
SW Unit Relations
-----------------
Incoming Relations
~~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
* - Relation
- UML Type
- Visibility
- Source Unit
- Description
* - :doc:`SWR-020 `
- dependency
- private
- :doc:`ao_modbus_server `
- Modbus server forwards configuration update requests to config manager for validation and commit.
Data Types
----------
.. _dt-6aa21605-584e-4aa2-903b-fce1f5f04d3f:
.. raw:: html
ao_config_manager_contextstruct
Configuration manager runtime context.
.. rubric:: Struct Members
.. list-table::
:header-rows: 1
* - Name
- Type
- Description
* - active_version
- :ref:`uint16_t `
- Active configuration version.
* - pending_update
- :ref:`bool `
- Pending configuration update staged.
* - last_apply_tick
- :ref:`uint32_t `
- Tick of last applied update.
* - last_error_code
- :ref:`uint16_t `
- Last validation or apply error code.
.. _dt-36bcae02-ce67-46bc-8547-f24299792578:
.. raw:: html
ao_config_manager_eventstruct
Configuration manager event payload.
.. rubric:: Struct Members
.. list-table::
:header-rows: 1
* - Name
- Type
- Description
* - signal_id
- :ref:`uint16_t `
- Configuration manager signal identifier.
* - parameter_key
- :ref:`uint16_t `
- Configuration parameter key.
* - parameter_value
- :ref:`int32_t `
- Requested parameter value.
* - commit_request
- :ref:`bool `
- Commit request flag for staged update.
.. _dt-d8b63ce2-d256-48b6-8965-7e77579aa417:
.. raw:: html
ao_config_manager_resultenum
Configuration manager operation result.
.. rubric:: Enum Members
.. list-table::
:header-rows: 1
* - Name
- Value
- Description
* - OK
- 0
- Configuration operation succeeded.
* - INVALID_RANGE
- 1
- Parameter value out of allowed range.
* - APPLY_REJECTED
- 2
- Configuration apply rejected by guard condition.
.. _dt-8bace17e-2abe-4bac-97c1-589be64c4135:
.. raw:: html
ao_config_update_payloadprimitive
Validated configuration payload received from communication services.
Attributes
----------
.. list-table::
:header-rows: 1
* - Attribute
- Type
- Visibility
- Description
* - ctx
- :ref:`ao_config_manager_context `
- private
- Configuration context for versioning pending updates and error tracking.
Methods
-------
apply_config_update
~~~~~~~~~~~~~~~~~~~
- **Return Type:** :ref:`ao_config_manager_result `
- **Visibility:** public
- **Description:** Validate and apply one configuration update event.
.. rubric:: Parameters
.. list-table::
:header-rows: 1
* - Name
- Type
- Direction
- Description
* - config_update
- :ref:`ao_config_manager_event `
- in
- Configuration update event payload to validate and commit.
init
~~~~
- **Return Type:** :ref:`ao_config_manager_result `
- **Visibility:** public
- **Description:** Initialize configuration defaults and staging state.
Dynamic Behaviour
-----------------
Activity Diagrams
~~~~~~~~~~~~~~~~~
ao_config_manager_activity
^^^^^^^^^^^^^^^^^^^^^^^^^^
.. uml::
@startuml
start
:Receive IF_ConfigUpdate;
:Validate key and value range;
if (valid update?) then (yes)
:Stage pending configuration;
:Apply to runtime control parameters;
:Persist active configuration version;
:Publish apply success status;
else (no)
:Reject update and keep active config;
:Publish validation error status;
endif
stop
@enduml
This activity diagram defines configuration update handling from intake through validation staged apply and rejection behavior to guarantee deterministic config management without disrupting active control execution.
Timing Diagrams
~~~~~~~~~~~~~~~
ao_config_manager_timing
^^^^^^^^^^^^^^^^^^^^^^^^
.. uml::
@startuml
robust "ao_config_manager" as CFG
scale max 1200 width
concise "config request" as R
@0
R is rx
CFG is validating
@80
CFG is staging
@160
CFG is applying
@260
CFG is persisted
@320
CFG is response_published
@enduml
This timing diagram bounds configuration handling latency from request reception through validation apply and response publication so configuration operations remain within communication service deadlines.