Introduce fromBinder() helper.
To safely cast binder objects back to HIDL interfaces.
Modified toBinder(), to take into account IHw
classes no longer exist.
Removed an obsolete conversion of IFoo to BnFoo
in the servicemanager add macro - BnFoo is transport
specific and does not belong there.
Test: mma, hidl_test, hidl_test_java
Bug: 33173166
Change-Id: Iae84c900584a008c9cc8e03d1914e95d0fae77ce
diff --git a/transport/ServiceManagement.cpp b/transport/ServiceManagement.cpp
index 102fa6c..6753cb8 100644
--- a/transport/ServiceManagement.cpp
+++ b/transport/ServiceManagement.cpp
@@ -16,6 +16,7 @@
#define LOG_TAG "ServiceManagement"
+#include <hidl/HidlBinderSupport.h>
#include <hidl/ServiceManagement.h>
#include <hidl/Static.h>
#include <hidl/Status.h>
@@ -28,10 +29,12 @@
#include <unistd.h>
#include <android/hidl/manager/1.0/IServiceManager.h>
-#include <android/hidl/manager/1.0/IHwServiceManager.h>
+#include <android/hidl/manager/1.0/BpServiceManager.h>
+#include <android/hidl/manager/1.0/BnServiceManager.h>
-using android::hidl::manager::V1_0::IHwServiceManager;
using android::hidl::manager::V1_0::IServiceManager;
+using android::hidl::manager::V1_0::BpServiceManager;
+using android::hidl::manager::V1_0::BnServiceManager;
namespace android {
namespace hardware {
@@ -47,7 +50,7 @@
{
AutoMutex _l(gDefaultServiceManagerLock);
while (gDefaultServiceManager == NULL) {
- gDefaultServiceManager = interface_cast<IHwServiceManager>(
+ gDefaultServiceManager = fromBinder<IServiceManager, BpServiceManager, BnServiceManager>(
ProcessState::self()->getContextObject(NULL));
if (gDefaultServiceManager == NULL)
sleep(1);