1/*
2 * Copyright (C) 2013 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
17package android.net;
18
19import android.os.Parcel;
20
21/**
22 *  Class that represents useful attributes of mobile network links
23 *  such as the upload/download throughput or error rate etc.
24 *  @hide
25 */
26public class MobileLinkQualityInfo extends LinkQualityInfo {
27    // Represents TelephonyManager.NetworkType
28    private int mMobileNetworkType = UNKNOWN_INT;
29    private int mRssi = UNKNOWN_INT;
30    private int mGsmErrorRate = UNKNOWN_INT;
31    private int mCdmaDbm = UNKNOWN_INT;
32    private int mCdmaEcio = UNKNOWN_INT;
33    private int mEvdoDbm = UNKNOWN_INT;
34    private int mEvdoEcio = UNKNOWN_INT;
35    private int mEvdoSnr = UNKNOWN_INT;
36    private int mLteSignalStrength = UNKNOWN_INT;
37    private int mLteRsrp = UNKNOWN_INT;
38    private int mLteRsrq = UNKNOWN_INT;
39    private int mLteRssnr = UNKNOWN_INT;
40    private int mLteCqi = UNKNOWN_INT;
41
42    /**
43     * Implement the Parcelable interface.
44     * @hide
45     */
46    @Override
47    public void writeToParcel(Parcel dest, int flags) {
48        super.writeToParcel(dest, flags, OBJECT_TYPE_MOBILE_LINK_QUALITY_INFO);
49
50        dest.writeInt(mMobileNetworkType);
51        dest.writeInt(mRssi);
52        dest.writeInt(mGsmErrorRate);
53        dest.writeInt(mCdmaDbm);
54        dest.writeInt(mCdmaEcio);
55        dest.writeInt(mEvdoDbm);
56        dest.writeInt(mEvdoEcio);
57        dest.writeInt(mEvdoSnr);
58        dest.writeInt(mLteSignalStrength);
59        dest.writeInt(mLteRsrp);
60        dest.writeInt(mLteRsrq);
61        dest.writeInt(mLteRssnr);
62        dest.writeInt(mLteCqi);
63    }
64
65    /* Un-parceling helper */
66    /**
67     * @hide
68     */
69    public static MobileLinkQualityInfo createFromParcelBody(Parcel in) {
70
71        MobileLinkQualityInfo li = new MobileLinkQualityInfo();
72
73        li.initializeFromParcel(in);
74
75        li.mMobileNetworkType = in.readInt();
76        li.mRssi = in.readInt();
77        li.mGsmErrorRate = in.readInt();
78        li.mCdmaDbm = in.readInt();
79        li.mCdmaEcio = in.readInt();
80        li.mEvdoDbm = in.readInt();
81        li.mEvdoEcio = in.readInt();
82        li.mEvdoSnr = in.readInt();
83        li.mLteSignalStrength = in.readInt();
84        li.mLteRsrp = in.readInt();
85        li.mLteRsrq = in.readInt();
86        li.mLteRssnr = in.readInt();
87        li.mLteCqi = in.readInt();
88
89        return li;
90    }
91
92    /**
93     * returns mobile network type as defined by {@link android.telephony.TelephonyManager}
94     * @return network type or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
95     */
96    public int getMobileNetworkType() {
97        return mMobileNetworkType;
98    }
99
100    /**
101     * @hide
102     */
103    public void setMobileNetworkType(int mobileNetworkType) {
104        mMobileNetworkType = mobileNetworkType;
105    }
106
107    /**
108     * returns signal strength for GSM networks
109     * @return signal strength in db or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
110     */
111    public int getRssi() {
112        return mRssi;
113    }
114
115    /**
116     * @hide
117     */
118    public void setRssi(int Rssi) {
119        mRssi = Rssi;
120    }
121
122    /**
123     * returns error rates for GSM networks
124     * @return error rate or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
125     */
126    public int getGsmErrorRate() {
127        return mGsmErrorRate;
128    }
129
130    /**
131     * @hide
132     */
133    public void setGsmErrorRate(int gsmErrorRate) {
134        mGsmErrorRate = gsmErrorRate;
135    }
136
137    /**
138     * returns signal strength for CDMA networks
139     * @return signal strength in db or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
140     */
141    public int getCdmaDbm() {
142        return mCdmaDbm;
143    }
144
145    /**
146     * @hide
147     */
148    public void setCdmaDbm(int cdmaDbm) {
149        mCdmaDbm = cdmaDbm;
150    }
151
152    /**
153     * returns signal to noise ratio for CDMA networks
154     * @return signal to noise ratio in db or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
155     */
156    public int getCdmaEcio() {
157        return mCdmaEcio;
158    }
159
160    /**
161     * @hide
162     */
163    public void setCdmaEcio(int cdmaEcio) {
164        mCdmaEcio = cdmaEcio;
165    }
166
167    /**
168     * returns signal strength for EVDO networks
169     * @return signal strength in db or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
170     */
171    public int getEvdoDbm() {
172        return mEvdoDbm;
173    }
174
175    /**
176     * @hide
177     */
178    public void setEvdoDbm(int evdoDbm) {
179        mEvdoDbm = evdoDbm;
180    }
181
182    /**
183     * returns signal to noise ratio for EVDO spectrum
184     * @return signal to noise ration in db or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
185     */
186    public int getEvdoEcio() {
187        return mEvdoEcio;
188    }
189
190    /**
191     * @hide
192     */
193    public void setEvdoEcio(int evdoEcio) {
194        mEvdoEcio = evdoEcio;
195    }
196
197    /**
198     * returns end-to-end signal to noise ratio for EVDO networks
199     * @return signal to noise ration in db or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
200     */
201    public int getEvdoSnr() {
202        return mEvdoSnr;
203    }
204
205    /**
206     * @hide
207     */
208    public void setEvdoSnr(int evdoSnr) {
209        mEvdoSnr = evdoSnr;
210    }
211
212    /**
213     * returns signal strength for LTE network
214     * @return signal strength in db or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
215     */
216    public int getLteSignalStrength() {
217        return mLteSignalStrength;
218    }
219
220    /**
221     * @hide
222     */
223    public void setLteSignalStrength(int lteSignalStrength) {
224        mLteSignalStrength = lteSignalStrength;
225    }
226
227    /**
228     * returns RSRP (Reference Signal Received Power) for LTE network
229     * @return RSRP in db or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
230     */
231    public int getLteRsrp() {
232        return mLteRsrp;
233    }
234
235    /**
236     * @hide
237     */
238    public void setLteRsrp(int lteRsrp) {
239        mLteRsrp = lteRsrp;
240    }
241
242    /**
243     * returns RSRQ (Reference Signal Received Quality) for LTE network
244     * @return RSRQ ??? or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
245     */
246    public int getLteRsrq() {
247        return mLteRsrq;
248    }
249
250    /**
251     * @hide
252     */
253    public void setLteRsrq(int lteRsrq) {
254        mLteRsrq = lteRsrq;
255    }
256
257    /**
258     * returns signal to noise ratio for LTE networks
259     * @return signal to noise ration in db or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
260     */
261    public int getLteRssnr() {
262        return mLteRssnr;
263    }
264
265    /**
266     * @hide
267     */
268    public void setLteRssnr(int lteRssnr) {
269        mLteRssnr = lteRssnr;
270    }
271
272    /**
273     * returns channel quality indicator for LTE networks
274     * @return CQI or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
275     */
276    public int getLteCqi() {
277        return mLteCqi;
278    }
279
280    /**
281     * @hide
282     */
283    public void setLteCqi(int lteCqi) {
284        mLteCqi = lteCqi;
285    }
286}
287