getService: respect persist.hal.binderization

Bug: 34256441
Test: nfc and lights work with ag/1833821 with persist.hal.binderization
set to on and off. There are no additional selinux denials.
Change-Id: I3d4678aaf4d602aec05617d4d792935814b1c2bc
diff --git a/generateCpp.cpp b/generateCpp.cpp
index cd67c4d..aa22362 100644
--- a/generateCpp.cpp
+++ b/generateCpp.cpp
@@ -172,7 +172,9 @@
                 out << "= ::android::hardware::defaultServiceManager();\n";
             });
             out.sIf("sm != nullptr", [&] {
-                out.sIf("transport == ::android::vintf::Transport::HWBINDER", [&]() {
+                // TODO(b/34274385) remove sysprop check
+                out.sIf("transport == ::android::vintf::Transport::HWBINDER &&"
+                         " ::android::hardware::details::blockingHalBinderizationEnabled()", [&]() {
                     out << "::android::hardware::details::waitForHwService("
                         << interfaceName << "::descriptor" << ", serviceName);\n";
                 }).endl();
@@ -191,6 +193,8 @@
 
         out.sIf("getStub || "
                 "transport == ::android::vintf::Transport::PASSTHROUGH || "
+                "(transport == ::android::vintf::Transport::HWBINDER &&"
+                " !::android::hardware::details::blockingHalBinderizationEnabled()) ||"
                 "transport == ::android::vintf::Transport::EMPTY", [&] {
             out << "const ::android::sp<::android::hidl::manager::V1_0::IServiceManager> pm\n";
             out.indent(2, [&] {
@@ -948,6 +952,9 @@
         // This is a no-op for IServiceManager itself.
         out << "#include <android/hidl/manager/1.0/IServiceManager.h>\n";
 
+        // TODO(b/34274385) remove this
+        out << "#include <hidl/LegacySupport.h>\n";
+
         generateCppPackageInclude(out, mPackage, iface->getProxyName());
         generateCppPackageInclude(out, mPackage, iface->getStubName());
         generateCppPackageInclude(out, mPackage, iface->getPassthroughName());