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 * LTE signal strength related information.
25b208a24cf521401912cfce16fce550a995cf1250Wink Saville */
26c6e4917adda19beb780386bcc26b652748b8ab13Wink Savillepublic final class CellSignalStrengthLte extends CellSignalStrength implements Parcelable {
27b208a24cf521401912cfce16fce550a995cf1250Wink Saville
28b208a24cf521401912cfce16fce550a995cf1250Wink Saville    private static final String LOG_TAG = "CellSignalStrengthLte";
29b208a24cf521401912cfce16fce550a995cf1250Wink Saville    private static final boolean DBG = false;
30b208a24cf521401912cfce16fce550a995cf1250Wink Saville
31b208a24cf521401912cfce16fce550a995cf1250Wink Saville    private int mSignalStrength;
32b208a24cf521401912cfce16fce550a995cf1250Wink Saville    private int mRsrp;
33b208a24cf521401912cfce16fce550a995cf1250Wink Saville    private int mRsrq;
34b208a24cf521401912cfce16fce550a995cf1250Wink Saville    private int mRssnr;
35b208a24cf521401912cfce16fce550a995cf1250Wink Saville    private int mCqi;
36b208a24cf521401912cfce16fce550a995cf1250Wink Saville    private int mTimingAdvance;
37b208a24cf521401912cfce16fce550a995cf1250Wink Saville
38b208a24cf521401912cfce16fce550a995cf1250Wink Saville    /**
39b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * Empty constructor
40b208a24cf521401912cfce16fce550a995cf1250Wink Saville     *
41b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * @hide
42b208a24cf521401912cfce16fce550a995cf1250Wink Saville     */
43b208a24cf521401912cfce16fce550a995cf1250Wink Saville    public CellSignalStrengthLte() {
44b208a24cf521401912cfce16fce550a995cf1250Wink Saville        setDefaultValues();
45b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
46b208a24cf521401912cfce16fce550a995cf1250Wink Saville
47b208a24cf521401912cfce16fce550a995cf1250Wink Saville    /**
48b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * Constructor
49b208a24cf521401912cfce16fce550a995cf1250Wink Saville     *
50b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * @hide
51b208a24cf521401912cfce16fce550a995cf1250Wink Saville     */
52b208a24cf521401912cfce16fce550a995cf1250Wink Saville    public CellSignalStrengthLte(int signalStrength, int rsrp, int rsrq, int rssnr, int cqi,
53b208a24cf521401912cfce16fce550a995cf1250Wink Saville            int timingAdvance) {
54b208a24cf521401912cfce16fce550a995cf1250Wink Saville        initialize(signalStrength, rsrp, rsrq, rssnr, cqi, timingAdvance);
55b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
56b208a24cf521401912cfce16fce550a995cf1250Wink Saville
57b208a24cf521401912cfce16fce550a995cf1250Wink Saville    /**
58b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * Copy constructors
59b208a24cf521401912cfce16fce550a995cf1250Wink Saville     *
60b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * @param s Source SignalStrength
61b208a24cf521401912cfce16fce550a995cf1250Wink Saville     *
62b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * @hide
63b208a24cf521401912cfce16fce550a995cf1250Wink Saville     */
64b208a24cf521401912cfce16fce550a995cf1250Wink Saville    public CellSignalStrengthLte(CellSignalStrengthLte s) {
65b208a24cf521401912cfce16fce550a995cf1250Wink Saville        copyFrom(s);
66b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
67b208a24cf521401912cfce16fce550a995cf1250Wink Saville
68b208a24cf521401912cfce16fce550a995cf1250Wink Saville    /**
69b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * Initialize all the values
70b208a24cf521401912cfce16fce550a995cf1250Wink Saville     *
71b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * @param lteSignalStrength
72b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * @param rsrp
73b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * @param rsrq
74b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * @param rssnr
75b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * @param cqi
76b208a24cf521401912cfce16fce550a995cf1250Wink Saville     *
77b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * @hide
78b208a24cf521401912cfce16fce550a995cf1250Wink Saville     */
79b208a24cf521401912cfce16fce550a995cf1250Wink Saville    public void initialize(int lteSignalStrength, int rsrp, int rsrq, int rssnr, int cqi,
80b208a24cf521401912cfce16fce550a995cf1250Wink Saville            int timingAdvance) {
81b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mSignalStrength = lteSignalStrength;
82b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mRsrp = rsrp;
83b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mRsrq = rsrq;
84b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mRssnr = rssnr;
85b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mCqi = cqi;
86b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mTimingAdvance = timingAdvance;
87b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
88b208a24cf521401912cfce16fce550a995cf1250Wink Saville
89b208a24cf521401912cfce16fce550a995cf1250Wink Saville    /**
902900a3fae6e3da65522ffc16673ab1757352afbbWink Saville     * Initialize from the SignalStrength structure.
912900a3fae6e3da65522ffc16673ab1757352afbbWink Saville     *
922900a3fae6e3da65522ffc16673ab1757352afbbWink Saville     * @param ss
932900a3fae6e3da65522ffc16673ab1757352afbbWink Saville     *
942900a3fae6e3da65522ffc16673ab1757352afbbWink Saville     * @hide
952900a3fae6e3da65522ffc16673ab1757352afbbWink Saville     */
962900a3fae6e3da65522ffc16673ab1757352afbbWink Saville    public void initialize(SignalStrength ss, int timingAdvance) {
972900a3fae6e3da65522ffc16673ab1757352afbbWink Saville        mSignalStrength = ss.getLteSignalStrenght();
982900a3fae6e3da65522ffc16673ab1757352afbbWink Saville        mRsrp = ss.getLteRsrp();
992900a3fae6e3da65522ffc16673ab1757352afbbWink Saville        mRsrq = ss.getLteRsrq();
1002900a3fae6e3da65522ffc16673ab1757352afbbWink Saville        mRssnr = ss.getLteRssnr();
1012900a3fae6e3da65522ffc16673ab1757352afbbWink Saville        mCqi = ss.getLteCqi();
1022900a3fae6e3da65522ffc16673ab1757352afbbWink Saville        mTimingAdvance = timingAdvance;
1032900a3fae6e3da65522ffc16673ab1757352afbbWink Saville    }
1042900a3fae6e3da65522ffc16673ab1757352afbbWink Saville
1052900a3fae6e3da65522ffc16673ab1757352afbbWink Saville    /**
106b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * @hide
107b208a24cf521401912cfce16fce550a995cf1250Wink Saville     */
108b208a24cf521401912cfce16fce550a995cf1250Wink Saville    protected void copyFrom(CellSignalStrengthLte s) {
109b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mSignalStrength = s.mSignalStrength;
110b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mRsrp = s.mRsrp;
111b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mRsrq = s.mRsrq;
112b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mRssnr = s.mRssnr;
113b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mCqi = s.mCqi;
114b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mTimingAdvance = s.mTimingAdvance;
115b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
116b208a24cf521401912cfce16fce550a995cf1250Wink Saville
117b208a24cf521401912cfce16fce550a995cf1250Wink Saville    /**
118b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * @hide
119b208a24cf521401912cfce16fce550a995cf1250Wink Saville     */
120b208a24cf521401912cfce16fce550a995cf1250Wink Saville    @Override
121b208a24cf521401912cfce16fce550a995cf1250Wink Saville    public CellSignalStrengthLte copy() {
122b208a24cf521401912cfce16fce550a995cf1250Wink Saville        return new CellSignalStrengthLte(this);
123b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
124b208a24cf521401912cfce16fce550a995cf1250Wink Saville
125b208a24cf521401912cfce16fce550a995cf1250Wink Saville    /** @hide */
126b208a24cf521401912cfce16fce550a995cf1250Wink Saville    @Override
127b208a24cf521401912cfce16fce550a995cf1250Wink Saville    public void setDefaultValues() {
128b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mSignalStrength = Integer.MAX_VALUE;
129b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mRsrp = Integer.MAX_VALUE;
130b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mRsrq = Integer.MAX_VALUE;
131b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mRssnr = Integer.MAX_VALUE;
132b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mCqi = Integer.MAX_VALUE;
133b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mTimingAdvance = Integer.MAX_VALUE;
134b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
135b208a24cf521401912cfce16fce550a995cf1250Wink Saville
136b208a24cf521401912cfce16fce550a995cf1250Wink Saville    /**
13782e6ee62b2be3c716c215e4ba72c8a12c58620fbWink Saville     * Get signal level as an int from 0..4
138b208a24cf521401912cfce16fce550a995cf1250Wink Saville     */
139b208a24cf521401912cfce16fce550a995cf1250Wink Saville    @Override
140b208a24cf521401912cfce16fce550a995cf1250Wink Saville    public int getLevel() {
141b208a24cf521401912cfce16fce550a995cf1250Wink Saville        int levelRsrp = 0;
142b208a24cf521401912cfce16fce550a995cf1250Wink Saville        int levelRssnr = 0;
143b208a24cf521401912cfce16fce550a995cf1250Wink Saville
144b208a24cf521401912cfce16fce550a995cf1250Wink Saville        if (mRsrp == Integer.MAX_VALUE) levelRsrp = 0;
145b208a24cf521401912cfce16fce550a995cf1250Wink Saville        else if (mRsrp >= -95) levelRsrp = SIGNAL_STRENGTH_GREAT;
146b208a24cf521401912cfce16fce550a995cf1250Wink Saville        else if (mRsrp >= -105) levelRsrp = SIGNAL_STRENGTH_GOOD;
147b208a24cf521401912cfce16fce550a995cf1250Wink Saville        else if (mRsrp >= -115) levelRsrp = SIGNAL_STRENGTH_MODERATE;
148b208a24cf521401912cfce16fce550a995cf1250Wink Saville        else levelRsrp = SIGNAL_STRENGTH_POOR;
149b208a24cf521401912cfce16fce550a995cf1250Wink Saville
150b208a24cf521401912cfce16fce550a995cf1250Wink Saville        // See RIL_LTE_SignalStrength in ril.h
151b208a24cf521401912cfce16fce550a995cf1250Wink Saville        if (mRssnr == Integer.MAX_VALUE) levelRssnr = 0;
152b208a24cf521401912cfce16fce550a995cf1250Wink Saville        else if (mRssnr >= 45) levelRssnr = SIGNAL_STRENGTH_GREAT;
153b208a24cf521401912cfce16fce550a995cf1250Wink Saville        else if (mRssnr >= 10) levelRssnr = SIGNAL_STRENGTH_GOOD;
154b208a24cf521401912cfce16fce550a995cf1250Wink Saville        else if (mRssnr >= -30) levelRssnr = SIGNAL_STRENGTH_MODERATE;
155b208a24cf521401912cfce16fce550a995cf1250Wink Saville        else levelRssnr = SIGNAL_STRENGTH_POOR;
156b208a24cf521401912cfce16fce550a995cf1250Wink Saville
157b208a24cf521401912cfce16fce550a995cf1250Wink Saville        int level;
158b208a24cf521401912cfce16fce550a995cf1250Wink Saville        if (mRsrp == Integer.MAX_VALUE)
159b208a24cf521401912cfce16fce550a995cf1250Wink Saville            level = levelRssnr;
160b208a24cf521401912cfce16fce550a995cf1250Wink Saville        else if (mRssnr == Integer.MAX_VALUE)
161b208a24cf521401912cfce16fce550a995cf1250Wink Saville            level = levelRsrp;
162b208a24cf521401912cfce16fce550a995cf1250Wink Saville        else
163b208a24cf521401912cfce16fce550a995cf1250Wink Saville            level = (levelRssnr < levelRsrp) ? levelRssnr : levelRsrp;
164b208a24cf521401912cfce16fce550a995cf1250Wink Saville
165b208a24cf521401912cfce16fce550a995cf1250Wink Saville        if (DBG) log("Lte rsrp level: " + levelRsrp
166b208a24cf521401912cfce16fce550a995cf1250Wink Saville                + " snr level: " + levelRssnr + " level: " + level);
167b208a24cf521401912cfce16fce550a995cf1250Wink Saville        return level;
168b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
169b208a24cf521401912cfce16fce550a995cf1250Wink Saville
170b208a24cf521401912cfce16fce550a995cf1250Wink Saville    /**
17182e6ee62b2be3c716c215e4ba72c8a12c58620fbWink Saville     * Get signal strength as dBm
172b208a24cf521401912cfce16fce550a995cf1250Wink Saville     */
173b208a24cf521401912cfce16fce550a995cf1250Wink Saville    @Override
174b208a24cf521401912cfce16fce550a995cf1250Wink Saville    public int getDbm() {
175b208a24cf521401912cfce16fce550a995cf1250Wink Saville        return mRsrp;
176b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
177b208a24cf521401912cfce16fce550a995cf1250Wink Saville
178b208a24cf521401912cfce16fce550a995cf1250Wink Saville    /**
179b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * Get the LTE signal level as an asu value between 0..97, 99 is unknown
180b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * Asu is calculated based on 3GPP RSRP. Refer to 3GPP 27.007 (Ver 10.3.0) Sec 8.69
181b208a24cf521401912cfce16fce550a995cf1250Wink Saville     */
182b208a24cf521401912cfce16fce550a995cf1250Wink Saville    @Override
183b208a24cf521401912cfce16fce550a995cf1250Wink Saville    public int getAsuLevel() {
184b208a24cf521401912cfce16fce550a995cf1250Wink Saville        int lteAsuLevel = 99;
185b208a24cf521401912cfce16fce550a995cf1250Wink Saville        int lteDbm = getDbm();
186b208a24cf521401912cfce16fce550a995cf1250Wink Saville        if (lteDbm <= -140) lteAsuLevel = 0;
187b208a24cf521401912cfce16fce550a995cf1250Wink Saville        else if (lteDbm >= -43) lteAsuLevel = 97;
188b208a24cf521401912cfce16fce550a995cf1250Wink Saville        else lteAsuLevel = lteDbm + 140;
189b208a24cf521401912cfce16fce550a995cf1250Wink Saville        if (DBG) log("Lte Asu level: "+lteAsuLevel);
190b208a24cf521401912cfce16fce550a995cf1250Wink Saville        return lteAsuLevel;
191b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
192b208a24cf521401912cfce16fce550a995cf1250Wink Saville
193b208a24cf521401912cfce16fce550a995cf1250Wink Saville    /**
194b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * Get the timing advance value for LTE.
195b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * See 3GPP xxxx
196b208a24cf521401912cfce16fce550a995cf1250Wink Saville     */
197b208a24cf521401912cfce16fce550a995cf1250Wink Saville    public int getTimingAdvance() {
198b208a24cf521401912cfce16fce550a995cf1250Wink Saville        return mTimingAdvance;
199b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
200b208a24cf521401912cfce16fce550a995cf1250Wink Saville
201b208a24cf521401912cfce16fce550a995cf1250Wink Saville    @Override
202b208a24cf521401912cfce16fce550a995cf1250Wink Saville    public int hashCode() {
203b208a24cf521401912cfce16fce550a995cf1250Wink Saville        int primeNum = 31;
204b208a24cf521401912cfce16fce550a995cf1250Wink Saville        return (mSignalStrength * primeNum) + (mRsrp * primeNum)
205b208a24cf521401912cfce16fce550a995cf1250Wink Saville                + (mRsrq * primeNum) + (mRssnr * primeNum) + (mCqi * primeNum)
206b208a24cf521401912cfce16fce550a995cf1250Wink Saville                + (mTimingAdvance * primeNum);
207b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
208b208a24cf521401912cfce16fce550a995cf1250Wink Saville
209b208a24cf521401912cfce16fce550a995cf1250Wink Saville    @Override
210b208a24cf521401912cfce16fce550a995cf1250Wink Saville    public boolean equals (Object o) {
211b208a24cf521401912cfce16fce550a995cf1250Wink Saville        CellSignalStrengthLte s;
212b208a24cf521401912cfce16fce550a995cf1250Wink Saville
213b208a24cf521401912cfce16fce550a995cf1250Wink Saville        try {
214b208a24cf521401912cfce16fce550a995cf1250Wink Saville            s = (CellSignalStrengthLte) o;
215b208a24cf521401912cfce16fce550a995cf1250Wink Saville        } catch (ClassCastException ex) {
216b208a24cf521401912cfce16fce550a995cf1250Wink Saville            return false;
217b208a24cf521401912cfce16fce550a995cf1250Wink Saville        }
218b208a24cf521401912cfce16fce550a995cf1250Wink Saville
219b208a24cf521401912cfce16fce550a995cf1250Wink Saville        if (o == null) {
220b208a24cf521401912cfce16fce550a995cf1250Wink Saville            return false;
221b208a24cf521401912cfce16fce550a995cf1250Wink Saville        }
222b208a24cf521401912cfce16fce550a995cf1250Wink Saville
223b208a24cf521401912cfce16fce550a995cf1250Wink Saville        return mSignalStrength == s.mSignalStrength
224b208a24cf521401912cfce16fce550a995cf1250Wink Saville                && mRsrp == s.mRsrp
225b208a24cf521401912cfce16fce550a995cf1250Wink Saville                && mRsrq == s.mRsrq
226b208a24cf521401912cfce16fce550a995cf1250Wink Saville                && mRssnr == s.mRssnr
227b208a24cf521401912cfce16fce550a995cf1250Wink Saville                && mCqi == s.mCqi
228b208a24cf521401912cfce16fce550a995cf1250Wink Saville                && mTimingAdvance == s.mTimingAdvance;
229b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
230b208a24cf521401912cfce16fce550a995cf1250Wink Saville
231b208a24cf521401912cfce16fce550a995cf1250Wink Saville    /**
232b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * @return string representation.
233b208a24cf521401912cfce16fce550a995cf1250Wink Saville     */
234b208a24cf521401912cfce16fce550a995cf1250Wink Saville    @Override
235b208a24cf521401912cfce16fce550a995cf1250Wink Saville    public String toString() {
236b208a24cf521401912cfce16fce550a995cf1250Wink Saville        return "CellSignalStrengthLte:"
237b208a24cf521401912cfce16fce550a995cf1250Wink Saville                + " ss=" + mSignalStrength
238b208a24cf521401912cfce16fce550a995cf1250Wink Saville                + " rsrp=" + mRsrp
239b208a24cf521401912cfce16fce550a995cf1250Wink Saville                + " rsrq=" + mRsrq
240b208a24cf521401912cfce16fce550a995cf1250Wink Saville                + " rssnr=" + mRssnr
241b208a24cf521401912cfce16fce550a995cf1250Wink Saville                + " cqi=" + mCqi
242b208a24cf521401912cfce16fce550a995cf1250Wink Saville                + " ta=" + mTimingAdvance;
243b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
244b208a24cf521401912cfce16fce550a995cf1250Wink Saville
245b208a24cf521401912cfce16fce550a995cf1250Wink Saville    /** Implement the Parcelable interface */
246b208a24cf521401912cfce16fce550a995cf1250Wink Saville    @Override
247b208a24cf521401912cfce16fce550a995cf1250Wink Saville    public void writeToParcel(Parcel dest, int flags) {
248b208a24cf521401912cfce16fce550a995cf1250Wink Saville        if (DBG) log("writeToParcel(Parcel, int): " + toString());
249b208a24cf521401912cfce16fce550a995cf1250Wink Saville        dest.writeInt(mSignalStrength);
250b208a24cf521401912cfce16fce550a995cf1250Wink Saville        dest.writeInt(mRsrp);
251b208a24cf521401912cfce16fce550a995cf1250Wink Saville        dest.writeInt(mRsrq);
252b208a24cf521401912cfce16fce550a995cf1250Wink Saville        dest.writeInt(mRssnr);
253b208a24cf521401912cfce16fce550a995cf1250Wink Saville        dest.writeInt(mCqi);
254b208a24cf521401912cfce16fce550a995cf1250Wink Saville        dest.writeInt(mTimingAdvance);
255b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
256b208a24cf521401912cfce16fce550a995cf1250Wink Saville
257b208a24cf521401912cfce16fce550a995cf1250Wink Saville    /**
258b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * Construct a SignalStrength object from the given parcel
259b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * where the token is already been processed.
260b208a24cf521401912cfce16fce550a995cf1250Wink Saville     */
261b208a24cf521401912cfce16fce550a995cf1250Wink Saville    private CellSignalStrengthLte(Parcel in) {
262b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mSignalStrength = in.readInt();
263b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mRsrp = in.readInt();
264b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mRsrq = in.readInt();
265b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mRssnr = in.readInt();
266b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mCqi = in.readInt();
267b208a24cf521401912cfce16fce550a995cf1250Wink Saville        mTimingAdvance = in.readInt();
268b208a24cf521401912cfce16fce550a995cf1250Wink Saville        if (DBG) log("CellSignalStrengthLte(Parcel): " + toString());
269b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
270b208a24cf521401912cfce16fce550a995cf1250Wink Saville
271b208a24cf521401912cfce16fce550a995cf1250Wink Saville    /** Implement the Parcelable interface */
272b208a24cf521401912cfce16fce550a995cf1250Wink Saville    @Override
273b208a24cf521401912cfce16fce550a995cf1250Wink Saville    public int describeContents() {
274b208a24cf521401912cfce16fce550a995cf1250Wink Saville        return 0;
275b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
276b208a24cf521401912cfce16fce550a995cf1250Wink Saville
277b208a24cf521401912cfce16fce550a995cf1250Wink Saville    /** Implement the Parcelable interface */
278b208a24cf521401912cfce16fce550a995cf1250Wink Saville    @SuppressWarnings("hiding")
279b208a24cf521401912cfce16fce550a995cf1250Wink Saville    public static final Parcelable.Creator<CellSignalStrengthLte> CREATOR =
280b208a24cf521401912cfce16fce550a995cf1250Wink Saville            new Parcelable.Creator<CellSignalStrengthLte>() {
281b208a24cf521401912cfce16fce550a995cf1250Wink Saville        @Override
282b208a24cf521401912cfce16fce550a995cf1250Wink Saville        public CellSignalStrengthLte createFromParcel(Parcel in) {
283c6e4917adda19beb780386bcc26b652748b8ab13Wink Saville            return new CellSignalStrengthLte(in);
284b208a24cf521401912cfce16fce550a995cf1250Wink Saville        }
285b208a24cf521401912cfce16fce550a995cf1250Wink Saville
286b208a24cf521401912cfce16fce550a995cf1250Wink Saville        @Override
287b208a24cf521401912cfce16fce550a995cf1250Wink Saville        public CellSignalStrengthLte[] newArray(int size) {
288b208a24cf521401912cfce16fce550a995cf1250Wink Saville            return new CellSignalStrengthLte[size];
289b208a24cf521401912cfce16fce550a995cf1250Wink Saville        }
290b208a24cf521401912cfce16fce550a995cf1250Wink Saville    };
291b208a24cf521401912cfce16fce550a995cf1250Wink Saville
292b208a24cf521401912cfce16fce550a995cf1250Wink Saville    /**
293b208a24cf521401912cfce16fce550a995cf1250Wink Saville     * log
294b208a24cf521401912cfce16fce550a995cf1250Wink Saville     */
295b208a24cf521401912cfce16fce550a995cf1250Wink Saville    private static void log(String s) {
296b208a24cf521401912cfce16fce550a995cf1250Wink Saville        Log.w(LOG_TAG, s);
297b208a24cf521401912cfce16fce550a995cf1250Wink Saville    }
298b208a24cf521401912cfce16fce550a995cf1250Wink Saville}
299