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