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 
18 #include "TransportArch.h"
19 
20 #include "parse_string.h"
21 
22 namespace android {
23 namespace vintf {
24 
empty() const25 bool TransportArch::empty() const {
26     return transport == Transport::EMPTY && arch == Arch::ARCH_EMPTY;
27 }
28 
isValid(std::string * error) const29 bool TransportArch::isValid(std::string* error) const {
30     if (error) {
31         error->clear();
32     }
33 
34     switch (transport) {
35         case Transport::EMPTY: // fallthrough
36         case Transport::HWBINDER:
37             if (arch == Arch::ARCH_EMPTY) {
38                 return true;
39             }
40             if (error) {
41                 *error += "Transport " + to_string(transport) + " requires empty arch attribute";
42             }
43             return false;
44 
45         case Transport::PASSTHROUGH:
46             if (arch != Arch::ARCH_EMPTY) {
47                 return true;
48             }
49             if (error) {
50                 *error += "Passthrough HALs requires arch attribute";
51             }
52             return false;
53     }
54 }
55 
56 } // namespace vintf
57 } // namespace android
58