1 /* 2 * Copyright (C) 2023 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.internal.telephony.metrics; 18 19 import static android.telephony.TelephonyManager.UNKNOWN_CARRIER_ID; 20 import static android.telephony.satellite.NtnSignalStrength.NTN_SIGNAL_STRENGTH_NONE; 21 22 import static com.android.internal.telephony.satellite.SatelliteConstants.TRIGGERING_EVENT_UNKNOWN; 23 24 import android.telephony.satellite.NtnSignalStrength; 25 import android.telephony.satellite.SatelliteManager; 26 27 import com.android.internal.telephony.PhoneFactory; 28 import com.android.internal.telephony.nano.PersistAtomsProto.CarrierRoamingSatelliteControllerStats; 29 import com.android.internal.telephony.nano.PersistAtomsProto.CarrierRoamingSatelliteSession; 30 import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteAccessController; 31 import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteConfigUpdater; 32 import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteController; 33 import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteEntitlement; 34 import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteIncomingDatagram; 35 import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteOutgoingDatagram; 36 import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteProvision; 37 import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteSession; 38 import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteSosMessageRecommender; 39 import com.android.internal.telephony.satellite.SatelliteConstants; 40 import com.android.telephony.Rlog; 41 42 import java.util.Arrays; 43 import java.util.Objects; 44 import java.util.Optional; 45 46 /** Tracks Satellite metrics for each phone */ 47 public class SatelliteStats { 48 private static final String TAG = SatelliteStats.class.getSimpleName(); 49 private static final boolean DBG = false; 50 51 private final PersistAtomsStorage mAtomsStorage = 52 PhoneFactory.getMetricsCollector().getAtomsStorage(); 53 54 private static SatelliteStats sInstance = null; 55 56 /** Gets the instance of SatelliteStats */ getInstance()57 public static SatelliteStats getInstance() { 58 if (sInstance == null) { 59 Rlog.d(TAG, "SatelliteStats created."); 60 synchronized (SatelliteStats.class) { 61 sInstance = new SatelliteStats(); 62 } 63 } 64 return sInstance; 65 } 66 67 /** 68 * A data class to contain whole component of {@link SatelliteController) atom. 69 * Refer to {@link #onSatelliteControllerMetrics(SatelliteControllerParams)}. 70 */ 71 public class SatelliteControllerParams { 72 private final int mCountOfSatelliteServiceEnablementsSuccess; 73 private final int mCountOfSatelliteServiceEnablementsFail; 74 private final int mCountOfOutgoingDatagramSuccess; 75 private final int mCountOfOutgoingDatagramFail; 76 private final int mCountOfIncomingDatagramSuccess; 77 private final int mCountOfIncomingDatagramFail; 78 private final int mCountOfDatagramTypeSosSmsSuccess; 79 private final int mCountOfDatagramTypeSosSmsFail; 80 private final int mCountOfDatagramTypeLocationSharingSuccess; 81 private final int mCountOfDatagramTypeLocationSharingFail; 82 private final int mCountOfProvisionSuccess; 83 private final int mCountOfProvisionFail; 84 private final int mCountOfDeprovisionSuccess; 85 private final int mCountOfDeprovisionFail; 86 private final int mTotalServiceUptimeSec; 87 private final int mTotalBatteryConsumptionPercent; 88 private final int mTotalBatteryChargedTimeSec; 89 private final int mCountOfDemoModeSatelliteServiceEnablementsSuccess; 90 private final int mCountOfDemoModeSatelliteServiceEnablementsFail; 91 private final int mCountOfDemoModeOutgoingDatagramSuccess; 92 private final int mCountOfDemoModeOutgoingDatagramFail; 93 private final int mCountOfDemoModeIncomingDatagramSuccess; 94 private final int mCountOfDemoModeIncomingDatagramFail; 95 private final int mCountOfDatagramTypeKeepAliveSuccess; 96 private final int mCountOfDatagramTypeKeepAliveFail; 97 private final int mCountOfAllowedSatelliteAccess; 98 private final int mCountOfDisallowedSatelliteAccess; 99 private final int mCountOfSatelliteAccessCheckFail; 100 private static boolean sIsProvisioned; 101 private static int sCarrierId = UNKNOWN_CARRIER_ID; 102 private final int mCountOfSatelliteAllowedStateChangedEvents; 103 private final int mCountOfSuccessfulLocationQueries; 104 private final int mCountOfFailedLocationQueries; 105 private final int mCountOfP2PSmsAvailableNotificationShown; 106 private final int mCountOfP2PSmsAvailableNotificationRemoved; 107 private static boolean sIsNtnOnlyCarrier; 108 private static int sVersionOfSatelliteAccessConfig; 109 private final int mCountOfIncomingDatagramTypeSosSmsSuccess; 110 private final int mCountOfIncomingDatagramTypeSosSmsFail; 111 private final int mCountOfOutgoingDatagramTypeSmsSuccess; 112 private final int mCountOfOutgoingDatagramTypeSmsFail; 113 private final int mCountOfIncomingDatagramTypeSmsSuccess; 114 private final int mCountOfIncomingDatagramTypeSmsFail; 115 SatelliteControllerParams(Builder builder)116 private SatelliteControllerParams(Builder builder) { 117 this.mCountOfSatelliteServiceEnablementsSuccess = 118 builder.mCountOfSatelliteServiceEnablementsSuccess; 119 this.mCountOfSatelliteServiceEnablementsFail = 120 builder.mCountOfSatelliteServiceEnablementsFail; 121 this.mCountOfOutgoingDatagramSuccess = builder.mCountOfOutgoingDatagramSuccess; 122 this.mCountOfOutgoingDatagramFail = builder.mCountOfOutgoingDatagramFail; 123 this.mCountOfIncomingDatagramSuccess = builder.mCountOfIncomingDatagramSuccess; 124 this.mCountOfIncomingDatagramFail = builder.mCountOfIncomingDatagramFail; 125 this.mCountOfDatagramTypeSosSmsSuccess = builder.mCountOfDatagramTypeSosSmsSuccess; 126 this.mCountOfDatagramTypeSosSmsFail = builder.mCountOfDatagramTypeSosSmsFail; 127 this.mCountOfDatagramTypeLocationSharingSuccess = 128 builder.mCountOfDatagramTypeLocationSharingSuccess; 129 this.mCountOfDatagramTypeLocationSharingFail = 130 builder.mCountOfDatagramTypeLocationSharingFail; 131 this.mCountOfProvisionSuccess = builder.mCountOfProvisionSuccess; 132 this.mCountOfProvisionFail = builder.mCountOfProvisionFail; 133 this.mCountOfDeprovisionSuccess = builder.mCountOfDeprovisionSuccess; 134 this.mCountOfDeprovisionFail = builder.mCountOfDeprovisionFail; 135 this.mTotalServiceUptimeSec = builder.mTotalServiceUptimeSec; 136 this.mTotalBatteryConsumptionPercent = builder.mTotalBatteryConsumptionPercent; 137 this.mTotalBatteryChargedTimeSec = builder.mTotalBatteryChargedTimeSec; 138 this.mCountOfDemoModeSatelliteServiceEnablementsSuccess = 139 builder.mCountOfDemoModeSatelliteServiceEnablementsSuccess; 140 this.mCountOfDemoModeSatelliteServiceEnablementsFail = 141 builder.mCountOfDemoModeSatelliteServiceEnablementsFail; 142 this.mCountOfDemoModeOutgoingDatagramSuccess = 143 builder.mCountOfDemoModeOutgoingDatagramSuccess; 144 this.mCountOfDemoModeOutgoingDatagramFail = 145 builder.mCountOfDemoModeOutgoingDatagramFail; 146 this.mCountOfDemoModeIncomingDatagramSuccess = 147 builder.mCountOfDemoModeIncomingDatagramSuccess; 148 this.mCountOfDemoModeIncomingDatagramFail = 149 builder.mCountOfDemoModeIncomingDatagramFail; 150 this.mCountOfDatagramTypeKeepAliveSuccess = 151 builder.mCountOfDatagramTypeKeepAliveSuccess; 152 this.mCountOfDatagramTypeKeepAliveFail = 153 builder.mCountOfDatagramTypeKeepAliveFail; 154 this.mCountOfAllowedSatelliteAccess = 155 builder.mCountOfAllowedSatelliteAccess; 156 this.mCountOfDisallowedSatelliteAccess = 157 builder.mCountOfDisallowedSatelliteAccess; 158 this.mCountOfSatelliteAccessCheckFail = 159 builder.mCountOfSatelliteAccessCheckFail; 160 161 // isProvisioned value should be updated only when it is meaningful. 162 if (builder.mIsProvisioned.isPresent()) { 163 this.sIsProvisioned = builder.mIsProvisioned.get(); 164 } 165 166 // Carrier ID value should be updated only when it is meaningful. 167 if (builder.mCarrierId.isPresent()) { 168 this.sCarrierId = builder.mCarrierId.get(); 169 } 170 171 this.mCountOfSatelliteAllowedStateChangedEvents = 172 builder.mCountOfSatelliteAllowedStateChangedEvents; 173 this.mCountOfSuccessfulLocationQueries = 174 builder.mCountOfSuccessfulLocationQueries; 175 this.mCountOfFailedLocationQueries = 176 builder.mCountOfFailedLocationQueries; 177 this.mCountOfP2PSmsAvailableNotificationShown = 178 builder.mCountOfP2PSmsAvailableNotificationShown; 179 this.mCountOfP2PSmsAvailableNotificationRemoved = 180 builder.mCountOfP2PSmsAvailableNotificationRemoved; 181 182 // Ntn only carrier value should be updated only when it is meaningful. 183 if (builder.mIsNtnOnlyCarrier.isPresent()) { 184 this.sIsNtnOnlyCarrier = builder.mIsNtnOnlyCarrier.get(); 185 } 186 // version satellite access config value should be updated only when it is meaningful. 187 if (builder.mVersionOfSatelliteAccessConfig.isPresent()) { 188 this.sVersionOfSatelliteAccessConfig = 189 builder.mVersionOfSatelliteAccessConfig.get(); 190 } 191 192 this.mCountOfIncomingDatagramTypeSosSmsSuccess = 193 builder.mCountOfIncomingDatagramTypeSosSmsSuccess; 194 this.mCountOfIncomingDatagramTypeSosSmsFail = 195 builder.mCountOfIncomingDatagramTypeSosSmsFail; 196 this.mCountOfOutgoingDatagramTypeSmsSuccess = 197 builder.mCountOfOutgoingDatagramTypeSmsSuccess; 198 this.mCountOfOutgoingDatagramTypeSmsFail = builder.mCountOfOutgoingDatagramTypeSmsFail; 199 this.mCountOfIncomingDatagramTypeSmsSuccess = 200 builder.mCountOfIncomingDatagramTypeSmsSuccess; 201 this.mCountOfIncomingDatagramTypeSmsFail = builder.mCountOfIncomingDatagramTypeSmsFail; 202 } 203 getCountOfSatelliteServiceEnablementsSuccess()204 public int getCountOfSatelliteServiceEnablementsSuccess() { 205 return mCountOfSatelliteServiceEnablementsSuccess; 206 } 207 getCountOfSatelliteServiceEnablementsFail()208 public int getCountOfSatelliteServiceEnablementsFail() { 209 return mCountOfSatelliteServiceEnablementsFail; 210 } 211 getCountOfOutgoingDatagramSuccess()212 public int getCountOfOutgoingDatagramSuccess() { 213 return mCountOfOutgoingDatagramSuccess; 214 } 215 getCountOfOutgoingDatagramFail()216 public int getCountOfOutgoingDatagramFail() { 217 return mCountOfOutgoingDatagramFail; 218 } 219 getCountOfIncomingDatagramSuccess()220 public int getCountOfIncomingDatagramSuccess() { 221 return mCountOfIncomingDatagramSuccess; 222 } 223 getCountOfIncomingDatagramFail()224 public int getCountOfIncomingDatagramFail() { 225 return mCountOfIncomingDatagramFail; 226 } 227 getCountOfDatagramTypeSosSmsSuccess()228 public int getCountOfDatagramTypeSosSmsSuccess() { 229 return mCountOfDatagramTypeSosSmsSuccess; 230 } 231 getCountOfDatagramTypeSosSmsFail()232 public int getCountOfDatagramTypeSosSmsFail() { 233 return mCountOfDatagramTypeSosSmsFail; 234 } 235 getCountOfDatagramTypeLocationSharingSuccess()236 public int getCountOfDatagramTypeLocationSharingSuccess() { 237 return mCountOfDatagramTypeLocationSharingSuccess; 238 } 239 getCountOfDatagramTypeLocationSharingFail()240 public int getCountOfDatagramTypeLocationSharingFail() { 241 return mCountOfDatagramTypeLocationSharingFail; 242 } 243 getCountOfProvisionSuccess()244 public int getCountOfProvisionSuccess() { 245 return mCountOfProvisionSuccess; 246 } 247 getCountOfProvisionFail()248 public int getCountOfProvisionFail() { 249 return mCountOfProvisionFail; 250 } 251 getCountOfDeprovisionSuccess()252 public int getCountOfDeprovisionSuccess() { 253 return mCountOfDeprovisionSuccess; 254 } 255 getCountOfDeprovisionFail()256 public int getCountOfDeprovisionFail() { 257 return mCountOfDeprovisionFail; 258 } 259 getTotalServiceUptimeSec()260 public int getTotalServiceUptimeSec() { 261 return mTotalServiceUptimeSec; 262 } 263 getTotalBatteryConsumptionPercent()264 public int getTotalBatteryConsumptionPercent() { 265 return mTotalBatteryConsumptionPercent; 266 } 267 getTotalBatteryChargedTimeSec()268 public int getTotalBatteryChargedTimeSec() { 269 return mTotalBatteryChargedTimeSec; 270 } 271 getCountOfDemoModeSatelliteServiceEnablementsSuccess()272 public int getCountOfDemoModeSatelliteServiceEnablementsSuccess() { 273 return mCountOfDemoModeSatelliteServiceEnablementsSuccess; 274 } 275 getCountOfDemoModeSatelliteServiceEnablementsFail()276 public int getCountOfDemoModeSatelliteServiceEnablementsFail() { 277 return mCountOfDemoModeSatelliteServiceEnablementsFail; 278 } 279 getCountOfDemoModeOutgoingDatagramSuccess()280 public int getCountOfDemoModeOutgoingDatagramSuccess() { 281 return mCountOfDemoModeOutgoingDatagramSuccess; 282 } 283 getCountOfDemoModeOutgoingDatagramFail()284 public int getCountOfDemoModeOutgoingDatagramFail() { 285 return mCountOfDemoModeOutgoingDatagramFail; 286 } 287 getCountOfDemoModeIncomingDatagramSuccess()288 public int getCountOfDemoModeIncomingDatagramSuccess() { 289 return mCountOfDemoModeIncomingDatagramSuccess; 290 } 291 getCountOfDemoModeIncomingDatagramFail()292 public int getCountOfDemoModeIncomingDatagramFail() { 293 return mCountOfDemoModeIncomingDatagramFail; 294 } 295 getCountOfDatagramTypeKeepAliveSuccess()296 public int getCountOfDatagramTypeKeepAliveSuccess() { 297 return mCountOfDatagramTypeKeepAliveSuccess; 298 } 299 getCountOfDatagramTypeKeepAliveFail()300 public int getCountOfDatagramTypeKeepAliveFail() { 301 return mCountOfDatagramTypeKeepAliveFail; 302 } 303 getCountOfAllowedSatelliteAccess()304 public int getCountOfAllowedSatelliteAccess() { 305 return mCountOfAllowedSatelliteAccess; 306 } 307 getCountOfDisallowedSatelliteAccess()308 public int getCountOfDisallowedSatelliteAccess() { 309 return mCountOfDisallowedSatelliteAccess; 310 } 311 getCountOfSatelliteAccessCheckFail()312 public int getCountOfSatelliteAccessCheckFail() { 313 return mCountOfSatelliteAccessCheckFail; 314 } 315 isProvisioned()316 public static boolean isProvisioned() { 317 return sIsProvisioned; 318 } 319 getCarrierId()320 public static int getCarrierId() { 321 return sCarrierId; 322 } 323 getCountOfSatelliteAllowedStateChangedEvents()324 public int getCountOfSatelliteAllowedStateChangedEvents() { 325 return mCountOfSatelliteAllowedStateChangedEvents; 326 } 327 getCountOfSuccessfulLocationQueries()328 public int getCountOfSuccessfulLocationQueries() { 329 return mCountOfSuccessfulLocationQueries; 330 } 331 getCountOfFailedLocationQueries()332 public int getCountOfFailedLocationQueries() { 333 return mCountOfFailedLocationQueries; 334 } 335 getCountOfP2PSmsAvailableNotificationShown()336 public int getCountOfP2PSmsAvailableNotificationShown() { 337 return mCountOfP2PSmsAvailableNotificationShown; 338 } 339 getCountOfP2PSmsAvailableNotificationRemoved()340 public int getCountOfP2PSmsAvailableNotificationRemoved() { 341 return mCountOfP2PSmsAvailableNotificationRemoved; 342 } 343 isNtnOnlyCarrier()344 public static boolean isNtnOnlyCarrier() { 345 return sIsNtnOnlyCarrier; 346 } 347 getVersionSatelliteAccessConfig()348 public static int getVersionSatelliteAccessConfig() { 349 return sVersionOfSatelliteAccessConfig; 350 } 351 getCountOfIncomingDatagramTypeSosSmsSuccess()352 public int getCountOfIncomingDatagramTypeSosSmsSuccess() { 353 return mCountOfIncomingDatagramTypeSosSmsSuccess; 354 } 355 getCountOfIncomingDatagramTypeSosSmsFail()356 public int getCountOfIncomingDatagramTypeSosSmsFail() { 357 return mCountOfIncomingDatagramTypeSosSmsFail; 358 } 359 getCountOfOutgoingDatagramTypeSmsSuccess()360 public int getCountOfOutgoingDatagramTypeSmsSuccess() { 361 return mCountOfOutgoingDatagramTypeSmsSuccess; 362 } 363 getCountOfOutgoingDatagramTypeSmsFail()364 public int getCountOfOutgoingDatagramTypeSmsFail() { 365 return mCountOfOutgoingDatagramTypeSmsFail; 366 } 367 getCountOfIncomingDatagramTypeSmsSuccess()368 public int getCountOfIncomingDatagramTypeSmsSuccess() { 369 return mCountOfIncomingDatagramTypeSmsSuccess; 370 } 371 getCountOfIncomingDatagramTypeSmsFail()372 public int getCountOfIncomingDatagramTypeSmsFail() { 373 return mCountOfIncomingDatagramTypeSmsFail; 374 } 375 376 /** 377 * A builder class to create {@link SatelliteControllerParams} data structure class 378 */ 379 public static class Builder { 380 private int mCountOfSatelliteServiceEnablementsSuccess = 0; 381 private int mCountOfSatelliteServiceEnablementsFail = 0; 382 private int mCountOfOutgoingDatagramSuccess = 0; 383 private int mCountOfOutgoingDatagramFail = 0; 384 private int mCountOfIncomingDatagramSuccess = 0; 385 private int mCountOfIncomingDatagramFail = 0; 386 private int mCountOfDatagramTypeSosSmsSuccess = 0; 387 private int mCountOfDatagramTypeSosSmsFail = 0; 388 private int mCountOfDatagramTypeLocationSharingSuccess = 0; 389 private int mCountOfDatagramTypeLocationSharingFail = 0; 390 private int mCountOfProvisionSuccess; 391 private int mCountOfProvisionFail; 392 private int mCountOfDeprovisionSuccess; 393 private int mCountOfDeprovisionFail; 394 private int mTotalServiceUptimeSec = 0; 395 private int mTotalBatteryConsumptionPercent = 0; 396 private int mTotalBatteryChargedTimeSec = 0; 397 private int mCountOfDemoModeSatelliteServiceEnablementsSuccess = 0; 398 private int mCountOfDemoModeSatelliteServiceEnablementsFail = 0; 399 private int mCountOfDemoModeOutgoingDatagramSuccess = 0; 400 private int mCountOfDemoModeOutgoingDatagramFail = 0; 401 private int mCountOfDemoModeIncomingDatagramSuccess = 0; 402 private int mCountOfDemoModeIncomingDatagramFail = 0; 403 private int mCountOfDatagramTypeKeepAliveSuccess = 0; 404 private int mCountOfDatagramTypeKeepAliveFail = 0; 405 private int mCountOfAllowedSatelliteAccess = 0; 406 private int mCountOfDisallowedSatelliteAccess = 0; 407 private int mCountOfSatelliteAccessCheckFail = 0; 408 private Optional<Boolean> mIsProvisioned = Optional.empty(); 409 private Optional<Integer> mCarrierId = Optional.empty(); 410 private int mCountOfSatelliteAllowedStateChangedEvents = 0; 411 private int mCountOfSuccessfulLocationQueries = 0; 412 private int mCountOfFailedLocationQueries = 0; 413 private int mCountOfP2PSmsAvailableNotificationShown = 0; 414 private int mCountOfP2PSmsAvailableNotificationRemoved = 0; 415 private Optional<Boolean> mIsNtnOnlyCarrier = Optional.empty(); 416 private Optional<Integer> mVersionOfSatelliteAccessConfig = Optional.empty(); 417 private int mCountOfIncomingDatagramTypeSosSmsSuccess; 418 private int mCountOfIncomingDatagramTypeSosSmsFail; 419 private int mCountOfOutgoingDatagramTypeSmsSuccess; 420 private int mCountOfOutgoingDatagramTypeSmsFail; 421 private int mCountOfIncomingDatagramTypeSmsSuccess; 422 private int mCountOfIncomingDatagramTypeSmsFail; 423 424 /** 425 * Sets countOfSatelliteServiceEnablementsSuccess value of {@link SatelliteController} 426 * atom then returns Builder class 427 */ setCountOfSatelliteServiceEnablementsSuccess( int countOfSatelliteServiceEnablementsSuccess)428 public Builder setCountOfSatelliteServiceEnablementsSuccess( 429 int countOfSatelliteServiceEnablementsSuccess) { 430 this.mCountOfSatelliteServiceEnablementsSuccess = 431 countOfSatelliteServiceEnablementsSuccess; 432 return this; 433 } 434 435 /** 436 * Sets countOfSatelliteServiceEnablementsFail value of {@link SatelliteController} atom 437 * then returns Builder class 438 */ setCountOfSatelliteServiceEnablementsFail( int countOfSatelliteServiceEnablementsFail)439 public Builder setCountOfSatelliteServiceEnablementsFail( 440 int countOfSatelliteServiceEnablementsFail) { 441 this.mCountOfSatelliteServiceEnablementsFail = 442 countOfSatelliteServiceEnablementsFail; 443 return this; 444 } 445 446 /** 447 * Sets countOfOutgoingDatagramSuccess value of {@link SatelliteController} atom then 448 * returns Builder class 449 */ setCountOfOutgoingDatagramSuccess(int countOfOutgoingDatagramSuccess)450 public Builder setCountOfOutgoingDatagramSuccess(int countOfOutgoingDatagramSuccess) { 451 this.mCountOfOutgoingDatagramSuccess = countOfOutgoingDatagramSuccess; 452 return this; 453 } 454 455 /** 456 * Sets countOfOutgoingDatagramFail value of {@link SatelliteController} atom then 457 * returns Builder class 458 */ setCountOfOutgoingDatagramFail(int countOfOutgoingDatagramFail)459 public Builder setCountOfOutgoingDatagramFail(int countOfOutgoingDatagramFail) { 460 this.mCountOfOutgoingDatagramFail = countOfOutgoingDatagramFail; 461 return this; 462 } 463 464 /** 465 * Sets countOfIncomingDatagramSuccess value of {@link SatelliteController} atom then 466 * returns Builder class 467 */ setCountOfIncomingDatagramSuccess(int countOfIncomingDatagramSuccess)468 public Builder setCountOfIncomingDatagramSuccess(int countOfIncomingDatagramSuccess) { 469 this.mCountOfIncomingDatagramSuccess = countOfIncomingDatagramSuccess; 470 return this; 471 } 472 473 /** 474 * Sets countOfIncomingDatagramFail value of {@link SatelliteController} atom then 475 * returns Builder class 476 */ setCountOfIncomingDatagramFail(int countOfIncomingDatagramFail)477 public Builder setCountOfIncomingDatagramFail(int countOfIncomingDatagramFail) { 478 this.mCountOfIncomingDatagramFail = countOfIncomingDatagramFail; 479 return this; 480 } 481 482 /** 483 * Sets countOfDatagramTypeSosSmsSuccess value of {@link SatelliteController} atom then 484 * returns Builder class 485 */ setCountOfDatagramTypeSosSmsSuccess( int countOfDatagramTypeSosSmsSuccess)486 public Builder setCountOfDatagramTypeSosSmsSuccess( 487 int countOfDatagramTypeSosSmsSuccess) { 488 this.mCountOfDatagramTypeSosSmsSuccess = countOfDatagramTypeSosSmsSuccess; 489 return this; 490 } 491 492 /** 493 * Sets countOfDatagramTypeSosSmsFail value of {@link SatelliteController} atom then 494 * returns Builder class 495 */ setCountOfDatagramTypeSosSmsFail(int countOfDatagramTypeSosSmsFail)496 public Builder setCountOfDatagramTypeSosSmsFail(int countOfDatagramTypeSosSmsFail) { 497 this.mCountOfDatagramTypeSosSmsFail = countOfDatagramTypeSosSmsFail; 498 return this; 499 } 500 501 /** 502 * Sets countOfDatagramTypeLocationSharingSuccess value of {@link SatelliteController} 503 * atom then returns Builder class 504 */ setCountOfDatagramTypeLocationSharingSuccess( int countOfDatagramTypeLocationSharingSuccess)505 public Builder setCountOfDatagramTypeLocationSharingSuccess( 506 int countOfDatagramTypeLocationSharingSuccess) { 507 this.mCountOfDatagramTypeLocationSharingSuccess = 508 countOfDatagramTypeLocationSharingSuccess; 509 return this; 510 } 511 512 /** 513 * Sets countOfDatagramTypeLocationSharingFail value of {@link SatelliteController} 514 * atom then returns Builder class 515 */ setCountOfDatagramTypeLocationSharingFail( int countOfDatagramTypeLocationSharingFail)516 public Builder setCountOfDatagramTypeLocationSharingFail( 517 int countOfDatagramTypeLocationSharingFail) { 518 this.mCountOfDatagramTypeLocationSharingFail = 519 countOfDatagramTypeLocationSharingFail; 520 return this; 521 } 522 523 /** 524 * Sets countOfProvisionSuccess value of {@link SatelliteController} 525 * atom then returns Builder class 526 */ setCountOfProvisionSuccess(int countOfProvisionSuccess)527 public Builder setCountOfProvisionSuccess(int countOfProvisionSuccess) { 528 this.mCountOfProvisionSuccess = countOfProvisionSuccess; 529 return this; 530 } 531 532 /** 533 * Sets countOfProvisionFail value of {@link SatelliteController} 534 * atom then returns Builder class 535 */ setCountOfProvisionFail(int countOfProvisionFail)536 public Builder setCountOfProvisionFail(int countOfProvisionFail) { 537 this.mCountOfProvisionFail = countOfProvisionFail; 538 return this; 539 } 540 541 /** 542 * Sets countOfDeprovisionSuccess value of {@link SatelliteController} 543 * atom then returns Builder class 544 */ setCountOfDeprovisionSuccess(int countOfDeprovisionSuccess)545 public Builder setCountOfDeprovisionSuccess(int countOfDeprovisionSuccess) { 546 this.mCountOfDeprovisionSuccess = countOfDeprovisionSuccess; 547 return this; 548 } 549 550 /** 551 * Sets countOfDeprovisionSuccess value of {@link SatelliteController} 552 * atom then returns Builder class 553 */ setCountOfDeprovisionFail(int countOfDeprovisionFail)554 public Builder setCountOfDeprovisionFail(int countOfDeprovisionFail) { 555 this.mCountOfDeprovisionFail = countOfDeprovisionFail; 556 return this; 557 } 558 559 /** 560 * Sets totalServiceUptimeSec value of {@link SatelliteController} atom then 561 * returns Builder class 562 */ setTotalServiceUptimeSec(int totalServiceUptimeSec)563 public Builder setTotalServiceUptimeSec(int totalServiceUptimeSec) { 564 this.mTotalServiceUptimeSec = totalServiceUptimeSec; 565 return this; 566 } 567 568 /** 569 * Sets totalBatteryConsumptionPercent value of {@link SatelliteController} atom then 570 * returns Builder class 571 */ setTotalBatteryConsumptionPercent(int totalBatteryConsumptionPercent)572 public Builder setTotalBatteryConsumptionPercent(int totalBatteryConsumptionPercent) { 573 this.mTotalBatteryConsumptionPercent = totalBatteryConsumptionPercent; 574 return this; 575 } 576 577 /** 578 * Sets totalBatteryChargedTimeSec value of {@link SatelliteController} atom then 579 * returns Builder class 580 */ setTotalBatteryChargedTimeSec(int totalBatteryChargedTimeSec)581 public Builder setTotalBatteryChargedTimeSec(int totalBatteryChargedTimeSec) { 582 this.mTotalBatteryChargedTimeSec = totalBatteryChargedTimeSec; 583 return this; 584 } 585 586 /** 587 * Sets countOfDemoModeSatelliteServiceEnablementsSuccess value of 588 * {@link SatelliteController} atom then returns Builder class 589 */ setCountOfDemoModeSatelliteServiceEnablementsSuccess( int countOfDemoModeSatelliteServiceEnablementsSuccess)590 public Builder setCountOfDemoModeSatelliteServiceEnablementsSuccess( 591 int countOfDemoModeSatelliteServiceEnablementsSuccess) { 592 this.mCountOfDemoModeSatelliteServiceEnablementsSuccess = 593 countOfDemoModeSatelliteServiceEnablementsSuccess; 594 return this; 595 } 596 597 /** 598 * Sets countOfDemoModeSatelliteServiceEnablementsFail value of 599 * {@link SatelliteController} atom then returns Builder class 600 */ setCountOfDemoModeSatelliteServiceEnablementsFail( int countOfDemoModeSatelliteServiceEnablementsFail)601 public Builder setCountOfDemoModeSatelliteServiceEnablementsFail( 602 int countOfDemoModeSatelliteServiceEnablementsFail) { 603 this.mCountOfDemoModeSatelliteServiceEnablementsFail = 604 countOfDemoModeSatelliteServiceEnablementsFail; 605 return this; 606 } 607 608 /** 609 * Sets countOfDemoModeOutgoingDatagramSuccess value of {@link SatelliteController} atom 610 * then returns Builder class 611 */ setCountOfDemoModeOutgoingDatagramSuccess( int countOfDemoModeOutgoingDatagramSuccess)612 public Builder setCountOfDemoModeOutgoingDatagramSuccess( 613 int countOfDemoModeOutgoingDatagramSuccess) { 614 this.mCountOfDemoModeOutgoingDatagramSuccess = 615 countOfDemoModeOutgoingDatagramSuccess; 616 return this; 617 } 618 619 /** 620 * Sets countOfDemoModeOutgoingDatagramFail value of {@link SatelliteController} atom 621 * then returns Builder class 622 */ setCountOfDemoModeOutgoingDatagramFail( int countOfDemoModeOutgoingDatagramFail)623 public Builder setCountOfDemoModeOutgoingDatagramFail( 624 int countOfDemoModeOutgoingDatagramFail) { 625 this.mCountOfDemoModeOutgoingDatagramFail = countOfDemoModeOutgoingDatagramFail; 626 return this; 627 } 628 629 /** 630 * Sets countOfDemoModeIncomingDatagramSuccess value of {@link SatelliteController} atom 631 * then returns Builder class 632 */ setCountOfDemoModeIncomingDatagramSuccess( int countOfDemoModeIncomingDatagramSuccess)633 public Builder setCountOfDemoModeIncomingDatagramSuccess( 634 int countOfDemoModeIncomingDatagramSuccess) { 635 this.mCountOfDemoModeIncomingDatagramSuccess = 636 countOfDemoModeIncomingDatagramSuccess; 637 return this; 638 } 639 640 /** 641 * Sets countOfDemoModeIncomingDatagramFail value of {@link SatelliteController} atom 642 * then returns Builder class 643 */ setCountOfDemoModeIncomingDatagramFail( int countOfDemoModeIncomingDatagramFail)644 public Builder setCountOfDemoModeIncomingDatagramFail( 645 int countOfDemoModeIncomingDatagramFail) { 646 this.mCountOfDemoModeIncomingDatagramFail = countOfDemoModeIncomingDatagramFail; 647 return this; 648 } 649 650 /** 651 * Sets countOfDatagramTypeKeepAliveSuccess value of {@link SatelliteController} atom 652 * then returns Builder class 653 */ setCountOfDatagramTypeKeepAliveSuccess( int countOfDatagramTypeKeepAliveSuccess)654 public Builder setCountOfDatagramTypeKeepAliveSuccess( 655 int countOfDatagramTypeKeepAliveSuccess) { 656 this.mCountOfDatagramTypeKeepAliveSuccess = countOfDatagramTypeKeepAliveSuccess; 657 return this; 658 } 659 660 /** 661 * Sets countOfDatagramTypeKeepAliveFail value of {@link SatelliteController} atom 662 * then returns Builder class 663 */ setCountOfDatagramTypeKeepAliveFail( int countOfDatagramTypeKeepAliveFail)664 public Builder setCountOfDatagramTypeKeepAliveFail( 665 int countOfDatagramTypeKeepAliveFail) { 666 this.mCountOfDatagramTypeKeepAliveFail = countOfDatagramTypeKeepAliveFail; 667 return this; 668 } 669 670 /** 671 * Sets countOfAllowedSatelliteAccess value of {@link SatelliteController} atom 672 * then returns Builder class 673 */ setCountOfAllowedSatelliteAccess( int countOfAllowedSatelliteAccess)674 public Builder setCountOfAllowedSatelliteAccess( 675 int countOfAllowedSatelliteAccess) { 676 this.mCountOfAllowedSatelliteAccess = 677 countOfAllowedSatelliteAccess; 678 return this; 679 } 680 681 /** 682 * Sets countOfDisallowedSatelliteAccess value of {@link SatelliteController} atom 683 * then returns Builder class 684 */ setCountOfDisallowedSatelliteAccess( int countOfDisallowedSatelliteAccess)685 public Builder setCountOfDisallowedSatelliteAccess( 686 int countOfDisallowedSatelliteAccess) { 687 this.mCountOfDisallowedSatelliteAccess = countOfDisallowedSatelliteAccess; 688 return this; 689 } 690 691 /** 692 * Sets countOfSatelliteAccessCheckFail value of {@link SatelliteController} atom 693 * then returns Builder class 694 */ setCountOfSatelliteAccessCheckFail( int countOfSatelliteAccessCheckFail)695 public Builder setCountOfSatelliteAccessCheckFail( 696 int countOfSatelliteAccessCheckFail) { 697 this.mCountOfSatelliteAccessCheckFail = countOfSatelliteAccessCheckFail; 698 return this; 699 } 700 701 /** 702 * Sets isProvisioned value of {@link SatelliteController} atom 703 * then returns Builder class 704 */ setIsProvisioned(boolean isProvisioned)705 public Builder setIsProvisioned(boolean isProvisioned) { 706 this.mIsProvisioned = Optional.of(isProvisioned); 707 return this; 708 } 709 710 /** 711 * Sets Carrier ID value of {@link SatelliteController} atom 712 * then returns Builder class 713 */ setCarrierId(int carrierId)714 public Builder setCarrierId(int carrierId) { 715 this.mCarrierId = Optional.of(carrierId); 716 return this; 717 } 718 719 /** 720 * Sets countOfSatelliteAllowedStateChangedEvents value of {@link SatelliteController} 721 * atom 722 * then returns Builder class 723 */ setCountOfSatelliteAllowedStateChangedEvents( int countOfSatelliteAllowedStateChangedEvents)724 public Builder setCountOfSatelliteAllowedStateChangedEvents( 725 int countOfSatelliteAllowedStateChangedEvents) { 726 this.mCountOfSatelliteAllowedStateChangedEvents = 727 countOfSatelliteAllowedStateChangedEvents; 728 return this; 729 } 730 731 /** 732 * Sets countOfSuccessfulLocationQueries value of {@link SatelliteController} atom 733 * then returns Builder class 734 */ setCountOfSuccessfulLocationQueries( int countOfSuccessfulLocationQueries)735 public Builder setCountOfSuccessfulLocationQueries( 736 int countOfSuccessfulLocationQueries) { 737 this.mCountOfSuccessfulLocationQueries = countOfSuccessfulLocationQueries; 738 return this; 739 } 740 741 /** 742 * Sets countOfFailedLocationQueries value of {@link SatelliteController} atom 743 * then returns Builder class 744 */ setCountOfFailedLocationQueries(int countOfFailedLocationQueries)745 public Builder setCountOfFailedLocationQueries(int countOfFailedLocationQueries) { 746 this.mCountOfFailedLocationQueries = countOfFailedLocationQueries; 747 return this; 748 } 749 750 /** 751 * Sets countOfP2PSmsAvailableNotificationShown value of {@link SatelliteController} 752 * atom then returns Builder class 753 */ setCountOfP2PSmsAvailableNotificationShown( int countOfP2PSmsAvailableNotificationShown)754 public Builder setCountOfP2PSmsAvailableNotificationShown( 755 int countOfP2PSmsAvailableNotificationShown) { 756 this.mCountOfP2PSmsAvailableNotificationShown = 757 countOfP2PSmsAvailableNotificationShown; 758 return this; 759 } 760 761 /** 762 * Sets countOfP2PSmsAvailableNotificationRemoved value of {@link SatelliteController} 763 * atom then returns Builder class 764 */ setCountOfP2PSmsAvailableNotificationRemoved( int countOfP2PSmsAvailableNotificationRemoved)765 public Builder setCountOfP2PSmsAvailableNotificationRemoved( 766 int countOfP2PSmsAvailableNotificationRemoved) { 767 this.mCountOfP2PSmsAvailableNotificationRemoved = 768 countOfP2PSmsAvailableNotificationRemoved; 769 return this; 770 } 771 772 /** 773 * Sets isNtnOnlyCarrier value of {@link SatelliteController} atom 774 * then returns Builder class 775 */ setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier)776 public Builder setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier) { 777 this.mIsNtnOnlyCarrier = Optional.of(isNtnOnlyCarrier); 778 return this; 779 } 780 781 /** 782 * Sets versionOfSatelliteAccessConfig value of {@link SatelliteController} atom 783 * then returns Builder class 784 */ setVersionOfSatelliteAccessControl(int version)785 public Builder setVersionOfSatelliteAccessControl(int version) { 786 this.mVersionOfSatelliteAccessConfig = Optional.of(version); 787 return this; 788 } 789 790 /** 791 * Sets countOfIncomingDatagramTypeSosSmsSuccess value of {@link SatelliteController} 792 * atom then returns Builder class 793 */ setCountOfIncomingDatagramTypeSosSmsSuccess( int countOfIncomingDatagramTypeSosSmsSuccess)794 public Builder setCountOfIncomingDatagramTypeSosSmsSuccess( 795 int countOfIncomingDatagramTypeSosSmsSuccess) { 796 this.mCountOfIncomingDatagramTypeSosSmsSuccess = 797 countOfIncomingDatagramTypeSosSmsSuccess; 798 return this; 799 } 800 801 /** 802 * Sets countOfIncomingDatagramTypeSosSmsFail value of {@link SatelliteController} atom 803 * then returns Builder class 804 */ setCountOfIncomingDatagramTypeSosSmsFail( int countOfIncomingDatagramTypeSosSmsFail)805 public Builder setCountOfIncomingDatagramTypeSosSmsFail( 806 int countOfIncomingDatagramTypeSosSmsFail) { 807 this.mCountOfIncomingDatagramTypeSosSmsFail = countOfIncomingDatagramTypeSosSmsFail; 808 return this; 809 } 810 811 /** 812 * Sets countOfOutgoingDatagramTypeSmsSuccess value of {@link SatelliteController} atom 813 * then returns Builder class 814 */ setCountOfOutgoingDatagramTypeSmsSuccess( int countOfOutgoingDatagramTypeSmsSuccess)815 public Builder setCountOfOutgoingDatagramTypeSmsSuccess( 816 int countOfOutgoingDatagramTypeSmsSuccess) { 817 this.mCountOfOutgoingDatagramTypeSmsSuccess = countOfOutgoingDatagramTypeSmsSuccess; 818 return this; 819 } 820 821 /** 822 * Sets countOfOutgoingDatagramTypeSmsFail value of {@link SatelliteController} atom 823 * then returns Builder class 824 */ setCountOfOutgoingDatagramTypeSmsFail( int countOfOutgoingDatagramTypeSmsFail)825 public Builder setCountOfOutgoingDatagramTypeSmsFail( 826 int countOfOutgoingDatagramTypeSmsFail) { 827 this.mCountOfOutgoingDatagramTypeSmsFail = countOfOutgoingDatagramTypeSmsFail; 828 return this; 829 } 830 831 /** 832 * Sets countOfIncomingDatagramTypeSmsSuccess value of {@link SatelliteController} atom 833 * then returns Builder class 834 */ setCountOfIncomingDatagramTypeSmsSuccess( int countOfIncomingDatagramTypeSmsSuccess)835 public Builder setCountOfIncomingDatagramTypeSmsSuccess( 836 int countOfIncomingDatagramTypeSmsSuccess) { 837 this.mCountOfIncomingDatagramTypeSmsSuccess = countOfIncomingDatagramTypeSmsSuccess; 838 return this; 839 } 840 841 /** 842 * Sets countOfIncomingDatagramTypeSmsFail value of {@link SatelliteController} atom 843 * then returns Builder class 844 */ setCountOfIncomingDatagramTypeSmsFail( int countOfIncomingDatagramTypeSmsFail)845 public Builder setCountOfIncomingDatagramTypeSmsFail( 846 int countOfIncomingDatagramTypeSmsFail) { 847 this.mCountOfIncomingDatagramTypeSmsFail = countOfIncomingDatagramTypeSmsFail; 848 return this; 849 } 850 851 /** 852 * Returns ControllerParams, which contains whole component of 853 * {@link SatelliteController} atom 854 */ build()855 public SatelliteControllerParams build() { 856 return new SatelliteStats() 857 .new SatelliteControllerParams(this); 858 } 859 } 860 861 @Override toString()862 public String toString() { 863 return "ControllerParams(" 864 + ", countOfSatelliteServiceEnablementsSuccess=" 865 + mCountOfSatelliteServiceEnablementsSuccess 866 + ", countOfSatelliteServiceEnablementsFail=" 867 + mCountOfSatelliteServiceEnablementsFail 868 + ", countOfOutgoingDatagramSuccess=" + mCountOfOutgoingDatagramSuccess 869 + ", countOfOutgoingDatagramFail=" + mCountOfOutgoingDatagramFail 870 + ", countOfIncomingDatagramSuccess=" + mCountOfIncomingDatagramSuccess 871 + ", countOfIncomingDatagramFail=" + mCountOfIncomingDatagramFail 872 + ", countOfDatagramTypeSosSms=" + mCountOfDatagramTypeSosSmsSuccess 873 + ", countOfDatagramTypeSosSms=" + mCountOfDatagramTypeSosSmsFail 874 + ", countOfDatagramTypeLocationSharing=" 875 + mCountOfDatagramTypeLocationSharingSuccess 876 + ", countOfDatagramTypeLocationSharing=" 877 + mCountOfDatagramTypeLocationSharingFail 878 + ", serviceUptimeSec=" + mTotalServiceUptimeSec 879 + ", batteryConsumptionPercent=" + mTotalBatteryConsumptionPercent 880 + ", batteryChargedTimeSec=" + mTotalBatteryChargedTimeSec 881 + ", countOfDemoModeSatelliteServiceEnablementsSuccess=" 882 + mCountOfDemoModeSatelliteServiceEnablementsSuccess 883 + ", countOfDemoModeSatelliteServiceEnablementsFail=" 884 + mCountOfDemoModeSatelliteServiceEnablementsFail 885 + ", countOfDemoModeOutgoingDatagramSuccess=" 886 + mCountOfDemoModeOutgoingDatagramSuccess 887 + ", countOfDemoModeOutgoingDatagramFail=" 888 + mCountOfDemoModeOutgoingDatagramFail 889 + ", countOfDemoModeIncomingDatagramSuccess=" 890 + mCountOfDemoModeIncomingDatagramSuccess 891 + ", countOfDemoModeIncomingDatagramFail=" 892 + mCountOfDemoModeIncomingDatagramFail 893 + ", countOfDatagramTypeKeepAliveSuccess=" 894 + mCountOfDatagramTypeKeepAliveSuccess 895 + ", countOfDatagramTypeKeepAliveFail=" 896 + mCountOfDatagramTypeKeepAliveFail 897 + ", countOfAllowedSatelliteAccess=" + mCountOfAllowedSatelliteAccess 898 + ", countOfDisallowedSatelliteAccess=" + mCountOfDisallowedSatelliteAccess 899 + ", countOfSatelliteAccessCheckFail=" + mCountOfSatelliteAccessCheckFail 900 + ", isProvisioned=" + sIsProvisioned 901 + ", carrierId=" + sCarrierId 902 + ", countOfSatelliteAllowedStateChangedEvents=" 903 + mCountOfSatelliteAllowedStateChangedEvents 904 + ", countOfSuccessfulLocationQueries=" + mCountOfSuccessfulLocationQueries 905 + ", countOfFailedLocationQueries=" + mCountOfFailedLocationQueries 906 + ", countOfP2PSmsAvailableNotificationShown=" 907 + mCountOfP2PSmsAvailableNotificationShown 908 + ", countOfP2PSmsAvailableNotificationRemoved=" 909 + mCountOfP2PSmsAvailableNotificationRemoved 910 + ", versionOfSatelliteAccessConfig=" + sVersionOfSatelliteAccessConfig 911 + ", countOfIncomingDatagramTypeSosSmsSuccess=" 912 + mCountOfIncomingDatagramTypeSosSmsSuccess 913 + ", countOfIncomingDatagramTypeSosSmsFail=" 914 + mCountOfIncomingDatagramTypeSosSmsFail 915 + ", countOfOutgoingDatagramTypeSmsSuccess=" 916 + mCountOfOutgoingDatagramTypeSmsSuccess 917 + ", countOfOutgoingDatagramTypeSmsFail=" + mCountOfOutgoingDatagramTypeSmsFail 918 + ", countOfIncomingDatagramTypeSmsSuccess=" 919 + mCountOfIncomingDatagramTypeSmsSuccess 920 + ", countOfIncomingDatagramTypeSmsFail=" + mCountOfIncomingDatagramTypeSmsFail 921 + ")"; 922 } 923 } 924 925 /** 926 * A data class to contain whole component of {@link SatelliteSession) atom. 927 * Refer to {@link #onSatelliteSessionMetrics(SatelliteSessionParams)}. 928 */ 929 public class SatelliteSessionParams { 930 private final int mSatelliteServiceInitializationResult; 931 private final int mSatelliteTechnology; 932 private final int mTerminationResult; 933 private final long mInitializationProcessingTimeMillis; 934 private final long mTerminationProcessingTimeMillis; 935 private final int mSessionDurationSec; 936 private final int mCountOfOutgoingDatagramSuccess; 937 private final int mCountOfOutgoingDatagramFailed; 938 private final int mCountOfIncomingDatagramSuccess; 939 private final int mCountOfIncomingDatagramFailed; 940 private final boolean mIsDemoMode; 941 private final @NtnSignalStrength.NtnSignalStrengthLevel int mMaxNtnSignalStrengthLevel; 942 private final int mCarrierId; 943 private final int mCountOfSatelliteNotificationDisplayed; 944 private final int mCountOfAutoExitDueToScreenOff; 945 private final int mCountOfAutoExitDueToTnNetwork; 946 private final boolean mIsEmergency; 947 private final int mMaxInactivityDurationSec; 948 private final boolean mIsNtnOnlyCarrier; 949 SatelliteSessionParams(Builder builder)950 private SatelliteSessionParams(Builder builder) { 951 this.mSatelliteServiceInitializationResult = 952 builder.mSatelliteServiceInitializationResult; 953 this.mSatelliteTechnology = builder.mSatelliteTechnology; 954 this.mTerminationResult = builder.mTerminationResult; 955 this.mInitializationProcessingTimeMillis = builder.mInitializationProcessingTimeMillis; 956 this.mTerminationProcessingTimeMillis = 957 builder.mTerminationProcessingTimeMillis; 958 this.mSessionDurationSec = builder.mSessionDurationSec; 959 this.mCountOfOutgoingDatagramSuccess = builder.mCountOfOutgoingDatagramSuccess; 960 this.mCountOfOutgoingDatagramFailed = builder.mCountOfOutgoingDatagramFailed; 961 this.mCountOfIncomingDatagramSuccess = builder.mCountOfIncomingDatagramSuccess; 962 this.mCountOfIncomingDatagramFailed = builder.mCountOfIncomingDatagramFailed; 963 this.mIsDemoMode = builder.mIsDemoMode; 964 this.mMaxNtnSignalStrengthLevel = builder.mMaxNtnSignalStrengthLevel; 965 this.mCarrierId = builder.mCarrierId; 966 this.mCountOfSatelliteNotificationDisplayed = 967 builder.mCountOfSatelliteNotificationDisplayed; 968 this.mCountOfAutoExitDueToScreenOff = builder.mCountOfAutoExitDueToScreenOff; 969 this.mCountOfAutoExitDueToTnNetwork = builder.mCountOfAutoExitDueToTnNetwork; 970 this.mIsEmergency = builder.mIsEmergency; 971 this.mIsNtnOnlyCarrier = builder.mIsNtnOnlyCarrier; 972 this.mMaxInactivityDurationSec = builder.mMaxInactivityDurationSec; 973 } 974 getSatelliteServiceInitializationResult()975 public int getSatelliteServiceInitializationResult() { 976 return mSatelliteServiceInitializationResult; 977 } 978 getSatelliteTechnology()979 public int getSatelliteTechnology() { 980 return mSatelliteTechnology; 981 } 982 getTerminationResult()983 public int getTerminationResult() { 984 return mTerminationResult; 985 } 986 getInitializationProcessingTime()987 public long getInitializationProcessingTime() { 988 return mInitializationProcessingTimeMillis; 989 } 990 getTerminationProcessingTime()991 public long getTerminationProcessingTime() { 992 return mTerminationProcessingTimeMillis; 993 } 994 getSessionDuration()995 public int getSessionDuration() { 996 return mSessionDurationSec; 997 } 998 getCountOfOutgoingDatagramSuccess()999 public int getCountOfOutgoingDatagramSuccess() { 1000 return mCountOfOutgoingDatagramSuccess; 1001 } 1002 getCountOfOutgoingDatagramFailed()1003 public int getCountOfOutgoingDatagramFailed() { 1004 return mCountOfOutgoingDatagramFailed; 1005 } 1006 getCountOfIncomingDatagramSuccess()1007 public int getCountOfIncomingDatagramSuccess() { 1008 return mCountOfIncomingDatagramSuccess; 1009 } 1010 getCountOfIncomingDatagramFailed()1011 public int getCountOfIncomingDatagramFailed() { 1012 return mCountOfIncomingDatagramFailed; 1013 } 1014 getIsDemoMode()1015 public boolean getIsDemoMode() { 1016 return mIsDemoMode; 1017 } 1018 getMaxNtnSignalStrengthLevel()1019 public @NtnSignalStrength.NtnSignalStrengthLevel int getMaxNtnSignalStrengthLevel() { 1020 return mMaxNtnSignalStrengthLevel; 1021 } 1022 getCarrierId()1023 public int getCarrierId() { 1024 return mCarrierId; 1025 } 1026 getCountOfSatelliteNotificationDisplayed()1027 public int getCountOfSatelliteNotificationDisplayed() { 1028 return mCountOfSatelliteNotificationDisplayed; 1029 } 1030 getCountOfAutoExitDueToScreenOff()1031 public int getCountOfAutoExitDueToScreenOff() { 1032 return mCountOfAutoExitDueToScreenOff; 1033 } 1034 getCountOfAutoExitDueToTnNetwork()1035 public int getCountOfAutoExitDueToTnNetwork() { 1036 return mCountOfAutoExitDueToTnNetwork; 1037 } 1038 getIsEmergency()1039 public boolean getIsEmergency() { 1040 return mIsEmergency; 1041 } 1042 isNtnOnlyCarrier()1043 public boolean isNtnOnlyCarrier() { 1044 return mIsNtnOnlyCarrier; 1045 } 1046 getMaxInactivityDurationSec()1047 public int getMaxInactivityDurationSec() { 1048 return mMaxInactivityDurationSec; 1049 } 1050 1051 /** 1052 * A builder class to create {@link SatelliteSessionParams} data structure class 1053 */ 1054 public static class Builder { 1055 private int mSatelliteServiceInitializationResult = -1; 1056 private int mSatelliteTechnology = -1; 1057 private int mTerminationResult = -1; 1058 private long mInitializationProcessingTimeMillis = -1; 1059 private long mTerminationProcessingTimeMillis = -1; 1060 private int mSessionDurationSec = -1; 1061 private int mCountOfOutgoingDatagramSuccess = -1; 1062 private int mCountOfOutgoingDatagramFailed = -1; 1063 private int mCountOfIncomingDatagramSuccess = -1; 1064 private int mCountOfIncomingDatagramFailed = -1; 1065 private boolean mIsDemoMode = false; 1066 private @NtnSignalStrength.NtnSignalStrengthLevel int mMaxNtnSignalStrengthLevel = 1067 NTN_SIGNAL_STRENGTH_NONE; 1068 private int mCarrierId = UNKNOWN_CARRIER_ID; 1069 private int mCountOfSatelliteNotificationDisplayed = -1; 1070 private int mCountOfAutoExitDueToScreenOff = -1; 1071 private int mCountOfAutoExitDueToTnNetwork = -1; 1072 private boolean mIsEmergency = false; 1073 private boolean mIsNtnOnlyCarrier = false; 1074 private int mMaxInactivityDurationSec = -1; 1075 1076 /** 1077 * Sets satelliteServiceInitializationResult value of {@link SatelliteSession} 1078 * atom then returns Builder class 1079 */ setSatelliteServiceInitializationResult( int satelliteServiceInitializationResult)1080 public Builder setSatelliteServiceInitializationResult( 1081 int satelliteServiceInitializationResult) { 1082 this.mSatelliteServiceInitializationResult = satelliteServiceInitializationResult; 1083 return this; 1084 } 1085 1086 /** 1087 * Sets satelliteTechnology value of {@link SatelliteSession} atoms then 1088 * returns Builder class 1089 */ setSatelliteTechnology(int satelliteTechnology)1090 public Builder setSatelliteTechnology(int satelliteTechnology) { 1091 this.mSatelliteTechnology = satelliteTechnology; 1092 return this; 1093 } 1094 1095 /** Sets the satellite de-initialization result. */ setTerminationResult( @atelliteManager.SatelliteResult int result)1096 public Builder setTerminationResult( 1097 @SatelliteManager.SatelliteResult int result) { 1098 this.mTerminationResult = result; 1099 return this; 1100 } 1101 1102 /** Sets the satellite initialization processing time. */ setInitializationProcessingTime(long processingTime)1103 public Builder setInitializationProcessingTime(long processingTime) { 1104 this.mInitializationProcessingTimeMillis = processingTime; 1105 return this; 1106 } 1107 1108 /** Sets the satellite de-initialization processing time. */ setTerminationProcessingTime(long processingTime)1109 public Builder setTerminationProcessingTime(long processingTime) { 1110 this.mTerminationProcessingTimeMillis = processingTime; 1111 return this; 1112 } 1113 1114 /** Sets the total enabled time for the satellite session. */ setSessionDuration(int sessionDurationSec)1115 public Builder setSessionDuration(int sessionDurationSec) { 1116 this.mSessionDurationSec = sessionDurationSec; 1117 return this; 1118 } 1119 1120 /** Sets the total number of successful outgoing datagram transmission. */ setCountOfOutgoingDatagramSuccess(int countOfoutgoingDatagramSuccess)1121 public Builder setCountOfOutgoingDatagramSuccess(int countOfoutgoingDatagramSuccess) { 1122 this.mCountOfOutgoingDatagramSuccess = countOfoutgoingDatagramSuccess; 1123 return this; 1124 } 1125 1126 /** Sets the total number of failed outgoing datagram transmission. */ setCountOfOutgoingDatagramFailed(int countOfoutgoingDatagramFailed)1127 public Builder setCountOfOutgoingDatagramFailed(int countOfoutgoingDatagramFailed) { 1128 this.mCountOfOutgoingDatagramFailed = countOfoutgoingDatagramFailed; 1129 return this; 1130 } 1131 1132 /** Sets the total number of successful incoming datagram transmission. */ setCountOfIncomingDatagramSuccess(int countOfincomingDatagramSuccess)1133 public Builder setCountOfIncomingDatagramSuccess(int countOfincomingDatagramSuccess) { 1134 this.mCountOfIncomingDatagramSuccess = countOfincomingDatagramSuccess; 1135 return this; 1136 } 1137 1138 /** Sets the total number of failed incoming datagram transmission. */ setCountOfIncomingDatagramFailed(int countOfincomingDatagramFailed)1139 public Builder setCountOfIncomingDatagramFailed(int countOfincomingDatagramFailed) { 1140 this.mCountOfIncomingDatagramFailed = countOfincomingDatagramFailed; 1141 return this; 1142 } 1143 1144 /** Sets whether enabled satellite session is for demo mode or not. */ setIsDemoMode(boolean isDemoMode)1145 public Builder setIsDemoMode(boolean isDemoMode) { 1146 this.mIsDemoMode = isDemoMode; 1147 return this; 1148 } 1149 1150 /** Sets the max ntn signal strength for the satellite session. */ setMaxNtnSignalStrengthLevel( @tnSignalStrength.NtnSignalStrengthLevel int maxNtnSignalStrengthLevel)1151 public Builder setMaxNtnSignalStrengthLevel( 1152 @NtnSignalStrength.NtnSignalStrengthLevel int maxNtnSignalStrengthLevel) { 1153 this.mMaxNtnSignalStrengthLevel = maxNtnSignalStrengthLevel; 1154 return this; 1155 } 1156 1157 /** Sets the currently active NB-IoT NTN carrier ID. */ setCarrierId(int carrierId)1158 public Builder setCarrierId(int carrierId) { 1159 this.mCarrierId = carrierId; 1160 return this; 1161 } 1162 1163 /** 1164 * Sets Total number of times the user is notified that the device is eligible for 1165 * satellite service for this session. 1166 */ setCountOfSatelliteNotificationDisplayed( int countOfSatelliteNotificationDisplayed)1167 public Builder setCountOfSatelliteNotificationDisplayed( 1168 int countOfSatelliteNotificationDisplayed) { 1169 this.mCountOfSatelliteNotificationDisplayed = countOfSatelliteNotificationDisplayed; 1170 return this; 1171 } 1172 1173 /** 1174 * Sets Total number of times exit P2P message service automatically due to screen is 1175 * off and timer is expired. 1176 */ setCountOfAutoExitDueToScreenOff( int countOfAutoExitDueToScreenOff)1177 public Builder setCountOfAutoExitDueToScreenOff( 1178 int countOfAutoExitDueToScreenOff) { 1179 this.mCountOfAutoExitDueToScreenOff = countOfAutoExitDueToScreenOff; 1180 return this; 1181 } 1182 1183 /** 1184 * Sets Total number of times times exit P2P message service automatically due to 1185 * scan TN network. 1186 */ setCountOfAutoExitDueToTnNetwork( int countOfAutoExitDueToTnNetwork)1187 public Builder setCountOfAutoExitDueToTnNetwork( 1188 int countOfAutoExitDueToTnNetwork) { 1189 this.mCountOfAutoExitDueToTnNetwork = countOfAutoExitDueToTnNetwork; 1190 return this; 1191 } 1192 1193 /** Sets whether enabled satellite session is for emergency or not. */ setIsEmergency(boolean isEmergency)1194 public Builder setIsEmergency(boolean isEmergency) { 1195 this.mIsEmergency = isEmergency; 1196 return this; 1197 } 1198 1199 /** 1200 * Sets isNtnOnlyCarrier value of {@link SatelliteSession} atom 1201 * then returns Builder class 1202 */ setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier)1203 public Builder setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier) { 1204 this.mIsNtnOnlyCarrier = isNtnOnlyCarrier; 1205 return this; 1206 } 1207 1208 /** Sets the max user inactivity duration in seconds. */ setMaxInactivityDurationSec(int maxInactivityDurationSec)1209 public Builder setMaxInactivityDurationSec(int maxInactivityDurationSec) { 1210 this.mMaxInactivityDurationSec = maxInactivityDurationSec; 1211 return this; 1212 } 1213 1214 /** 1215 * Returns SessionParams, which contains whole component of 1216 * {@link SatelliteSession} atom 1217 */ build()1218 public SatelliteSessionParams build() { 1219 return new SatelliteStats() 1220 .new SatelliteSessionParams(this); 1221 } 1222 } 1223 1224 @Override toString()1225 public String toString() { 1226 return "SessionParams(" 1227 + ", satelliteServiceInitializationResult=" 1228 + mSatelliteServiceInitializationResult 1229 + ", TerminationResult=" + mTerminationResult 1230 + ", InitializationProcessingTimeMillis=" + mInitializationProcessingTimeMillis 1231 + ", TerminationProcessingTimeMillis=" + mTerminationProcessingTimeMillis 1232 + ", SessionDurationSec=" + mSessionDurationSec 1233 + ", CountOfOutgoingDatagramSuccess=" + mCountOfOutgoingDatagramSuccess 1234 + ", CountOfOutgoingDatagramFailed=" + mCountOfOutgoingDatagramFailed 1235 + ", CountOfIncomingDatagramSuccess=" + mCountOfIncomingDatagramSuccess 1236 + ", CountOfIncomingDatagramFailed=" + mCountOfIncomingDatagramFailed 1237 + ", IsDemoMode=" + mIsDemoMode 1238 + ", MaxNtnSignalStrengthLevel=" + mMaxNtnSignalStrengthLevel 1239 + ", CarrierId=" + mCarrierId 1240 + ", CountOfSatelliteNotificationDisplayed" 1241 + mCountOfSatelliteNotificationDisplayed 1242 + ", CountOfAutoExitDueToScreenOff" + mCountOfAutoExitDueToScreenOff 1243 + ", CountOfAutoExitDueToTnNetwork" + mCountOfAutoExitDueToTnNetwork 1244 + ", IsEmergency=" + mIsEmergency 1245 + ", IsNtnOnlyCarrier=" + mIsNtnOnlyCarrier 1246 + ", MaxInactivityDurationSec=" + mMaxInactivityDurationSec 1247 + ")"; 1248 } 1249 } 1250 1251 /** 1252 * A data class to contain whole component of {@link SatelliteIncomingDatagram} atom. 1253 * Refer to {@link #onSatelliteIncomingDatagramMetrics(SatelliteIncomingDatagramParams)}. 1254 */ 1255 public class SatelliteIncomingDatagramParams { 1256 private final int mResultCode; 1257 private final int mDatagramSizeBytes; 1258 private final long mDatagramTransferTimeMillis; 1259 private final boolean mIsDemoMode; 1260 private final int mCarrierId; 1261 private final boolean mIsNtnOnlyCarrier; 1262 SatelliteIncomingDatagramParams(Builder builder)1263 private SatelliteIncomingDatagramParams(Builder builder) { 1264 this.mResultCode = builder.mResultCode; 1265 this.mDatagramSizeBytes = builder.mDatagramSizeBytes; 1266 this.mDatagramTransferTimeMillis = builder.mDatagramTransferTimeMillis; 1267 this.mIsDemoMode = builder.mIsDemoMode; 1268 this.mCarrierId = builder.mCarrierId; 1269 this.mIsNtnOnlyCarrier = builder.mIsNtnOnlyCarrier; 1270 } 1271 getResultCode()1272 public int getResultCode() { 1273 return mResultCode; 1274 } 1275 getDatagramSizeBytes()1276 public int getDatagramSizeBytes() { 1277 return mDatagramSizeBytes; 1278 } 1279 getDatagramTransferTimeMillis()1280 public long getDatagramTransferTimeMillis() { 1281 return mDatagramTransferTimeMillis; 1282 } 1283 getIsDemoMode()1284 public boolean getIsDemoMode() { 1285 return mIsDemoMode; 1286 } 1287 getCarrierId()1288 public int getCarrierId() { 1289 return mCarrierId; 1290 } 1291 isNtnOnlyCarrier()1292 public boolean isNtnOnlyCarrier() { 1293 return mIsNtnOnlyCarrier; 1294 } 1295 1296 /** 1297 * A builder class to create {@link SatelliteIncomingDatagramParams} data structure class 1298 */ 1299 public static class Builder { 1300 private int mResultCode = -1; 1301 private int mDatagramSizeBytes = -1; 1302 private long mDatagramTransferTimeMillis = -1; 1303 private boolean mIsDemoMode = false; 1304 private int mCarrierId = UNKNOWN_CARRIER_ID; 1305 private boolean mIsNtnOnlyCarrier = false; 1306 1307 /** 1308 * Sets resultCode value of {@link SatelliteIncomingDatagram} atom 1309 * then returns Builder class 1310 */ setResultCode(int resultCode)1311 public Builder setResultCode(int resultCode) { 1312 this.mResultCode = resultCode; 1313 return this; 1314 } 1315 1316 /** 1317 * Sets datagramSizeBytes value of {@link SatelliteIncomingDatagram} atom 1318 * then returns Builder class 1319 */ setDatagramSizeBytes(int datagramSizeBytes)1320 public Builder setDatagramSizeBytes(int datagramSizeBytes) { 1321 this.mDatagramSizeBytes = datagramSizeBytes; 1322 return this; 1323 } 1324 1325 /** 1326 * Sets datagramTransferTimeMillis value of {@link SatelliteIncomingDatagram} atom 1327 * then returns Builder class 1328 */ setDatagramTransferTimeMillis(long datagramTransferTimeMillis)1329 public Builder setDatagramTransferTimeMillis(long datagramTransferTimeMillis) { 1330 this.mDatagramTransferTimeMillis = datagramTransferTimeMillis; 1331 return this; 1332 } 1333 1334 /** 1335 * Sets whether transferred datagram is in demo mode or not 1336 * then returns Builder class 1337 */ setIsDemoMode(boolean isDemoMode)1338 public Builder setIsDemoMode(boolean isDemoMode) { 1339 this.mIsDemoMode = isDemoMode; 1340 return this; 1341 } 1342 1343 /** Sets the currently active NB-IoT NTN carrier ID. */ setCarrierId(int carrierId)1344 public Builder setCarrierId(int carrierId) { 1345 this.mCarrierId = carrierId; 1346 return this; 1347 } 1348 1349 /** 1350 * Sets isNtnOnlyCarrier value of {@link SatelliteIncomingDatagram} atom 1351 * then returns Builder class 1352 */ setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier)1353 public Builder setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier) { 1354 this.mIsNtnOnlyCarrier = isNtnOnlyCarrier; 1355 return this; 1356 } 1357 1358 /** 1359 * Returns IncomingDatagramParams, which contains whole component of 1360 * {@link SatelliteIncomingDatagram} atom 1361 */ build()1362 public SatelliteIncomingDatagramParams build() { 1363 return new SatelliteStats() 1364 .new SatelliteIncomingDatagramParams(Builder.this); 1365 } 1366 } 1367 1368 @Override toString()1369 public String toString() { 1370 return "IncomingDatagramParams(" 1371 + ", resultCode=" + mResultCode 1372 + ", datagramSizeBytes=" + mDatagramSizeBytes 1373 + ", datagramTransferTimeMillis=" + mDatagramTransferTimeMillis 1374 + ", isDemoMode=" + mIsDemoMode 1375 + ", CarrierId=" + mCarrierId 1376 + ", isNtnOnlyCarrier=" + mIsNtnOnlyCarrier 1377 + ")"; 1378 } 1379 } 1380 1381 /** 1382 * A data class to contain whole component of {@link SatelliteOutgoingDatagram} atom. 1383 * Refer to {@link #onSatelliteOutgoingDatagramMetrics(SatelliteOutgoingDatagramParams)}. 1384 */ 1385 public class SatelliteOutgoingDatagramParams { 1386 private final int mDatagramType; 1387 private final int mResultCode; 1388 private final int mDatagramSizeBytes; 1389 private final long mDatagramTransferTimeMillis; 1390 private final boolean mIsDemoMode; 1391 private final int mCarrierId; 1392 private final boolean mIsNtnOnlyCarrier; 1393 SatelliteOutgoingDatagramParams(Builder builder)1394 private SatelliteOutgoingDatagramParams(Builder builder) { 1395 this.mDatagramType = builder.mDatagramType; 1396 this.mResultCode = builder.mResultCode; 1397 this.mDatagramSizeBytes = builder.mDatagramSizeBytes; 1398 this.mDatagramTransferTimeMillis = builder.mDatagramTransferTimeMillis; 1399 this.mIsDemoMode = builder.mIsDemoMode; 1400 this.mCarrierId = builder.mCarrierId; 1401 this.mIsNtnOnlyCarrier = builder.mIsNtnOnlyCarrier; 1402 } 1403 getDatagramType()1404 public int getDatagramType() { 1405 return mDatagramType; 1406 } 1407 getResultCode()1408 public int getResultCode() { 1409 return mResultCode; 1410 } 1411 getDatagramSizeBytes()1412 public int getDatagramSizeBytes() { 1413 return mDatagramSizeBytes; 1414 } 1415 getDatagramTransferTimeMillis()1416 public long getDatagramTransferTimeMillis() { 1417 return mDatagramTransferTimeMillis; 1418 } 1419 getIsDemoMode()1420 public boolean getIsDemoMode() { 1421 return mIsDemoMode; 1422 } 1423 getCarrierId()1424 public int getCarrierId() { 1425 return mCarrierId; 1426 } 1427 isNtnOnlyCarrier()1428 public boolean isNtnOnlyCarrier() { 1429 return mIsNtnOnlyCarrier; 1430 } 1431 1432 /** 1433 * A builder class to create {@link SatelliteOutgoingDatagramParams} data structure class 1434 */ 1435 public static class Builder { 1436 private int mDatagramType = -1; 1437 private int mResultCode = -1; 1438 private int mDatagramSizeBytes = -1; 1439 private long mDatagramTransferTimeMillis = -1; 1440 private boolean mIsDemoMode = false; 1441 private int mCarrierId = UNKNOWN_CARRIER_ID; 1442 private boolean mIsNtnOnlyCarrier = false; 1443 1444 /** 1445 * Sets datagramType value of {@link SatelliteOutgoingDatagram} atom 1446 * then returns Builder class 1447 */ setDatagramType(int datagramType)1448 public Builder setDatagramType(int datagramType) { 1449 this.mDatagramType = datagramType; 1450 return this; 1451 } 1452 1453 /** 1454 * Sets resultCode value of {@link SatelliteOutgoingDatagram} atom 1455 * then returns Builder class 1456 */ setResultCode(int resultCode)1457 public Builder setResultCode(int resultCode) { 1458 this.mResultCode = resultCode; 1459 return this; 1460 } 1461 1462 /** 1463 * Sets datagramSizeBytes value of {@link SatelliteOutgoingDatagram} atom 1464 * then returns Builder class 1465 */ setDatagramSizeBytes(int datagramSizeBytes)1466 public Builder setDatagramSizeBytes(int datagramSizeBytes) { 1467 this.mDatagramSizeBytes = datagramSizeBytes; 1468 return this; 1469 } 1470 1471 /** 1472 * Sets datagramTransferTimeMillis value of {@link SatelliteOutgoingDatagram} atom 1473 * then returns Builder class 1474 */ setDatagramTransferTimeMillis(long datagramTransferTimeMillis)1475 public Builder setDatagramTransferTimeMillis(long datagramTransferTimeMillis) { 1476 this.mDatagramTransferTimeMillis = datagramTransferTimeMillis; 1477 return this; 1478 } 1479 1480 /** 1481 * Sets whether transferred datagram is in demo mode or not 1482 * then returns Builder class 1483 */ setIsDemoMode(boolean isDemoMode)1484 public Builder setIsDemoMode(boolean isDemoMode) { 1485 this.mIsDemoMode = isDemoMode; 1486 return this; 1487 } 1488 1489 /** Sets the currently active NB-IoT NTN carrier ID. */ setCarrierId(int carrierId)1490 public Builder setCarrierId(int carrierId) { 1491 this.mCarrierId = carrierId; 1492 return this; 1493 } 1494 1495 /** 1496 * Sets isNtnOnlyCarrier value of {@link SatelliteOutgoingDatagram} atom 1497 * then returns Builder class 1498 */ setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier)1499 public Builder setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier) { 1500 this.mIsNtnOnlyCarrier = isNtnOnlyCarrier; 1501 return this; 1502 } 1503 1504 /** 1505 * Returns OutgoingDatagramParams, which contains whole component of 1506 * {@link SatelliteOutgoingDatagram} atom 1507 */ build()1508 public SatelliteOutgoingDatagramParams build() { 1509 return new SatelliteStats() 1510 .new SatelliteOutgoingDatagramParams(Builder.this); 1511 } 1512 } 1513 1514 @Override toString()1515 public String toString() { 1516 return "OutgoingDatagramParams(" 1517 + "datagramType=" + mDatagramType 1518 + ", resultCode=" + mResultCode 1519 + ", datagramSizeBytes=" + mDatagramSizeBytes 1520 + ", datagramTransferTimeMillis=" + mDatagramTransferTimeMillis 1521 + ", isDemoMode=" + mIsDemoMode 1522 + ", CarrierId=" + mCarrierId 1523 + ", isNtnOnlyCarrier=" + mIsNtnOnlyCarrier 1524 + ")"; 1525 } 1526 } 1527 1528 /** 1529 * A data class to contain whole component of {@link SatelliteProvision} atom. 1530 * Refer to {@link #onSatelliteProvisionMetrics(SatelliteProvisionParams)}. 1531 */ 1532 public class SatelliteProvisionParams { 1533 private final int mResultCode; 1534 private final int mProvisioningTimeSec; 1535 private final boolean mIsProvisionRequest; 1536 private final boolean mIsCanceled; 1537 private final int mCarrierId; 1538 private final boolean mIsNtnOnlyCarrier; 1539 SatelliteProvisionParams(Builder builder)1540 private SatelliteProvisionParams(Builder builder) { 1541 this.mResultCode = builder.mResultCode; 1542 this.mProvisioningTimeSec = builder.mProvisioningTimeSec; 1543 this.mIsProvisionRequest = builder.mIsProvisionRequest; 1544 this.mIsCanceled = builder.mIsCanceled; 1545 this.mCarrierId = builder.mCarrierId; 1546 this.mIsNtnOnlyCarrier = builder.mIsNtnOnlyCarrier; 1547 } 1548 getResultCode()1549 public int getResultCode() { 1550 return mResultCode; 1551 } 1552 getProvisioningTimeSec()1553 public int getProvisioningTimeSec() { 1554 return mProvisioningTimeSec; 1555 } 1556 getIsProvisionRequest()1557 public boolean getIsProvisionRequest() { 1558 return mIsProvisionRequest; 1559 } 1560 getIsCanceled()1561 public boolean getIsCanceled() { 1562 return mIsCanceled; 1563 } 1564 getCarrierId()1565 public int getCarrierId() { 1566 return mCarrierId; 1567 } 1568 isNtnOnlyCarrier()1569 public boolean isNtnOnlyCarrier() { 1570 return mIsNtnOnlyCarrier; 1571 } 1572 1573 /** 1574 * A builder class to create {@link SatelliteProvisionParams} data structure class 1575 */ 1576 public static class Builder { 1577 private int mResultCode = -1; 1578 private int mProvisioningTimeSec = -1; 1579 private boolean mIsProvisionRequest = false; 1580 private boolean mIsCanceled = false; 1581 private int mCarrierId = UNKNOWN_CARRIER_ID; 1582 private boolean mIsNtnOnlyCarrier = false; 1583 1584 /** 1585 * Sets resultCode value of {@link SatelliteProvision} atom 1586 * then returns Builder class 1587 */ setResultCode(int resultCode)1588 public Builder setResultCode(int resultCode) { 1589 this.mResultCode = resultCode; 1590 return this; 1591 } 1592 1593 /** 1594 * Sets provisioningTimeSec value of {@link SatelliteProvision} atom 1595 * then returns Builder class 1596 */ setProvisioningTimeSec(int provisioningTimeSec)1597 public Builder setProvisioningTimeSec(int provisioningTimeSec) { 1598 this.mProvisioningTimeSec = provisioningTimeSec; 1599 return this; 1600 } 1601 1602 /** 1603 * Sets isProvisionRequest value of {@link SatelliteProvision} atom 1604 * then returns Builder class 1605 */ setIsProvisionRequest(boolean isProvisionRequest)1606 public Builder setIsProvisionRequest(boolean isProvisionRequest) { 1607 this.mIsProvisionRequest = isProvisionRequest; 1608 return this; 1609 } 1610 1611 /** 1612 * Sets isCanceled value of {@link SatelliteProvision} atom 1613 * then returns Builder class 1614 */ setIsCanceled(boolean isCanceled)1615 public Builder setIsCanceled(boolean isCanceled) { 1616 this.mIsCanceled = isCanceled; 1617 return this; 1618 } 1619 1620 /** Sets the currently active NB-IoT NTN carrier ID. */ setCarrierId(int carrierId)1621 public Builder setCarrierId(int carrierId) { 1622 this.mCarrierId = carrierId; 1623 return this; 1624 } 1625 1626 /** 1627 * Sets isNtnOnlyCarrier value of {@link SatelliteProvision} atom 1628 * then returns Builder class 1629 */ setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier)1630 public Builder setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier) { 1631 this.mIsNtnOnlyCarrier = isNtnOnlyCarrier; 1632 return this; 1633 } 1634 1635 /** 1636 * Returns ProvisionParams, which contains whole component of 1637 * {@link SatelliteProvision} atom 1638 */ build()1639 public SatelliteProvisionParams build() { 1640 return new SatelliteStats() 1641 .new SatelliteProvisionParams(Builder.this); 1642 } 1643 } 1644 1645 @Override toString()1646 public String toString() { 1647 return "ProvisionParams(" 1648 + "resultCode=" + mResultCode 1649 + ", provisioningTimeSec=" + mProvisioningTimeSec 1650 + ", isProvisionRequest=" + mIsProvisionRequest 1651 + ", isCanceled" + mIsCanceled 1652 + ", CarrierId=" + mCarrierId 1653 + ", isNtnOnlyCarrier=" + mIsNtnOnlyCarrier 1654 + ")"; 1655 } 1656 } 1657 1658 /** 1659 * A data class to contain whole component of {@link SatelliteSosMessageRecommender} atom. 1660 * Refer to {@link #onSatelliteSosMessageRecommender(SatelliteSosMessageRecommenderParams)}. 1661 */ 1662 public class SatelliteSosMessageRecommenderParams { 1663 private final boolean mIsDisplaySosMessageSent; 1664 private final int mCountOfTimerStarted; 1665 private final boolean mIsImsRegistered; 1666 private final int mCellularServiceState; 1667 private final boolean mIsMultiSim; 1668 private final int mRecommendingHandoverType; 1669 private final boolean mIsSatelliteAllowedInCurrentLocation; 1670 private final boolean mIsWifiConnected; 1671 private final int mCarrierId; 1672 private final boolean mIsNtnOnlyCarrier; 1673 SatelliteSosMessageRecommenderParams(Builder builder)1674 private SatelliteSosMessageRecommenderParams(Builder builder) { 1675 this.mIsDisplaySosMessageSent = builder.mIsDisplaySosMessageSent; 1676 this.mCountOfTimerStarted = builder.mCountOfTimerStarted; 1677 this.mIsImsRegistered = builder.mIsImsRegistered; 1678 this.mCellularServiceState = builder.mCellularServiceState; 1679 this.mIsMultiSim = builder.mIsMultiSim; 1680 this.mRecommendingHandoverType = builder.mRecommendingHandoverType; 1681 this.mIsSatelliteAllowedInCurrentLocation = 1682 builder.mIsSatelliteAllowedInCurrentLocation; 1683 this.mIsWifiConnected = builder.mIsWifiConnected; 1684 this.mCarrierId = builder.mCarrierId; 1685 this.mIsNtnOnlyCarrier = builder.mIsNtnOnlyCarrier; 1686 } 1687 isDisplaySosMessageSent()1688 public boolean isDisplaySosMessageSent() { 1689 return mIsDisplaySosMessageSent; 1690 } 1691 getCountOfTimerStarted()1692 public int getCountOfTimerStarted() { 1693 return mCountOfTimerStarted; 1694 } 1695 isImsRegistered()1696 public boolean isImsRegistered() { 1697 return mIsImsRegistered; 1698 } 1699 getCellularServiceState()1700 public int getCellularServiceState() { 1701 return mCellularServiceState; 1702 } 1703 isMultiSim()1704 public boolean isMultiSim() { 1705 return mIsMultiSim; 1706 } 1707 getRecommendingHandoverType()1708 public int getRecommendingHandoverType() { 1709 return mRecommendingHandoverType; 1710 } 1711 isSatelliteAllowedInCurrentLocation()1712 public boolean isSatelliteAllowedInCurrentLocation() { 1713 return mIsSatelliteAllowedInCurrentLocation; 1714 } 1715 isWifiConnected()1716 public boolean isWifiConnected() { 1717 return mIsWifiConnected; 1718 } 1719 getCarrierId()1720 public int getCarrierId() { 1721 return mCarrierId; 1722 } 1723 isNtnOnlyCarrier()1724 public boolean isNtnOnlyCarrier() { 1725 return mIsNtnOnlyCarrier; 1726 } 1727 1728 /** 1729 * A builder class to create {@link SatelliteSosMessageRecommender} data structure class 1730 */ 1731 public static class Builder { 1732 private boolean mIsDisplaySosMessageSent = false; 1733 private int mCountOfTimerStarted = -1; 1734 private boolean mIsImsRegistered = false; 1735 private int mCellularServiceState = -1; 1736 private boolean mIsMultiSim = false; 1737 private int mRecommendingHandoverType = -1; 1738 private boolean mIsSatelliteAllowedInCurrentLocation = false; 1739 private boolean mIsWifiConnected = false; 1740 private int mCarrierId = UNKNOWN_CARRIER_ID; 1741 private boolean mIsNtnOnlyCarrier = false; 1742 1743 /** 1744 * Sets resultCode value of {@link SatelliteSosMessageRecommender} atom 1745 * then returns Builder class 1746 */ setDisplaySosMessageSent( boolean isDisplaySosMessageSent)1747 public Builder setDisplaySosMessageSent( 1748 boolean isDisplaySosMessageSent) { 1749 this.mIsDisplaySosMessageSent = isDisplaySosMessageSent; 1750 return this; 1751 } 1752 1753 /** 1754 * Sets countOfTimerIsStarted value of {@link SatelliteSosMessageRecommender} atom 1755 * then returns Builder class 1756 */ setCountOfTimerStarted(int countOfTimerStarted)1757 public Builder setCountOfTimerStarted(int countOfTimerStarted) { 1758 this.mCountOfTimerStarted = countOfTimerStarted; 1759 return this; 1760 } 1761 1762 /** 1763 * Sets isImsRegistered value of {@link SatelliteSosMessageRecommender} atom 1764 * then returns Builder class 1765 */ setImsRegistered(boolean isImsRegistered)1766 public Builder setImsRegistered(boolean isImsRegistered) { 1767 this.mIsImsRegistered = isImsRegistered; 1768 return this; 1769 } 1770 1771 /** 1772 * Sets cellularServiceState value of {@link SatelliteSosMessageRecommender} atom 1773 * then returns Builder class 1774 */ setCellularServiceState(int cellularServiceState)1775 public Builder setCellularServiceState(int cellularServiceState) { 1776 this.mCellularServiceState = cellularServiceState; 1777 return this; 1778 } 1779 1780 /** 1781 * Sets isMultiSim value of {@link SatelliteSosMessageRecommender} atom 1782 * then returns Builder class 1783 */ setIsMultiSim(boolean isMultiSim)1784 public Builder setIsMultiSim(boolean isMultiSim) { 1785 this.mIsMultiSim = isMultiSim; 1786 return this; 1787 } 1788 1789 /** 1790 * Sets recommendingHandoverType value of {@link SatelliteSosMessageRecommender} atom 1791 * then returns Builder class 1792 */ setRecommendingHandoverType(int recommendingHandoverType)1793 public Builder setRecommendingHandoverType(int recommendingHandoverType) { 1794 this.mRecommendingHandoverType = recommendingHandoverType; 1795 return this; 1796 } 1797 1798 /** 1799 * Sets isSatelliteAllowedInCurrentLocation value of 1800 * {@link SatelliteSosMessageRecommender} atom then returns Builder class. 1801 */ setIsSatelliteAllowedInCurrentLocation( boolean satelliteAllowedInCurrentLocation)1802 public Builder setIsSatelliteAllowedInCurrentLocation( 1803 boolean satelliteAllowedInCurrentLocation) { 1804 mIsSatelliteAllowedInCurrentLocation = satelliteAllowedInCurrentLocation; 1805 return this; 1806 } 1807 1808 /** 1809 * Sets whether Wi-Fi is connected value of {@link SatelliteSosMessageRecommender} atom 1810 * then returns Builder class 1811 */ setIsWifiConnected(boolean isWifiConnected)1812 public Builder setIsWifiConnected(boolean isWifiConnected) { 1813 this.mIsWifiConnected = isWifiConnected; 1814 return this; 1815 } 1816 1817 /** 1818 * Sets carrier ID value of {@link SatelliteSosMessageRecommender} atom then returns 1819 * Builder class. 1820 */ setCarrierId(int carrierId)1821 public Builder setCarrierId(int carrierId) { 1822 this.mCarrierId = carrierId; 1823 return this; 1824 } 1825 1826 /** 1827 * Sets isNtnOnlyCarrier value of {@link SatelliteSosMessageRecommender} atom 1828 * then returns Builder class 1829 */ setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier)1830 public Builder setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier) { 1831 this.mIsNtnOnlyCarrier = isNtnOnlyCarrier; 1832 return this; 1833 } 1834 1835 /** 1836 * Returns SosMessageRecommenderParams, which contains whole component of 1837 * {@link SatelliteSosMessageRecommenderParams} atom 1838 */ build()1839 public SatelliteSosMessageRecommenderParams build() { 1840 return new SatelliteStats() 1841 .new SatelliteSosMessageRecommenderParams(Builder.this); 1842 } 1843 } 1844 1845 @Override toString()1846 public String toString() { 1847 return "SosMessageRecommenderParams(" 1848 + "isDisplaySosMessageSent=" + mIsDisplaySosMessageSent 1849 + ", countOfTimerStarted=" + mCountOfTimerStarted 1850 + ", isImsRegistered=" + mIsImsRegistered 1851 + ", cellularServiceState=" + mCellularServiceState 1852 + ", isMultiSim=" + mIsMultiSim 1853 + ", recommendingHandoverType=" + mRecommendingHandoverType 1854 + ", isSatelliteAllowedInCurrentLocation=" 1855 + mIsSatelliteAllowedInCurrentLocation 1856 + ", isWifiConnected=" + mIsWifiConnected 1857 + ", carrierId=" + mCarrierId 1858 + ", isNtnOnlyCarrier=" + mIsNtnOnlyCarrier 1859 + ")"; 1860 } 1861 } 1862 1863 /** 1864 * A data class to contain whole component of {@link CarrierRoamingSatelliteSession} atom. 1865 * Refer to {@link #onCarrierRoamingSatelliteSessionMetrics( 1866 * CarrierRoamingSatelliteSessionParams)}. 1867 */ 1868 public class CarrierRoamingSatelliteSessionParams { 1869 private final int mCarrierId; 1870 private final boolean mIsNtnRoamingInHomeCountry; 1871 private final int mTotalSatelliteModeTimeSec; 1872 private final int mNumberOfSatelliteConnections; 1873 private final int mAvgDurationOfSatelliteConnectionSec; 1874 private final int mSatelliteConnectionGapMinSec; 1875 private final int mSatelliteConnectionGapAvgSec; 1876 private final int mSatelliteConnectionGapMaxSec; 1877 private final int mRsrpAvg; 1878 private final int mRsrpMedian; 1879 private final int mRssnrAvg; 1880 private final int mRssnrMedian; 1881 private final int mCountOfIncomingSms; 1882 private final int mCountOfOutgoingSms; 1883 private final int mCountOfIncomingMms; 1884 private final int mCountOfOutgoingMms; 1885 private final int[] mSupportedSatelliteServices; 1886 private final int mServiceDataPolicy; 1887 private final long mSatelliteDataConsumedBytes; 1888 private final boolean mIsMultiSim; 1889 private final boolean mIsNbIotNtn; 1890 CarrierRoamingSatelliteSessionParams(Builder builder)1891 private CarrierRoamingSatelliteSessionParams(Builder builder) { 1892 this.mCarrierId = builder.mCarrierId; 1893 this.mIsNtnRoamingInHomeCountry = builder.mIsNtnRoamingInHomeCountry; 1894 this.mTotalSatelliteModeTimeSec = builder.mTotalSatelliteModeTimeSec; 1895 this.mNumberOfSatelliteConnections = builder.mNumberOfSatelliteConnections; 1896 this.mAvgDurationOfSatelliteConnectionSec = 1897 builder.mAvgDurationOfSatelliteConnectionSec; 1898 this.mSatelliteConnectionGapMinSec = builder.mSatelliteConnectionGapMinSec; 1899 this.mSatelliteConnectionGapAvgSec = builder.mSatelliteConnectionGapAvgSec; 1900 this.mSatelliteConnectionGapMaxSec = builder.mSatelliteConnectionGapMaxSec; 1901 this.mRsrpAvg = builder.mRsrpAvg; 1902 this.mRsrpMedian = builder.mRsrpMedian; 1903 this.mRssnrAvg = builder.mRssnrAvg; 1904 this.mRssnrMedian = builder.mRssnrMedian; 1905 this.mCountOfIncomingSms = builder.mCountOfIncomingSms; 1906 this.mCountOfOutgoingSms = builder.mCountOfOutgoingSms; 1907 this.mCountOfIncomingMms = builder.mCountOfIncomingMms; 1908 this.mCountOfOutgoingMms = builder.mCountOfOutgoingMms; 1909 this.mSupportedSatelliteServices = builder.mSupportedSatelliteServices; 1910 this.mServiceDataPolicy = builder.mServiceDataPolicy; 1911 this.mSatelliteDataConsumedBytes = 1912 builder.mSatelliteDataConsumedBytes; 1913 this.mIsMultiSim = builder.mIsMultiSim; 1914 this.mIsNbIotNtn = builder.mIsNbIotNtn; 1915 } 1916 getCarrierId()1917 public int getCarrierId() { 1918 return mCarrierId; 1919 } 1920 getIsNtnRoamingInHomeCountry()1921 public boolean getIsNtnRoamingInHomeCountry() { 1922 return mIsNtnRoamingInHomeCountry; 1923 } 1924 getTotalSatelliteModeTimeSec()1925 public int getTotalSatelliteModeTimeSec() { 1926 return mTotalSatelliteModeTimeSec; 1927 } 1928 getNumberOfSatelliteConnections()1929 public int getNumberOfSatelliteConnections() { 1930 return mNumberOfSatelliteConnections; 1931 } 1932 getAvgDurationOfSatelliteConnectionSec()1933 public int getAvgDurationOfSatelliteConnectionSec() { 1934 return mAvgDurationOfSatelliteConnectionSec; 1935 } 1936 getSatelliteConnectionGapMinSec()1937 public int getSatelliteConnectionGapMinSec() { 1938 return mSatelliteConnectionGapMinSec; 1939 } 1940 getSatelliteConnectionGapAvgSec()1941 public int getSatelliteConnectionGapAvgSec() { 1942 return mSatelliteConnectionGapAvgSec; 1943 } 1944 getSatelliteConnectionGapMaxSec()1945 public int getSatelliteConnectionGapMaxSec() { 1946 return mSatelliteConnectionGapMaxSec; 1947 } 1948 getRsrpAvg()1949 public int getRsrpAvg() { 1950 return mRsrpAvg; 1951 } 1952 getRsrpMedian()1953 public int getRsrpMedian() { 1954 return mRsrpMedian; 1955 } 1956 getRssnrAvg()1957 public int getRssnrAvg() { 1958 return mRssnrAvg; 1959 } 1960 getRssnrMedian()1961 public int getRssnrMedian() { 1962 return mRssnrMedian; 1963 } 1964 getCountOfIncomingSms()1965 public int getCountOfIncomingSms() { 1966 return mCountOfIncomingSms; 1967 } 1968 getCountOfOutgoingSms()1969 public int getCountOfOutgoingSms() { 1970 return mCountOfOutgoingSms; 1971 } 1972 getCountOfIncomingMms()1973 public int getCountOfIncomingMms() { 1974 return mCountOfIncomingMms; 1975 } 1976 getCountOfOutgoingMms()1977 public int getCountOfOutgoingMms() { 1978 return mCountOfOutgoingMms; 1979 } 1980 getSupportedSatelliteServices()1981 public int[] getSupportedSatelliteServices() { 1982 return mSupportedSatelliteServices; 1983 } 1984 getServiceDataPolicy()1985 public int getServiceDataPolicy() { 1986 return mServiceDataPolicy; 1987 } 1988 getSatelliteDataConsumedBytes()1989 public long getSatelliteDataConsumedBytes() { 1990 return mSatelliteDataConsumedBytes; 1991 } 1992 isMultiSim()1993 public boolean isMultiSim() { 1994 return mIsMultiSim; 1995 } 1996 isNbIotNtn()1997 public boolean isNbIotNtn() { 1998 return mIsNbIotNtn; 1999 } 2000 2001 /** 2002 * A builder class to create {@link CarrierRoamingSatelliteSessionParams} data structure 2003 * class 2004 */ 2005 public static class Builder { 2006 private int mCarrierId = -1; 2007 private boolean mIsNtnRoamingInHomeCountry = false; 2008 private int mTotalSatelliteModeTimeSec = 0; 2009 private int mNumberOfSatelliteConnections = 0; 2010 private int mAvgDurationOfSatelliteConnectionSec = 0; 2011 private int mSatelliteConnectionGapMinSec = 0; 2012 private int mSatelliteConnectionGapAvgSec = 0; 2013 private int mSatelliteConnectionGapMaxSec = 0; 2014 private int mRsrpAvg = 0; 2015 private int mRsrpMedian = 0; 2016 private int mRssnrAvg = 0; 2017 private int mRssnrMedian = 0; 2018 private int mCountOfIncomingSms = 0; 2019 private int mCountOfOutgoingSms = 0; 2020 private int mCountOfIncomingMms = 0; 2021 private int mCountOfOutgoingMms = 0; 2022 private int[] mSupportedSatelliteServices = new int[0]; 2023 int mServiceDataPolicy = 2024 SatelliteConstants.SATELLITE_ENTITLEMENT_SERVICE_POLICY_UNKNOWN; 2025 long mSatelliteDataConsumedBytes = 0L; 2026 private boolean mIsMultiSim = false; 2027 private boolean mIsNbIotNtn = false; 2028 2029 /** 2030 * Sets carrierId value of {@link CarrierRoamingSatelliteSession} atom 2031 * then returns Builder class 2032 */ setCarrierId(int carrierId)2033 public Builder setCarrierId(int carrierId) { 2034 this.mCarrierId = carrierId; 2035 return this; 2036 } 2037 2038 /** 2039 * Sets isNtnRoamingInHomeCountry value of {@link CarrierRoamingSatelliteSession} atom 2040 * then returns Builder class 2041 */ setIsNtnRoamingInHomeCountry(boolean isNtnRoamingInHomeCountry)2042 public Builder setIsNtnRoamingInHomeCountry(boolean isNtnRoamingInHomeCountry) { 2043 this.mIsNtnRoamingInHomeCountry = isNtnRoamingInHomeCountry; 2044 return this; 2045 } 2046 2047 /** 2048 * Sets totalSatelliteModeTimeSec value of {@link CarrierRoamingSatelliteSession} atom 2049 * then returns Builder class 2050 */ setTotalSatelliteModeTimeSec(int totalSatelliteModeTimeSec)2051 public Builder setTotalSatelliteModeTimeSec(int totalSatelliteModeTimeSec) { 2052 this.mTotalSatelliteModeTimeSec = totalSatelliteModeTimeSec; 2053 return this; 2054 } 2055 2056 2057 /** 2058 * Sets numberOfSatelliteConnections value of {@link CarrierRoamingSatelliteSession} 2059 * atom then returns Builder class 2060 */ setNumberOfSatelliteConnections(int numberOfSatelliteConnections)2061 public Builder setNumberOfSatelliteConnections(int numberOfSatelliteConnections) { 2062 this.mNumberOfSatelliteConnections = numberOfSatelliteConnections; 2063 return this; 2064 } 2065 2066 /** 2067 * Sets avgDurationOfSatelliteConnectionSec value of 2068 * {@link CarrierRoamingSatelliteSession} atom then returns Builder class 2069 */ setAvgDurationOfSatelliteConnectionSec( int avgDurationOfSatelliteConnectionSec)2070 public Builder setAvgDurationOfSatelliteConnectionSec( 2071 int avgDurationOfSatelliteConnectionSec) { 2072 this.mAvgDurationOfSatelliteConnectionSec = avgDurationOfSatelliteConnectionSec; 2073 return this; 2074 } 2075 2076 /** 2077 * Sets satelliteConnectionGapMinSec value of {@link CarrierRoamingSatelliteSession} 2078 * atom then returns Builder class 2079 */ setSatelliteConnectionGapMinSec(int satelliteConnectionGapMinSec)2080 public Builder setSatelliteConnectionGapMinSec(int satelliteConnectionGapMinSec) { 2081 this.mSatelliteConnectionGapMinSec = satelliteConnectionGapMinSec; 2082 return this; 2083 } 2084 2085 /** 2086 * Sets satelliteConnectionGapAvgSec value of {@link CarrierRoamingSatelliteSession} 2087 * atom then returns Builder class 2088 */ setSatelliteConnectionGapAvgSec(int satelliteConnectionGapAvgSec)2089 public Builder setSatelliteConnectionGapAvgSec(int satelliteConnectionGapAvgSec) { 2090 this.mSatelliteConnectionGapAvgSec = satelliteConnectionGapAvgSec; 2091 return this; 2092 } 2093 2094 /** 2095 * Sets satelliteConnectionGapMaxSec value of {@link CarrierRoamingSatelliteSession} 2096 * atom then returns Builder class 2097 */ setSatelliteConnectionGapMaxSec(int satelliteConnectionGapMaxSec)2098 public Builder setSatelliteConnectionGapMaxSec(int satelliteConnectionGapMaxSec) { 2099 this.mSatelliteConnectionGapMaxSec = satelliteConnectionGapMaxSec; 2100 return this; 2101 } 2102 2103 /** 2104 * Sets rsrpAvg value of {@link CarrierRoamingSatelliteSession} 2105 * atom then returns Builder class 2106 */ setRsrpAvg(int rsrpAvg)2107 public Builder setRsrpAvg(int rsrpAvg) { 2108 this.mRsrpAvg = rsrpAvg; 2109 return this; 2110 } 2111 2112 /** 2113 * Sets rsrpMedian value of {@link CarrierRoamingSatelliteSession} 2114 * atom then returns Builder class 2115 */ setRsrpMedian(int rsrpMedian)2116 public Builder setRsrpMedian(int rsrpMedian) { 2117 this.mRsrpMedian = rsrpMedian; 2118 return this; 2119 } 2120 2121 /** 2122 * Sets rssnrAvg value of {@link CarrierRoamingSatelliteSession} 2123 * atom then returns Builder class 2124 */ setRssnrAvg(int rssnrAvg)2125 public Builder setRssnrAvg(int rssnrAvg) { 2126 this.mRssnrAvg = rssnrAvg; 2127 return this; 2128 } 2129 2130 /** 2131 * Sets rssnrMedian value of {@link CarrierRoamingSatelliteSession} 2132 * atom then returns Builder class 2133 */ setRssnrMedian(int rssnrMedian)2134 public Builder setRssnrMedian(int rssnrMedian) { 2135 this.mRssnrMedian = rssnrMedian; 2136 return this; 2137 } 2138 2139 2140 /** 2141 * Sets countOfIncomingSms value of {@link CarrierRoamingSatelliteSession} 2142 * atom then returns Builder class 2143 */ setCountOfIncomingSms(int countOfIncomingSms)2144 public Builder setCountOfIncomingSms(int countOfIncomingSms) { 2145 this.mCountOfIncomingSms = countOfIncomingSms; 2146 return this; 2147 } 2148 2149 /** 2150 * Sets countOfOutgoingSms value of {@link CarrierRoamingSatelliteSession} 2151 * atom then returns Builder class 2152 */ setCountOfOutgoingSms(int countOfOutgoingSms)2153 public Builder setCountOfOutgoingSms(int countOfOutgoingSms) { 2154 this.mCountOfOutgoingSms = countOfOutgoingSms; 2155 return this; 2156 } 2157 2158 /** 2159 * Sets countOfIncomingMms value of {@link CarrierRoamingSatelliteSession} 2160 * atom then returns Builder class 2161 */ setCountOfIncomingMms(int countOfIncomingMms)2162 public Builder setCountOfIncomingMms(int countOfIncomingMms) { 2163 this.mCountOfIncomingMms = countOfIncomingMms; 2164 return this; 2165 } 2166 2167 /** 2168 * Sets countOfOutgoingMms value of {@link CarrierRoamingSatelliteSession} 2169 * atom then returns Builder class 2170 */ setCountOfOutgoingMms(int countOfOutgoingMms)2171 public Builder setCountOfOutgoingMms(int countOfOutgoingMms) { 2172 this.mCountOfOutgoingMms = countOfOutgoingMms; 2173 return this; 2174 } 2175 2176 /** 2177 * Sets supportedSatelliteServices value of {@link CarrierRoamingSatelliteSession} 2178 * atom then returns Builder class 2179 */ setSupportedSatelliteServices(int[] supportedSatelliteServices)2180 public Builder setSupportedSatelliteServices(int[] supportedSatelliteServices) { 2181 this.mSupportedSatelliteServices = supportedSatelliteServices; 2182 Arrays.sort(this.mSupportedSatelliteServices); 2183 return this; 2184 } 2185 2186 /** 2187 * Sets serviceDataPolicy value of {@link CarrierRoamingSatelliteSession} 2188 * atom then returns Builder class 2189 */ setServiceDataPolicy(int serviceDataPolicy)2190 public Builder setServiceDataPolicy(int serviceDataPolicy) { 2191 this.mServiceDataPolicy = serviceDataPolicy; 2192 return this; 2193 } 2194 2195 /** 2196 * Sets satelliteDataConsumedPerSessionBytes value of 2197 * {@link CarrierRoamingSatelliteSession} atom then returns Builder class 2198 */ setSatelliteDataConsumedBytes( long satelliteDataConsumedPerSessionBytes)2199 public Builder setSatelliteDataConsumedBytes( 2200 long satelliteDataConsumedPerSessionBytes) { 2201 this.mSatelliteDataConsumedBytes = satelliteDataConsumedPerSessionBytes; 2202 return this; 2203 } 2204 2205 /** 2206 * Sets isMultiSim value of {@link CarrierRoamingSatelliteSession} atom, which indicates 2207 * whether multi sim are activated or not, then returns Builder class 2208 */ setIsMultiSim(boolean isMultiSim)2209 public Builder setIsMultiSim(boolean isMultiSim) { 2210 this.mIsMultiSim = isMultiSim; 2211 return this; 2212 } 2213 2214 /** 2215 * Returns CarrierRoamingSatelliteSessionParams, which contains whole component of 2216 * {@link CarrierRoamingSatelliteSession} atom 2217 */ build()2218 public CarrierRoamingSatelliteSessionParams build() { 2219 return new SatelliteStats() 2220 .new CarrierRoamingSatelliteSessionParams(Builder.this); 2221 } 2222 2223 /** 2224 * Sets isNbIotNtn value of {@link CarrierRoamingSatelliteSession} atom, which indicates 2225 * whether satellite service tech is NB-IoT-NTN or not 2226 */ setIsNbIotNtn(boolean isNbIotNtn)2227 public Builder setIsNbIotNtn(boolean isNbIotNtn) { 2228 this.mIsNbIotNtn = isNbIotNtn; 2229 return this; 2230 } 2231 } 2232 2233 @Override toString()2234 public String toString() { 2235 return "CarrierRoamingSatelliteSessionParams(" 2236 + "carrierId=" + mCarrierId 2237 + ", isNtnRoamingInHomeCountry=" + mIsNtnRoamingInHomeCountry 2238 + ", totalSatelliteModeTimeSec=" + mTotalSatelliteModeTimeSec 2239 + ", numberOfSatelliteConnections=" + mNumberOfSatelliteConnections 2240 + ", avgDurationOfSatelliteConnectionSec=" 2241 + mAvgDurationOfSatelliteConnectionSec 2242 + ", satelliteConnectionGapMinSec=" + mSatelliteConnectionGapMinSec 2243 + ", satelliteConnectionGapAvgSec=" + mSatelliteConnectionGapAvgSec 2244 + ", satelliteConnectionGapMaxSec=" + mSatelliteConnectionGapMaxSec 2245 + ", rsrpAvg=" + mRsrpAvg 2246 + ", rsrpMedian=" + mRsrpMedian 2247 + ", rssnrAvg=" + mRssnrAvg 2248 + ", rssnrMedian=" + mRssnrMedian 2249 + ", countOfIncomingSms=" + mCountOfIncomingSms 2250 + ", countOfOutgoingSms=" + mCountOfOutgoingSms 2251 + ", countOfIncomingMms=" + mCountOfIncomingMms 2252 + ", countOfOutgoingMms=" + mCountOfOutgoingMms 2253 + ", supportedSatelliteServices=" + Arrays.toString(mSupportedSatelliteServices) 2254 + ", serviceDataPolicy=" + mServiceDataPolicy 2255 + ", SatelliteDataConsumedBytes=" + mSatelliteDataConsumedBytes 2256 + ", isMultiSim=" + mIsMultiSim 2257 + ", isNbIotNtn=" + mIsNbIotNtn 2258 + ")"; 2259 } 2260 } 2261 2262 /** 2263 * A data class to contain whole component of {@link CarrierRoamingSatelliteControllerStats} 2264 * atom. Refer to {@link #onCarrierRoamingSatelliteControllerStatsMetrics( 2265 * CarrierRoamingSatelliteControllerStatsParams)}. 2266 */ 2267 public class CarrierRoamingSatelliteControllerStatsParams { 2268 private final int mConfigDataSource; 2269 private final int mCountOfEntitlementStatusQueryRequest; 2270 private final int mCountOfSatelliteConfigUpdateRequest; 2271 private final int mCountOfSatelliteNotificationDisplayed; 2272 private static int sSatelliteSessionGapMinSec; 2273 private static int sSatelliteSessionGapAvgSec; 2274 private static int sSatelliteSessionGapMaxSec; 2275 private static int sCarrierId; 2276 private static boolean sIsDeviceEntitled; 2277 private static boolean sIsMultiSim; 2278 private final int mCountOfSatelliteSessions; 2279 private static boolean sIsNbIotNtn; 2280 CarrierRoamingSatelliteControllerStatsParams(Builder builder)2281 private CarrierRoamingSatelliteControllerStatsParams(Builder builder) { 2282 this.mConfigDataSource = builder.mConfigDataSource; 2283 this.mCountOfEntitlementStatusQueryRequest = 2284 builder.mCountOfEntitlementStatusQueryRequest; 2285 this.mCountOfSatelliteConfigUpdateRequest = 2286 builder.mCountOfSatelliteConfigUpdateRequest; 2287 this.mCountOfSatelliteNotificationDisplayed = 2288 builder.mCountOfSatelliteNotificationDisplayed; 2289 2290 // Update session gap params only when they are explicitly provided 2291 if (builder.mSatelliteSessionGapMinSec.isPresent()) { 2292 sSatelliteSessionGapMinSec = builder.mSatelliteSessionGapMinSec.get(); 2293 } 2294 if (builder.mSatelliteSessionGapAvgSec.isPresent()) { 2295 sSatelliteSessionGapAvgSec = builder.mSatelliteSessionGapAvgSec.get(); 2296 } 2297 if (builder.mSatelliteSessionGapMaxSec.isPresent()) { 2298 sSatelliteSessionGapMaxSec = builder.mSatelliteSessionGapMaxSec.get(); 2299 } 2300 2301 // Carrier ID value should be updated only when it is meaningful. 2302 if (builder.mCarrierId.isPresent()) { 2303 sCarrierId = builder.mCarrierId.get(); 2304 } 2305 2306 // isDeviceEntitled value should be updated only when it is meaningful. 2307 if (builder.mIsDeviceEntitled.isPresent()) { 2308 sIsDeviceEntitled = builder.mIsDeviceEntitled.get(); 2309 } 2310 2311 // isMulti value should be updated only when it is meaningful. 2312 if (builder.mIsMultiSim.isPresent()) { 2313 sIsMultiSim = builder.mIsMultiSim.get(); 2314 } 2315 2316 this.mCountOfSatelliteSessions = builder.mCountOfSatelliteSessions; 2317 2318 // isNbIotNtn value should be updated only when it is meaningful. 2319 if (builder.mIsNbIotNtn.isPresent()) { 2320 sIsNbIotNtn = builder.mIsNbIotNtn.get(); 2321 } 2322 } 2323 getConfigDataSource()2324 public int getConfigDataSource() { 2325 return mConfigDataSource; 2326 } 2327 getCountOfEntitlementStatusQueryRequest()2328 public int getCountOfEntitlementStatusQueryRequest() { 2329 return mCountOfEntitlementStatusQueryRequest; 2330 } 2331 getCountOfSatelliteConfigUpdateRequest()2332 public int getCountOfSatelliteConfigUpdateRequest() { 2333 return mCountOfSatelliteConfigUpdateRequest; 2334 } 2335 getCountOfSatelliteNotificationDisplayed()2336 public int getCountOfSatelliteNotificationDisplayed() { 2337 return mCountOfSatelliteNotificationDisplayed; 2338 } 2339 getSatelliteSessionGapMinSec()2340 public int getSatelliteSessionGapMinSec() { 2341 return sSatelliteSessionGapMinSec; 2342 } 2343 getSatelliteSessionGapAvgSec()2344 public int getSatelliteSessionGapAvgSec() { 2345 return sSatelliteSessionGapAvgSec; 2346 } 2347 getSatelliteSessionGapMaxSec()2348 public int getSatelliteSessionGapMaxSec() { 2349 return sSatelliteSessionGapMaxSec; 2350 } 2351 getCarrierId()2352 public int getCarrierId() { 2353 return sCarrierId; 2354 } 2355 isDeviceEntitled()2356 public boolean isDeviceEntitled() { 2357 return sIsDeviceEntitled; 2358 } 2359 isMultiSim()2360 public boolean isMultiSim() { 2361 return sIsMultiSim; 2362 } 2363 getCountOfSatelliteSessions()2364 public int getCountOfSatelliteSessions() { 2365 return mCountOfSatelliteSessions; 2366 } 2367 isNbIotNtn()2368 public boolean isNbIotNtn() { 2369 return sIsNbIotNtn; 2370 } 2371 2372 /** 2373 * A builder class to create {@link CarrierRoamingSatelliteControllerStatsParams} 2374 * data structure class 2375 */ 2376 public static class Builder { 2377 private int mConfigDataSource = SatelliteConstants.CONFIG_DATA_SOURCE_UNKNOWN; 2378 private int mCountOfEntitlementStatusQueryRequest = 0; 2379 private int mCountOfSatelliteConfigUpdateRequest = 0; 2380 private int mCountOfSatelliteNotificationDisplayed = 0; 2381 private Optional<Integer> mSatelliteSessionGapMinSec = Optional.empty(); 2382 private Optional<Integer> mSatelliteSessionGapAvgSec = Optional.empty(); 2383 private Optional<Integer> mSatelliteSessionGapMaxSec = Optional.empty(); 2384 private Optional<Integer> mCarrierId = Optional.empty(); 2385 private Optional<Boolean> mIsDeviceEntitled = Optional.empty(); 2386 private Optional<Boolean> mIsMultiSim = Optional.empty(); 2387 private int mCountOfSatelliteSessions = 0; 2388 private Optional<Boolean> mIsNbIotNtn = Optional.empty(); 2389 2390 /** 2391 * Sets configDataSource value of {@link CarrierRoamingSatelliteControllerStats} atom 2392 * then returns Builder class 2393 */ setConfigDataSource(int configDataSource)2394 public Builder setConfigDataSource(int configDataSource) { 2395 this.mConfigDataSource = configDataSource; 2396 return this; 2397 } 2398 2399 /** 2400 * Sets countOfEntitlementStatusQueryRequest value of 2401 * {@link CarrierRoamingSatelliteControllerStats} atom then returns Builder class 2402 */ setCountOfEntitlementStatusQueryRequest( int countOfEntitlementStatusQueryRequest)2403 public Builder setCountOfEntitlementStatusQueryRequest( 2404 int countOfEntitlementStatusQueryRequest) { 2405 this.mCountOfEntitlementStatusQueryRequest = countOfEntitlementStatusQueryRequest; 2406 return this; 2407 } 2408 2409 /** 2410 * Sets countOfSatelliteConfigUpdateRequest value of 2411 * {@link CarrierRoamingSatelliteControllerStats} atom then returns Builder class 2412 */ setCountOfSatelliteConfigUpdateRequest( int countOfSatelliteConfigUpdateRequest)2413 public Builder setCountOfSatelliteConfigUpdateRequest( 2414 int countOfSatelliteConfigUpdateRequest) { 2415 this.mCountOfSatelliteConfigUpdateRequest = countOfSatelliteConfigUpdateRequest; 2416 return this; 2417 } 2418 2419 /** 2420 * Sets countOfSatelliteNotificationDisplayed value of 2421 * {@link CarrierRoamingSatelliteControllerStats} atom then returns Builder class 2422 */ setCountOfSatelliteNotificationDisplayed( int countOfSatelliteNotificationDisplayed)2423 public Builder setCountOfSatelliteNotificationDisplayed( 2424 int countOfSatelliteNotificationDisplayed) { 2425 this.mCountOfSatelliteNotificationDisplayed = countOfSatelliteNotificationDisplayed; 2426 return this; 2427 } 2428 2429 /** 2430 * Sets satelliteSessionGapMinSec value of 2431 * {@link CarrierRoamingSatelliteControllerStats} atom then returns Builder class 2432 */ setSatelliteSessionGapMinSec(int satelliteSessionGapMinSec)2433 public Builder setSatelliteSessionGapMinSec(int satelliteSessionGapMinSec) { 2434 this.mSatelliteSessionGapMinSec = Optional.of(satelliteSessionGapMinSec); 2435 return this; 2436 } 2437 2438 /** 2439 * Sets satelliteSessionGapAvgSec value of 2440 * {@link CarrierRoamingSatelliteControllerStats} atom then returns Builder class 2441 */ setSatelliteSessionGapAvgSec(int satelliteSessionGapAvgSec)2442 public Builder setSatelliteSessionGapAvgSec(int satelliteSessionGapAvgSec) { 2443 this.mSatelliteSessionGapAvgSec = Optional.of(satelliteSessionGapAvgSec); 2444 return this; 2445 } 2446 2447 /** 2448 * Sets satelliteSessionGapMaxSec value of 2449 * {@link CarrierRoamingSatelliteControllerStats} atom then returns Builder class 2450 */ setSatelliteSessionGapMaxSec(int satelliteSessionGapMaxSec)2451 public Builder setSatelliteSessionGapMaxSec(int satelliteSessionGapMaxSec) { 2452 this.mSatelliteSessionGapMaxSec = Optional.of(satelliteSessionGapMaxSec); 2453 return this; 2454 } 2455 2456 /** Sets the currently active NB-IoT NTN carrier ID. */ setCarrierId(int carrierId)2457 public Builder setCarrierId(int carrierId) { 2458 this.mCarrierId = Optional.of(carrierId); 2459 return this; 2460 } 2461 2462 /** Sets whether the device is currently entitled or not. */ setIsDeviceEntitled(boolean isDeviceEntitled)2463 public Builder setIsDeviceEntitled(boolean isDeviceEntitled) { 2464 this.mIsDeviceEntitled = Optional.of(isDeviceEntitled); 2465 return this; 2466 } 2467 2468 /** Sets whether the device is in DSDS state or not. */ setIsMultiSim(boolean isMultiSim)2469 public Builder setIsMultiSim(boolean isMultiSim) { 2470 this.mIsMultiSim = Optional.of(isMultiSim); 2471 return this; 2472 } 2473 2474 /** 2475 * Increase the countOfSatelliteSession value of 2476 * {@link CarrierRoamingSatelliteControllerStats} atom by one then returns Builder class 2477 */ increaseCountOfSatelliteSessions()2478 public Builder increaseCountOfSatelliteSessions() { 2479 this.mCountOfSatelliteSessions++; 2480 return this; 2481 } 2482 2483 /** Sets whether the device is in NB-NoT-NTN state or not. */ setIsNbIotNtn(boolean isNbIotNtn)2484 public Builder setIsNbIotNtn(boolean isNbIotNtn) { 2485 this.mIsNbIotNtn = Optional.of(isNbIotNtn); 2486 return this; 2487 } 2488 2489 /** 2490 * Returns CarrierRoamingSatelliteControllerStatsParams, which contains whole component 2491 * of {@link CarrierRoamingSatelliteControllerStats} atom 2492 */ build()2493 public CarrierRoamingSatelliteControllerStatsParams build() { 2494 return new SatelliteStats() 2495 .new CarrierRoamingSatelliteControllerStatsParams(Builder.this); 2496 } 2497 } 2498 2499 @Override equals(Object obj)2500 public boolean equals(Object obj) { 2501 if (this == obj) return true; 2502 if (obj == null || getClass() != obj.getClass()) return false; 2503 CarrierRoamingSatelliteControllerStatsParams that = 2504 (CarrierRoamingSatelliteControllerStatsParams) obj; 2505 return mConfigDataSource == that.getConfigDataSource() 2506 && mCountOfEntitlementStatusQueryRequest 2507 == that.getCountOfEntitlementStatusQueryRequest() 2508 && mCountOfSatelliteConfigUpdateRequest 2509 == that.getCountOfSatelliteConfigUpdateRequest() 2510 && mCountOfSatelliteNotificationDisplayed 2511 == that.getCountOfSatelliteNotificationDisplayed() 2512 && sSatelliteSessionGapMinSec == that.getSatelliteSessionGapMinSec() 2513 && sSatelliteSessionGapAvgSec == that.getSatelliteSessionGapAvgSec() 2514 && sSatelliteSessionGapMaxSec == that.getSatelliteSessionGapMaxSec() 2515 && sCarrierId == that.getCarrierId() 2516 && sIsDeviceEntitled == that.isDeviceEntitled() 2517 && sIsMultiSim == that.isMultiSim() 2518 && mCountOfSatelliteSessions == that.getCountOfSatelliteSessions() 2519 && sIsNbIotNtn == that.isNbIotNtn(); 2520 } 2521 2522 @Override hashCode()2523 public int hashCode() { 2524 return Objects.hash(mConfigDataSource, mCountOfEntitlementStatusQueryRequest, 2525 mCountOfSatelliteConfigUpdateRequest, mCountOfSatelliteNotificationDisplayed, 2526 sSatelliteSessionGapMinSec, sSatelliteSessionGapAvgSec, 2527 sSatelliteSessionGapMaxSec, sCarrierId, sIsDeviceEntitled, sIsMultiSim, 2528 mCountOfSatelliteSessions, sIsNbIotNtn); 2529 } 2530 2531 @Override toString()2532 public String toString() { 2533 return "CarrierRoamingSatelliteControllerStatsParams(" 2534 + "configDataSource=" + mConfigDataSource 2535 + ", countOfEntitlementStatusQueryRequest=" 2536 + mCountOfEntitlementStatusQueryRequest 2537 + ", countOfSatelliteConfigUpdateRequest=" 2538 + mCountOfSatelliteConfigUpdateRequest 2539 + ", countOfSatelliteNotificationDisplayed=" 2540 + mCountOfSatelliteNotificationDisplayed 2541 + ", satelliteSessionGapMinSec=" + sSatelliteSessionGapMinSec 2542 + ", satelliteSessionGapAvgSec=" + sSatelliteSessionGapAvgSec 2543 + ", satelliteSessionGapMaxSec=" + sSatelliteSessionGapMaxSec 2544 + ", carrierId=" + sCarrierId 2545 + ", isDeviceEntitled=" + sIsDeviceEntitled 2546 + ", isMultiSim=" + sIsMultiSim 2547 + ", countOfSatelliteSession=" + mCountOfSatelliteSessions 2548 + ", isNbIotNtn=" + sIsNbIotNtn 2549 + ")"; 2550 } 2551 } 2552 2553 /** 2554 * A data class to contain whole component of {@link SatelliteEntitlement} atom. 2555 * Refer to {@link #onSatelliteEntitlementMetrics(SatelliteEntitlementParams)}. 2556 */ 2557 public class SatelliteEntitlementParams { 2558 private final int mCarrierId; 2559 private final int mResult; 2560 private final int mEntitlementStatus; 2561 private final boolean mIsRetry; 2562 private final int mCount; 2563 private final boolean mIsAllowedServiceEntitlement; 2564 private final int[] mEntitlementServiceType; 2565 private final int mEntitlementDataPolicy; 2566 SatelliteEntitlementParams(Builder builder)2567 private SatelliteEntitlementParams(Builder builder) { 2568 this.mCarrierId = builder.mCarrierId; 2569 this.mResult = builder.mResult; 2570 this.mEntitlementStatus = builder.mEntitlementStatus; 2571 this.mIsRetry = builder.mIsRetry; 2572 this.mCount = builder.mCount; 2573 this.mIsAllowedServiceEntitlement = builder.mIsAllowedServiceEntitlement; 2574 this.mEntitlementServiceType = builder.mEntitlementServiceType; 2575 this.mEntitlementDataPolicy = builder.mEntitlementDataPolicy; 2576 } 2577 getCarrierId()2578 public int getCarrierId() { 2579 return mCarrierId; 2580 } 2581 getResult()2582 public int getResult() { 2583 return mResult; 2584 } 2585 getEntitlementStatus()2586 public int getEntitlementStatus() { 2587 return mEntitlementStatus; 2588 } 2589 getIsRetry()2590 public boolean getIsRetry() { 2591 return mIsRetry; 2592 } 2593 getCount()2594 public int getCount() { 2595 return mCount; 2596 } 2597 getIsAllowedServiceEntitlement()2598 public boolean getIsAllowedServiceEntitlement() { 2599 return mIsAllowedServiceEntitlement; 2600 } 2601 getEntitlementServiceType()2602 public int[] getEntitlementServiceType() { 2603 return mEntitlementServiceType; 2604 } 2605 getEntitlementDataPolicy()2606 public int getEntitlementDataPolicy() { 2607 return mEntitlementDataPolicy; 2608 } 2609 2610 /** 2611 * A builder class to create {@link SatelliteEntitlementParams} data structure class 2612 */ 2613 public static class Builder { 2614 private int mCarrierId = -1; 2615 private int mResult = -1; 2616 private int mEntitlementStatus = -1; 2617 private boolean mIsRetry = false; 2618 private int mCount = -1; 2619 private boolean mIsAllowedServiceEntitlement = false; 2620 private int[] mEntitlementServiceType = new int[0]; 2621 private int mEntitlementDataPolicy = 2622 SatelliteConstants.SATELLITE_ENTITLEMENT_SERVICE_POLICY_UNKNOWN; 2623 2624 /** 2625 * Sets carrierId value of {@link SatelliteEntitlement} atom 2626 * then returns Builder class 2627 */ setCarrierId(int carrierId)2628 public Builder setCarrierId(int carrierId) { 2629 this.mCarrierId = carrierId; 2630 return this; 2631 } 2632 2633 /** 2634 * Sets result value of {@link SatelliteEntitlement} atom 2635 * then returns Builder class 2636 */ setResult(int result)2637 public Builder setResult(int result) { 2638 this.mResult = result; 2639 return this; 2640 } 2641 2642 /** 2643 * Sets entitlementStatus value of {@link SatelliteEntitlement} atom 2644 * then returns Builder class 2645 */ setEntitlementStatus(int entitlementStatus)2646 public Builder setEntitlementStatus(int entitlementStatus) { 2647 this.mEntitlementStatus = entitlementStatus; 2648 return this; 2649 } 2650 2651 /** 2652 * Sets isRetry value of {@link SatelliteEntitlement} atom 2653 * then returns Builder class 2654 */ setIsRetry(boolean isRetry)2655 public Builder setIsRetry(boolean isRetry) { 2656 this.mIsRetry = isRetry; 2657 return this; 2658 } 2659 2660 /** 2661 * Sets count value of {@link SatelliteEntitlement} atom 2662 * then returns Builder class 2663 */ setCount(int count)2664 public Builder setCount(int count) { 2665 this.mCount = count; 2666 return this; 2667 } 2668 2669 /** 2670 * Sets isAllowedServiceEntitlement value of {@link SatelliteEntitlement} atom 2671 * then returns Builder class 2672 */ setIsAllowedServiceEntitlement(boolean isAllowedServiceEntitlement)2673 public Builder setIsAllowedServiceEntitlement(boolean isAllowedServiceEntitlement) { 2674 this.mIsAllowedServiceEntitlement = isAllowedServiceEntitlement; 2675 return this; 2676 } 2677 2678 /** 2679 * Sets entitlementServiceType value of {@link SatelliteEntitlement} atom 2680 * then returns Builder class 2681 */ setEntitlementServiceType(int[] entitlementServiceType)2682 public Builder setEntitlementServiceType(int[] entitlementServiceType) { 2683 this.mEntitlementServiceType = entitlementServiceType; 2684 Arrays.sort(this.mEntitlementServiceType); 2685 return this; 2686 } 2687 2688 /** 2689 * Sets entitlementDataPolicy value of {@link SatelliteEntitlement} atom 2690 * then returns Builder class 2691 */ setEntitlementDataPolicy(int entitlementDataPolicy)2692 public Builder setEntitlementDataPolicy(int entitlementDataPolicy) { 2693 this.mEntitlementDataPolicy = entitlementDataPolicy; 2694 return this; 2695 } 2696 2697 /** 2698 * Returns SatelliteEntitlementParams, which contains whole component of 2699 * {@link SatelliteEntitlement} atom 2700 */ build()2701 public SatelliteEntitlementParams build() { 2702 return new SatelliteStats() 2703 .new SatelliteEntitlementParams(Builder.this); 2704 } 2705 } 2706 2707 @Override toString()2708 public String toString() { 2709 return "SatelliteEntitlementParams(" 2710 + "carrierId=" + mCarrierId 2711 + ", result=" + mResult 2712 + ", entitlementStatus=" + mEntitlementStatus 2713 + ", isRetry=" + mIsRetry 2714 + ", count=" + mCount 2715 + ",isAllowedServiceEntitlement=" + mIsAllowedServiceEntitlement 2716 + ",entitlementServiceType=" + Arrays.toString(mEntitlementServiceType) 2717 + ",entitlementServicePolicy=" + mEntitlementDataPolicy + ")"; 2718 } 2719 } 2720 2721 /** 2722 * A data class to contain whole component of {@link SatelliteConfigUpdater} atom. 2723 * Refer to {@link #onSatelliteConfigUpdaterMetrics(SatelliteConfigUpdaterParams)}. 2724 */ 2725 public class SatelliteConfigUpdaterParams { 2726 private final int mConfigVersion; 2727 private final int mOemConfigResult; 2728 private final int mCarrierConfigResult; 2729 private final int mCount; 2730 SatelliteConfigUpdaterParams(Builder builder)2731 private SatelliteConfigUpdaterParams(Builder builder) { 2732 this.mConfigVersion = builder.mConfigVersion; 2733 this.mOemConfigResult = builder.mOemConfigResult; 2734 this.mCarrierConfigResult = builder.mCarrierConfigResult; 2735 this.mCount = builder.mCount; 2736 } 2737 getConfigVersion()2738 public int getConfigVersion() { 2739 return mConfigVersion; 2740 } 2741 getOemConfigResult()2742 public int getOemConfigResult() { 2743 return mOemConfigResult; 2744 } 2745 getCarrierConfigResult()2746 public int getCarrierConfigResult() { 2747 return mCarrierConfigResult; 2748 } 2749 getCount()2750 public int getCount() { 2751 return mCount; 2752 } 2753 2754 /** 2755 * A builder class to create {@link SatelliteConfigUpdaterParams} data structure class 2756 */ 2757 public static class Builder { 2758 private int mConfigVersion = -1; 2759 private int mOemConfigResult = -1; 2760 private int mCarrierConfigResult = -1; 2761 private int mCount = -1; 2762 2763 /** 2764 * Sets configVersion value of {@link SatelliteConfigUpdater} atom 2765 * then returns Builder class 2766 */ setConfigVersion(int configVersion)2767 public Builder setConfigVersion(int configVersion) { 2768 this.mConfigVersion = configVersion; 2769 return this; 2770 } 2771 2772 /** 2773 * Sets oemConfigResult value of {@link SatelliteConfigUpdater} atom 2774 * then returns Builder class 2775 */ setOemConfigResult(int oemConfigResult)2776 public Builder setOemConfigResult(int oemConfigResult) { 2777 this.mOemConfigResult = oemConfigResult; 2778 return this; 2779 } 2780 2781 /** 2782 * Sets carrierConfigResult value of {@link SatelliteConfigUpdater} atom 2783 * then returns Builder class 2784 */ setCarrierConfigResult(int carrierConfigResult)2785 public Builder setCarrierConfigResult(int carrierConfigResult) { 2786 this.mCarrierConfigResult = carrierConfigResult; 2787 return this; 2788 } 2789 2790 /** 2791 * Sets count value of {@link SatelliteConfigUpdater} atom 2792 * then returns Builder class 2793 */ setCount(int count)2794 public Builder setCount(int count) { 2795 this.mCount = count; 2796 return this; 2797 } 2798 2799 /** 2800 * Returns SatelliteConfigUpdaterParams, which contains whole component of 2801 * {@link SatelliteConfigUpdater} atom 2802 */ build()2803 public SatelliteConfigUpdaterParams build() { 2804 return new SatelliteStats() 2805 .new SatelliteConfigUpdaterParams(Builder.this); 2806 } 2807 } 2808 2809 @Override toString()2810 public String toString() { 2811 return "SatelliteConfigUpdaterParams(" 2812 + "configVersion=" + mConfigVersion 2813 + ", oemConfigResult=" + mOemConfigResult 2814 + ", carrierConfigResult=" + mCarrierConfigResult 2815 + ", count=" + mCount + ")"; 2816 } 2817 } 2818 2819 /** 2820 * A data class to contain whole component of {@link SatelliteAccessControllerParams} atom. 2821 * Refer to {@link #onSatelliteAccessControllerMetrics(SatelliteAccessControllerParams)}. 2822 */ 2823 public class SatelliteAccessControllerParams { 2824 private final @SatelliteConstants.AccessControlType int mAccessControlType; 2825 private final long mLocationQueryTimeMillis; 2826 private final long mOnDeviceLookupTimeMillis; 2827 private final long mTotalCheckingTimeMillis; 2828 private final boolean mIsAllowed; 2829 private final boolean mIsEmergency; 2830 private final @SatelliteManager.SatelliteResult int mResultCode; 2831 private final String[] mCountryCodes; 2832 private final @SatelliteConstants.ConfigDataSource int mConfigDataSource; 2833 private final int mCarrierId; 2834 private final int mTriggeringEvent; 2835 private final boolean mIsNtnOnlyCarrier; 2836 SatelliteAccessControllerParams(Builder builder)2837 private SatelliteAccessControllerParams(Builder builder) { 2838 this.mAccessControlType = builder.mAccessControlType; 2839 this.mLocationQueryTimeMillis = builder.mLocationQueryTimeMillis; 2840 this.mOnDeviceLookupTimeMillis = builder.mOnDeviceLookupTimeMillis; 2841 this.mTotalCheckingTimeMillis = builder.mTotalCheckingTimeMillis; 2842 this.mIsAllowed = builder.mIsAllowed; 2843 this.mIsEmergency = builder.mIsEmergency; 2844 this.mResultCode = builder.mResultCode; 2845 this.mCountryCodes = builder.mCountryCodes; 2846 this.mConfigDataSource = builder.mConfigDataSource; 2847 this.mCarrierId = builder.mCarrierId; 2848 this.mTriggeringEvent = builder.mTriggeringEvent; 2849 this.mIsNtnOnlyCarrier = builder.mIsNtnOnlyCarrier; 2850 } 2851 getAccessControlType()2852 public @SatelliteConstants.AccessControlType int getAccessControlType() { 2853 return mAccessControlType; 2854 } 2855 getLocationQueryTime()2856 public long getLocationQueryTime() { 2857 return mLocationQueryTimeMillis; 2858 } 2859 getOnDeviceLookupTime()2860 public long getOnDeviceLookupTime() { 2861 return mOnDeviceLookupTimeMillis; 2862 } 2863 getTotalCheckingTime()2864 public long getTotalCheckingTime() { 2865 return mTotalCheckingTimeMillis; 2866 } 2867 getIsAllowed()2868 public boolean getIsAllowed() { 2869 return mIsAllowed; 2870 } 2871 getIsEmergency()2872 public boolean getIsEmergency() { 2873 return mIsEmergency; 2874 } 2875 getResultCode()2876 public @SatelliteManager.SatelliteResult int getResultCode() { 2877 return mResultCode; 2878 } 2879 getCountryCodes()2880 public String[] getCountryCodes() { 2881 return mCountryCodes; 2882 } 2883 getConfigDataSource()2884 public @SatelliteConstants.ConfigDataSource int getConfigDataSource() { 2885 return mConfigDataSource; 2886 } 2887 getCarrierId()2888 public int getCarrierId() { 2889 return mCarrierId; 2890 } 2891 getTriggeringEvent()2892 @SatelliteConstants.TriggeringEvent public int getTriggeringEvent() { 2893 return mTriggeringEvent; 2894 } 2895 isNtnOnlyCarrier()2896 public boolean isNtnOnlyCarrier() { 2897 return mIsNtnOnlyCarrier; 2898 } 2899 2900 /** 2901 * A builder class to create {@link SatelliteAccessControllerParams} data structure class 2902 */ 2903 public static class Builder { 2904 private @SatelliteConstants.AccessControlType int mAccessControlType; 2905 private long mLocationQueryTimeMillis; 2906 private long mOnDeviceLookupTimeMillis; 2907 private long mTotalCheckingTimeMillis; 2908 private boolean mIsAllowed; 2909 private boolean mIsEmergency; 2910 private @SatelliteManager.SatelliteResult int mResultCode; 2911 private String[] mCountryCodes; 2912 private @SatelliteConstants.ConfigDataSource int mConfigDataSource; 2913 private int mCarrierId = UNKNOWN_CARRIER_ID; 2914 private @SatelliteConstants.TriggeringEvent int mTriggeringEvent = 2915 TRIGGERING_EVENT_UNKNOWN; 2916 private boolean mIsNtnOnlyCarrier = false; 2917 2918 /** 2919 * Sets AccessControlType value of {@link #SatelliteAccessController} 2920 * atom then returns Builder class 2921 */ setAccessControlType( @atelliteConstants.AccessControlType int accessControlType)2922 public Builder setAccessControlType( 2923 @SatelliteConstants.AccessControlType int accessControlType) { 2924 this.mAccessControlType = accessControlType; 2925 return this; 2926 } 2927 2928 /** Sets the location query time for current satellite enablement. */ setLocationQueryTime(long locationQueryTimeMillis)2929 public Builder setLocationQueryTime(long locationQueryTimeMillis) { 2930 this.mLocationQueryTimeMillis = locationQueryTimeMillis; 2931 return this; 2932 } 2933 2934 /** Sets the on device lookup time for current satellite enablement. */ setOnDeviceLookupTime(long onDeviceLookupTimeMillis)2935 public Builder setOnDeviceLookupTime(long onDeviceLookupTimeMillis) { 2936 this.mOnDeviceLookupTimeMillis = onDeviceLookupTimeMillis; 2937 return this; 2938 } 2939 2940 /** Sets the total checking time for current satellite enablement. */ setTotalCheckingTime(long totalCheckingTimeMillis)2941 public Builder setTotalCheckingTime(long totalCheckingTimeMillis) { 2942 this.mTotalCheckingTimeMillis = totalCheckingTimeMillis; 2943 return this; 2944 } 2945 2946 /** Sets whether the satellite communication is allowed from current location. */ setIsAllowed(boolean isAllowed)2947 public Builder setIsAllowed(boolean isAllowed) { 2948 this.mIsAllowed = isAllowed; 2949 return this; 2950 } 2951 2952 /** Sets whether the current satellite enablement is for emergency or not. */ setIsEmergency(boolean isEmergency)2953 public Builder setIsEmergency(boolean isEmergency) { 2954 this.mIsEmergency = isEmergency; 2955 return this; 2956 } 2957 2958 /** Sets the result code for checking whether satellite service is allowed from current 2959 location. */ setResult(int result)2960 public Builder setResult(int result) { 2961 this.mResultCode = result; 2962 return this; 2963 } 2964 2965 /** Sets the country code for current location while attempting satellite enablement. */ setCountryCodes(String[] countryCodes)2966 public Builder setCountryCodes(String[] countryCodes) { 2967 this.mCountryCodes = Arrays.stream(countryCodes).toArray(String[]::new); 2968 return this; 2969 } 2970 2971 /** Sets the config data source for checking whether satellite service is allowed from 2972 current location. */ setConfigDatasource(int configDatasource)2973 public Builder setConfigDatasource(int configDatasource) { 2974 this.mConfigDataSource = configDatasource; 2975 return this; 2976 } 2977 2978 /** Sets the currently active NB-IoT NTN carrier ID. */ setCarrierId(int carrierId)2979 public Builder setCarrierId(int carrierId) { 2980 this.mCarrierId = carrierId; 2981 return this; 2982 } 2983 2984 /** Sets the triggering evenr for current satellite access controller metric. */ setTriggeringEvent( @atelliteConstants.TriggeringEvent int triggeringEvent)2985 public Builder setTriggeringEvent( 2986 @SatelliteConstants.TriggeringEvent int triggeringEvent) { 2987 this.mTriggeringEvent = triggeringEvent; 2988 return this; 2989 } 2990 2991 /** 2992 * Sets isNtnOnlyCarrier value of {@link SatelliteAccessController} atom 2993 * then returns Builder class 2994 */ setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier)2995 public Builder setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier) { 2996 this.mIsNtnOnlyCarrier = isNtnOnlyCarrier; 2997 return this; 2998 } 2999 3000 /** 3001 * Returns AccessControllerParams, which contains whole component of 3002 * {@link #SatelliteAccessController} atom 3003 */ build()3004 public SatelliteAccessControllerParams build() { 3005 return new SatelliteStats() 3006 .new SatelliteAccessControllerParams(this); 3007 } 3008 } 3009 3010 @Override toString()3011 public String toString() { 3012 return "AccessControllerParams(" 3013 + ", AccessControlType=" + mAccessControlType 3014 + ", LocationQueryTime=" + mLocationQueryTimeMillis 3015 + ", OnDeviceLookupTime=" + mOnDeviceLookupTimeMillis 3016 + ", TotalCheckingTime=" + mTotalCheckingTimeMillis 3017 + ", IsAllowed=" + mIsAllowed 3018 + ", IsEmergency=" + mIsEmergency 3019 + ", ResultCode=" + mResultCode 3020 + ", CountryCodes=" + Arrays.toString(mCountryCodes) 3021 + ", ConfigDataSource=" + mConfigDataSource 3022 + ", CarrierId=" + mCarrierId 3023 + ", TriggeringEvent=" + mTriggeringEvent 3024 + ", IsNtnOnlyCarrier=" + mIsNtnOnlyCarrier 3025 + ")"; 3026 } 3027 } 3028 3029 /** Create a new atom or update an existing atom for SatelliteController metrics */ onSatelliteControllerMetrics(SatelliteControllerParams param)3030 public synchronized void onSatelliteControllerMetrics(SatelliteControllerParams param) { 3031 SatelliteController proto = new SatelliteController(); 3032 proto.countOfSatelliteServiceEnablementsSuccess = 3033 param.getCountOfSatelliteServiceEnablementsSuccess(); 3034 proto.countOfSatelliteServiceEnablementsFail = 3035 param.getCountOfSatelliteServiceEnablementsFail(); 3036 proto.countOfOutgoingDatagramSuccess = param.getCountOfOutgoingDatagramSuccess(); 3037 proto.countOfOutgoingDatagramFail = param.getCountOfOutgoingDatagramFail(); 3038 proto.countOfIncomingDatagramSuccess = param.getCountOfIncomingDatagramSuccess(); 3039 proto.countOfIncomingDatagramFail = param.getCountOfIncomingDatagramFail(); 3040 proto.countOfDatagramTypeSosSmsSuccess = param.getCountOfDatagramTypeSosSmsSuccess(); 3041 proto.countOfDatagramTypeSosSmsFail = param.getCountOfDatagramTypeSosSmsFail(); 3042 proto.countOfDatagramTypeLocationSharingSuccess = 3043 param.getCountOfDatagramTypeLocationSharingSuccess(); 3044 proto.countOfDatagramTypeLocationSharingFail = 3045 param.getCountOfDatagramTypeLocationSharingFail(); 3046 proto.countOfProvisionSuccess = param.getCountOfProvisionSuccess(); 3047 proto.countOfProvisionFail = param.getCountOfProvisionFail(); 3048 proto.countOfDeprovisionSuccess = param.getCountOfDeprovisionSuccess(); 3049 proto.countOfDeprovisionFail = param.getCountOfDeprovisionFail(); 3050 proto.totalServiceUptimeSec = param.getTotalServiceUptimeSec(); 3051 proto.totalBatteryConsumptionPercent = param.getTotalBatteryConsumptionPercent(); 3052 proto.totalBatteryChargedTimeSec = param.getTotalBatteryChargedTimeSec(); 3053 proto.countOfDemoModeSatelliteServiceEnablementsSuccess = 3054 param.getCountOfDemoModeSatelliteServiceEnablementsSuccess(); 3055 proto.countOfDemoModeSatelliteServiceEnablementsFail = 3056 param.getCountOfDemoModeSatelliteServiceEnablementsFail(); 3057 proto.countOfDemoModeOutgoingDatagramSuccess = 3058 param.getCountOfDemoModeOutgoingDatagramSuccess(); 3059 proto.countOfDemoModeOutgoingDatagramFail = param.getCountOfDemoModeOutgoingDatagramFail(); 3060 proto.countOfDemoModeIncomingDatagramSuccess = 3061 param.getCountOfDemoModeIncomingDatagramSuccess(); 3062 proto.countOfDemoModeIncomingDatagramFail = param.getCountOfDemoModeIncomingDatagramFail(); 3063 proto.countOfDatagramTypeKeepAliveSuccess = param.getCountOfDatagramTypeKeepAliveSuccess(); 3064 proto.countOfDatagramTypeKeepAliveFail = param.getCountOfDatagramTypeKeepAliveFail(); 3065 proto.countOfAllowedSatelliteAccess = param.getCountOfAllowedSatelliteAccess(); 3066 proto.countOfDisallowedSatelliteAccess = param.getCountOfDisallowedSatelliteAccess(); 3067 proto.countOfSatelliteAccessCheckFail = param.getCountOfSatelliteAccessCheckFail(); 3068 proto.isProvisioned = param.isProvisioned(); 3069 proto.carrierId = param.getCarrierId(); 3070 proto.countOfSatelliteAllowedStateChangedEvents = 3071 param.getCountOfSatelliteAllowedStateChangedEvents(); 3072 proto.countOfSuccessfulLocationQueries = param.getCountOfSuccessfulLocationQueries(); 3073 proto.countOfFailedLocationQueries = param.getCountOfFailedLocationQueries(); 3074 proto.countOfP2PSmsAvailableNotificationShown = 3075 param.getCountOfP2PSmsAvailableNotificationShown(); 3076 proto.countOfP2PSmsAvailableNotificationRemoved = 3077 param.getCountOfP2PSmsAvailableNotificationRemoved(); 3078 proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier(); 3079 proto.versionOfSatelliteAccessConfig = param.getVersionSatelliteAccessConfig(); 3080 proto.countOfIncomingDatagramTypeSosSmsSuccess = 3081 param.getCountOfIncomingDatagramTypeSosSmsSuccess(); 3082 proto.countOfIncomingDatagramTypeSosSmsFail = 3083 param.getCountOfIncomingDatagramTypeSosSmsFail(); 3084 proto.countOfOutgoingDatagramTypeSmsSuccess = 3085 param.getCountOfOutgoingDatagramTypeSmsSuccess(); 3086 proto.countOfOutgoingDatagramTypeSmsFail = param.getCountOfOutgoingDatagramTypeSmsFail(); 3087 proto.countOfIncomingDatagramTypeSmsSuccess = 3088 param.getCountOfIncomingDatagramTypeSmsSuccess(); 3089 proto.countOfIncomingDatagramTypeSmsFail = param.getCountOfIncomingDatagramTypeSmsFail(); 3090 if (DBG) logd("onSatelliteControllerMetrics" + param); 3091 mAtomsStorage.addSatelliteControllerStats(proto); 3092 } 3093 3094 /** Create a new atom or update an existing atom for SatelliteSession metrics */ onSatelliteSessionMetrics(SatelliteSessionParams param)3095 public synchronized void onSatelliteSessionMetrics(SatelliteSessionParams param) { 3096 SatelliteSession proto = new SatelliteSession(); 3097 proto.satelliteServiceInitializationResult = 3098 param.getSatelliteServiceInitializationResult(); 3099 proto.satelliteTechnology = param.getSatelliteTechnology(); 3100 proto.count = 1; 3101 proto.satelliteServiceTerminationResult = param.getTerminationResult(); 3102 proto.initializationProcessingTimeMillis = param.getInitializationProcessingTime(); 3103 proto.terminationProcessingTimeMillis = param.getTerminationProcessingTime(); 3104 proto.sessionDurationSeconds = param.getSessionDuration(); 3105 proto.countOfOutgoingDatagramSuccess = param.getCountOfIncomingDatagramSuccess(); 3106 proto.countOfOutgoingDatagramFailed = param.getCountOfOutgoingDatagramFailed(); 3107 proto.countOfIncomingDatagramSuccess = param.getCountOfIncomingDatagramSuccess(); 3108 proto.countOfIncomingDatagramFailed = param.getCountOfOutgoingDatagramFailed(); 3109 proto.isDemoMode = param.getIsDemoMode(); 3110 proto.maxNtnSignalStrengthLevel = param.getMaxNtnSignalStrengthLevel(); 3111 proto.carrierId = param.getCarrierId(); 3112 proto.countOfSatelliteNotificationDisplayed = 3113 param.getCountOfSatelliteNotificationDisplayed(); 3114 proto.countOfAutoExitDueToScreenOff = param.getCountOfAutoExitDueToScreenOff(); 3115 proto.countOfAutoExitDueToTnNetwork = param.getCountOfAutoExitDueToTnNetwork(); 3116 proto.isEmergency = param.getIsEmergency(); 3117 proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier(); 3118 proto.maxInactivityDurationSec = param.getMaxInactivityDurationSec(); 3119 if (DBG) logd("onSatelliteSessionMetrics" + param); 3120 mAtomsStorage.addSatelliteSessionStats(proto); 3121 } 3122 3123 /** Create a new atom for SatelliteIncomingDatagram metrics */ onSatelliteIncomingDatagramMetrics( SatelliteIncomingDatagramParams param)3124 public synchronized void onSatelliteIncomingDatagramMetrics( 3125 SatelliteIncomingDatagramParams param) { 3126 SatelliteIncomingDatagram proto = new SatelliteIncomingDatagram(); 3127 proto.resultCode = param.getResultCode(); 3128 proto.datagramSizeBytes = param.getDatagramSizeBytes(); 3129 proto.datagramTransferTimeMillis = param.getDatagramTransferTimeMillis(); 3130 proto.isDemoMode = param.getIsDemoMode(); 3131 proto.carrierId = param.getCarrierId(); 3132 proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier(); 3133 if (DBG) logd("onSatelliteIncomingDatagramMetrics" + param); 3134 mAtomsStorage.addSatelliteIncomingDatagramStats(proto); 3135 } 3136 3137 /** Create a new atom for SatelliteOutgoingDatagram metrics */ onSatelliteOutgoingDatagramMetrics( SatelliteOutgoingDatagramParams param)3138 public synchronized void onSatelliteOutgoingDatagramMetrics( 3139 SatelliteOutgoingDatagramParams param) { 3140 SatelliteOutgoingDatagram proto = new SatelliteOutgoingDatagram(); 3141 proto.datagramType = param.getDatagramType(); 3142 proto.resultCode = param.getResultCode(); 3143 proto.datagramSizeBytes = param.getDatagramSizeBytes(); 3144 proto.datagramTransferTimeMillis = param.getDatagramTransferTimeMillis(); 3145 proto.isDemoMode = param.getIsDemoMode(); 3146 proto.carrierId = param.getCarrierId(); 3147 proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier(); 3148 if (DBG) logd("onSatelliteOutgoingDatagramMetrics: " + param); 3149 mAtomsStorage.addSatelliteOutgoingDatagramStats(proto); 3150 } 3151 3152 /** Create a new atom for SatelliteProvision metrics */ onSatelliteProvisionMetrics(SatelliteProvisionParams param)3153 public synchronized void onSatelliteProvisionMetrics(SatelliteProvisionParams param) { 3154 SatelliteProvision proto = new SatelliteProvision(); 3155 proto.resultCode = param.getResultCode(); 3156 proto.provisioningTimeSec = param.getProvisioningTimeSec(); 3157 proto.isProvisionRequest = param.getIsProvisionRequest(); 3158 proto.isCanceled = param.getIsCanceled(); 3159 proto.carrierId = param.getCarrierId(); 3160 proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier(); 3161 if (DBG) logd("onSatelliteProvisionMetrics: " + param); 3162 mAtomsStorage.addSatelliteProvisionStats(proto); 3163 } 3164 3165 /** Create a new atom or update an existing atom for SatelliteSosMessageRecommender metrics */ onSatelliteSosMessageRecommender( SatelliteSosMessageRecommenderParams param)3166 public synchronized void onSatelliteSosMessageRecommender( 3167 SatelliteSosMessageRecommenderParams param) { 3168 SatelliteSosMessageRecommender proto = new SatelliteSosMessageRecommender(); 3169 proto.isDisplaySosMessageSent = param.isDisplaySosMessageSent(); 3170 proto.countOfTimerStarted = param.getCountOfTimerStarted(); 3171 proto.isImsRegistered = param.isImsRegistered(); 3172 proto.cellularServiceState = param.getCellularServiceState(); 3173 proto.isMultiSim = param.isMultiSim(); 3174 proto.recommendingHandoverType = param.getRecommendingHandoverType(); 3175 proto.isSatelliteAllowedInCurrentLocation = param.isSatelliteAllowedInCurrentLocation(); 3176 proto.isWifiConnected = param.isWifiConnected(); 3177 proto.carrierId = param.getCarrierId(); 3178 proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier(); 3179 proto.count = 1; 3180 if (DBG) logd("onSatelliteSosMessageRecommender: " + param); 3181 mAtomsStorage.addSatelliteSosMessageRecommenderStats(proto); 3182 } 3183 3184 /** Create a new atom for CarrierRoamingSatelliteSession metrics */ onCarrierRoamingSatelliteSessionMetrics( CarrierRoamingSatelliteSessionParams param)3185 public synchronized void onCarrierRoamingSatelliteSessionMetrics( 3186 CarrierRoamingSatelliteSessionParams param) { 3187 CarrierRoamingSatelliteSession proto = new CarrierRoamingSatelliteSession(); 3188 proto.carrierId = param.getCarrierId(); 3189 proto.isNtnRoamingInHomeCountry = param.getIsNtnRoamingInHomeCountry(); 3190 proto.totalSatelliteModeTimeSec = param.getTotalSatelliteModeTimeSec(); 3191 proto.numberOfSatelliteConnections = param.getNumberOfSatelliteConnections(); 3192 proto.avgDurationOfSatelliteConnectionSec = param.getAvgDurationOfSatelliteConnectionSec(); 3193 proto.satelliteConnectionGapMinSec = param.mSatelliteConnectionGapMinSec; 3194 proto.satelliteConnectionGapAvgSec = param.mSatelliteConnectionGapAvgSec; 3195 proto.satelliteConnectionGapMaxSec = param.mSatelliteConnectionGapMaxSec; 3196 proto.rsrpAvg = param.mRsrpAvg; 3197 proto.rsrpMedian = param.mRsrpMedian; 3198 proto.rssnrAvg = param.mRssnrAvg; 3199 proto.rssnrMedian = param.mRssnrMedian; 3200 proto.countOfIncomingSms = param.mCountOfIncomingSms; 3201 proto.countOfOutgoingSms = param.mCountOfOutgoingSms; 3202 proto.countOfIncomingMms = param.mCountOfIncomingMms; 3203 proto.countOfOutgoingMms = param.mCountOfOutgoingMms; 3204 proto.supportedSatelliteServices = param.mSupportedSatelliteServices; 3205 proto.serviceDataPolicy = param.mServiceDataPolicy; 3206 proto.satelliteDataConsumedBytes = param.mSatelliteDataConsumedBytes; 3207 proto.isMultiSim = param.isMultiSim(); 3208 proto.isNbIotNtn = param.isNbIotNtn(); 3209 if (DBG) logd("onCarrierRoamingSatelliteSessionMetrics: " + param); 3210 mAtomsStorage.addCarrierRoamingSatelliteSessionStats(proto); 3211 } 3212 3213 /** Create a new atom for CarrierRoamingSatelliteSession metrics */ onCarrierRoamingSatelliteControllerStatsMetrics( CarrierRoamingSatelliteControllerStatsParams param)3214 public synchronized void onCarrierRoamingSatelliteControllerStatsMetrics( 3215 CarrierRoamingSatelliteControllerStatsParams param) { 3216 CarrierRoamingSatelliteControllerStats proto = new CarrierRoamingSatelliteControllerStats(); 3217 proto.configDataSource = param.mConfigDataSource; 3218 proto.countOfEntitlementStatusQueryRequest = param.mCountOfEntitlementStatusQueryRequest; 3219 proto.countOfSatelliteConfigUpdateRequest = param.mCountOfSatelliteConfigUpdateRequest; 3220 proto.countOfSatelliteNotificationDisplayed = param.mCountOfSatelliteNotificationDisplayed; 3221 proto.satelliteSessionGapMinSec = param.getSatelliteSessionGapMinSec(); 3222 proto.satelliteSessionGapAvgSec = param.getSatelliteSessionGapAvgSec(); 3223 proto.satelliteSessionGapMaxSec = param.getSatelliteSessionGapMaxSec(); 3224 proto.carrierId = param.getCarrierId(); 3225 proto.isDeviceEntitled = param.isDeviceEntitled(); 3226 proto.isMultiSim = param.isMultiSim(); 3227 proto.countOfSatelliteSessions = param.getCountOfSatelliteSessions(); 3228 proto.isNbIotNtn = param.isNbIotNtn(); 3229 if (DBG) logd("onCarrierRoamingSatelliteControllerStatsMetrics: " + param); 3230 mAtomsStorage.addCarrierRoamingSatelliteControllerStats(proto); 3231 } 3232 3233 /** Reset carrier roaming satellite controller stats after atom is pulled. */ resetCarrierRoamingSatelliteControllerStats()3234 public synchronized void resetCarrierRoamingSatelliteControllerStats() { 3235 if (DBG) logd("resetCarrierRoamingSatelliteControllerStats:"); 3236 com.android.internal.telephony.satellite.metrics 3237 .CarrierRoamingSatelliteControllerStats.getOrCreateInstance() 3238 .resetSessionGapLists(); 3239 } 3240 3241 /** Create a new atom for SatelliteEntitlement metrics */ onSatelliteEntitlementMetrics(SatelliteEntitlementParams param)3242 public synchronized void onSatelliteEntitlementMetrics(SatelliteEntitlementParams param) { 3243 SatelliteEntitlement proto = new SatelliteEntitlement(); 3244 proto.carrierId = param.getCarrierId(); 3245 proto.result = param.getResult(); 3246 proto.entitlementStatus = param.getEntitlementStatus(); 3247 proto.isRetry = param.getIsRetry(); 3248 proto.count = param.getCount(); 3249 proto.isAllowedServiceEntitlement = param.getIsAllowedServiceEntitlement(); 3250 proto.entitlementServiceType = param.getEntitlementServiceType(); 3251 proto.entitlementDataPolicy = param.getEntitlementDataPolicy(); 3252 if (DBG) logd("onSatelliteEntitlementMetrics: " + param); 3253 mAtomsStorage.addSatelliteEntitlementStats(proto); 3254 } 3255 3256 /** Create a new atom for SatelliteConfigUpdater metrics */ onSatelliteConfigUpdaterMetrics(SatelliteConfigUpdaterParams param)3257 public synchronized void onSatelliteConfigUpdaterMetrics(SatelliteConfigUpdaterParams param) { 3258 SatelliteConfigUpdater proto = new SatelliteConfigUpdater(); 3259 proto.configVersion = param.getConfigVersion(); 3260 proto.oemConfigResult = param.getOemConfigResult(); 3261 proto.carrierConfigResult = param.getCarrierConfigResult(); 3262 proto.count = param.getCount(); 3263 if (DBG) logd("onSatelliteConfigUpdaterMetrics: " + param); 3264 mAtomsStorage.addSatelliteConfigUpdaterStats(proto); 3265 } 3266 3267 /** Create a new atom or update an existing atom for SatelliteAccessController metrics */ onSatelliteAccessControllerMetrics( SatelliteAccessControllerParams param)3268 public synchronized void onSatelliteAccessControllerMetrics( 3269 SatelliteAccessControllerParams param) { 3270 SatelliteAccessController proto = new SatelliteAccessController(); 3271 proto.accessControlType = param.getAccessControlType(); 3272 proto.locationQueryTimeMillis = param.getLocationQueryTime(); 3273 proto.onDeviceLookupTimeMillis = param.getOnDeviceLookupTime(); 3274 proto.totalCheckingTimeMillis = param.getTotalCheckingTime(); 3275 proto.isAllowed = param.getIsAllowed(); 3276 proto.isEmergency = param.getIsEmergency(); 3277 proto.resultCode = param.getResultCode(); 3278 proto.countryCodes = param.getCountryCodes(); 3279 proto.configDataSource = param.getConfigDataSource(); 3280 proto.carrierId = param.getCarrierId(); 3281 proto.triggeringEvent = param.getTriggeringEvent(); 3282 proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier(); 3283 if (DBG) logd("onSatelliteAccessControllerMetrics: " + param); 3284 mAtomsStorage.addSatelliteAccessControllerStats(proto); 3285 } 3286 logd(String msg)3287 private static void logd(String msg) { 3288 Rlog.d(TAG, msg); 3289 } 3290 } 3291