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#include "shill/binder/manager_binder_adaptor.h" 18a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 19a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#include <binder/Status.h> 20b857a0f3b0cab7f2ba61fd9ac2235555c7098243Samuel Tan#include <binderwrapper/binder_wrapper.h> 21a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#include <utils/String16.h> 22b857a0f3b0cab7f2ba61fd9ac2235555c7098243Samuel Tan#include <utils/String8.h> 23a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 24a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#include "shill/logging.h" 25a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#include "shill/manager.h" 26a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 27a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanusing android::binder::Status; 28b857a0f3b0cab7f2ba61fd9ac2235555c7098243Samuel Tanusing android::BinderWrapper; 29a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanusing android::IBinder; 30a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanusing android::sp; 31a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanusing android::String16; 32b857a0f3b0cab7f2ba61fd9ac2235555c7098243Samuel Tanusing android::String8; 33a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanusing android::system::connectivity::shill::IPropertyChangedCallback; 34a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanusing std::string; 35a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanusing std::vector; 36a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 37a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tannamespace shill { 38a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 39a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tannamespace Logging { 40a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanstatic auto kModuleLogScope = ScopeLogger::kBinder; 41a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanstatic string ObjectID(ManagerBinderAdaptor* m) { 42a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan return "Manager binder adaptor (id " + m->GetRpcIdentifier() + ")"; 43a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} 44a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} // namespace Logging 45a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 46a04c6448da585d8bef65b8bbd44711fd7882c917Samuel TanManagerBinderAdaptor::ManagerBinderAdaptor(Manager* manager, 47a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const std::string& id) 48a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan : BinderAdaptor(id), manager_(manager) {} 49a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 50a04c6448da585d8bef65b8bbd44711fd7882c917Samuel TanManagerBinderAdaptor::~ManagerBinderAdaptor() { manager_ = nullptr; } 51a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 52a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanvoid ManagerBinderAdaptor::RegisterAsync( 53a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const base::Callback<void(bool)>& /*completion_callback*/) { 54a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan // Registration is performed synchronously in Binder. 55b857a0f3b0cab7f2ba61fd9ac2235555c7098243Samuel Tan BinderWrapper::Get()->RegisterService( 56b857a0f3b0cab7f2ba61fd9ac2235555c7098243Samuel Tan String8(getInterfaceDescriptor()).string(), this); 57a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} 58a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 59a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanvoid ManagerBinderAdaptor::EmitBoolChanged(const string& name, bool /*value*/) { 60a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan SLOG(this, 2) << __func__ << ": " << name; 61a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan SendPropertyChangedSignal(name); 62a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} 63a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 64a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanvoid ManagerBinderAdaptor::EmitUintChanged(const string& name, 65a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan uint32_t /*value*/) { 66a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan SLOG(this, 2) << __func__ << ": " << name; 67a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan SendPropertyChangedSignal(name); 68a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} 69a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 70a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanvoid ManagerBinderAdaptor::EmitIntChanged(const string& name, int /*value*/) { 71a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan SLOG(this, 2) << __func__ << ": " << name; 72a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan SendPropertyChangedSignal(name); 73a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} 74a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 75a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanvoid ManagerBinderAdaptor::EmitStringChanged(const string& name, 76a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const string& /*value*/) { 77a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan SLOG(this, 2) << __func__ << ": " << name; 78a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan SendPropertyChangedSignal(name); 79a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} 80a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 81a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanvoid ManagerBinderAdaptor::EmitStringsChanged(const string& name, 82a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const vector<string>& /*value*/) { 83a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan SLOG(this, 2) << __func__ << ": " << name; 84a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan SendPropertyChangedSignal(name); 85a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} 86a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 87a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanvoid ManagerBinderAdaptor::EmitRpcIdentifierChanged(const string& name, 88a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const string& /*value*/) { 89a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan SLOG(this, 2) << __func__ << ": " << name; 90a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan SendPropertyChangedSignal(name); 91a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} 92a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 93a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanvoid ManagerBinderAdaptor::EmitRpcIdentifierArrayChanged( 94a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const string& name, const vector<string>& /*value*/) { 95a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan SLOG(this, 2) << __func__ << ": " << name; 96a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan SendPropertyChangedSignal(name); 97a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} 98a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 99a04c6448da585d8bef65b8bbd44711fd7882c917Samuel TanStatus ManagerBinderAdaptor::SetupApModeInterface(String16* _aidl_return) { 100a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan // STUB IMPLEMENTATION. 101a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan return Status::ok(); 102a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} 103a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 104a04c6448da585d8bef65b8bbd44711fd7882c917Samuel TanStatus ManagerBinderAdaptor::SetupStationModeInterface(String16* _aidl_return) { 105a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan // STUB IMPLEMENTATION. 106a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan // TODO(samueltan): replace this with proper implementation. 107a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan return Status::ok(); 108a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} 109a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 110a04c6448da585d8bef65b8bbd44711fd7882c917Samuel TanStatus ManagerBinderAdaptor::ClaimInterface(const String16& claimer_name, 111a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const String16& interface_name) { 112a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan // STUB IMPLEMENTATION. 113a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan // TODO(samueltan): replace this with proper implementation. 114a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan return Status::ok(); 115a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} 116a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 117a04c6448da585d8bef65b8bbd44711fd7882c917Samuel TanStatus ManagerBinderAdaptor::ReleaseInterface(const String16& claimer_name, 118a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const String16& interface_name) { 119a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan // STUB IMPLEMENTATION. 120a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan // TODO(samueltan): replace this with proper implementation. 121a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan return Status::ok(); 122a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} 123a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 124a04c6448da585d8bef65b8bbd44711fd7882c917Samuel TanStatus ManagerBinderAdaptor::ConfigureService( 125a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const android::os::PersistableBundle& properties, 126a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan sp<IBinder>* _aidl_return) { 127a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan // STUB IMPLEMENTATION. 128a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan // TODO(samueltan): replace this with proper implementation. 129a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan return Status::ok(); 130a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} 131a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 132a04c6448da585d8bef65b8bbd44711fd7882c917Samuel TanStatus ManagerBinderAdaptor::RequestScan(int32_t type) { 133a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan // STUB IMPLEMENTATION. 134a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan // TODO(samueltan): replace this with proper implementation. 135a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan return Status::ok(); 136a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} 137a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 138a04c6448da585d8bef65b8bbd44711fd7882c917Samuel TanStatus ManagerBinderAdaptor::GetDevices(vector<sp<IBinder>>* _aidl_return) { 139a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan // STUB IMPLEMENTATION. 140a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan // TODO(samueltan): replace this with proper implementation. 141a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan return Status::ok(); 142a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} 143a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 144a04c6448da585d8bef65b8bbd44711fd7882c917Samuel TanStatus ManagerBinderAdaptor::RegisterPropertyChangedSignalHandler( 145a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan const sp<IPropertyChangedCallback>& callback) { 146a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan AddPropertyChangedSignalHandler(callback); 147a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan return Status::ok(); 148a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} 149a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan 150a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan} // namespace shill 151