History log of /openbmc/phosphor-power/compatible_system_types_finder.hpp (Results 1 – 3 of 3)
Revision Date Author Comments
# 8b098b97 05-Aug-2024 Shawn McCarney <shawnmm@us.ibm.com>

Add support for re-finding interfaces/system types

The DBusInterfacesFinder class simplifies the task of finding interface
instances on D-Bus. Similarly, the CompatibleSystemTypesFinder class
simpl

Add support for re-finding interfaces/system types

The DBusInterfacesFinder class simplifies the task of finding interface
instances on D-Bus. Similarly, the CompatibleSystemTypesFinder class
simplifies the task of finding the list of compatible system types for
the current system.

Both classes initially find the D-Bus objects that already exist at the
time the classes are constructed. They use InterfacesAdded listeners to
find new D-Bus objects that are created later.

This behavior handles most use cases. However, sometimes a caller may
not be receiving D-Bus signals, but they still need to find new D-Bus
objects that have been created. For example, the caller may be looping
within a timeout period waiting for a D-Bus object to be created.

To handle this use case, add `refind()` methods to both classes that
will re-find all matching D-Bus objects that now exist, including those
created since the classes were constructed.

Tested:
* DBusInterfacesFinder
* Verify finds all interface instances that exist at time class is
constructed
* None found
* Instances found
* Verify finds new interface instances via InterfacesAdded listener
* Verify refind() finds all interface instances, including those that
were created after the class was constructed.
* None found
* Instances found
* CompatibleSystemTypesFinder
* Verify finds all compatible system type lists that exist at time
class is constructed
* None found
* Lists found
* Verify finds new compatible system type lists via InterfacesAdded
listener
* Verify refind() finds all compatible system type lists, including
those that were created after the class was constructed.
* None found
* Lists found

Change-Id: I975b37524f687e6d2f3d4ff48abb5e4486a84bfe
Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>

show more ...


# 1838dbf9 05-Jun-2024 Shawn McCarney <shawnmm@us.ibm.com>

Move D-Bus finder class constructors

Three classes in this repository search for D-Bus interfaces and call
a callback when interfaces are found:
- DBusInterfacesFinder
- CompatibleSystemTypesFinder

Move D-Bus finder class constructors

Three classes in this repository search for D-Bus interfaces and call
a callback when interfaces are found:
- DBusInterfacesFinder
- CompatibleSystemTypesFinder
- DeviceFinder

The constructors of these three classes may immediately call the
callback. For this reason, these constructors should not be used in the
initialization list of constructors in other classes. Otherwise the
callback may be called before the other class is fully initialized,
leading to unpredictable behavior.

Move usage of these three constructors from initialization lists to
constructor bodies.

Tested:
+ CompatibleSystemTypesFinder
+ Test where compatible system types interface already exists on D-Bus
+ Verify callback is called immediately
+ Test where compatible system types interface does not already exist
on D-Bus
+ Verify callback is called later when interface is added
+ Verify callback is passed the correct data
+ DeviceFinder
+ Test where device interface already exists on D-Bus
+ Verify callback is called immediately
+ Test where device interface does not already exist on D-Bus
+ Verify callback is called later when interface is added
+ Verify callback is passed the correct data

Change-Id: If089f4720012d837b464137b5d3c8fba5dbdc335
Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>

show more ...


# 3cc348ce 29-May-2024 Shawn McCarney <shawnmm@us.ibm.com>

Create class for finding compatible system types

Create class for finding the list of compatible system types for the
current system.

Use the new D-Bus interface
xyz.openbmc_project.Inventory.Decor

Create class for finding compatible system types

Create class for finding the list of compatible system types for the
current system.

Use the new D-Bus interface
xyz.openbmc_project.Inventory.Decorator.Compatible to find the system
types.

Tested:
* See test plan at
https://gist.github.com/smccarney/7bfc20b258cd6ccfba908730102a32dd

Change-Id: I47063642a601991aac8e63f39d8d1f29c4896db0
Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>

show more ...