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