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/BatteryService.h> 2087bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor#include <binder/Parcel.h> 2187bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor#include <utils/Errors.h> 2287bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor#include <utils/String8.h> 2387bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor#include <utils/String16.h> 2487bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor 2587bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynornamespace android { 2687bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor 2787bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor/* 2887bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor * Parcel read/write code must be kept in sync with 2987bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor * frameworks/base/core/java/android/os/BatteryProperties.java 3087bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor */ 3187bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor 3287bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynorstatus_t BatteryProperties::readFromParcel(Parcel* p) { 3387bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor chargerAcOnline = p->readInt32() == 1 ? true : false; 3487bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor chargerUsbOnline = p->readInt32() == 1 ? true : false; 3587bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor chargerWirelessOnline = p->readInt32() == 1 ? true : false; 3687bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor batteryStatus = p->readInt32(); 3787bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor batteryHealth = p->readInt32(); 3887bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor batteryPresent = p->readInt32() == 1 ? true : false; 3987bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor batteryLevel = p->readInt32(); 4087bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor batteryVoltage = p->readInt32(); 41b98240cc6ca8fe60b93bfc0d2f6e49c66329f8ffTodd Poynor batteryCurrentNow = p->readInt32(); 42b98240cc6ca8fe60b93bfc0d2f6e49c66329f8ffTodd Poynor batteryChargeCounter = p->readInt32(); 4387bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor batteryTemperature = p->readInt32(); 4487bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor batteryTechnology = String8((p->readString16()).string()); 4587bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor return OK; 4687bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor} 4787bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor 4887bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynorstatus_t BatteryProperties::writeToParcel(Parcel* p) const { 4987bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor p->writeInt32(chargerAcOnline ? 1 : 0); 5087bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor p->writeInt32(chargerUsbOnline ? 1 : 0); 5187bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor p->writeInt32(chargerWirelessOnline ? 1 : 0); 5287bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor p->writeInt32(batteryStatus); 5387bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor p->writeInt32(batteryHealth); 5487bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor p->writeInt32(batteryPresent ? 1 : 0); 5587bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor p->writeInt32(batteryLevel); 5687bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor p->writeInt32(batteryVoltage); 57b98240cc6ca8fe60b93bfc0d2f6e49c66329f8ffTodd Poynor p->writeInt32(batteryCurrentNow); 58b98240cc6ca8fe60b93bfc0d2f6e49c66329f8ffTodd Poynor p->writeInt32(batteryChargeCounter); 5987bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor p->writeInt32(batteryTemperature); 6087bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor p->writeString16(String16(batteryTechnology)); 6187bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor return OK; 6287bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor} 6387bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor 6487bf0d97be5ef2689546b246dfb6c21c4eec3ce0Todd Poynor}; // namespace android 65