• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #include <iostream>
18 #include <vintf/parse_xml.h>
19 #include <vintf/parse_string.h>
20 #include <vintf/VintfObject.h>
21 
22 // A convenience binary to dump information available through libvintf.
main(int,char **)23 int main(int, char **) {
24     using namespace ::android::vintf;
25 
26     std::cout << "======== Device HAL Manifest =========" << std::endl;
27 
28     const HalManifest *vm = VintfObject::GetDeviceHalManifest();
29     if (vm != nullptr)
30         std::cout << gHalManifestConverter(*vm);
31 
32     std::cout << "======== Framework HAL Manifest =========" << std::endl;
33 
34     const HalManifest *fm = VintfObject::GetFrameworkHalManifest();
35     if (fm != nullptr)
36         std::cout << gHalManifestConverter(*fm);
37 
38     std::cout << "======== Device Compatibility Matrix =========" << std::endl;
39 
40     const CompatibilityMatrix *vcm = VintfObject::GetDeviceCompatibilityMatrix();
41     if (vcm != nullptr)
42         std::cout << gCompatibilityMatrixConverter(*vcm);
43 
44     std::cout << "======== Framework Compatibility Matrix =========" << std::endl;
45 
46     const CompatibilityMatrix *fcm = VintfObject::GetFrameworkCompatibilityMatrix();
47     if (fcm != nullptr)
48         std::cout << gCompatibilityMatrixConverter(*fcm);
49 
50     std::cout << "======== Runtime Info =========" << std::endl;
51 
52     const RuntimeInfo* ki = VintfObject::GetRuntimeInfo();
53     if (ki != nullptr) std::cout << dump(*ki);
54     std::cout << std::endl;
55 
56     std::cout << "======== Compatibility check =========" << std::endl;
57     std::cout << "Device HAL Manifest? " << (vm != nullptr) << std::endl
58               << "Device Compatibility Matrix? " << (vcm != nullptr) << std::endl
59               << "Framework HAL Manifest? " << (fm != nullptr) << std::endl
60               << "Framework Compatibility Matrix? " << (fcm != nullptr) << std::endl;
61     std::string error;
62     if (vm && fcm) {
63         bool compatible = vm->checkCompatibility(*fcm, &error);
64         std::cout << "Device HAL Manifest <==> Framework Compatibility Matrix? "
65                   << compatible;
66         if (!compatible)
67             std::cout << ", " << error;
68         std::cout << std::endl;
69     }
70     if (fm && vcm) {
71         bool compatible = fm->checkCompatibility(*vcm, &error);
72         std::cout << "Framework HAL Manifest <==> Device Compatibility Matrix? "
73                   << compatible;
74         if (!compatible)
75             std::cout << ", " << error;
76         std::cout << std::endl;
77     }
78     if (ki && fcm) {
79         bool compatible = ki->checkCompatibility(*fcm, &error);
80         std::cout << "Runtime info <==> Framework Compatibility Matrix? " << compatible;
81         if (!compatible) std::cout << ", " << error;
82         std::cout << std::endl;
83     }
84 
85     {
86         auto compatible = VintfObject::CheckCompatibility({}, &error);
87         std::cout << "VintfObject::CheckCompatibility (0 == compatible)? " << compatible;
88         if (compatible != COMPATIBLE) std::cout << ", " << error;
89         std::cout << std::endl;
90     }
91 }
92