checkUnusedHals: use hidl metadata

Use libhidlmetadata to infer relationships between interfaces. For
example, if GNSS@2.0 is listed as "optional", but a manifest lists
GNSS@1.1 and 2.0 (because 2.0 inherits from 1.1), do not complain
about an unused 1.1 HAL.

Bug: 131717099
Test: drop GNSS 1.1 from matrix and `m check-vintf-all`

Change-Id: I1c0ef715bf64cacf99de590ed6627afa2b60f4b1
Merged-In: I1c0ef715bf64cacf99de590ed6627afa2b60f4b1
diff --git a/check_vintf.cpp b/check_vintf.cpp
index f2a239a..c2a20a1 100644
--- a/check_vintf.cpp
+++ b/check_vintf.cpp
@@ -26,6 +26,7 @@
 #include <android-base/parseint.h>
 #include <android-base/result.h>
 #include <android-base/strings.h>
+#include <hidl/metadata.h>
 #include <utils/Errors.h>
 #include <vintf/KernelConfigParser.h>
 #include <vintf/VintfObject.h>
@@ -380,7 +381,8 @@
     }
     auto targetFcm = deviceManifest->level();
     if (*hasFcmExt || (targetFcm != Level::UNSPECIFIED && targetFcm >= Level::R)) {
-        return vintfObject->checkUnusedHals();
+        auto hidlMetadata = HidlInterfaceMetadata::all();
+        return vintfObject->checkUnusedHals(hidlMetadata);
     }
     LOG(INFO) << "Skip checking unused HALs.";
     return {};