tree 0a3b9ae75938c10a55a18e88556c285f7d927716
parent 0aadbe41aadd155d91e2bda1c471ac85a7dffee9
author Patrick Williams <patrick@stwcx.xyz> 1705352234 -0600
committer Patrick Williams <patrick@stwcx.xyz> 1705353897 -0600

ObjectMapper: match interfaces with reality

The documented ObjectMapper interfaces do not match the reference
implementation in phosphor-objmgr.  Lots of code currently uses
hand-written dbus calls to the ObjectMapper, using the real interfaces
and not the documented ones.  Refactoring all of these implementations
is quite a bit of effort, which could be staged at a later time (or
leverage a versioned interface).  Update the interface to match reality
so that generated bindings could be leveraged.

Tested:

Ran the reference implementation and compared the signatures with the
YAML and updated as necessary.
```
$ busctl --user introspect xyz.openbmc_project.ObjectMapper /xyz/openbmc_project/object_mapper xyz.openbmc_project.ObjectMapper
NAME                             TYPE      SIGNATURE RESULT/VALUE FLAGS
.GetAncestors                    method    sas       a{sa{sas}}   -
.GetAssociatedSubTree            method    ooias     a{sa{sas}}   -
.GetAssociatedSubTreePaths       method    ooias     as           -
.GetObject                       method    sas       a{sas}       -
.GetSubTree                      method    sias      a{sa{sas}}   -
.GetSubTreePaths                 method    sias      as           -
```

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: If6fc6a403d602d6c18c6e30dc1a216a47d059860
