1 //
2 // Copyright (C) 2016 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 #include "shill/binder/service_binder_adaptor.h"
18 
19 #include <binder/Status.h>
20 
21 #include "shill/logging.h"
22 #include "shill/service.h"
23 
24 using android::binder::Status;
25 using android::IBinder;
26 using android::sp;
27 using android::system::connectivity::shill::IPropertyChangedCallback;
28 using std::string;
29 
30 namespace shill {
31 
32 namespace Logging {
33 static auto kModuleLogScope = ScopeLogger::kBinder;
ObjectID(ServiceBinderAdaptor * s)34 static string ObjectID(ServiceBinderAdaptor* s) {
35   return "Service binder adaptor (id " + s->GetRpcIdentifier() + ", " +
36          s->service()->unique_name() + ")";
37 }
38 }  // namespace Logging
39 
ServiceBinderAdaptor(Service * service,const std::string & id)40 ServiceBinderAdaptor::ServiceBinderAdaptor(Service* service,
41                                            const std::string& id)
42     : BinderAdaptor(id), service_(service) {}
43 
~ServiceBinderAdaptor()44 ServiceBinderAdaptor::~ServiceBinderAdaptor() { service_ = nullptr; }
45 
EmitBoolChanged(const string & name,bool)46 void ServiceBinderAdaptor::EmitBoolChanged(const string& name, bool /*value*/) {
47   SLOG(this, 2) << __func__ << ": " << name;
48   SendPropertyChangedSignal(name);
49 }
50 
EmitUint8Changed(const string & name,uint8_t)51 void ServiceBinderAdaptor::EmitUint8Changed(const string& name,
52                                             uint8_t /*value*/) {
53   SLOG(this, 2) << __func__ << ": " << name;
54   SendPropertyChangedSignal(name);
55 }
56 
EmitUint16Changed(const string & name,uint16_t)57 void ServiceBinderAdaptor::EmitUint16Changed(const string& name,
58                                              uint16_t /*value*/) {
59   SLOG(this, 2) << __func__ << ": " << name;
60   SendPropertyChangedSignal(name);
61 }
62 
EmitUint16sChanged(const string & name,const Uint16s &)63 void ServiceBinderAdaptor::EmitUint16sChanged(const string& name,
64                                               const Uint16s& /*value*/) {
65   SLOG(this, 2) << __func__ << ": " << name;
66   SendPropertyChangedSignal(name);
67 }
68 
EmitUintChanged(const string & name,uint32_t)69 void ServiceBinderAdaptor::EmitUintChanged(const string& name,
70                                            uint32_t /*value*/) {
71   SLOG(this, 2) << __func__ << ": " << name;
72   SendPropertyChangedSignal(name);
73 }
74 
EmitIntChanged(const string & name,int)75 void ServiceBinderAdaptor::EmitIntChanged(const string& name, int /*value*/) {
76   SLOG(this, 2) << __func__ << ": " << name;
77   SendPropertyChangedSignal(name);
78 }
79 
EmitRpcIdentifierChanged(const string & name,const string &)80 void ServiceBinderAdaptor::EmitRpcIdentifierChanged(const string& name,
81                                                     const string& /*value*/) {
82   SLOG(this, 2) << __func__ << ": " << name;
83   SendPropertyChangedSignal(name);
84 }
85 
EmitStringChanged(const string & name,const string &)86 void ServiceBinderAdaptor::EmitStringChanged(const string& name,
87                                              const string& /*value*/) {
88   SLOG(this, 2) << __func__ << ": " << name;
89   SendPropertyChangedSignal(name);
90 }
91 
EmitStringmapChanged(const string & name,const Stringmap &)92 void ServiceBinderAdaptor::EmitStringmapChanged(const string& name,
93                                                 const Stringmap& /*value*/) {
94   SLOG(this, 2) << __func__ << ": " << name;
95   SendPropertyChangedSignal(name);
96 }
97 
Connect()98 Status ServiceBinderAdaptor::Connect() {
99   // STUB IMPLEMENTATION.
100   // TODO(samueltan): replace this with proper implementation.
101   return Status::ok();
102 }
103 
GetState(int32_t * _aidl_return)104 Status ServiceBinderAdaptor::GetState(int32_t* _aidl_return) {
105   // STUB IMPLEMENTATION.
106   // TODO(samueltan): replace this with proper implementation.
107   return Status::ok();
108 }
109 
GetStrength(int8_t * _aidl_return)110 Status ServiceBinderAdaptor::GetStrength(int8_t* _aidl_return) {
111   // STUB IMPLEMENTATION.
112   // TODO(samueltan): replace this with proper implementation.
113   return Status::ok();
114 }
115 
GetError(int32_t * _aidl_return)116 Status ServiceBinderAdaptor::GetError(int32_t* _aidl_return) {
117   // STUB IMPLEMENTATION.
118   // TODO(samueltan): replace this with proper implementation.
119   return Status::ok();
120 }
121 
RegisterPropertyChangedSignalHandler(const sp<IPropertyChangedCallback> & callback)122 Status ServiceBinderAdaptor::RegisterPropertyChangedSignalHandler(
123     const sp<IPropertyChangedCallback>& callback) {
124   AddPropertyChangedSignalHandler(callback);
125   return Status::ok();
126 }
127 
128 }  // namespace shill
129