WifiActivityEnergyInfo.java revision b928a3802bfcd3aeed592906ddb3e14c653b213c
1b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle/* 2b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * Copyright (C) 2014 The Android Open Source Project 3b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * 4b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * Licensed under the Apache License, Version 2.0 (the "License"); 5b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * you may not use this file except in compliance with the License. 6b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * You may obtain a copy of the License at 7b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * 8b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * http://www.apache.org/licenses/LICENSE-2.0 9b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * 10b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * Unless required by applicable law or agreed to in writing, software 11b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * distributed under the License is distributed on an "AS IS" BASIS, 12b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * See the License for the specific language governing permissions and 14b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * limitations under the License. 15b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle */ 16b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle 17b928a3802bfcd3aeed592906ddb3e14c653b213cvandwallepackage android.net.wifi; 18b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle 19b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalleimport android.os.Parcel; 20b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalleimport android.os.Parcelable; 21b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle 22b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle/** 23b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * Record of energy and activity information from controller and 24b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * underlying wifi stack state.Timestamp the record with system 25b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * time 26b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * @hide 27b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle */ 28b928a3802bfcd3aeed592906ddb3e14c653b213cvandwallepublic final class WifiActivityEnergyInfo implements Parcelable { 29b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle private final int mStackState; 30b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle private final int mControllerTxTimeMs; 31b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle private final int mControllerRxTimeMs; 32b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle private final int mControllerIdleTimeMs; 33b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle private final int mControllerEnergyUsed; 34b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle private final long timestamp; 35b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle 36b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public static final int STACK_STATE_INVALID = 0; 37b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public static final int STACK_STATE_STATE_ACTIVE = 1; 38b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public static final int STACK_STATE_STATE_SCANNING = 2; 39b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public static final int STACK_STATE_STATE_IDLE = 3; 40b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle 41b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public WifiActivityEnergyInfo(int stackState, int txTime, int rxTime, 42b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle int idleTime, int energyUsed) { 43b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle mStackState = stackState; 44b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle mControllerTxTimeMs = txTime; 45b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle mControllerRxTimeMs = rxTime; 46b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle mControllerIdleTimeMs = idleTime; 47b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle mControllerEnergyUsed = energyUsed; 48b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle timestamp = System.currentTimeMillis(); 49b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle } 50b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle 51b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle @Override 52b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public String toString() { 53b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle return "WifiActivityEnergyInfo{" 54b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle + " timestamp=" + timestamp 55b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle + " mStackState=" + mStackState 56b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle + " mControllerTxTimeMs=" + mControllerTxTimeMs 57b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle + " mControllerRxTimeMs=" + mControllerRxTimeMs 58b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle + " mControllerIdleTimeMs=" + mControllerIdleTimeMs 59b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle + " mControllerEnergyUsed=" + mControllerEnergyUsed 60b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle + " }"; 61b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle } 62b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle 63b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public static final Parcelable.Creator<WifiActivityEnergyInfo> CREATOR = 64b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle new Parcelable.Creator<WifiActivityEnergyInfo>() { 65b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public WifiActivityEnergyInfo createFromParcel(Parcel in) { 66b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle int stackState = in.readInt(); 67b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle int txTime = in.readInt(); 68b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle int rxTime = in.readInt(); 69b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle int idleTime = in.readInt(); 70b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle int energyUsed = in.readInt(); 71b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle return new WifiActivityEnergyInfo(stackState, txTime, rxTime, 72b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle idleTime, energyUsed); 73b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle } 74b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public WifiActivityEnergyInfo[] newArray(int size) { 75b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle return new WifiActivityEnergyInfo[size]; 76b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle } 77b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle }; 78b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle 79b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public void writeToParcel(Parcel out, int flags) { 80b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle out.writeInt(mStackState); 81b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle out.writeInt(mControllerTxTimeMs); 82b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle out.writeInt(mControllerRxTimeMs); 83b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle out.writeInt(mControllerIdleTimeMs); 84b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle out.writeInt(mControllerEnergyUsed); 85b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle } 86b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle 87b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public int describeContents() { 88b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle return 0; 89b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle } 90b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle 91b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle /** 92b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * @return bt stack reported state 93b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle */ 94b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public int getStackState() { 95b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle return mStackState; 96b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle } 97b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle 98b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle /** 99b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * @return tx time in ms 100b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle */ 101b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public int getControllerTxTimeMillis() { 102b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle return (int)mControllerTxTimeMs; 103b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle } 104b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle 105b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle /** 106b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * @return rx time in ms 107b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle */ 108b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public int getControllerRxTimeMillis() { 109b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle return (int)mControllerRxTimeMs; 110b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle } 111b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle 112b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle /** 113b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * @return idle time in ms 114b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle */ 115b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public int getControllerIdleTimeMillis() { 116b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle return (int)mControllerIdleTimeMs; 117b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle } 118b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle 119b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle /** 120b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * product of current(mA), voltage(V) and time(ms) 121b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * @return energy used 122b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle */ 123b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public int getControllerEnergyUsed() { 124b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle return mControllerEnergyUsed; 125b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle } 126b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle /** 127b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * @return timestamp(wall clock) of record creation 128b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle */ 129b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public long getTimeStamp() { 130b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle return timestamp; 131b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle } 132b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle 133b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle /** 134b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle * @return if the record is valid 135b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle */ 136b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle public boolean isValid() { 137b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle return ((getControllerTxTimeMillis() !=0) || 138b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle (getControllerRxTimeMillis() !=0) || 139b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle (getControllerIdleTimeMillis() !=0)); 140b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle } 141b928a3802bfcd3aeed592906ddb3e14c653b213cvandwalle} 142