diff options
author | Yifan Hong <elsk@google.com> | 2017-03-01 03:02:30 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-03-01 03:02:30 +0000 |
commit | 4367031f037aaae61d2a908a66ca827a4d778b73 (patch) | |
tree | f91cdeedd5de24211fd78552004a40fed4c86fc1 /base/HidlSupport.cpp | |
parent | 49b64dd503153f9a2923fd7d159f83d8394cdbac (diff) | |
parent | a4547bdb4b367ec3c8d396b4e93858138f731197 (diff) | |
download | libhidl-4367031f037aaae61d2a908a66ca827a4d778b73.tar.gz |
getTransport respects system/manifest.xml am: 64a41d5877 am: dfdf0a76b8
am: a4547bdb4b
Change-Id: I3660f9ec960d776033c7ee7abd2e349691984b90
Diffstat (limited to 'base/HidlSupport.cpp')
-rw-r--r-- | base/HidlSupport.cpp | 51 |
1 files changed, 18 insertions, 33 deletions
diff --git a/base/HidlSupport.cpp b/base/HidlSupport.cpp index 7add055..ba98b44 100644 --- a/base/HidlSupport.cpp +++ b/base/HidlSupport.cpp @@ -22,48 +22,30 @@ #include <android-base/logging.h> #include <android-base/parseint.h> #include <hidl-util/FQName.h> -#include <vintf/HalManifest.h> +#include <vintf/VintfObject.h> #include <vintf/parse_string.h> namespace android { namespace hardware { -vintf::Transport getTransportForFrameworkPackages(const std::string &name) { - // TODO(b/34772739): move to framework vintf - const static std::unordered_map<std::string, vintf::Transport> sTransports { - {"android.hidl.manager@1.0::IServiceManager", vintf::Transport::HWBINDER}, - {"android.hidl.allocator@1.0::IAllocator" , vintf::Transport::HWBINDER}, - {"android.hidl.memory@1.0::IMapper" , vintf::Transport::PASSTHROUGH}, - {"android.hidl.memory@1.0::IMemory" , vintf::Transport::PASSTHROUGH}, - }; - auto it = sTransports.find(name); - if (it == sTransports.end()) { - LOG(ERROR) << "getTransportForFrameworkPackages: Cannot find entry " - << name << " in the static map. Using default transport."; - return vintf::Transport::EMPTY; - } else { - LOG(INFO) << "getTransportForFrameworkPackages: " << name - << " declares transport method " << to_string(it->second); - } - return it->second; -} -vintf::Transport getTransportForHals(const FQName &fqName) { - const std::string package = fqName.package(); - const vintf::HalManifest *vm = vintf::HalManifest::Get(); +vintf::Transport getTransportFromManifest( + const FQName &fqName, const std::string &manifestName, + const vintf::HalManifest *vm) { if (vm == nullptr) { - LOG(WARNING) << "getTransportForHals: No VINTF defined, using default transport for " - << fqName.string() << "."; + LOG(WARNING) << "getTransportFromManifest: No " << manifestName << " manifest defined, " + << "using default transport for " << fqName.string(); return vintf::Transport::EMPTY; } - vintf::Transport tr = vm->getTransport(package, + vintf::Transport tr = vm->getTransport(fqName.package(), vintf::Version{fqName.getPackageMajorVersion(), fqName.getPackageMinorVersion()}); if (tr == vintf::Transport::EMPTY) { - LOG(WARNING) << "getTransportForHals: Cannot find entry " - << package << fqName.atVersion() - << " in vendor interface manifest. Using default transport."; + LOG(WARNING) << "getTransportFromManifest: Cannot find entry " + << fqName.string() + << " in " << manifestName << " manifest, using default transport."; } else { - LOG(INFO) << "getTransportForHals: " << package << fqName.atVersion() - << " declares transport method " << to_string(tr); + LOG(DEBUG) << "getTransportFromManifest: " << fqName.string() + << " declares transport method " << to_string(tr) + << " in " << manifestName << " manifest"; } return tr; } @@ -79,10 +61,13 @@ vintf::Transport getTransport(const std::string &name) { << " does not specify a version. Using default transport."; return vintf::Transport::EMPTY; } + // TODO(b/34772739): modify the list if other packages are added to system/manifest.xml if (fqName.inPackage("android.hidl")) { - return getTransportForFrameworkPackages(name); + return getTransportFromManifest(fqName, "framework", + vintf::VintfObject::GetFrameworkHalManifest()); } - return getTransportForHals(fqName); + return getTransportFromManifest(fqName, "device", + vintf::VintfObject::GetDeviceHalManifest()); } hidl_handle::hidl_handle() { |