1070e061a289d771e62b58379eaed153fd285b04fWink Saville/* 2070e061a289d771e62b58379eaed153fd285b04fWink Saville * Copyright (C) 2014 The Android Open Source Project 3070e061a289d771e62b58379eaed153fd285b04fWink Saville * 4070e061a289d771e62b58379eaed153fd285b04fWink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 5070e061a289d771e62b58379eaed153fd285b04fWink Saville * you may not use this file except in compliance with the License. 6070e061a289d771e62b58379eaed153fd285b04fWink Saville * You may obtain a copy of the License at 7070e061a289d771e62b58379eaed153fd285b04fWink Saville * 8070e061a289d771e62b58379eaed153fd285b04fWink Saville * http://www.apache.org/licenses/LICENSE-2.0 9070e061a289d771e62b58379eaed153fd285b04fWink Saville * 10070e061a289d771e62b58379eaed153fd285b04fWink Saville * Unless required by applicable law or agreed to in writing, software 11070e061a289d771e62b58379eaed153fd285b04fWink Saville * distributed under the License is distributed on an "AS IS" BASIS, 12070e061a289d771e62b58379eaed153fd285b04fWink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13070e061a289d771e62b58379eaed153fd285b04fWink Saville * See the License for the specific language governing permissions and 14070e061a289d771e62b58379eaed153fd285b04fWink Saville * limitations under the License. 15070e061a289d771e62b58379eaed153fd285b04fWink Saville */ 16070e061a289d771e62b58379eaed153fd285b04fWink Saville 17070e061a289d771e62b58379eaed153fd285b04fWink Savillepackage android.telephony; 18070e061a289d771e62b58379eaed153fd285b04fWink Saville 19070e061a289d771e62b58379eaed153fd285b04fWink Savilleimport android.os.Parcel; 20070e061a289d771e62b58379eaed153fd285b04fWink Savilleimport android.os.Parcelable; 21070e061a289d771e62b58379eaed153fd285b04fWink Saville 22070e061a289d771e62b58379eaed153fd285b04fWink Saville/** 23070e061a289d771e62b58379eaed153fd285b04fWink Saville * Data connection real time information 24070e061a289d771e62b58379eaed153fd285b04fWink Saville * 25070e061a289d771e62b58379eaed153fd285b04fWink Saville * TODO: How to handle multiple subscriptions? 262ffa11e4b71c545e34533ef827bdc1a07fbe8246Dianne Hackborn * @hide 27070e061a289d771e62b58379eaed153fd285b04fWink Saville */ 28070e061a289d771e62b58379eaed153fd285b04fWink Savillepublic class DataConnectionRealTimeInfo implements Parcelable { 29070e061a289d771e62b58379eaed153fd285b04fWink Saville private long mTime; // Time the info was collected since boot in nanos; 30070e061a289d771e62b58379eaed153fd285b04fWink Saville 311a1b0464cb43903ed540f4c43fd423b16e398c04Bookatz public static final int DC_POWER_STATE_LOW 321a1b0464cb43903ed540f4c43fd423b16e398c04Bookatz = TelephonyProtoEnums.DATA_CONNECTION_POWER_STATE_LOW ; // = 1 331a1b0464cb43903ed540f4c43fd423b16e398c04Bookatz public static final int DC_POWER_STATE_MEDIUM 341a1b0464cb43903ed540f4c43fd423b16e398c04Bookatz = TelephonyProtoEnums.DATA_CONNECTION_POWER_STATE_MEDIUM; // = 2 351a1b0464cb43903ed540f4c43fd423b16e398c04Bookatz public static final int DC_POWER_STATE_HIGH 361a1b0464cb43903ed540f4c43fd423b16e398c04Bookatz = TelephonyProtoEnums.DATA_CONNECTION_POWER_STATE_HIGH; // = 3 371a1b0464cb43903ed540f4c43fd423b16e398c04Bookatz public static final int DC_POWER_STATE_UNKNOWN 381a1b0464cb43903ed540f4c43fd423b16e398c04Bookatz = TelephonyProtoEnums.DATA_CONNECTION_POWER_STATE_UNKNOWN; // = Integer.MAX_VALUE 39070e061a289d771e62b58379eaed153fd285b04fWink Saville 40070e061a289d771e62b58379eaed153fd285b04fWink Saville private int mDcPowerState; // DC_POWER_STATE_[LOW | MEDIUM | HIGH | UNKNOWN] 41070e061a289d771e62b58379eaed153fd285b04fWink Saville 42070e061a289d771e62b58379eaed153fd285b04fWink Saville /** 43070e061a289d771e62b58379eaed153fd285b04fWink Saville * Constructor 44070e061a289d771e62b58379eaed153fd285b04fWink Saville * 45070e061a289d771e62b58379eaed153fd285b04fWink Saville * @hide 46070e061a289d771e62b58379eaed153fd285b04fWink Saville */ 47070e061a289d771e62b58379eaed153fd285b04fWink Saville public DataConnectionRealTimeInfo(long time, int dcPowerState) { 48070e061a289d771e62b58379eaed153fd285b04fWink Saville mTime = time; 49070e061a289d771e62b58379eaed153fd285b04fWink Saville mDcPowerState = dcPowerState; 50070e061a289d771e62b58379eaed153fd285b04fWink Saville } 51070e061a289d771e62b58379eaed153fd285b04fWink Saville 52070e061a289d771e62b58379eaed153fd285b04fWink Saville /** 53070e061a289d771e62b58379eaed153fd285b04fWink Saville * Constructor 54070e061a289d771e62b58379eaed153fd285b04fWink Saville * 55070e061a289d771e62b58379eaed153fd285b04fWink Saville * @hide 56070e061a289d771e62b58379eaed153fd285b04fWink Saville */ 57070e061a289d771e62b58379eaed153fd285b04fWink Saville public DataConnectionRealTimeInfo() { 58070e061a289d771e62b58379eaed153fd285b04fWink Saville mTime = Long.MAX_VALUE; 59070e061a289d771e62b58379eaed153fd285b04fWink Saville mDcPowerState = DC_POWER_STATE_UNKNOWN; 60070e061a289d771e62b58379eaed153fd285b04fWink Saville } 61070e061a289d771e62b58379eaed153fd285b04fWink Saville 62070e061a289d771e62b58379eaed153fd285b04fWink Saville /** 63070e061a289d771e62b58379eaed153fd285b04fWink Saville * Construct a PreciseCallState object from the given parcel. 64070e061a289d771e62b58379eaed153fd285b04fWink Saville */ 65070e061a289d771e62b58379eaed153fd285b04fWink Saville private DataConnectionRealTimeInfo(Parcel in) { 66070e061a289d771e62b58379eaed153fd285b04fWink Saville mTime = in.readLong(); 67070e061a289d771e62b58379eaed153fd285b04fWink Saville mDcPowerState = in.readInt(); 68070e061a289d771e62b58379eaed153fd285b04fWink Saville } 69070e061a289d771e62b58379eaed153fd285b04fWink Saville 70070e061a289d771e62b58379eaed153fd285b04fWink Saville /** 71070e061a289d771e62b58379eaed153fd285b04fWink Saville * @return time the information was collected or Long.MAX_VALUE if unknown 72070e061a289d771e62b58379eaed153fd285b04fWink Saville */ 73070e061a289d771e62b58379eaed153fd285b04fWink Saville public long getTime() { 74070e061a289d771e62b58379eaed153fd285b04fWink Saville return mTime; 75070e061a289d771e62b58379eaed153fd285b04fWink Saville } 76070e061a289d771e62b58379eaed153fd285b04fWink Saville 77070e061a289d771e62b58379eaed153fd285b04fWink Saville /** 78070e061a289d771e62b58379eaed153fd285b04fWink Saville * @return DC_POWER_STATE_[LOW | MEDIUM | HIGH | UNKNOWN] 79070e061a289d771e62b58379eaed153fd285b04fWink Saville */ 80070e061a289d771e62b58379eaed153fd285b04fWink Saville public int getDcPowerState() { 81070e061a289d771e62b58379eaed153fd285b04fWink Saville return mDcPowerState; 82070e061a289d771e62b58379eaed153fd285b04fWink Saville } 83070e061a289d771e62b58379eaed153fd285b04fWink Saville 84070e061a289d771e62b58379eaed153fd285b04fWink Saville @Override 85070e061a289d771e62b58379eaed153fd285b04fWink Saville public int describeContents() { 86070e061a289d771e62b58379eaed153fd285b04fWink Saville return 0; 87070e061a289d771e62b58379eaed153fd285b04fWink Saville } 88070e061a289d771e62b58379eaed153fd285b04fWink Saville 89070e061a289d771e62b58379eaed153fd285b04fWink Saville @Override 90070e061a289d771e62b58379eaed153fd285b04fWink Saville public void writeToParcel(Parcel out, int flags) { 91070e061a289d771e62b58379eaed153fd285b04fWink Saville out.writeLong(mTime); 92070e061a289d771e62b58379eaed153fd285b04fWink Saville out.writeInt(mDcPowerState); 93070e061a289d771e62b58379eaed153fd285b04fWink Saville } 94070e061a289d771e62b58379eaed153fd285b04fWink Saville 95070e061a289d771e62b58379eaed153fd285b04fWink Saville public static final Parcelable.Creator<DataConnectionRealTimeInfo> CREATOR 96070e061a289d771e62b58379eaed153fd285b04fWink Saville = new Parcelable.Creator<DataConnectionRealTimeInfo>() { 97070e061a289d771e62b58379eaed153fd285b04fWink Saville 98070e061a289d771e62b58379eaed153fd285b04fWink Saville @Override 99070e061a289d771e62b58379eaed153fd285b04fWink Saville public DataConnectionRealTimeInfo createFromParcel(Parcel in) { 100070e061a289d771e62b58379eaed153fd285b04fWink Saville return new DataConnectionRealTimeInfo(in); 101070e061a289d771e62b58379eaed153fd285b04fWink Saville } 102070e061a289d771e62b58379eaed153fd285b04fWink Saville 103070e061a289d771e62b58379eaed153fd285b04fWink Saville @Override 104070e061a289d771e62b58379eaed153fd285b04fWink Saville public DataConnectionRealTimeInfo[] newArray(int size) { 105070e061a289d771e62b58379eaed153fd285b04fWink Saville return new DataConnectionRealTimeInfo[size]; 106070e061a289d771e62b58379eaed153fd285b04fWink Saville } 107070e061a289d771e62b58379eaed153fd285b04fWink Saville }; 108070e061a289d771e62b58379eaed153fd285b04fWink Saville 109070e061a289d771e62b58379eaed153fd285b04fWink Saville @Override 110070e061a289d771e62b58379eaed153fd285b04fWink Saville public int hashCode() { 111070e061a289d771e62b58379eaed153fd285b04fWink Saville final long prime = 17; 112070e061a289d771e62b58379eaed153fd285b04fWink Saville long result = 1; 113070e061a289d771e62b58379eaed153fd285b04fWink Saville result = (prime * result) + mTime; 114070e061a289d771e62b58379eaed153fd285b04fWink Saville result += (prime * result) + mDcPowerState; 115070e061a289d771e62b58379eaed153fd285b04fWink Saville return (int)result; 116070e061a289d771e62b58379eaed153fd285b04fWink Saville } 117070e061a289d771e62b58379eaed153fd285b04fWink Saville 118070e061a289d771e62b58379eaed153fd285b04fWink Saville @Override 119070e061a289d771e62b58379eaed153fd285b04fWink Saville public boolean equals(Object obj) { 120070e061a289d771e62b58379eaed153fd285b04fWink Saville if (this == obj) { 121070e061a289d771e62b58379eaed153fd285b04fWink Saville return true; 122070e061a289d771e62b58379eaed153fd285b04fWink Saville } 123070e061a289d771e62b58379eaed153fd285b04fWink Saville if (obj == null) { 124070e061a289d771e62b58379eaed153fd285b04fWink Saville return false; 125070e061a289d771e62b58379eaed153fd285b04fWink Saville } 126070e061a289d771e62b58379eaed153fd285b04fWink Saville if (getClass() != obj.getClass()) { 127070e061a289d771e62b58379eaed153fd285b04fWink Saville return false; 128070e061a289d771e62b58379eaed153fd285b04fWink Saville } 129070e061a289d771e62b58379eaed153fd285b04fWink Saville DataConnectionRealTimeInfo other = (DataConnectionRealTimeInfo) obj; 130070e061a289d771e62b58379eaed153fd285b04fWink Saville return (mTime == other.mTime) 131070e061a289d771e62b58379eaed153fd285b04fWink Saville && (mDcPowerState == other.mDcPowerState); 132070e061a289d771e62b58379eaed153fd285b04fWink Saville } 133070e061a289d771e62b58379eaed153fd285b04fWink Saville 134070e061a289d771e62b58379eaed153fd285b04fWink Saville @Override 135070e061a289d771e62b58379eaed153fd285b04fWink Saville public String toString() { 136070e061a289d771e62b58379eaed153fd285b04fWink Saville StringBuffer sb = new StringBuffer(); 137070e061a289d771e62b58379eaed153fd285b04fWink Saville 138070e061a289d771e62b58379eaed153fd285b04fWink Saville sb.append("mTime=").append(mTime); 139070e061a289d771e62b58379eaed153fd285b04fWink Saville sb.append(" mDcPowerState=").append(mDcPowerState); 140070e061a289d771e62b58379eaed153fd285b04fWink Saville 141070e061a289d771e62b58379eaed153fd285b04fWink Saville return sb.toString(); 142070e061a289d771e62b58379eaed153fd285b04fWink Saville } 143070e061a289d771e62b58379eaed153fd285b04fWink Saville} 144