Add manifest/compatibility-matrix.type attribute
to distinguish device and framework HAL manifest, and
device and framework compatibility matrix.
Add .device / .framework entries to HalManifest and
CompatibilityMatrix class for device-only / fwk-only
entries. Access to these fields should be guarded with
a check to mType.
Test: libvintf_test
Test: boots
Change-Id: Id9c93c1e6bb585234a9ae6d9296f5a10582ef58f
diff --git a/CompatibilityMatrix.cpp b/CompatibilityMatrix.cpp
index aba4efc..f27a019 100644
--- a/CompatibilityMatrix.cpp
+++ b/CompatibilityMatrix.cpp
@@ -26,13 +26,16 @@
}
bool CompatibilityMatrix::add(MatrixKernel &&kernel) {
- mKernels.push_back(std::move(kernel));
+ if (mType != SchemaType::FRAMEWORK) {
+ return false;
+ }
+ framework.mKernels.push_back(std::move(kernel));
return true;
}
void CompatibilityMatrix::clear() {
mHals.clear();
- mKernels.clear();
+ framework.mKernels.clear();
}
ConstMapValueIterable<std::string, MatrixHal> CompatibilityMatrix::getHals() const {
@@ -40,7 +43,10 @@
}
const MatrixKernel *CompatibilityMatrix::findKernel(const KernelVersion &v) const {
- for (const MatrixKernel &matrixKernel : mKernels) {
+ if (mType != SchemaType::FRAMEWORK) {
+ return nullptr;
+ }
+ for (const MatrixKernel &matrixKernel : framework.mKernels) {
if (matrixKernel.minLts().version == v.version &&
matrixKernel.minLts().majorRev == v.majorRev) {
return matrixKernel.minLts().minorRev <= v.minorRev ? &matrixKernel : nullptr;