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 31ec1d60015386f12f70aaadaac2030bd7f40dd749Nathan Harold public static final int DC_POWER_STATE_LOW = 1; 32ec1d60015386f12f70aaadaac2030bd7f40dd749Nathan Harold public static final int DC_POWER_STATE_MEDIUM = 2; 33ec1d60015386f12f70aaadaac2030bd7f40dd749Nathan Harold public static final int DC_POWER_STATE_HIGH = 3; 34ec1d60015386f12f70aaadaac2030bd7f40dd749Nathan Harold public static final int DC_POWER_STATE_UNKNOWN = Integer.MAX_VALUE; 35070e061a289d771e62b58379eaed153fd285b04fWink Saville 36070e061a289d771e62b58379eaed153fd285b04fWink Saville private int mDcPowerState; // DC_POWER_STATE_[LOW | MEDIUM | HIGH | UNKNOWN] 37070e061a289d771e62b58379eaed153fd285b04fWink Saville 38070e061a289d771e62b58379eaed153fd285b04fWink Saville /** 39070e061a289d771e62b58379eaed153fd285b04fWink Saville * Constructor 40070e061a289d771e62b58379eaed153fd285b04fWink Saville * 41070e061a289d771e62b58379eaed153fd285b04fWink Saville * @hide 42070e061a289d771e62b58379eaed153fd285b04fWink Saville */ 43070e061a289d771e62b58379eaed153fd285b04fWink Saville public DataConnectionRealTimeInfo(long time, int dcPowerState) { 44070e061a289d771e62b58379eaed153fd285b04fWink Saville mTime = time; 45070e061a289d771e62b58379eaed153fd285b04fWink Saville mDcPowerState = dcPowerState; 46070e061a289d771e62b58379eaed153fd285b04fWink Saville } 47070e061a289d771e62b58379eaed153fd285b04fWink Saville 48070e061a289d771e62b58379eaed153fd285b04fWink Saville /** 49070e061a289d771e62b58379eaed153fd285b04fWink Saville * Constructor 50070e061a289d771e62b58379eaed153fd285b04fWink Saville * 51070e061a289d771e62b58379eaed153fd285b04fWink Saville * @hide 52070e061a289d771e62b58379eaed153fd285b04fWink Saville */ 53070e061a289d771e62b58379eaed153fd285b04fWink Saville public DataConnectionRealTimeInfo() { 54070e061a289d771e62b58379eaed153fd285b04fWink Saville mTime = Long.MAX_VALUE; 55070e061a289d771e62b58379eaed153fd285b04fWink Saville mDcPowerState = DC_POWER_STATE_UNKNOWN; 56070e061a289d771e62b58379eaed153fd285b04fWink Saville } 57070e061a289d771e62b58379eaed153fd285b04fWink Saville 58070e061a289d771e62b58379eaed153fd285b04fWink Saville /** 59070e061a289d771e62b58379eaed153fd285b04fWink Saville * Construct a PreciseCallState object from the given parcel. 60070e061a289d771e62b58379eaed153fd285b04fWink Saville */ 61070e061a289d771e62b58379eaed153fd285b04fWink Saville private DataConnectionRealTimeInfo(Parcel in) { 62070e061a289d771e62b58379eaed153fd285b04fWink Saville mTime = in.readLong(); 63070e061a289d771e62b58379eaed153fd285b04fWink Saville mDcPowerState = in.readInt(); 64070e061a289d771e62b58379eaed153fd285b04fWink Saville } 65070e061a289d771e62b58379eaed153fd285b04fWink Saville 66070e061a289d771e62b58379eaed153fd285b04fWink Saville /** 67070e061a289d771e62b58379eaed153fd285b04fWink Saville * @return time the information was collected or Long.MAX_VALUE if unknown 68070e061a289d771e62b58379eaed153fd285b04fWink Saville */ 69070e061a289d771e62b58379eaed153fd285b04fWink Saville public long getTime() { 70070e061a289d771e62b58379eaed153fd285b04fWink Saville return mTime; 71070e061a289d771e62b58379eaed153fd285b04fWink Saville } 72070e061a289d771e62b58379eaed153fd285b04fWink Saville 73070e061a289d771e62b58379eaed153fd285b04fWink Saville /** 74070e061a289d771e62b58379eaed153fd285b04fWink Saville * @return DC_POWER_STATE_[LOW | MEDIUM | HIGH | UNKNOWN] 75070e061a289d771e62b58379eaed153fd285b04fWink Saville */ 76070e061a289d771e62b58379eaed153fd285b04fWink Saville public int getDcPowerState() { 77070e061a289d771e62b58379eaed153fd285b04fWink Saville return mDcPowerState; 78070e061a289d771e62b58379eaed153fd285b04fWink Saville } 79070e061a289d771e62b58379eaed153fd285b04fWink Saville 80070e061a289d771e62b58379eaed153fd285b04fWink Saville @Override 81070e061a289d771e62b58379eaed153fd285b04fWink Saville public int describeContents() { 82070e061a289d771e62b58379eaed153fd285b04fWink Saville return 0; 83070e061a289d771e62b58379eaed153fd285b04fWink Saville } 84070e061a289d771e62b58379eaed153fd285b04fWink Saville 85070e061a289d771e62b58379eaed153fd285b04fWink Saville @Override 86070e061a289d771e62b58379eaed153fd285b04fWink Saville public void writeToParcel(Parcel out, int flags) { 87070e061a289d771e62b58379eaed153fd285b04fWink Saville out.writeLong(mTime); 88070e061a289d771e62b58379eaed153fd285b04fWink Saville out.writeInt(mDcPowerState); 89070e061a289d771e62b58379eaed153fd285b04fWink Saville } 90070e061a289d771e62b58379eaed153fd285b04fWink Saville 91070e061a289d771e62b58379eaed153fd285b04fWink Saville public static final Parcelable.Creator<DataConnectionRealTimeInfo> CREATOR 92070e061a289d771e62b58379eaed153fd285b04fWink Saville = new Parcelable.Creator<DataConnectionRealTimeInfo>() { 93070e061a289d771e62b58379eaed153fd285b04fWink Saville 94070e061a289d771e62b58379eaed153fd285b04fWink Saville @Override 95070e061a289d771e62b58379eaed153fd285b04fWink Saville public DataConnectionRealTimeInfo createFromParcel(Parcel in) { 96070e061a289d771e62b58379eaed153fd285b04fWink Saville return new DataConnectionRealTimeInfo(in); 97070e061a289d771e62b58379eaed153fd285b04fWink Saville } 98070e061a289d771e62b58379eaed153fd285b04fWink Saville 99070e061a289d771e62b58379eaed153fd285b04fWink Saville @Override 100070e061a289d771e62b58379eaed153fd285b04fWink Saville public DataConnectionRealTimeInfo[] newArray(int size) { 101070e061a289d771e62b58379eaed153fd285b04fWink Saville return new DataConnectionRealTimeInfo[size]; 102070e061a289d771e62b58379eaed153fd285b04fWink Saville } 103070e061a289d771e62b58379eaed153fd285b04fWink Saville }; 104070e061a289d771e62b58379eaed153fd285b04fWink Saville 105070e061a289d771e62b58379eaed153fd285b04fWink Saville @Override 106070e061a289d771e62b58379eaed153fd285b04fWink Saville public int hashCode() { 107070e061a289d771e62b58379eaed153fd285b04fWink Saville final long prime = 17; 108070e061a289d771e62b58379eaed153fd285b04fWink Saville long result = 1; 109070e061a289d771e62b58379eaed153fd285b04fWink Saville result = (prime * result) + mTime; 110070e061a289d771e62b58379eaed153fd285b04fWink Saville result += (prime * result) + mDcPowerState; 111070e061a289d771e62b58379eaed153fd285b04fWink Saville return (int)result; 112070e061a289d771e62b58379eaed153fd285b04fWink Saville } 113070e061a289d771e62b58379eaed153fd285b04fWink Saville 114070e061a289d771e62b58379eaed153fd285b04fWink Saville @Override 115070e061a289d771e62b58379eaed153fd285b04fWink Saville public boolean equals(Object obj) { 116070e061a289d771e62b58379eaed153fd285b04fWink Saville if (this == obj) { 117070e061a289d771e62b58379eaed153fd285b04fWink Saville return true; 118070e061a289d771e62b58379eaed153fd285b04fWink Saville } 119070e061a289d771e62b58379eaed153fd285b04fWink Saville if (obj == null) { 120070e061a289d771e62b58379eaed153fd285b04fWink Saville return false; 121070e061a289d771e62b58379eaed153fd285b04fWink Saville } 122070e061a289d771e62b58379eaed153fd285b04fWink Saville if (getClass() != obj.getClass()) { 123070e061a289d771e62b58379eaed153fd285b04fWink Saville return false; 124070e061a289d771e62b58379eaed153fd285b04fWink Saville } 125070e061a289d771e62b58379eaed153fd285b04fWink Saville DataConnectionRealTimeInfo other = (DataConnectionRealTimeInfo) obj; 126070e061a289d771e62b58379eaed153fd285b04fWink Saville return (mTime == other.mTime) 127070e061a289d771e62b58379eaed153fd285b04fWink Saville && (mDcPowerState == other.mDcPowerState); 128070e061a289d771e62b58379eaed153fd285b04fWink Saville } 129070e061a289d771e62b58379eaed153fd285b04fWink Saville 130070e061a289d771e62b58379eaed153fd285b04fWink Saville @Override 131070e061a289d771e62b58379eaed153fd285b04fWink Saville public String toString() { 132070e061a289d771e62b58379eaed153fd285b04fWink Saville StringBuffer sb = new StringBuffer(); 133070e061a289d771e62b58379eaed153fd285b04fWink Saville 134070e061a289d771e62b58379eaed153fd285b04fWink Saville sb.append("mTime=").append(mTime); 135070e061a289d771e62b58379eaed153fd285b04fWink Saville sb.append(" mDcPowerState=").append(mDcPowerState); 136070e061a289d771e62b58379eaed153fd285b04fWink Saville 137070e061a289d771e62b58379eaed153fd285b04fWink Saville return sb.toString(); 138070e061a289d771e62b58379eaed153fd285b04fWink Saville } 139070e061a289d771e62b58379eaed153fd285b04fWink Saville} 140