Add VintfObject::getCompatibleKernelRequirement
Fixes: 139015688
Test: vintf_object_test
Test: libvintf_test
Change-Id: I31d5ac319bc61bd340dbc1196dbfc3107f6be101
diff --git a/CompatibilityMatrix.cpp b/CompatibilityMatrix.cpp
index 8595fcd..b9cf494 100644
--- a/CompatibilityMatrix.cpp
+++ b/CompatibilityMatrix.cpp
@@ -19,6 +19,7 @@
#include <iostream>
#include <utility>
+#include <android-base/logging.h>
#include <android-base/strings.h>
#include "parse_string.h"
@@ -285,6 +286,8 @@
continue;
}
+ (void)kernelToAdd.setSourceMatrixLevel(other->level());
+
KernelVersion minLts = kernelToAdd.minLts();
if (!addKernel(std::move(kernelToAdd), error)) {
if (error) {
@@ -477,5 +480,14 @@
return type() == SchemaType::DEVICE ? device.mVendorNdk.version() : "";
}
+Level CompatibilityMatrix::getSourceMatrixLevel(const MatrixKernel* matrixKernel) const {
+ CHECK(std::find_if(framework.mKernels.begin(), framework.mKernels.end(),
+ [matrixKernel](const auto& e) { return &e == matrixKernel; }) !=
+ framework.mKernels.end());
+ Level ret = matrixKernel->getSourceMatrixLevel();
+ if (ret != Level::UNSPECIFIED) return ret;
+ return level();
+}
+
} // namespace vintf
} // namespace android