blob: 7b58046d36a94713a997a77d35202c2853e33512 [file] [log] [blame]
Mike Lockwood63ff1c62013-09-25 09:28:41 -07001/*
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
Steven Morelandea6bfab2021-04-01 00:10:31 +000017#include <batterystats/IBatteryStats.h>
Mike Lockwood63ff1c62013-09-25 09:28:41 -070018
Mike Lockwood63ff1c62013-09-25 09:28:41 -070019#include <utils/Log.h>
20#include <binder/Parcel.h>
21#include <utils/String8.h>
22
Mike Lockwood63ff1c62013-09-25 09:28:41 -070023namespace android {
24
25// ----------------------------------------------------------------------
26
27class BpBatteryStats : public BpInterface<IBatteryStats>
28{
29public:
Chih-Hung Hsiehe2347b72016-04-25 15:41:05 -070030 explicit BpBatteryStats(const sp<IBinder>& impl)
Mike Lockwood63ff1c62013-09-25 09:28:41 -070031 : BpInterface<IBatteryStats>(impl)
32 {
33 }
34
35 virtual void noteStartSensor(int uid, int sensor) {
36 Parcel data, reply;
37 data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
38 data.writeInt32(uid);
39 data.writeInt32(sensor);
40 remote()->transact(NOTE_START_SENSOR_TRANSACTION, data, &reply);
41 }
42
43 virtual void noteStopSensor(int uid, int sensor) {
44 Parcel data, reply;
45 data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
46 data.writeInt32(uid);
47 data.writeInt32(sensor);
48 remote()->transact(NOTE_STOP_SENSOR_TRANSACTION, data, &reply);
49 }
Chong Zhangbd42d382014-07-22 09:12:21 -070050
51 virtual void noteStartVideo(int uid) {
52 Parcel data, reply;
53 data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
54 data.writeInt32(uid);
55 remote()->transact(NOTE_START_VIDEO_TRANSACTION, data, &reply);
56 }
57
58 virtual void noteStopVideo(int uid) {
59 Parcel data, reply;
60 data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
61 data.writeInt32(uid);
62 remote()->transact(NOTE_STOP_VIDEO_TRANSACTION, data, &reply);
63 }
64
65 virtual void noteStartAudio(int uid) {
66 Parcel data, reply;
67 data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
68 data.writeInt32(uid);
Atneya Nair5af964c2024-03-21 16:36:06 -070069 remote()->transact(NOTE_START_AUDIO_TRANSACTION, data, &reply, IBinder::FLAG_ONEWAY);
Chong Zhangbd42d382014-07-22 09:12:21 -070070 }
71
72 virtual void noteStopAudio(int uid) {
73 Parcel data, reply;
74 data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
75 data.writeInt32(uid);
Atneya Nair5af964c2024-03-21 16:36:06 -070076 remote()->transact(NOTE_STOP_AUDIO_TRANSACTION, data, &reply, IBinder::FLAG_ONEWAY);
Chong Zhangbd42d382014-07-22 09:12:21 -070077 }
Chong Zhang2cbba472014-07-23 14:47:00 -070078
79 virtual void noteResetVideo() {
80 Parcel data, reply;
81 data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
82 remote()->transact(NOTE_RESET_VIDEO_TRANSACTION, data, &reply);
83 }
84
85 virtual void noteResetAudio() {
86 Parcel data, reply;
87 data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
Atneya Nair5af964c2024-03-21 16:36:06 -070088 remote()->transact(NOTE_RESET_AUDIO_TRANSACTION, data, &reply, IBinder::FLAG_ONEWAY);
Chong Zhang2cbba472014-07-23 14:47:00 -070089 }
Ruben Brunkd47da602015-05-26 17:30:11 -070090
91 virtual void noteFlashlightOn(int uid) {
92 Parcel data, reply;
93 data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
94 data.writeInt32(uid);
95 remote()->transact(NOTE_FLASHLIGHT_ON_TRANSACTION, data, &reply);
96 }
97
98 virtual void noteFlashlightOff(int uid) {
99 Parcel data, reply;
100 data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
101 data.writeInt32(uid);
102 remote()->transact(NOTE_FLASHLIGHT_OFF_TRANSACTION, data, &reply);
103 }
104
105 virtual void noteStartCamera(int uid) {
106 Parcel data, reply;
107 data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
108 data.writeInt32(uid);
109 remote()->transact(NOTE_START_CAMERA_TRANSACTION, data, &reply);
110 }
111
112 virtual void noteStopCamera(int uid) {
113 Parcel data, reply;
114 data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
115 data.writeInt32(uid);
116 remote()->transact(NOTE_STOP_CAMERA_TRANSACTION, data, &reply);
117 }
118
119 virtual void noteResetCamera() {
120 Parcel data, reply;
121 data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
122 remote()->transact(NOTE_RESET_CAMERA_TRANSACTION, data, &reply);
123 }
124
125 virtual void noteResetFlashlight() {
126 Parcel data, reply;
127 data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
128 remote()->transact(NOTE_RESET_FLASHLIGHT_TRANSACTION, data, &reply);
129 }
130
Suprabh Shukla0f239092023-04-04 03:33:09 -0700131 virtual binder::Status noteWakeupSensorEvent(int64_t elapsedNanos, int uid, int handle) {
132 Parcel data, reply;
133 data.writeInterfaceToken(IBatteryStats::getInterfaceDescriptor());
134 data.writeInt64(elapsedNanos);
135 data.writeInt32(uid);
136 data.writeInt32(handle);
137 status_t ret = remote()->transact(NOTE_WAKEUP_SENSOR_EVENT_TRANSACTION, data, &reply);
138 return binder::Status::fromStatusT(ret);
139 }
Mike Lockwood63ff1c62013-09-25 09:28:41 -0700140};
141
Jooyung Hanc91e3cb2020-11-25 06:38:17 +0900142IMPLEMENT_META_INTERFACE(BatteryStats, "com.android.internal.app.IBatteryStats")
Mike Lockwood63ff1c62013-09-25 09:28:41 -0700143
144// ----------------------------------------------------------------------
145
Jiyong Parkb86c8662018-10-29 23:01:57 +0900146// NOLINTNEXTLINE(google-default-arguments)
Mike Lockwood63ff1c62013-09-25 09:28:41 -0700147status_t BnBatteryStats::onTransact(
148 uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
149{
150 switch(code) {
151 case NOTE_START_SENSOR_TRANSACTION: {
152 CHECK_INTERFACE(IBatteryStats, data, reply);
153 int uid = data.readInt32();
154 int sensor = data.readInt32();
155 noteStartSensor(uid, sensor);
156 reply->writeNoException();
157 return NO_ERROR;
158 } break;
159 case NOTE_STOP_SENSOR_TRANSACTION: {
160 CHECK_INTERFACE(IBatteryStats, data, reply);
161 int uid = data.readInt32();
162 int sensor = data.readInt32();
163 noteStopSensor(uid, sensor);
164 reply->writeNoException();
165 return NO_ERROR;
166 } break;
Chong Zhangbd42d382014-07-22 09:12:21 -0700167 case NOTE_START_VIDEO_TRANSACTION: {
168 CHECK_INTERFACE(IBatteryStats, data, reply);
169 int uid = data.readInt32();
170 noteStartVideo(uid);
171 reply->writeNoException();
172 return NO_ERROR;
173 } break;
174 case NOTE_STOP_VIDEO_TRANSACTION: {
175 CHECK_INTERFACE(IBatteryStats, data, reply);
176 int uid = data.readInt32();
177 noteStopVideo(uid);
178 reply->writeNoException();
179 return NO_ERROR;
180 } break;
181 case NOTE_START_AUDIO_TRANSACTION: {
182 CHECK_INTERFACE(IBatteryStats, data, reply);
183 int uid = data.readInt32();
184 noteStartAudio(uid);
185 reply->writeNoException();
186 return NO_ERROR;
187 } break;
188 case NOTE_STOP_AUDIO_TRANSACTION: {
189 CHECK_INTERFACE(IBatteryStats, data, reply);
190 int uid = data.readInt32();
191 noteStopAudio(uid);
192 reply->writeNoException();
193 return NO_ERROR;
194 } break;
Chong Zhang2cbba472014-07-23 14:47:00 -0700195 case NOTE_RESET_VIDEO_TRANSACTION: {
196 CHECK_INTERFACE(IBatteryStats, data, reply);
197 noteResetVideo();
198 reply->writeNoException();
199 return NO_ERROR;
200 } break;
201 case NOTE_RESET_AUDIO_TRANSACTION: {
202 CHECK_INTERFACE(IBatteryStats, data, reply);
203 noteResetAudio();
204 reply->writeNoException();
205 return NO_ERROR;
206 } break;
Ruben Brunkd47da602015-05-26 17:30:11 -0700207 case NOTE_FLASHLIGHT_ON_TRANSACTION: {
208 CHECK_INTERFACE(IBatteryStats, data, reply);
209 int uid = data.readInt32();
210 noteFlashlightOn(uid);
211 reply->writeNoException();
212 return NO_ERROR;
213 } break;
214 case NOTE_FLASHLIGHT_OFF_TRANSACTION: {
215 CHECK_INTERFACE(IBatteryStats, data, reply);
216 int uid = data.readInt32();
217 noteFlashlightOff(uid);
218 reply->writeNoException();
219 return NO_ERROR;
220 } break;
221 case NOTE_START_CAMERA_TRANSACTION: {
222 CHECK_INTERFACE(IBatteryStats, data, reply);
223 int uid = data.readInt32();
224 noteStartCamera(uid);
225 reply->writeNoException();
226 return NO_ERROR;
227 } break;
228 case NOTE_STOP_CAMERA_TRANSACTION: {
229 CHECK_INTERFACE(IBatteryStats, data, reply);
230 int uid = data.readInt32();
231 noteStopCamera(uid);
232 reply->writeNoException();
233 return NO_ERROR;
234 } break;
235 case NOTE_RESET_CAMERA_TRANSACTION: {
236 CHECK_INTERFACE(IBatteryStats, data, reply);
237 noteResetCamera();
238 reply->writeNoException();
239 return NO_ERROR;
240 } break;
241 case NOTE_RESET_FLASHLIGHT_TRANSACTION: {
242 CHECK_INTERFACE(IBatteryStats, data, reply);
243 noteResetFlashlight();
244 reply->writeNoException();
245 return NO_ERROR;
246 } break;
Suprabh Shukla0f239092023-04-04 03:33:09 -0700247 case NOTE_WAKEUP_SENSOR_EVENT_TRANSACTION: {
248 CHECK_INTERFACE(IBatteryStats, data, reply);
249 int64_t elapsedNanos = data.readInt64();
250 int uid = data.readInt32();
251 int handle = data.readInt32();
252 noteWakeupSensorEvent(elapsedNanos, uid, handle);
253 reply->writeNoException();
254 return NO_ERROR;
255 } break;
256
Mike Lockwood63ff1c62013-09-25 09:28:41 -0700257 default:
258 return BBinder::onTransact(code, data, reply, flags);
259 }
260}
261
Steven Moreland61ff8492019-09-26 16:05:45 -0700262} // namespace android