187bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor/* 287bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor * Copyright (C) 2013 The Android Open Source Project 387bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor * 487bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor * Licensed under the Apache License, Version 2.0 (the "License"); 587bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor * you may not use this file except in compliance with the License. 687bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor * You may obtain a copy of the License at 787bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor * 887bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor * http://www.apache.org/licenses/LICENSE-2.0 987bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor * 1087bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor * Unless required by applicable law or agreed to in writing, software 1187bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor * distributed under the License is distributed on an "AS IS" BASIS, 1287bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1387bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor * See the License for the specific language governing permissions and 1487bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor * limitations under the License. 1587bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor */ 1687bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor 1787bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor#include <stdint.h> 1887bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor#include <sys/types.h> 1987bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor#include <batteryservice/IBatteryPropertiesListener.h> 2087bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor#include <binder/Parcel.h> 2187bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor 2287bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynornamespace android { 2387bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor 2487bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynorclass BpBatteryPropertiesListener : public BpInterface<IBatteryPropertiesListener> 2587bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor{ 2687bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynorpublic: 276ca70efdaef8c07e91692101c7a3ae35dc1e0cbbChih-Hung Hsieh explicit BpBatteryPropertiesListener(const sp<IBinder>& impl) 2887bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor : BpInterface<IBatteryPropertiesListener>(impl) 2987bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor { 3087bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor } 3187bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor 3287bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor void batteryPropertiesChanged(struct BatteryProperties props) 3387bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor { 3487bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor Parcel data, reply; 3587bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor data.writeInterfaceToken(IBatteryPropertiesListener::getInterfaceDescriptor()); 3687bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor data.writeInt32(1); 3787bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor props.writeToParcel(&data); 38347f2884dbb29efd9b996bbd7ae7ca7996eb5f08Andreas Gampe remote()->transact(TRANSACT_BATTERYPROPERTIESCHANGED, data, &reply, IBinder::FLAG_ONEWAY); 3987bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor } 4087bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor}; 4187bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor 4287bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd PoynorIMPLEMENT_META_INTERFACE(BatteryPropertiesListener, "android.os.IBatteryPropertiesListener"); 4387bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor 4487bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor// ---------------------------------------------------------------------------- 4587bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor 460bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qianstatus_t BnBatteryPropertiesListener::onTransact(uint32_t code, const Parcel& data, 470bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qian Parcel* reply, uint32_t flags) 480bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qian{ 490bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qian switch(code) { 500bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qian case TRANSACT_BATTERYPROPERTIESCHANGED: { 510bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qian CHECK_INTERFACE(IBatteryPropertiesListener, data, reply); 520bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qian struct BatteryProperties props = {}; 530bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qian if (data.readInt32() != 0) { 540bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qian props.readFromParcel((Parcel*)&data); 550bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qian } 560bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qian batteryPropertiesChanged(props); 570bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qian return NO_ERROR; 580bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qian } 590bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qian default: 600bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qian return BBinder::onTransact(code, data, reply, flags); 610bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qian } 620bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qian}; 630bd44d154ec25b27b624c3c2ec447031fe65e2cdJin Qian 6487bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor}; // namespace android 65