ModemActivityInfo.java revision 21f76aa77075be5e057c36040d7d6e695c669b72
15c728994311c40821604c6711171e860776659a6Prerepa Viswanadham/* 25c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * Copyright (C) 2015 The Android Open Source Project 35c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * 45c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * Licensed under the Apache License, Version 2.0 (the "License"); 55c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * you may not use this file except in compliance with the License. 65c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * You may obtain a copy of the License at 75c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * 85c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * http://www.apache.org/licenses/LICENSE-2.0 95c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * 105c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * Unless required by applicable law or agreed to in writing, software 115c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * distributed under the License is distributed on an "AS IS" BASIS, 125c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * See the License for the specific language governing permissions and 145c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * limitations under the License. 155c728994311c40821604c6711171e860776659a6Prerepa Viswanadham */ 165c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 175c728994311c40821604c6711171e860776659a6Prerepa Viswanadhampackage android.telephony; 185c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 195c728994311c40821604c6711171e860776659a6Prerepa Viswanadhamimport android.os.Parcel; 205c728994311c40821604c6711171e860776659a6Prerepa Viswanadhamimport android.os.Parcelable; 215c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 225c728994311c40821604c6711171e860776659a6Prerepa Viswanadhamimport java.util.Arrays; 235c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 245c728994311c40821604c6711171e860776659a6Prerepa Viswanadham/** 255c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * Reports modem activity information 265c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * @hide 275c728994311c40821604c6711171e860776659a6Prerepa Viswanadham */ 285c728994311c40821604c6711171e860776659a6Prerepa Viswanadhampublic class ModemActivityInfo implements Parcelable { 295c728994311c40821604c6711171e860776659a6Prerepa Viswanadham /** 305c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * Tx power index 315c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * index 0 = tx_power < 0dBm 325c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * index 1 = 0dBm < tx_power < 5dBm 335c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * index 2 = 5dBm < tx_power < 15dBm 345c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * index 3 = 15dBm < tx_power < 20dBm 355c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * index 4 = tx_power > 20dBm 365c728994311c40821604c6711171e860776659a6Prerepa Viswanadham */ 375c728994311c40821604c6711171e860776659a6Prerepa Viswanadham public static final int TX_POWER_LEVELS = 5; 385c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 395c728994311c40821604c6711171e860776659a6Prerepa Viswanadham private final long mTimestamp; 405c728994311c40821604c6711171e860776659a6Prerepa Viswanadham private final int mSleepTimeMs; 415c728994311c40821604c6711171e860776659a6Prerepa Viswanadham private final int mIdleTimeMs; 425c728994311c40821604c6711171e860776659a6Prerepa Viswanadham private final int [] mTxTimeMs = new int[TX_POWER_LEVELS]; 435c728994311c40821604c6711171e860776659a6Prerepa Viswanadham private final int mRxTimeMs; 445c728994311c40821604c6711171e860776659a6Prerepa Viswanadham private final int mEnergyUsed; 455c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 465c728994311c40821604c6711171e860776659a6Prerepa Viswanadham public ModemActivityInfo(long timestamp, int sleepTimeMs, int idleTimeMs, 475c728994311c40821604c6711171e860776659a6Prerepa Viswanadham int[] txTimeMs, int rxTimeMs, int energyUsed) { 485c728994311c40821604c6711171e860776659a6Prerepa Viswanadham mTimestamp = timestamp; 495c728994311c40821604c6711171e860776659a6Prerepa Viswanadham mSleepTimeMs = sleepTimeMs; 505c728994311c40821604c6711171e860776659a6Prerepa Viswanadham mIdleTimeMs = idleTimeMs; 515c728994311c40821604c6711171e860776659a6Prerepa Viswanadham System.arraycopy(txTimeMs, 0, mTxTimeMs, 0, Math.min(txTimeMs.length, TX_POWER_LEVELS)); 525c728994311c40821604c6711171e860776659a6Prerepa Viswanadham mRxTimeMs = rxTimeMs; 535c728994311c40821604c6711171e860776659a6Prerepa Viswanadham mEnergyUsed = energyUsed; 545c728994311c40821604c6711171e860776659a6Prerepa Viswanadham } 555c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 565c728994311c40821604c6711171e860776659a6Prerepa Viswanadham @Override 575c728994311c40821604c6711171e860776659a6Prerepa Viswanadham public String toString() { 585c728994311c40821604c6711171e860776659a6Prerepa Viswanadham return "ModemActivityInfo{" 595c728994311c40821604c6711171e860776659a6Prerepa Viswanadham + " mTimestamp=" + mTimestamp 605c728994311c40821604c6711171e860776659a6Prerepa Viswanadham + " mSleepTimeMs=" + mSleepTimeMs 6121f76aa77075be5e057c36040d7d6e695c669b72Adam Lesinski + " mIdleTimeMs=" + mIdleTimeMs 625c728994311c40821604c6711171e860776659a6Prerepa Viswanadham + " mTxTimeMs[]=" + Arrays.toString(mTxTimeMs) 635c728994311c40821604c6711171e860776659a6Prerepa Viswanadham + " mRxTimeMs=" + mRxTimeMs 645c728994311c40821604c6711171e860776659a6Prerepa Viswanadham + " mEnergyUsed=" + mEnergyUsed 655c728994311c40821604c6711171e860776659a6Prerepa Viswanadham + "}"; 665c728994311c40821604c6711171e860776659a6Prerepa Viswanadham } 675c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 685c728994311c40821604c6711171e860776659a6Prerepa Viswanadham public int describeContents() { 695c728994311c40821604c6711171e860776659a6Prerepa Viswanadham return 0; 705c728994311c40821604c6711171e860776659a6Prerepa Viswanadham } 715c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 725c728994311c40821604c6711171e860776659a6Prerepa Viswanadham public static final Parcelable.Creator<ModemActivityInfo> CREATOR = 735c728994311c40821604c6711171e860776659a6Prerepa Viswanadham new Parcelable.Creator<ModemActivityInfo>() { 745c728994311c40821604c6711171e860776659a6Prerepa Viswanadham public ModemActivityInfo createFromParcel(Parcel in) { 755c728994311c40821604c6711171e860776659a6Prerepa Viswanadham long timestamp = in.readLong(); 765c728994311c40821604c6711171e860776659a6Prerepa Viswanadham int sleepTimeMs = in.readInt(); 775c728994311c40821604c6711171e860776659a6Prerepa Viswanadham int idleTimeMs = in.readInt(); 785c728994311c40821604c6711171e860776659a6Prerepa Viswanadham int[] txTimeMs = new int[TX_POWER_LEVELS]; 795c728994311c40821604c6711171e860776659a6Prerepa Viswanadham for (int i = 0; i < TX_POWER_LEVELS; i++) { 805c728994311c40821604c6711171e860776659a6Prerepa Viswanadham txTimeMs[i] = in.readInt(); 815c728994311c40821604c6711171e860776659a6Prerepa Viswanadham } 825c728994311c40821604c6711171e860776659a6Prerepa Viswanadham int rxTimeMs = in.readInt(); 835c728994311c40821604c6711171e860776659a6Prerepa Viswanadham int energyUsed = in.readInt(); 845c728994311c40821604c6711171e860776659a6Prerepa Viswanadham return new ModemActivityInfo(timestamp, sleepTimeMs, idleTimeMs, 855c728994311c40821604c6711171e860776659a6Prerepa Viswanadham txTimeMs, rxTimeMs, energyUsed); 865c728994311c40821604c6711171e860776659a6Prerepa Viswanadham } 875c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 885c728994311c40821604c6711171e860776659a6Prerepa Viswanadham public ModemActivityInfo[] newArray(int size) { 895c728994311c40821604c6711171e860776659a6Prerepa Viswanadham return new ModemActivityInfo[size]; 905c728994311c40821604c6711171e860776659a6Prerepa Viswanadham } 915c728994311c40821604c6711171e860776659a6Prerepa Viswanadham }; 925c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 935c728994311c40821604c6711171e860776659a6Prerepa Viswanadham public void writeToParcel(Parcel dest, int flags) { 945c728994311c40821604c6711171e860776659a6Prerepa Viswanadham dest.writeLong(mTimestamp); 955c728994311c40821604c6711171e860776659a6Prerepa Viswanadham dest.writeInt(mSleepTimeMs); 965c728994311c40821604c6711171e860776659a6Prerepa Viswanadham dest.writeInt(mIdleTimeMs); 975c728994311c40821604c6711171e860776659a6Prerepa Viswanadham for (int i = 0; i < TX_POWER_LEVELS; i++) { 985c728994311c40821604c6711171e860776659a6Prerepa Viswanadham dest.writeInt(mTxTimeMs[i]); 995c728994311c40821604c6711171e860776659a6Prerepa Viswanadham } 1005c728994311c40821604c6711171e860776659a6Prerepa Viswanadham dest.writeInt(mRxTimeMs); 1015c728994311c40821604c6711171e860776659a6Prerepa Viswanadham dest.writeInt(mEnergyUsed); 1025c728994311c40821604c6711171e860776659a6Prerepa Viswanadham } 1035c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 1045c728994311c40821604c6711171e860776659a6Prerepa Viswanadham /** 1055c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * @return timestamp of record creation 1065c728994311c40821604c6711171e860776659a6Prerepa Viswanadham */ 1075c728994311c40821604c6711171e860776659a6Prerepa Viswanadham public long getTimestamp() { 1085c728994311c40821604c6711171e860776659a6Prerepa Viswanadham return mTimestamp; 1095c728994311c40821604c6711171e860776659a6Prerepa Viswanadham } 1105c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 1115c728994311c40821604c6711171e860776659a6Prerepa Viswanadham /** 1125c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * @return tx time in ms. It's an array of tx times 1135c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * with each index... 1145c728994311c40821604c6711171e860776659a6Prerepa Viswanadham */ 1155c728994311c40821604c6711171e860776659a6Prerepa Viswanadham public int [] getTxTimeMillis() { 1165c728994311c40821604c6711171e860776659a6Prerepa Viswanadham return mTxTimeMs; 1175c728994311c40821604c6711171e860776659a6Prerepa Viswanadham } 1185c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 1195c728994311c40821604c6711171e860776659a6Prerepa Viswanadham /** 1205c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * @return sleep time in ms. 1215c728994311c40821604c6711171e860776659a6Prerepa Viswanadham */ 1225c728994311c40821604c6711171e860776659a6Prerepa Viswanadham public int getSleepTimeMillis() { 1235c728994311c40821604c6711171e860776659a6Prerepa Viswanadham return mSleepTimeMs; 1245c728994311c40821604c6711171e860776659a6Prerepa Viswanadham } 1255c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 1265c728994311c40821604c6711171e860776659a6Prerepa Viswanadham /** 1275c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * @return idle time in ms. 1285c728994311c40821604c6711171e860776659a6Prerepa Viswanadham */ 1295c728994311c40821604c6711171e860776659a6Prerepa Viswanadham public int getIdleTimeMillis() { 1305c728994311c40821604c6711171e860776659a6Prerepa Viswanadham return mIdleTimeMs; 1315c728994311c40821604c6711171e860776659a6Prerepa Viswanadham } 1325c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 1335c728994311c40821604c6711171e860776659a6Prerepa Viswanadham /** 1345c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * @return rx time in ms. 1355c728994311c40821604c6711171e860776659a6Prerepa Viswanadham */ 1365c728994311c40821604c6711171e860776659a6Prerepa Viswanadham public int getRxTimeMillis() { 1375c728994311c40821604c6711171e860776659a6Prerepa Viswanadham return mRxTimeMs; 1385c728994311c40821604c6711171e860776659a6Prerepa Viswanadham } 1395c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 1405c728994311c40821604c6711171e860776659a6Prerepa Viswanadham /** 1415c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * product of current(mA), voltage(V) and time(ms) 1425c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * @return energy used 1435c728994311c40821604c6711171e860776659a6Prerepa Viswanadham */ 1445c728994311c40821604c6711171e860776659a6Prerepa Viswanadham public int getEnergyUsed () { 1455c728994311c40821604c6711171e860776659a6Prerepa Viswanadham return mEnergyUsed; 1465c728994311c40821604c6711171e860776659a6Prerepa Viswanadham } 1475c728994311c40821604c6711171e860776659a6Prerepa Viswanadham 1485c728994311c40821604c6711171e860776659a6Prerepa Viswanadham /** 1495c728994311c40821604c6711171e860776659a6Prerepa Viswanadham * @return if the record is valid 1505c728994311c40821604c6711171e860776659a6Prerepa Viswanadham */ 1515c728994311c40821604c6711171e860776659a6Prerepa Viswanadham public boolean isValid() { 1525c728994311c40821604c6711171e860776659a6Prerepa Viswanadham int totalTxTimeMs = 0; 1535c728994311c40821604c6711171e860776659a6Prerepa Viswanadham int txTime [] = getTxTimeMillis(); 1545c728994311c40821604c6711171e860776659a6Prerepa Viswanadham for (int i = 0; i < TX_POWER_LEVELS; i++) { 1555c728994311c40821604c6711171e860776659a6Prerepa Viswanadham totalTxTimeMs += txTime[i]; 1565c728994311c40821604c6711171e860776659a6Prerepa Viswanadham } 15721f76aa77075be5e057c36040d7d6e695c669b72Adam Lesinski return ((getIdleTimeMillis() >= 0) && (totalTxTimeMs >= 0) 15821f76aa77075be5e057c36040d7d6e695c669b72Adam Lesinski && (getSleepTimeMillis() >= 0) && (getIdleTimeMillis() >= 0)); 1595c728994311c40821604c6711171e860776659a6Prerepa Viswanadham } 1605c728994311c40821604c6711171e860776659a6Prerepa Viswanadham} 161