1 /* 2 * Copyright (C) 2022 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 com.android.telephony.qns.atoms; 18 19 import android.util.StatsEvent; 20 21 import com.android.telephony.qns.stats.QnsStatsLog; 22 import com.android.telephony.statslib.AtomsPushed; 23 24 import java.util.Objects; 25 26 /** AtomsQualifiedRatListChangedInfo class */ 27 public class AtomsQualifiedRatListChangedInfo extends AtomsPushed { 28 29 /** atom #1 : NetCapability of this Qualified RAT update */ 30 private int mNetCapability; 31 /** atom #2 : The most preferred qualified RAT */ 32 private int mFirstQualifiedRat; 33 /** atom #3 : Second preferred qualified RAT */ 34 private int mSecondQualifiedRat; 35 /** atom #4 : Current actual transport type of Data session for this NetCapability */ 36 private int mCurrentTransportType; 37 /** atom #5 : Indicates whether WFC is enabled */ 38 private boolean mWfcEnabled; 39 /** atom #6 : Indicates the user's WFC mode */ 40 private int mWfcMode; 41 /** atom #7 : Current Cellular AccessNetwork Type */ 42 private int mCellularNetworkType; 43 /** atom #8 : Available IWLAN AccessNetwork */ 44 private int mIwlanNetworkType; 45 /** atom #9 : Bit mask of restrictions on WWAN */ 46 private int mRestrictionsOnWwan; 47 /** atom #10 : Bit mask of restrictions on WLAN */ 48 private int mRestrictionsOnWlan; 49 /** atom #11 : Cellular network signal strength {e.g. SSRSRP in NR, RSRP in LTE} */ 50 private int mSignalStrength; 51 /** atom #12 : Cellular network signal quality {e.g. SSRSRQ in NR, RSRQ in LTE} */ 52 private int mSignalQuality; 53 /** atom #13 : Cellular network signal noise ratio {e.g. SSSINR in NR, RSSNR in LTE} */ 54 private int mSignalNoise; 55 /** atom #14 : Iwlan network signal strength (Wi-Fi RSSI) */ 56 private int mIwlanSignalStrength; 57 /** atom #15 : Reason for preferred RAT update */ 58 private int mUpdateReason; 59 /** atom #16: IMS Call Type */ 60 private int mImsCallType; 61 /** atom #17 : IMS Call Quality */ 62 private int mImsCallQuality; 63 /** atom #18 : Slot Index */ 64 private int mSlotIndex; 65 66 /** Constructor of AtomsQualifiedRatListChangedInfo */ AtomsQualifiedRatListChangedInfo()67 public AtomsQualifiedRatListChangedInfo() {} 68 69 /** 70 * Constructor of AtomsQualifiedRatListChangedInfo 71 * 72 * @param netCapability NetCapability of this Qualified RAT update 73 * @param firstQualifiedRat The most preferred qualified RAT 74 * @param secondQualifiedRat Second preferred qualified RAT 75 * @param currentTransportType Current actual transport type of Data session for this 76 * NetCapability 77 * @param wfcEnabled Indicates whether WFC is enabled 78 * @param wfcMode Indicates the user's WFC mode 79 * @param cellularNetworkType Current Cellular AccessNetwork Type 80 * @param iwlanNetworkType Available IWLAN AccessNetwork 81 * @param restrictionsOnWwan Bit mask of restrictions on WWAN 82 * @param restrictionsOnWlan Bit mask of restrictions on WLAN 83 * @param signalStrength Cellular network signal strength {e.g. SSRSRP in NR, RSRP in LTE, RSCP 84 * in UMTS} 85 * @param signalQuality Cellular network signal quality {e.g. SSRSRQ in NR, RSRQ in LTE} 86 * @param signalNoise Cellular network signal noise ratio {e.g. SSSINR in NR, RSSNR in LTE} 87 * @param iwlanSignalStrength Iwlan network signal strength (Wi-Fi RSSI) 88 * @param updateReason Reason for preferred RAT update 89 * @param imsCallType Ims Call Type {e.g. IDLE, VOICE, VIDEO, E-CALL} 90 * @param imsCallQuality Ims Call Quality 91 * @param slotIndex Index of sim slot 92 */ AtomsQualifiedRatListChangedInfo( int netCapability, int firstQualifiedRat, int secondQualifiedRat, int currentTransportType, boolean wfcEnabled, int wfcMode, int cellularNetworkType, int iwlanNetworkType, int restrictionsOnWwan, int restrictionsOnWlan, int signalStrength, int signalQuality, int signalNoise, int iwlanSignalStrength, int updateReason, int imsCallType, int imsCallQuality, int slotIndex)93 public AtomsQualifiedRatListChangedInfo( 94 int netCapability, 95 int firstQualifiedRat, 96 int secondQualifiedRat, 97 int currentTransportType, 98 boolean wfcEnabled, 99 int wfcMode, 100 int cellularNetworkType, 101 int iwlanNetworkType, 102 int restrictionsOnWwan, 103 int restrictionsOnWlan, 104 int signalStrength, 105 int signalQuality, 106 int signalNoise, 107 int iwlanSignalStrength, 108 int updateReason, 109 int imsCallType, 110 int imsCallQuality, 111 int slotIndex) { 112 mNetCapability = netCapability; 113 mFirstQualifiedRat = firstQualifiedRat; 114 mSecondQualifiedRat = secondQualifiedRat; 115 mCurrentTransportType = currentTransportType; 116 mWfcEnabled = wfcEnabled; 117 mWfcMode = wfcMode; 118 mCellularNetworkType = cellularNetworkType; 119 mIwlanNetworkType = iwlanNetworkType; 120 mRestrictionsOnWwan = restrictionsOnWwan; 121 mRestrictionsOnWlan = restrictionsOnWlan; 122 mSignalStrength = signalStrength; 123 mSignalQuality = signalQuality; 124 mSignalNoise = signalNoise; 125 mIwlanSignalStrength = iwlanSignalStrength; 126 mUpdateReason = updateReason; 127 mImsCallType = imsCallType; 128 mImsCallQuality = imsCallQuality; 129 mSlotIndex = slotIndex; 130 } 131 132 /** 133 * Copy Constructor of AtomsQualifiedRatListChangedInfo 134 * 135 * @param info The info param to copy from. 136 */ AtomsQualifiedRatListChangedInfo(AtomsQualifiedRatListChangedInfo info)137 public AtomsQualifiedRatListChangedInfo(AtomsQualifiedRatListChangedInfo info) { 138 mNetCapability = info.mNetCapability; 139 mFirstQualifiedRat = info.mFirstQualifiedRat; 140 mSecondQualifiedRat = info.mSecondQualifiedRat; 141 mCurrentTransportType = info.mCurrentTransportType; 142 mWfcEnabled = info.mWfcEnabled; 143 mWfcMode = info.mWfcMode; 144 mCellularNetworkType = info.mCellularNetworkType; 145 mIwlanNetworkType = info.mIwlanNetworkType; 146 mRestrictionsOnWwan = info.mRestrictionsOnWwan; 147 mRestrictionsOnWlan = info.mRestrictionsOnWlan; 148 mSignalStrength = info.mSignalStrength; 149 mSignalQuality = info.mSignalQuality; 150 mSignalNoise = info.mSignalNoise; 151 mIwlanSignalStrength = info.mIwlanSignalStrength; 152 mUpdateReason = info.mUpdateReason; 153 mImsCallType = info.mImsCallType; 154 mImsCallQuality = info.mImsCallQuality; 155 mSlotIndex = info.mSlotIndex; 156 } 157 158 /** 159 * Write the atom information to be recorded to the builder according to the type in order. 160 * 161 * @param builder Builder class for StatsEvent Builder object. 162 */ 163 @Override build(StatsEvent.Builder builder)164 public void build(StatsEvent.Builder builder) { 165 builder.writeInt(mNetCapability); // atom #1 166 builder.writeInt(mFirstQualifiedRat); // atom #2 167 builder.writeInt(mSecondQualifiedRat); // atom #3 168 builder.writeInt(mCurrentTransportType); // atom #4 169 builder.writeBoolean(mWfcEnabled); // atom #5 170 builder.writeInt(mWfcMode); // atom #6 171 builder.writeInt(mCellularNetworkType); // atom #7 172 builder.writeInt(mIwlanNetworkType); // atom #8 173 builder.writeInt(mRestrictionsOnWwan); // atom #9 174 builder.writeInt(mRestrictionsOnWlan); // atom #10 175 builder.writeInt(mSignalStrength); // atom #11 176 builder.writeInt(mSignalQuality); // atom #12 177 builder.writeInt(mSignalNoise); // atom #13 178 builder.writeInt(mIwlanSignalStrength); // atom #14 179 builder.writeInt(mUpdateReason); // atom #15 180 builder.writeInt(mImsCallType); // atom #16 181 builder.writeInt(mImsCallQuality); // atom #17 182 builder.writeInt(mSlotIndex); // atom #18 183 } 184 185 /** Return atom id defined in proto. */ 186 @Override getStatsId()187 public int getStatsId() { 188 return QnsStatsLog.QUALIFIED_RAT_LIST_CHANGED; 189 } 190 191 /** Return copy of the AtomsQualifiedRatListChangedInfo */ 192 @Override copy()193 public AtomsPushed copy() { 194 return new AtomsQualifiedRatListChangedInfo(this); 195 } 196 getNetCapability()197 public int getNetCapability() { 198 return mNetCapability; 199 } 200 setNetCapability(int netCapability)201 public void setNetCapability(int netCapability) { 202 mNetCapability = netCapability; 203 } 204 getFirstQualifiedRat()205 public int getFirstQualifiedRat() { 206 return mFirstQualifiedRat; 207 } 208 setFirstQualifiedRat(int firstQualifiedRat)209 public void setFirstQualifiedRat(int firstQualifiedRat) { 210 mFirstQualifiedRat = firstQualifiedRat; 211 } 212 getSecondQualifiedRat()213 public int getSecondQualifiedRat() { 214 return mSecondQualifiedRat; 215 } 216 setSecondQualifiedRat(int secondQualifiedRat)217 public void setSecondQualifiedRat(int secondQualifiedRat) { 218 mSecondQualifiedRat = secondQualifiedRat; 219 } 220 getCurrentTransportType()221 public int getCurrentTransportType() { 222 return mCurrentTransportType; 223 } 224 setCurrentTransportType(int currentTransportType)225 public void setCurrentTransportType(int currentTransportType) { 226 mCurrentTransportType = currentTransportType; 227 } 228 getWfcEnabled()229 public boolean getWfcEnabled() { 230 return mWfcEnabled; 231 } 232 setWfcEnabled(boolean wfcEnabled)233 public void setWfcEnabled(boolean wfcEnabled) { 234 mWfcEnabled = wfcEnabled; 235 } 236 getWfcMode()237 public int getWfcMode() { 238 return mWfcMode; 239 } 240 setWfcMode(int wfcMode)241 public void setWfcMode(int wfcMode) { 242 mWfcMode = wfcMode; 243 } 244 getCellularNetworkType()245 public int getCellularNetworkType() { 246 return mCellularNetworkType; 247 } 248 setCellularNetworkType(int cellularNetworkType)249 public void setCellularNetworkType(int cellularNetworkType) { 250 mCellularNetworkType = cellularNetworkType; 251 } 252 getIwlanNetworkType()253 public int getIwlanNetworkType() { 254 return mIwlanNetworkType; 255 } 256 setIwlanNetworkType(int iwlanNetworkType)257 public void setIwlanNetworkType(int iwlanNetworkType) { 258 mIwlanNetworkType = iwlanNetworkType; 259 } 260 getRestrictionsOnWwan()261 public int getRestrictionsOnWwan() { 262 return mRestrictionsOnWwan; 263 } 264 setRestrictionsOnWwan(int restrictionsOnWwan)265 public void setRestrictionsOnWwan(int restrictionsOnWwan) { 266 mRestrictionsOnWwan = restrictionsOnWwan; 267 } 268 getRestrictionsOnWlan()269 public int getRestrictionsOnWlan() { 270 return mRestrictionsOnWlan; 271 } 272 setRestrictionsOnWlan(int restrictionsOnWlan)273 public void setRestrictionsOnWlan(int restrictionsOnWlan) { 274 mRestrictionsOnWlan = restrictionsOnWlan; 275 } 276 getSignalStrength()277 public int getSignalStrength() { 278 return mSignalStrength; 279 } 280 setSignalStrength(int signalStrength)281 public void setSignalStrength(int signalStrength) { 282 mSignalStrength = signalStrength; 283 } 284 getSignalQuality()285 public int getSignalQuality() { 286 return mSignalQuality; 287 } 288 setSignalQuality(int signalQuality)289 public void setSignalQuality(int signalQuality) { 290 mSignalQuality = signalQuality; 291 } 292 getSignalNoise()293 public int getSignalNoise() { 294 return mSignalNoise; 295 } 296 setSignalNoise(int signalNoise)297 public void setSignalNoise(int signalNoise) { 298 mSignalNoise = signalNoise; 299 } 300 getIwlanSignalStrength()301 public int getIwlanSignalStrength() { 302 return mIwlanSignalStrength; 303 } 304 setIwlanSignalStrength(int iwlanSignalStrength)305 public void setIwlanSignalStrength(int iwlanSignalStrength) { 306 mIwlanSignalStrength = iwlanSignalStrength; 307 } 308 getUpdateReason()309 public int getUpdateReason() { 310 return mUpdateReason; 311 } 312 setUpdateReason(int updateReason)313 public void setUpdateReason(int updateReason) { 314 mUpdateReason = updateReason; 315 } 316 getImsCallType()317 public int getImsCallType() { 318 return mImsCallType; 319 } 320 setImsCallType(int imsCallType)321 public void setImsCallType(int imsCallType) { 322 mImsCallType = imsCallType; 323 } 324 getImsCallQuality()325 public int getImsCallQuality() { 326 return mImsCallQuality; 327 } 328 setImsCallQuality(int imsCallQuality)329 public void setImsCallQuality(int imsCallQuality) { 330 mImsCallQuality = imsCallQuality; 331 } 332 getSlotIndex()333 public int getSlotIndex() { 334 return mSlotIndex; 335 } 336 setSlotIndex(int slotIndex)337 public void setSlotIndex(int slotIndex) { 338 mSlotIndex = slotIndex; 339 } 340 341 @Override toString()342 public String toString() { 343 return "AtomsQualifiedRatListChangedInfo{" 344 + "mNetCapability=" 345 + mNetCapability 346 + ", mFirstQualifiedRat=" 347 + mFirstQualifiedRat 348 + ", mSecondQualifiedRat=" 349 + mSecondQualifiedRat 350 + ", mCurrentTransportType=" 351 + mCurrentTransportType 352 + ", mWfcEnabled=" 353 + mWfcEnabled 354 + ", mWfcMode=" 355 + mWfcMode 356 + ", mCellularNetworkType=" 357 + mCellularNetworkType 358 + ", mIwlanNetworkType=" 359 + mIwlanNetworkType 360 + ", mRestrictionsOnWwan=" 361 + mRestrictionsOnWwan 362 + ", mRestrictionsOnWlan=" 363 + mRestrictionsOnWlan 364 + ", mSignalStrength=" 365 + mSignalStrength 366 + ", mSignalQuality=" 367 + mSignalQuality 368 + ", mSignalNoise=" 369 + mSignalNoise 370 + ", mIwlanSignalStrength=" 371 + mIwlanSignalStrength 372 + ", mUpdateReason=" 373 + mUpdateReason 374 + ", mImsCallType=" 375 + mImsCallType 376 + ", mImsCallQuality=" 377 + mImsCallQuality 378 + ", mSlotIndex=" 379 + mSlotIndex 380 + '}'; 381 } 382 383 @Override equals(Object o)384 public boolean equals(Object o) { 385 if (this == o) return true; 386 if (!(o instanceof AtomsQualifiedRatListChangedInfo)) return false; 387 AtomsQualifiedRatListChangedInfo that = (AtomsQualifiedRatListChangedInfo) o; 388 return mNetCapability == that.mNetCapability 389 && mFirstQualifiedRat == that.mFirstQualifiedRat 390 && mSecondQualifiedRat == that.mSecondQualifiedRat 391 && mCurrentTransportType == that.mCurrentTransportType 392 && mWfcEnabled == that.mWfcEnabled 393 && mWfcMode == that.mWfcMode 394 && mCellularNetworkType == that.mCellularNetworkType 395 && mIwlanNetworkType == that.mIwlanNetworkType 396 && mRestrictionsOnWwan == that.mRestrictionsOnWwan 397 && mRestrictionsOnWlan == that.mRestrictionsOnWlan 398 && mSignalStrength == that.mSignalStrength 399 && mSignalQuality == that.mSignalQuality 400 && mSignalNoise == that.mSignalNoise 401 && mIwlanSignalStrength == that.mIwlanSignalStrength 402 && mUpdateReason == that.mUpdateReason 403 && mImsCallType == that.mImsCallType 404 && mImsCallQuality == that.mImsCallQuality 405 && mSlotIndex == that.mSlotIndex; 406 } 407 408 @Override hashCode()409 public int hashCode() { 410 return Objects.hash( 411 mNetCapability, 412 mFirstQualifiedRat, 413 mSecondQualifiedRat, 414 mCurrentTransportType, 415 mWfcEnabled, 416 mWfcMode, 417 mCellularNetworkType, 418 mIwlanNetworkType, 419 mRestrictionsOnWwan, 420 mRestrictionsOnWlan, 421 mSignalStrength, 422 mSignalQuality, 423 mSignalNoise, 424 mIwlanSignalStrength, 425 mUpdateReason, 426 mImsCallType, 427 mImsCallQuality, 428 mSlotIndex); 429 } 430 } 431