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