Add device/fwk compatibility matrix to VintfObject.
For framework compatibility matrix, <sepolicy> sections
is injected in build time.
Test: libvintf_test
Test: adb shell vintf; matrices exist, compatible = true
Bug: 37321309
Bug: 36814503
Change-Id: I997b93456a261f0cdb85997ae88f4ac5a5f36ff3
Merged-In: I997b93456a261f0cdb85997ae88f4ac5a5f36ff3
diff --git a/main.cpp b/main.cpp
index 25a8cc6..0437a64 100644
--- a/main.cpp
+++ b/main.cpp
@@ -19,18 +19,59 @@
#include <vintf/parse_string.h>
#include <vintf/VintfObject.h>
+// A convenience binary to dump information available through libvintf.
int main(int, char **) {
using namespace ::android::vintf;
+ std::cout << "======== Device HAL Manifest =========" << std::endl;
+
const HalManifest *vm = VintfObject::GetDeviceHalManifest();
if (vm != nullptr)
std::cout << gHalManifestConverter(*vm);
+ std::cout << "======== Framework HAL Manifest =========" << std::endl;
+
const HalManifest *fm = VintfObject::GetFrameworkHalManifest();
if (fm != nullptr)
std::cout << gHalManifestConverter(*fm);
- std::cout << std::endl;
+ std::cout << "======== Device Compatibility Matrix =========" << std::endl;
+
+ const CompatibilityMatrix *vcm = VintfObject::GetDeviceCompatibilityMatrix();
+ if (vcm != nullptr)
+ std::cout << gCompatibilityMatrixConverter(*vcm);
+
+ std::cout << "======== Framework Compatibility Matrix =========" << std::endl;
+
+ const CompatibilityMatrix *fcm = VintfObject::GetFrameworkCompatibilityMatrix();
+ if (fcm != nullptr)
+ std::cout << gCompatibilityMatrixConverter(*fcm);
+
+ std::cout << "======== Compatibility check =========" << std::endl;
+ std::cout << "Device HAL Manifest? " << (vm != nullptr) << std::endl
+ << "Device Compatibility Matrix? " << (vcm != nullptr) << std::endl
+ << "Framework HAL Manifest? " << (fm != nullptr) << std::endl
+ << "Framework Compatibility Matrix? " << (fcm != nullptr) << std::endl;
+ std::string error;
+ if (vm && fcm) {
+ bool compatible = vm->checkCompatibility(*fcm, &error);
+ std::cout << "Device HAL Manifest <==> Framework Compatibility Matrix? "
+ << compatible;
+ if (!compatible)
+ std::cout << ", " << error;
+ std::cout << std::endl;
+ }
+ if (fm && vcm) {
+ bool compatible = fm->checkCompatibility(*vcm, &error);
+ std::cout << "Framework HAL Manifest <==> Device Compatibility Matrix? "
+ << compatible;
+ if (!compatible)
+ std::cout << ", " << error;
+ std::cout << std::endl;
+ }
+
+ std::cout << "======== Runtime Info =========" << std::endl;
+
const RuntimeInfo *ki = VintfObject::GetRuntimeInfo();
if (ki != nullptr)
std::cout << dump(*ki);