• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2013 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 <binder/IBatteryStats.h>
18 
19 #include <utils/Log.h>
20 #include <binder/Parcel.h>
21 #include <utils/String8.h>
22 
23 #include <private/binder/Static.h>
24 
25 namespace android {
26 
27 // ----------------------------------------------------------------------
28 
29 class BpBatteryStats : public BpInterface<IBatteryStats>
30 {
31 public:
BpBatteryStats(const sp<IBinder> & impl)32     explicit BpBatteryStats(const sp<IBinder>& impl)
33         : BpInterface<IBatteryStats>(impl)
34     {
35     }
36 
noteStartSensor(int uid,int sensor)37     virtual void noteStartSensor(int uid, int sensor) {
38         Parcel data, reply;
39         data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
40         data.writeInt32(uid);
41         data.writeInt32(sensor);
42         remote()->transact(NOTE_START_SENSOR_TRANSACTION, data, &reply);
43     }
44 
noteStopSensor(int uid,int sensor)45     virtual void noteStopSensor(int uid, int sensor) {
46         Parcel data, reply;
47         data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
48         data.writeInt32(uid);
49         data.writeInt32(sensor);
50         remote()->transact(NOTE_STOP_SENSOR_TRANSACTION, data, &reply);
51     }
52 
noteStartVideo(int uid)53     virtual void noteStartVideo(int uid) {
54         Parcel data, reply;
55         data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
56         data.writeInt32(uid);
57         remote()->transact(NOTE_START_VIDEO_TRANSACTION, data, &reply);
58     }
59 
noteStopVideo(int uid)60     virtual void noteStopVideo(int uid) {
61         Parcel data, reply;
62         data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
63         data.writeInt32(uid);
64         remote()->transact(NOTE_STOP_VIDEO_TRANSACTION, data, &reply);
65     }
66 
noteStartAudio(int uid)67     virtual void noteStartAudio(int uid) {
68         Parcel data, reply;
69         data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
70         data.writeInt32(uid);
71         remote()->transact(NOTE_START_AUDIO_TRANSACTION, data, &reply);
72     }
73 
noteStopAudio(int uid)74     virtual void noteStopAudio(int uid) {
75         Parcel data, reply;
76         data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
77         data.writeInt32(uid);
78         remote()->transact(NOTE_STOP_AUDIO_TRANSACTION, data, &reply);
79     }
80 
noteResetVideo()81     virtual void noteResetVideo() {
82         Parcel data, reply;
83         data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
84         remote()->transact(NOTE_RESET_VIDEO_TRANSACTION, data, &reply);
85     }
86 
noteResetAudio()87     virtual void noteResetAudio() {
88         Parcel data, reply;
89         data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
90         remote()->transact(NOTE_RESET_AUDIO_TRANSACTION, data, &reply);
91     }
92 
noteFlashlightOn(int uid)93     virtual void noteFlashlightOn(int uid) {
94         Parcel data, reply;
95         data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
96         data.writeInt32(uid);
97         remote()->transact(NOTE_FLASHLIGHT_ON_TRANSACTION, data, &reply);
98     }
99 
noteFlashlightOff(int uid)100     virtual void noteFlashlightOff(int uid) {
101         Parcel data, reply;
102         data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
103         data.writeInt32(uid);
104         remote()->transact(NOTE_FLASHLIGHT_OFF_TRANSACTION, data, &reply);
105     }
106 
noteStartCamera(int uid)107     virtual void noteStartCamera(int uid) {
108         Parcel data, reply;
109         data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
110         data.writeInt32(uid);
111         remote()->transact(NOTE_START_CAMERA_TRANSACTION, data, &reply);
112     }
113 
noteStopCamera(int uid)114     virtual void noteStopCamera(int uid) {
115         Parcel data, reply;
116         data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
117         data.writeInt32(uid);
118         remote()->transact(NOTE_STOP_CAMERA_TRANSACTION, data, &reply);
119     }
120 
noteResetCamera()121     virtual void noteResetCamera() {
122         Parcel data, reply;
123         data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
124         remote()->transact(NOTE_RESET_CAMERA_TRANSACTION, data, &reply);
125     }
126 
noteResetFlashlight()127     virtual void noteResetFlashlight() {
128         Parcel data, reply;
129         data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
130         remote()->transact(NOTE_RESET_FLASHLIGHT_TRANSACTION, data, &reply);
131     }
132 
133 };
134 
135 IMPLEMENT_META_INTERFACE(BatteryStats, "com.android.internal.app.IBatteryStats");
136 
137 // ----------------------------------------------------------------------
138 
onTransact(uint32_t code,const Parcel & data,Parcel * reply,uint32_t flags)139 status_t BnBatteryStats::onTransact(
140     uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
141 {
142     switch(code) {
143         case NOTE_START_SENSOR_TRANSACTION: {
144             CHECK_INTERFACE(IBatteryStats, data, reply);
145             int uid = data.readInt32();
146             int sensor = data.readInt32();
147             noteStartSensor(uid, sensor);
148             reply->writeNoException();
149             return NO_ERROR;
150         } break;
151         case NOTE_STOP_SENSOR_TRANSACTION: {
152             CHECK_INTERFACE(IBatteryStats, data, reply);
153             int uid = data.readInt32();
154             int sensor = data.readInt32();
155             noteStopSensor(uid, sensor);
156             reply->writeNoException();
157             return NO_ERROR;
158         } break;
159         case NOTE_START_VIDEO_TRANSACTION: {
160             CHECK_INTERFACE(IBatteryStats, data, reply);
161             int uid = data.readInt32();
162             noteStartVideo(uid);
163             reply->writeNoException();
164             return NO_ERROR;
165         } break;
166         case NOTE_STOP_VIDEO_TRANSACTION: {
167             CHECK_INTERFACE(IBatteryStats, data, reply);
168             int uid = data.readInt32();
169             noteStopVideo(uid);
170             reply->writeNoException();
171             return NO_ERROR;
172         } break;
173         case NOTE_START_AUDIO_TRANSACTION: {
174             CHECK_INTERFACE(IBatteryStats, data, reply);
175             int uid = data.readInt32();
176             noteStartAudio(uid);
177             reply->writeNoException();
178             return NO_ERROR;
179         } break;
180         case NOTE_STOP_AUDIO_TRANSACTION: {
181             CHECK_INTERFACE(IBatteryStats, data, reply);
182             int uid = data.readInt32();
183             noteStopAudio(uid);
184             reply->writeNoException();
185             return NO_ERROR;
186         } break;
187         case NOTE_RESET_VIDEO_TRANSACTION: {
188             CHECK_INTERFACE(IBatteryStats, data, reply);
189             noteResetVideo();
190             reply->writeNoException();
191             return NO_ERROR;
192         } break;
193         case NOTE_RESET_AUDIO_TRANSACTION: {
194             CHECK_INTERFACE(IBatteryStats, data, reply);
195             noteResetAudio();
196             reply->writeNoException();
197             return NO_ERROR;
198         } break;
199         case NOTE_FLASHLIGHT_ON_TRANSACTION: {
200             CHECK_INTERFACE(IBatteryStats, data, reply);
201             int uid = data.readInt32();
202             noteFlashlightOn(uid);
203             reply->writeNoException();
204             return NO_ERROR;
205         } break;
206         case NOTE_FLASHLIGHT_OFF_TRANSACTION: {
207             CHECK_INTERFACE(IBatteryStats, data, reply);
208             int uid = data.readInt32();
209             noteFlashlightOff(uid);
210             reply->writeNoException();
211             return NO_ERROR;
212         } break;
213         case NOTE_START_CAMERA_TRANSACTION: {
214             CHECK_INTERFACE(IBatteryStats, data, reply);
215             int uid = data.readInt32();
216             noteStartCamera(uid);
217             reply->writeNoException();
218             return NO_ERROR;
219         } break;
220         case NOTE_STOP_CAMERA_TRANSACTION: {
221             CHECK_INTERFACE(IBatteryStats, data, reply);
222             int uid = data.readInt32();
223             noteStopCamera(uid);
224             reply->writeNoException();
225             return NO_ERROR;
226         } break;
227         case NOTE_RESET_CAMERA_TRANSACTION: {
228             CHECK_INTERFACE(IBatteryStats, data, reply);
229             noteResetCamera();
230             reply->writeNoException();
231             return NO_ERROR;
232         } break;
233         case NOTE_RESET_FLASHLIGHT_TRANSACTION: {
234             CHECK_INTERFACE(IBatteryStats, data, reply);
235             noteResetFlashlight();
236             reply->writeNoException();
237             return NO_ERROR;
238         } break;
239         default:
240             return BBinder::onTransact(code, data, reply, flags);
241     }
242 }
243 
244 }; // namespace android
245