Home | History | Annotate | Download | only in connectivity
      1 /*
      2  * Copyright (C) 2016 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 package android.os.connectivity;
     17 
     18 import android.os.BatteryStats;
     19 import android.os.Parcel;
     20 import android.os.Parcelable;
     21 
     22 import android.telephony.ModemActivityInfo;
     23 import android.telephony.SignalStrength;
     24 
     25 import java.util.Arrays;
     26 
     27 /**
     28  * API for Cellular power stats
     29  *
     30  * @hide
     31  */
     32 public final class CellularBatteryStats implements Parcelable {
     33 
     34   private long mLoggingDurationMs;
     35   private long mKernelActiveTimeMs;
     36   private long mNumPacketsTx;
     37   private long mNumBytesTx;
     38   private long mNumPacketsRx;
     39   private long mNumBytesRx;
     40   private long mSleepTimeMs;
     41   private long mIdleTimeMs;
     42   private long mRxTimeMs;
     43   private long mEnergyConsumedMaMs;
     44   private long[] mTimeInRatMs;
     45   private long[] mTimeInRxSignalStrengthLevelMs;
     46   private long[] mTxTimeMs;
     47 
     48   public static final Parcelable.Creator<CellularBatteryStats> CREATOR = new
     49       Parcelable.Creator<CellularBatteryStats>() {
     50         public CellularBatteryStats createFromParcel(Parcel in) {
     51           return new CellularBatteryStats(in);
     52         }
     53 
     54         public CellularBatteryStats[] newArray(int size) {
     55           return new CellularBatteryStats[size];
     56         }
     57       };
     58 
     59   public CellularBatteryStats() {
     60     initialize();
     61   }
     62 
     63   public void writeToParcel(Parcel out, int flags) {
     64     out.writeLong(mLoggingDurationMs);
     65     out.writeLong(mKernelActiveTimeMs);
     66     out.writeLong(mNumPacketsTx);
     67     out.writeLong(mNumBytesTx);
     68     out.writeLong(mNumPacketsRx);
     69     out.writeLong(mNumBytesRx);
     70     out.writeLong(mSleepTimeMs);
     71     out.writeLong(mIdleTimeMs);
     72     out.writeLong(mRxTimeMs);
     73     out.writeLong(mEnergyConsumedMaMs);
     74     out.writeLongArray(mTimeInRatMs);
     75     out.writeLongArray(mTimeInRxSignalStrengthLevelMs);
     76     out.writeLongArray(mTxTimeMs);
     77   }
     78 
     79   public void readFromParcel(Parcel in) {
     80     mLoggingDurationMs = in.readLong();
     81     mKernelActiveTimeMs = in.readLong();
     82     mNumPacketsTx = in.readLong();
     83     mNumBytesTx = in.readLong();
     84     mNumPacketsRx = in.readLong();
     85     mNumBytesRx = in.readLong();
     86     mSleepTimeMs = in.readLong();
     87     mIdleTimeMs = in.readLong();
     88     mRxTimeMs = in.readLong();
     89     mEnergyConsumedMaMs = in.readLong();
     90     in.readLongArray(mTimeInRatMs);
     91     in.readLongArray(mTimeInRxSignalStrengthLevelMs);
     92     in.readLongArray(mTxTimeMs);
     93   }
     94 
     95   public long getLoggingDurationMs() {
     96     return mLoggingDurationMs;
     97   }
     98 
     99   public long getKernelActiveTimeMs() {
    100     return mKernelActiveTimeMs;
    101   }
    102 
    103   public long getNumPacketsTx() {
    104     return mNumPacketsTx;
    105   }
    106 
    107   public long getNumBytesTx() {
    108     return mNumBytesTx;
    109   }
    110 
    111   public long getNumPacketsRx() {
    112     return mNumPacketsRx;
    113   }
    114 
    115   public long getNumBytesRx() {
    116     return mNumBytesRx;
    117   }
    118 
    119   public long getSleepTimeMs() {
    120     return mSleepTimeMs;
    121   }
    122 
    123   public long getIdleTimeMs() {
    124     return mIdleTimeMs;
    125   }
    126 
    127   public long getRxTimeMs() {
    128     return mRxTimeMs;
    129   }
    130 
    131   public long getEnergyConsumedMaMs() {
    132     return mEnergyConsumedMaMs;
    133   }
    134 
    135   public long[] getTimeInRatMs() {
    136     return mTimeInRatMs;
    137   }
    138 
    139   public long[] getTimeInRxSignalStrengthLevelMs() {
    140     return mTimeInRxSignalStrengthLevelMs;
    141   }
    142 
    143   public long[] getTxTimeMs() {
    144     return mTxTimeMs;
    145   }
    146 
    147   public void setLoggingDurationMs(long t) {
    148     mLoggingDurationMs = t;
    149     return;
    150   }
    151 
    152   public void setKernelActiveTimeMs(long t) {
    153     mKernelActiveTimeMs = t;
    154     return;
    155   }
    156 
    157   public void setNumPacketsTx(long n) {
    158     mNumPacketsTx = n;
    159     return;
    160   }
    161 
    162   public void setNumBytesTx(long b) {
    163     mNumBytesTx = b;
    164     return;
    165   }
    166 
    167   public void setNumPacketsRx(long n) {
    168     mNumPacketsRx = n;
    169     return;
    170   }
    171 
    172   public void setNumBytesRx(long b) {
    173     mNumBytesRx = b;
    174     return;
    175   }
    176 
    177   public void setSleepTimeMs(long t) {
    178     mSleepTimeMs = t;
    179     return;
    180   }
    181 
    182   public void setIdleTimeMs(long t) {
    183     mIdleTimeMs = t;
    184     return;
    185   }
    186 
    187   public void setRxTimeMs(long t) {
    188     mRxTimeMs = t;
    189     return;
    190   }
    191 
    192   public void setEnergyConsumedMaMs(long e) {
    193     mEnergyConsumedMaMs = e;
    194     return;
    195   }
    196 
    197   public void setTimeInRatMs(long[] t) {
    198     mTimeInRatMs = Arrays.copyOfRange(t, 0,
    199         Math.min(t.length, BatteryStats.NUM_DATA_CONNECTION_TYPES));
    200     return;
    201   }
    202 
    203   public void setTimeInRxSignalStrengthLevelMs(long[] t) {
    204     mTimeInRxSignalStrengthLevelMs = Arrays.copyOfRange(t, 0,
    205         Math.min(t.length, SignalStrength.NUM_SIGNAL_STRENGTH_BINS));
    206     return;
    207   }
    208 
    209   public void setTxTimeMs(long[] t) {
    210     mTxTimeMs = Arrays.copyOfRange(t, 0, Math.min(t.length, ModemActivityInfo.TX_POWER_LEVELS));
    211     return;
    212   }
    213 
    214   public int describeContents() {
    215     return 0;
    216   }
    217 
    218   private CellularBatteryStats(Parcel in) {
    219     initialize();
    220     readFromParcel(in);
    221   }
    222 
    223   private void initialize() {
    224     mLoggingDurationMs = 0;
    225     mKernelActiveTimeMs = 0;
    226     mNumPacketsTx = 0;
    227     mNumBytesTx = 0;
    228     mNumPacketsRx = 0;
    229     mNumBytesRx = 0;
    230     mSleepTimeMs = 0;
    231     mIdleTimeMs = 0;
    232     mRxTimeMs = 0;
    233     mEnergyConsumedMaMs = 0;
    234     mTimeInRatMs = new long[BatteryStats.NUM_DATA_CONNECTION_TYPES];
    235     Arrays.fill(mTimeInRatMs, 0);
    236     mTimeInRxSignalStrengthLevelMs = new long[SignalStrength.NUM_SIGNAL_STRENGTH_BINS];
    237     Arrays.fill(mTimeInRxSignalStrengthLevelMs, 0);
    238     mTxTimeMs = new long[ModemActivityInfo.TX_POWER_LEVELS];
    239     Arrays.fill(mTxTimeMs, 0);
    240     return;
    241   }
    242 }