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 java.util.Arrays;
     23 
     24 /**
     25  * API for Wifi power stats
     26  *
     27  * @hide
     28  */
     29 public final class WifiBatteryStats implements Parcelable {
     30 
     31   private long mLoggingDurationMs;
     32   private long mKernelActiveTimeMs;
     33   private long mNumPacketsTx;
     34   private long mNumBytesTx;
     35   private long mNumPacketsRx;
     36   private long mNumBytesRx;
     37   private long mSleepTimeMs;
     38   private long mScanTimeMs;
     39   private long mIdleTimeMs;
     40   private long mRxTimeMs;
     41   private long mTxTimeMs;
     42   private long mEnergyConsumedMaMs;
     43   private long mNumAppScanRequest;
     44   private long[] mTimeInStateMs;
     45   private long[] mTimeInSupplicantStateMs;
     46   private long[] mTimeInRxSignalStrengthLevelMs;
     47 
     48   public static final Parcelable.Creator<WifiBatteryStats> CREATOR = new
     49       Parcelable.Creator<WifiBatteryStats>() {
     50         public WifiBatteryStats createFromParcel(Parcel in) {
     51           return new WifiBatteryStats(in);
     52         }
     53 
     54         public WifiBatteryStats[] newArray(int size) {
     55           return new WifiBatteryStats[size];
     56         }
     57       };
     58 
     59   public WifiBatteryStats() {
     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(mScanTimeMs);
     72     out.writeLong(mIdleTimeMs);
     73     out.writeLong(mRxTimeMs);
     74     out.writeLong(mTxTimeMs);
     75     out.writeLong(mEnergyConsumedMaMs);
     76     out.writeLong(mNumAppScanRequest);
     77     out.writeLongArray(mTimeInStateMs);
     78     out.writeLongArray(mTimeInRxSignalStrengthLevelMs);
     79     out.writeLongArray(mTimeInSupplicantStateMs);
     80   }
     81 
     82   public void readFromParcel(Parcel in) {
     83     mLoggingDurationMs = in.readLong();
     84     mKernelActiveTimeMs = in.readLong();
     85     mNumPacketsTx = in.readLong();
     86     mNumBytesTx = in.readLong();
     87     mNumPacketsRx = in.readLong();
     88     mNumBytesRx = in.readLong();
     89     mSleepTimeMs = in.readLong();
     90     mScanTimeMs = in.readLong();
     91     mIdleTimeMs = in.readLong();
     92     mRxTimeMs = in.readLong();
     93     mTxTimeMs = in.readLong();
     94     mEnergyConsumedMaMs = in.readLong();
     95     mNumAppScanRequest = in.readLong();
     96     in.readLongArray(mTimeInStateMs);
     97     in.readLongArray(mTimeInRxSignalStrengthLevelMs);
     98     in.readLongArray(mTimeInSupplicantStateMs);
     99   }
    100 
    101   public long getLoggingDurationMs() {
    102     return mLoggingDurationMs;
    103   }
    104 
    105   public long getKernelActiveTimeMs() {
    106     return mKernelActiveTimeMs;
    107   }
    108 
    109   public long getNumPacketsTx() {
    110     return mNumPacketsTx;
    111   }
    112 
    113   public long getNumBytesTx() {
    114     return mNumBytesTx;
    115   }
    116 
    117   public long getNumPacketsRx() {
    118     return mNumPacketsRx;
    119   }
    120 
    121   public long getNumBytesRx() {
    122     return mNumBytesRx;
    123   }
    124 
    125   public long getSleepTimeMs() {
    126     return mSleepTimeMs;
    127   }
    128 
    129   public long getScanTimeMs() {
    130     return mScanTimeMs;
    131   }
    132 
    133   public long getIdleTimeMs() {
    134     return mIdleTimeMs;
    135   }
    136 
    137   public long getRxTimeMs() {
    138     return mRxTimeMs;
    139   }
    140 
    141   public long getTxTimeMs() {
    142     return mTxTimeMs;
    143   }
    144 
    145   public long getEnergyConsumedMaMs() {
    146     return mEnergyConsumedMaMs;
    147   }
    148 
    149   public long getNumAppScanRequest() {
    150     return mNumAppScanRequest;
    151   }
    152 
    153   public long[] getTimeInStateMs() {
    154     return mTimeInStateMs;
    155   }
    156 
    157   public long[] getTimeInRxSignalStrengthLevelMs() {
    158     return mTimeInRxSignalStrengthLevelMs;
    159   }
    160 
    161   public long[] getTimeInSupplicantStateMs() {
    162     return mTimeInSupplicantStateMs;
    163   }
    164 
    165   public void setLoggingDurationMs(long t) {
    166     mLoggingDurationMs = t;
    167     return;
    168   }
    169 
    170   public void setKernelActiveTimeMs(long t) {
    171     mKernelActiveTimeMs = t;
    172     return;
    173   }
    174 
    175   public void setNumPacketsTx(long n) {
    176     mNumPacketsTx = n;
    177     return;
    178   }
    179 
    180   public void setNumBytesTx(long b) {
    181     mNumBytesTx = b;
    182     return;
    183   }
    184 
    185   public void setNumPacketsRx(long n) {
    186     mNumPacketsRx = n;
    187     return;
    188   }
    189 
    190   public void setNumBytesRx(long b) {
    191     mNumBytesRx = b;
    192     return;
    193   }
    194 
    195   public void setSleepTimeMs(long t) {
    196     mSleepTimeMs = t;
    197     return;
    198   }
    199 
    200   public void setScanTimeMs(long t) {
    201     mScanTimeMs = t;
    202     return;
    203   }
    204 
    205   public void setIdleTimeMs(long t) {
    206     mIdleTimeMs = t;
    207     return;
    208   }
    209 
    210   public void setRxTimeMs(long t) {
    211     mRxTimeMs = t;
    212     return;
    213   }
    214 
    215   public void setTxTimeMs(long t) {
    216     mTxTimeMs = t;
    217     return;
    218   }
    219 
    220   public void setEnergyConsumedMaMs(long e) {
    221     mEnergyConsumedMaMs = e;
    222     return;
    223   }
    224 
    225   public void setNumAppScanRequest(long n) {
    226     mNumAppScanRequest = n;
    227     return;
    228   }
    229 
    230   public void setTimeInStateMs(long[] t) {
    231     mTimeInStateMs = Arrays.copyOfRange(t, 0,
    232         Math.min(t.length, BatteryStats.NUM_WIFI_STATES));
    233     return;
    234   }
    235 
    236   public void setTimeInRxSignalStrengthLevelMs(long[] t) {
    237     mTimeInRxSignalStrengthLevelMs = Arrays.copyOfRange(t, 0,
    238         Math.min(t.length, BatteryStats.NUM_WIFI_SIGNAL_STRENGTH_BINS));
    239     return;
    240   }
    241 
    242   public void setTimeInSupplicantStateMs(long[] t) {
    243     mTimeInSupplicantStateMs = Arrays.copyOfRange(
    244         t, 0, Math.min(t.length, BatteryStats.NUM_WIFI_SUPPL_STATES));
    245     return;
    246   }
    247 
    248   public int describeContents() {
    249     return 0;
    250   }
    251 
    252   private WifiBatteryStats(Parcel in) {
    253     initialize();
    254     readFromParcel(in);
    255   }
    256 
    257   private void initialize() {
    258     mLoggingDurationMs = 0;
    259     mKernelActiveTimeMs = 0;
    260     mNumPacketsTx = 0;
    261     mNumBytesTx = 0;
    262     mNumPacketsRx = 0;
    263     mNumBytesRx = 0;
    264     mSleepTimeMs = 0;
    265     mScanTimeMs = 0;
    266     mIdleTimeMs = 0;
    267     mRxTimeMs = 0;
    268     mTxTimeMs = 0;
    269     mEnergyConsumedMaMs = 0;
    270     mNumAppScanRequest = 0;
    271     mTimeInStateMs = new long[BatteryStats.NUM_WIFI_STATES];
    272     Arrays.fill(mTimeInStateMs, 0);
    273     mTimeInRxSignalStrengthLevelMs = new long[BatteryStats.NUM_WIFI_SIGNAL_STRENGTH_BINS];
    274     Arrays.fill(mTimeInRxSignalStrengthLevelMs, 0);
    275     mTimeInSupplicantStateMs = new long[BatteryStats.NUM_WIFI_SUPPL_STATES];
    276     Arrays.fill(mTimeInSupplicantStateMs, 0);
    277     return;
    278   }
    279 }