| #
                7ad45b40 |  | 18-Aug-2025 | Unive Tien <unive.tien.wiwynn@gmail.com> | fw_update: Introduce FirmwareInventory
 Spec reference: [1]
 
 Description:
 FirmwareInventory is a class that manages all of the D-Bus
 utilities for the firmware update functionality of each entry,
 Fir
 fw_update: Introduce FirmwareInventory
 Spec reference: [1]
 
 Description:
 FirmwareInventory is a class that manages all of the D-Bus
 utilities for the firmware update functionality of each entry,
 FirmwareInventoryManager is used to manage multiple FirmwareInventory
 instances.
 
 Flow of the routine when one or more firmware device is added:
 1. When one or more firmware device is added, the InventoryManager
 instance will try to create a FirmwareInventory entry for the added
 device, to accomplish this, it will need to fetch the necessary
 information from various source (e.g. EM, device descriptors).
 
 2. After the information is gathered, the InventoryManager will try to
 obtain a Name for each firmware devices, to fit the different
 platform condition, the name will be reference by the order below:
 1. From Entity Manager (EM), if the endpoint has a specific EM
 configuration with "Name" property listed.
 2. From device descriptors, if the device descriptor contains a
 vendor defined descriptor with "OpenBMC.Name" titled.
 3. Spawn a default one, named "Firmware_Device_<Endpoint ID>".
 
 3. The InventoryManager will then invoke
 `FirmwareInventoryManager::createFirmwareInventory` to create a
 firmware inventory entry.
 
 Properties managed by firmware Inventory:
 1. Version
 Version object that represents the firmware version
 2. Association
 Association object that represents the associations for the
 firmware
 
 The object path pattern of the firmware inventory entry is:
 `/xyz/openbmc_project/software/<BoardName>_<SoftwareName>_<SoftwareID>`
 
 Where:
 - `<BoardName>` represents the board the device is on.
 - `<SoftwareName>` is the name of the firmware device obtained from the
 InventoryManager.
 - `<SoftwareID>` is a 4-byte random number to help consumer
 distinguish from the new/old objects of a inventory item.
 For example:
 `server_board_slot_1_VR_2603`
 The new Activation object and its related interfaces needs to
 resides on a new objectPath, hence the softwareId is appended to
 the path.
 
 Test results:
 - Build passed
 - Successfully create firmware inventory entries
 on Yosemite V4
 
 [1]: https://github.com/openbmc/docs/blob/master/designs/code-update.md
 
 Change-Id: Idebd7d013c82c60f08309a1860d5de1deeb3829a
 Signed-off-by: Unive Tien <unive.tien.wiwynn@gmail.com>
 Signed-off-by: Carter Chen <carter.chen.wiwynn@gmail.com>
 show more ...  
 |