1c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong/* 2c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong * Copyright (C) 2017 The Android Open Source Project 3c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong * 4c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong * Licensed under the Apache License, Version 2.0 (the "License"); 5c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong * you may not use this file except in compliance with the License. 6c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong * You may obtain a copy of the License at 7c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong * 8c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong * http://www.apache.org/licenses/LICENSE-2.0 9c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong * 10c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong * Unless required by applicable law or agreed to in writing, software 11c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong * distributed under the License is distributed on an "AS IS" BASIS, 12c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong * See the License for the specific language governing permissions and 14c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong * limitations under the License. 15c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong */ 16c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong 17c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong 18c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong#ifndef ANDROID_VINTF_TRANSPORT_ARCH_H 19c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong#define ANDROID_VINTF_TRANSPORT_ARCH_H 20c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong 21c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong#include "Arch.h" 22c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong#include "Transport.h" 23c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong 24c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hongnamespace android { 25c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hongnamespace vintf { 26c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong 27c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hongstruct TransportArch { 28c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong Transport transport = Transport::EMPTY; 29c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong Arch arch = Arch::ARCH_EMPTY; 30c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong 31c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hongprivate: 32c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong friend struct TransportArchConverter; 33c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong friend struct ManifestHalConverter; 34c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong friend struct ManifestHal; 35c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong friend bool parse(const std::string &s, TransportArch *ta); 36c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong bool empty() const; 37c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong // Valid combinations: 38c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong // <transport arch="32">passthrough</transport> 39c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong // <transport arch="64">passthrough</transport> 40c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong // <transport arch="32+64">passthrough</transport> 41c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong // <transport>hwbinder</transport> 42c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong // Element doesn't exist 43c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong bool isValid() const; 44c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong}; 45c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong 46c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong 47c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong} // namespace vintf 48c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong} // namespace android 49c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong 50c54d32cb0b20308a0ecea7864016a2a5dc512f71Yifan Hong#endif // ANDROID_VINTF_TRANSPORT_ARCH_H 51