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