1e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville/* 2e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Copyright (C) 2012 The Android Open Source Project 3e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * 4e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 5e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * you may not use this file except in compliance with the License. 6e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * You may obtain a copy of the License at 7e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * 8e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 9e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * 10e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Unless required by applicable law or agreed to in writing, software 11e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 12e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * See the License for the specific language governing permissions and 14e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * limitations under the License. 15e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 16e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 17e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Savillepackage android.telephony; 18e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 19e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Savilleimport android.os.Parcel; 20e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Savilleimport android.os.Parcelable; 21e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Savilleimport android.telephony.Rlog; 22e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 23e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville/** 24e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Immutable cell information from a point in time. 25e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 26e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Savillepublic final class CellInfoWcdma extends CellInfo implements Parcelable { 27e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 28e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville private static final String LOG_TAG = "CellInfoWcdma"; 29e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville private static final boolean DBG = false; 30e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 31e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville private CellIdentityWcdma mCellIdentityWcdma; 32e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville private CellSignalStrengthWcdma mCellSignalStrengthWcdma; 33e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 34e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** @hide */ 35e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public CellInfoWcdma() { 36e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville super(); 37e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville mCellIdentityWcdma = new CellIdentityWcdma(); 38e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville mCellSignalStrengthWcdma = new CellSignalStrengthWcdma(); 39e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 40e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 41e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** @hide */ 42e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public CellInfoWcdma(CellInfoWcdma ci) { 43e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville super(ci); 44e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville this.mCellIdentityWcdma = ci.mCellIdentityWcdma.copy(); 45e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville this.mCellSignalStrengthWcdma = ci.mCellSignalStrengthWcdma.copy(); 46e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 47e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 48e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public CellIdentityWcdma getCellIdentity() { 49e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return mCellIdentityWcdma; 50e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 51e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** @hide */ 52e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public void setCellIdentity(CellIdentityWcdma cid) { 53e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville mCellIdentityWcdma = cid; 54e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 55e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 56e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public CellSignalStrengthWcdma getCellSignalStrength() { 57e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return mCellSignalStrengthWcdma; 58e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 59e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** @hide */ 60e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public void setCellSignalStrength(CellSignalStrengthWcdma css) { 61e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville mCellSignalStrengthWcdma = css; 62e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 63e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 64e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** 65e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * @return hash code 66e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 67e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 68e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public int hashCode() { 69e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return super.hashCode() + mCellIdentityWcdma.hashCode() + mCellSignalStrengthWcdma.hashCode(); 70e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 71e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 72e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 73e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public boolean equals(Object other) { 74e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville if (!super.equals(other)) { 75e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return false; 76e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 77e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville try { 78e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville CellInfoWcdma o = (CellInfoWcdma) other; 79e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return mCellIdentityWcdma.equals(o.mCellIdentityWcdma) 80e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville && mCellSignalStrengthWcdma.equals(o.mCellSignalStrengthWcdma); 81e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } catch (ClassCastException e) { 82e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return false; 83e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 84e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 85e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 86e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 87e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public String toString() { 88e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville StringBuffer sb = new StringBuffer(); 89e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 90e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville sb.append("CellInfoWcdma:{"); 91e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville sb.append(super.toString()); 92e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville sb.append(" ").append(mCellIdentityWcdma); 93e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville sb.append(" ").append(mCellSignalStrengthWcdma); 94e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville sb.append("}"); 95e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 96e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return sb.toString(); 97e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 98e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 99e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** Implement the Parcelable interface */ 100e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 101e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public int describeContents() { 102e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return 0; 103e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 104e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 105e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** Implement the Parcelable interface */ 106e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 107e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public void writeToParcel(Parcel dest, int flags) { 108e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville super.writeToParcel(dest, flags, TYPE_WCDMA); 109e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville mCellIdentityWcdma.writeToParcel(dest, flags); 110e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville mCellSignalStrengthWcdma.writeToParcel(dest, flags); 111e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 112e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 113e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** 114e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Construct a CellInfoWcdma object from the given parcel 115e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * where the token is already been processed. 116e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 117e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville private CellInfoWcdma(Parcel in) { 118e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville super(in); 119e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville mCellIdentityWcdma = CellIdentityWcdma.CREATOR.createFromParcel(in); 120e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville mCellSignalStrengthWcdma = CellSignalStrengthWcdma.CREATOR.createFromParcel(in); 121e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 122e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 123e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** Implement the Parcelable interface */ 124e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public static final Creator<CellInfoWcdma> CREATOR = new Creator<CellInfoWcdma>() { 125e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 126e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public CellInfoWcdma createFromParcel(Parcel in) { 127e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville in.readInt(); // Skip past token, we know what it is 128e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return createFromParcelBody(in); 129e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 130e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 131e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 132e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public CellInfoWcdma[] newArray(int size) { 133e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return new CellInfoWcdma[size]; 134e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 135e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville }; 136e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 137e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** @hide */ 138e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville protected static CellInfoWcdma createFromParcelBody(Parcel in) { 139e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return new CellInfoWcdma(in); 140e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 141e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 142e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** 143e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * log 144e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 145e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville private static void log(String s) { 146e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville Rlog.w(LOG_TAG, s); 147e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 148e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville} 149