OSDN Git Service

libgui: New mutex for ConsumerBase frame callbacks
[android-x86/frameworks-native.git] / services / batteryservice / IBatteryPropertiesListener.cpp
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 <stdint.h>
18 #include <sys/types.h>
19 #include <batteryservice/IBatteryPropertiesListener.h>
20 #include <binder/Parcel.h>
21
22 namespace android {
23
24 class BpBatteryPropertiesListener : public BpInterface<IBatteryPropertiesListener>
25 {
26 public:
27     explicit BpBatteryPropertiesListener(const sp<IBinder>& impl)
28         : BpInterface<IBatteryPropertiesListener>(impl)
29     {
30     }
31
32     void batteryPropertiesChanged(struct BatteryProperties props)
33     {
34         Parcel data, reply;
35         data.writeInterfaceToken(IBatteryPropertiesListener::getInterfaceDescriptor());
36         data.writeInt32(1);
37         props.writeToParcel(&data);
38         remote()->transact(TRANSACT_BATTERYPROPERTIESCHANGED, data, &reply, IBinder::FLAG_ONEWAY);
39     }
40 };
41
42 IMPLEMENT_META_INTERFACE(BatteryPropertiesListener, "android.os.IBatteryPropertiesListener");
43
44 // ----------------------------------------------------------------------------
45
46 status_t BnBatteryPropertiesListener::onTransact(uint32_t code, const Parcel& data,
47                                                  Parcel* reply, uint32_t flags)
48 {
49     switch(code) {
50         case TRANSACT_BATTERYPROPERTIESCHANGED: {
51             CHECK_INTERFACE(IBatteryPropertiesListener, data, reply);
52             struct BatteryProperties props = {};
53             if (data.readInt32() != 0) {
54                 props.readFromParcel((Parcel*)&data);
55             }
56             batteryPropertiesChanged(props);
57             return NO_ERROR;
58         }
59         default:
60             return BBinder::onTransact(code, data, reply, flags);
61     }
62 };
63
64 }; // namespace android