1*70a7ec85SAndroid Build Coastguard Worker /* 2*70a7ec85SAndroid Build Coastguard Worker * Copyright (C) 2017 The Android Open Source Project 3*70a7ec85SAndroid Build Coastguard Worker * 4*70a7ec85SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*70a7ec85SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*70a7ec85SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*70a7ec85SAndroid Build Coastguard Worker * 8*70a7ec85SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*70a7ec85SAndroid Build Coastguard Worker * 10*70a7ec85SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*70a7ec85SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*70a7ec85SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*70a7ec85SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*70a7ec85SAndroid Build Coastguard Worker * limitations under the License. 15*70a7ec85SAndroid Build Coastguard Worker */ 16*70a7ec85SAndroid Build Coastguard Worker 17*70a7ec85SAndroid Build Coastguard Worker #ifndef ANDROID_VINTF_DISABLED_CHECKS_H_ 18*70a7ec85SAndroid Build Coastguard Worker #define ANDROID_VINTF_DISABLED_CHECKS_H_ 19*70a7ec85SAndroid Build Coastguard Worker 20*70a7ec85SAndroid Build Coastguard Worker namespace android { 21*70a7ec85SAndroid Build Coastguard Worker namespace vintf { 22*70a7ec85SAndroid Build Coastguard Worker 23*70a7ec85SAndroid Build Coastguard Worker namespace CheckFlags { 24*70a7ec85SAndroid Build Coastguard Worker 25*70a7ec85SAndroid Build Coastguard Worker // Flags for *::checkCompatibility functions. 26*70a7ec85SAndroid Build Coastguard Worker class Type { 27*70a7ec85SAndroid Build Coastguard Worker public: 28*70a7ec85SAndroid Build Coastguard Worker #define VINTF_CHECK_FLAGS_FIELD(name, bit) \ 29*70a7ec85SAndroid Build Coastguard Worker [[nodiscard]] constexpr Type enable##name() const { return Type(mValue | (1 << bit)); } \ 30*70a7ec85SAndroid Build Coastguard Worker [[nodiscard]] constexpr Type disable##name() const { return Type(mValue & ~(1 << bit)); } \ 31*70a7ec85SAndroid Build Coastguard Worker constexpr bool is##name##Enabled() const { return mValue & (1 << bit); } 32*70a7ec85SAndroid Build Coastguard Worker 33*70a7ec85SAndroid Build Coastguard Worker VINTF_CHECK_FLAGS_FIELD(Avb, 0) 34*70a7ec85SAndroid Build Coastguard Worker VINTF_CHECK_FLAGS_FIELD(RuntimeInfo, 1) 35*70a7ec85SAndroid Build Coastguard Worker VINTF_CHECK_FLAGS_FIELD(Kernel, 2) 36*70a7ec85SAndroid Build Coastguard Worker #undef VINTF_CHECK_FLAGS_FIELD 37*70a7ec85SAndroid Build Coastguard Worker Type(int32_t value)38*70a7ec85SAndroid Build Coastguard Worker explicit constexpr Type(int32_t value) : mValue(value) {} 39*70a7ec85SAndroid Build Coastguard Worker 40*70a7ec85SAndroid Build Coastguard Worker private: 41*70a7ec85SAndroid Build Coastguard Worker int32_t mValue; 42*70a7ec85SAndroid Build Coastguard Worker }; 43*70a7ec85SAndroid Build Coastguard Worker 44*70a7ec85SAndroid Build Coastguard Worker constexpr Type ENABLE_ALL_CHECKS{~0}; 45*70a7ec85SAndroid Build Coastguard Worker constexpr Type DISABLE_ALL_CHECKS{0}; 46*70a7ec85SAndroid Build Coastguard Worker // Disable AVB version check in RuntimeInfo::checkCompatibility 47*70a7ec85SAndroid Build Coastguard Worker constexpr Type DISABLE_AVB_CHECK = ENABLE_ALL_CHECKS.disableAvb(); 48*70a7ec85SAndroid Build Coastguard Worker // Disable RuntimeInfo <-> Framework Matrix check. This implies DISABLE_AVB_CHECK. 49*70a7ec85SAndroid Build Coastguard Worker constexpr Type DISABLE_RUNTIME_INFO = ENABLE_ALL_CHECKS.disableRuntimeInfo(); 50*70a7ec85SAndroid Build Coastguard Worker 51*70a7ec85SAndroid Build Coastguard Worker // Default flag if no flag is provided. 52*70a7ec85SAndroid Build Coastguard Worker constexpr Type DEFAULT = DISABLE_AVB_CHECK; 53*70a7ec85SAndroid Build Coastguard Worker 54*70a7ec85SAndroid Build Coastguard Worker // tests 55*70a7ec85SAndroid Build Coastguard Worker static_assert(ENABLE_ALL_CHECKS.isAvbEnabled(), ""); 56*70a7ec85SAndroid Build Coastguard Worker static_assert(ENABLE_ALL_CHECKS.isRuntimeInfoEnabled(), ""); 57*70a7ec85SAndroid Build Coastguard Worker static_assert(!DISABLE_AVB_CHECK.isAvbEnabled(), ""); 58*70a7ec85SAndroid Build Coastguard Worker static_assert(DISABLE_AVB_CHECK.isRuntimeInfoEnabled(), ""); 59*70a7ec85SAndroid Build Coastguard Worker static_assert(DISABLE_RUNTIME_INFO.isAvbEnabled(), ""); 60*70a7ec85SAndroid Build Coastguard Worker static_assert(!DISABLE_RUNTIME_INFO.isRuntimeInfoEnabled(), ""); 61*70a7ec85SAndroid Build Coastguard Worker 62*70a7ec85SAndroid Build Coastguard Worker } // namespace CheckFlags 63*70a7ec85SAndroid Build Coastguard Worker } // namespace vintf 64*70a7ec85SAndroid Build Coastguard Worker } // namespace android 65*70a7ec85SAndroid Build Coastguard Worker 66*70a7ec85SAndroid Build Coastguard Worker #endif // ANDROID_VINTF_DISABLED_CHECKS_H_ 67