@1.2::IServiceManager: listManifestByInterface
This API lists VINTF manifest HALs (those that are expected to be on
the device even if they are not currently running).
This API is being added for a couple of reasons:
- libvintf is not in the VNDK. This new API will allow vendors to read
the vintf manifest and get the HALs which are expected to be on the
device.
- more and more HALs are using dynamic lifecycles which means an API
like this is increasingly useful.
- having an easy API like this helps ensure that vintf things are
easier to get correct since users of this API will automatically
get the correct configuration.
There are a couple of possible expected usages of this API:
# running HALs
R = listByInterface(IFoo::descriptor)
# VINTF Manifest HALs
M = listManfiestByInterface(IFoo::descriptor)
# Lazy HALs that are not started
... = M - R
# Getting all HALs on the device if some are lazy
for i in M:
... = IFoo::getService(i)
Change-Id: I279a9048f27dac9f7ee6d3ea57d5842d64cadb3b
Fixes: 76108617
Bug: 66921961
Test: hidl_test
diff --git a/transport/manager/1.2/IServiceManager.hal b/transport/manager/1.2/IServiceManager.hal
index b4c990a..e1629d6 100644
--- a/transport/manager/1.2/IServiceManager.hal
+++ b/transport/manager/1.2/IServiceManager.hal
@@ -21,10 +21,6 @@
import IClientCallback;
interface IServiceManager extends @1.1::IServiceManager {
- // TODO(b/66921961): additional functionality for the next release:
- // - Method to list interfaces in the manifest (for b/76108617, since if they are
- // lazy, they will no longer show up in listByInterface)
-
/**
* Adds a callback that must be called when the specified server has no clients.
*
@@ -65,4 +61,16 @@
* @return success Whether or not the service was registered.
*/
addWithChain(string name, interface service, vec<string> chain) generates (bool success);
+
+ /**
+ * List all instances of a particular service from the manifest. Must be sorted. These HALs
+ * may not be started if they are lazy.
+ *
+ * See also @1.0::IServiceManager's listByInterface function.
+ *
+ * @param fqName Fully-qualified interface name.
+ *
+ * @return instanceNames List of instance names running the particular service.
+ */
+ listManifestByInterface(string fqName) generates (vec<string> instanceNames);
};