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;