1a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// 2a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// Copyright (C) 2016 The Android Open Source Project 3a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// 4a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// Licensed under the Apache License, Version 2.0 (the "License"); 5a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// you may not use this file except in compliance with the License. 6a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// You may obtain a copy of the License at 7a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// 8a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// http://www.apache.org/licenses/LICENSE-2.0 9a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// 10a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// Unless required by applicable law or agreed to in writing, software 11a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// distributed under the License is distributed on an "AS IS" BASIS, 12a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// See the License for the specific language governing permissions and 14a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// limitations under the License. 15a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// 16a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 17a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#ifndef SHILL_BINDER_MANAGER_BINDER_ADAPTOR_H_ 18a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#define SHILL_BINDER_MANAGER_BINDER_ADAPTOR_H_ 19a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 20a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#include <string> 21a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#include <vector> 22a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 23a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#include <base/macros.h> 24a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#include <utils/StrongPointer.h> 25a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 26a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#include "android/system/connectivity/shill/BnManager.h" 27a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#include "shill/adaptor_interfaces.h" 28a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#include "shill/binder/binder_adaptor.h" 29a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 30a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tannamespace android { 31a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanclass String16; 32a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tannamespace binder { 33a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanclass Status; 34a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} // namespace binder 35a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tannamespace system { 36a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tannamespace connectivity { 37a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tannamespace shill { 38a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanclass IPropertyChangedCallback; 39a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} // namespace shill 40a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} // namespace connectivity 41a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} // namespace system 42a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} // namespace android 43a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 44a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tannamespace shill { 45a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 46a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanclass Manager; 47a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 48a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// Subclass of BinderAdaptor for Manager objects 49a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// There is a 1:1 mapping between Manager and ManagerBinderAdaptor 50a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// instances. Furthermore, the Manager owns the ManagerBinderAdaptor 51a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// and manages its lifetime, so we're OK with ManagerBinderAdaptor 52a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// having a bare pointer to its owner manager. 53a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanclass ManagerBinderAdaptor 54a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan : public android::system::connectivity::shill::BnManager, 55a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan public BinderAdaptor, 56a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan public ManagerAdaptorInterface { 57a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan public: 58a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan ManagerBinderAdaptor(Manager* manager, const std::string& id); 59a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan ~ManagerBinderAdaptor() override; 60a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 61a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan // Implementation of ManagerAdaptorInterface. 62a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan void RegisterAsync( 63a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const base::Callback<void(bool)>& completion_callback) override; 64a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const std::string& GetRpcIdentifier() override { return id(); } 65a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan void EmitBoolChanged(const std::string& name, bool value) override; 66a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan void EmitUintChanged(const std::string& name, uint32_t value) override; 67a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan void EmitIntChanged(const std::string& name, int value) override; 68a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan void EmitStringChanged(const std::string& name, 69a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const std::string& value) override; 70a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan void EmitStringsChanged(const std::string& name, 71a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const std::vector<std::string>& value) override; 72a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan void EmitRpcIdentifierChanged( 73a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const std::string& name, const std::string& value) override; 74a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan void EmitRpcIdentifierArrayChanged( 75a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const std::string& name, const std::vector<std::string>& value) override; 76a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 77a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan // Implementation of BnManager. 78a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan android::binder::Status SetupApModeInterface(android::String16* _aidl_return); 79a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan android::binder::Status SetupStationModeInterface( 80a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan android::String16* _aidl_return); 81a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan android::binder::Status ClaimInterface( 82a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const android::String16& claimer_name, 83a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const android::String16& interface_name); 84a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan android::binder::Status ReleaseInterface( 85a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const android::String16& claimer_name, 86a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const android::String16& interface_name); 87a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan android::binder::Status ConfigureService( 88a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const android::os::PersistableBundle& properties, 89a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan android::sp<android::IBinder>* _aidl_return); 90a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan android::binder::Status RequestScan(int32_t type); 91a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan android::binder::Status GetDevices( 92a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan ::std::vector<android::sp<android::IBinder>>* _aidl_return); 93a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan android::binder::Status RegisterPropertyChangedSignalHandler( 94a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const android::sp< 95a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan android::system::connectivity::shill::IPropertyChangedCallback>& 96a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan callback); 97a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 98a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan private: 99a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan Manager* manager_; 100a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 101a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan DISALLOW_COPY_AND_ASSIGN(ManagerBinderAdaptor); 102a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan}; 103a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 104a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} // namespace shill 105a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 106a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#endif // SHILL_BINDER_MANAGER_BINDER_ADAPTOR_H_ 107