Loading src/java/com/android/internal/telephony/configupdate/ConfigParser.java +10 −0 Original line number Diff line number Diff line Loading @@ -108,4 +108,14 @@ public abstract class ConfigParser<T> { mVersion = version; Log.d(TAG, "overrideVersion: mVersion=" + mVersion); } /** * Overrides the config * * @param config the config that should be overrided with */ public void overrideConfig(T config) { Log.d(TAG, "overrideConfig: overriding config to " + config); mConfig = config; } } src/java/com/android/internal/telephony/configupdate/TelephonyConfigUpdateInstallReceiver.java +12 −0 Original line number Diff line number Diff line Loading @@ -249,6 +249,18 @@ public class TelephonyConfigUpdateInstallReceiver extends ConfigUpdateInstallRec } } /** * Overrides the config parser. Should be used only in tests. * * @param configParser the config parser that we have to override */ public void overrideConfigParser(ConfigParser configParser) { Log.d(TAG, "overrideConfigParser"); synchronized (getInstance().mConfigParserLock) { getInstance().mConfigParser = configParser; } } @Override public void registerCallback(@NonNull Executor executor, @NonNull Callback callback) { mCallbackHashMap.put(executor, callback); Loading src/java/com/android/internal/telephony/metrics/SmsStats.java +49 −0 Original line number Diff line number Diff line Loading @@ -35,16 +35,21 @@ import static com.android.internal.telephony.TelephonyStatsLog.INCOMING_SMS__SMS import static com.android.internal.telephony.TelephonyStatsLog.INCOMING_SMS__SMS_TYPE__SMS_TYPE_VOICEMAIL_INDICATION; import static com.android.internal.telephony.TelephonyStatsLog.INCOMING_SMS__SMS_TYPE__SMS_TYPE_WAP_PUSH; import static com.android.internal.telephony.TelephonyStatsLog.INCOMING_SMS__SMS_TYPE__SMS_TYPE_ZERO; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_GENERIC_FAILURE; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_NETWORK_ERROR; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_NONE; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_ERROR; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_ERROR_FALLBACK; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_ERROR_RETRY; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_SUCCESS; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_UNKNOWN; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SMS_TECH__SMS_TECH_UNKNOWN; import android.annotation.Nullable; import android.app.Activity; import android.provider.Telephony.Sms.Intents; import android.telephony.Annotation.NetworkType; import android.telephony.AnomalyReporter; import android.telephony.ServiceState; import android.telephony.SmsManager; import android.telephony.TelephonyManager; Loading @@ -66,6 +71,7 @@ import com.android.telephony.Rlog; import java.util.Objects; import java.util.Random; import java.util.UUID; /** Collects sms events per phone ID for the pulled atom. */ public class SmsStats { Loading @@ -76,6 +82,8 @@ public class SmsStats { /** 3GPP2 error for out of service: "Other radio interface problem" in N.S0005 Table 171 */ private static final int NO_NETWORK_ERROR_3GPP2 = 66; public static final UUID NTN_OUTGOING_SMS_ERROR_ANOMALY_UUID = UUID.fromString( "bfd2a3d9-9f2c-4070-b9df-bdbb7f9c645a"); private final Phone mPhone; Loading @@ -84,6 +92,7 @@ public class SmsStats { private static final Random RANDOM = new Random(); public SmsStats(Phone phone) { mPhone = phone; } Loading Loading @@ -213,6 +222,7 @@ public class SmsStats { proto.networkErrorCode = networkErrorCode; mAtomsStorage.addOutgoingSms(proto); reportNtnOutgoingSmsAnomaly(proto); CarrierRoamingSatelliteSessionStats sessionStats = CarrierRoamingSatelliteSessionStats.getInstance(mPhone.getSubId()); sessionStats.onOutgoingSms(mPhone.getSubId()); Loading Loading @@ -428,6 +438,45 @@ public class SmsStats { return phone.getCarrierId(); } private void reportNtnOutgoingSmsAnomaly(OutgoingSms proto) { if (!proto.isNtn && !proto.isNbIotNtn) { return; } if (proto.sendResult == OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_SUCCESS) { // Do not report anomaly if sendResult is success return; } if (proto.errorCode == OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_NONE && proto.smsTech != OUTGOING_SMS__SMS_TECH__SMS_TECH_UNKNOWN) { // Only report anomaly for errorCode==ERROR_NONE when sms_tech is unknown. return; } // For NTN outgoing SMS, proto.errorCode == proto.networkErrorCode switch (proto.errorCode) { case OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_NONE: case OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_NETWORK_ERROR: case OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_GENERIC_FAILURE: case SmsManager.SMS_RP_CAUSE_CONGESTION: case SmsManager.SMS_RP_CAUSE_PROTOCOL_ERROR: String message = "NTN Outgoing SMS failed"; Rlog.d(TAG, message + " with errorCode=" + proto.errorCode + " with sendResult=" + proto.sendResult + " smsTech=" + proto.smsTech); AnomalyReporter.reportAnomaly(generateUUID(proto.errorCode, proto.sendResult), message, proto.carrierId); } } private UUID generateUUID(int errorCode, int sendResult) { long lerrorCode = errorCode; long lsendResult = sendResult; return new UUID(NTN_OUTGOING_SMS_ERROR_ANOMALY_UUID.getMostSignificantBits(), NTN_OUTGOING_SMS_ERROR_ANOMALY_UUID.getLeastSignificantBits() + ((lsendResult << 32) + lerrorCode)); } private boolean isNbIotNtn(Phone phone) { return SatelliteController.getInstance().isInCarrierRoamingNbIotNtn(phone); } Loading src/java/com/android/internal/telephony/satellite/PointingAppController.java +1 −0 Original line number Diff line number Diff line Loading @@ -472,6 +472,7 @@ public class PointingAppController extends Handler { launchIntent.putExtra("needFullScreen", needFullScreenPointingUI); launchIntent.putExtra("isDemoMode", isDemoMode); launchIntent.putExtra("isEmergency", isEmergency); launchIntent.setFlags(Intent.FLAG_ACTIVITY_NO_USER_ACTION); try { if (!mListenerForPointingUIRegistered.get()) { Loading src/java/com/android/internal/telephony/satellite/SatelliteConfig.java +21 −1 Original line number Diff line number Diff line Loading @@ -60,8 +60,17 @@ public class SatelliteConfig { private File mSatelliteAccessConfigJsonFile; private SatelliteConfigData.SatelliteConfigProto mConfigData; public SatelliteConfig() { logd("SatelliteConfig: constructing from scratch"); } public SatelliteConfig(@NonNull SatelliteConfig satelliteConfig) { logd("SatelliteConfig: constructing through deep copy of: " + satelliteConfig); new SatelliteConfig(satelliteConfig.mConfigData); } public SatelliteConfig(@NonNull SatelliteConfigData.SatelliteConfigProto configData) { logd("SatelliteConfig"); logd("SatelliteConfig: constructing with configData: " + configData); mConfigData = configData; mVersion = mConfigData.version; logd("mVersion: " + mVersion); Loading Loading @@ -165,6 +174,17 @@ public class SatelliteConfig { return null; } /** * Overrides the satellite max allowed data mode. * * @param maxAllowedDataMode the new max allowed data mode */ @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) public void overrideSatelliteMaxAllowedDataMode(int maxAllowedDataMode) { logd("overrideSatelliteMaxAllowedDataMode: " + maxAllowedDataMode); mCarrierRoamingMaxAllowedDataMode = maxAllowedDataMode; } /** * Get satellite plmns for carrier * Loading Loading
src/java/com/android/internal/telephony/configupdate/ConfigParser.java +10 −0 Original line number Diff line number Diff line Loading @@ -108,4 +108,14 @@ public abstract class ConfigParser<T> { mVersion = version; Log.d(TAG, "overrideVersion: mVersion=" + mVersion); } /** * Overrides the config * * @param config the config that should be overrided with */ public void overrideConfig(T config) { Log.d(TAG, "overrideConfig: overriding config to " + config); mConfig = config; } }
src/java/com/android/internal/telephony/configupdate/TelephonyConfigUpdateInstallReceiver.java +12 −0 Original line number Diff line number Diff line Loading @@ -249,6 +249,18 @@ public class TelephonyConfigUpdateInstallReceiver extends ConfigUpdateInstallRec } } /** * Overrides the config parser. Should be used only in tests. * * @param configParser the config parser that we have to override */ public void overrideConfigParser(ConfigParser configParser) { Log.d(TAG, "overrideConfigParser"); synchronized (getInstance().mConfigParserLock) { getInstance().mConfigParser = configParser; } } @Override public void registerCallback(@NonNull Executor executor, @NonNull Callback callback) { mCallbackHashMap.put(executor, callback); Loading
src/java/com/android/internal/telephony/metrics/SmsStats.java +49 −0 Original line number Diff line number Diff line Loading @@ -35,16 +35,21 @@ import static com.android.internal.telephony.TelephonyStatsLog.INCOMING_SMS__SMS import static com.android.internal.telephony.TelephonyStatsLog.INCOMING_SMS__SMS_TYPE__SMS_TYPE_VOICEMAIL_INDICATION; import static com.android.internal.telephony.TelephonyStatsLog.INCOMING_SMS__SMS_TYPE__SMS_TYPE_WAP_PUSH; import static com.android.internal.telephony.TelephonyStatsLog.INCOMING_SMS__SMS_TYPE__SMS_TYPE_ZERO; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_GENERIC_FAILURE; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_NETWORK_ERROR; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_NONE; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_ERROR; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_ERROR_FALLBACK; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_ERROR_RETRY; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_SUCCESS; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_UNKNOWN; import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SMS_TECH__SMS_TECH_UNKNOWN; import android.annotation.Nullable; import android.app.Activity; import android.provider.Telephony.Sms.Intents; import android.telephony.Annotation.NetworkType; import android.telephony.AnomalyReporter; import android.telephony.ServiceState; import android.telephony.SmsManager; import android.telephony.TelephonyManager; Loading @@ -66,6 +71,7 @@ import com.android.telephony.Rlog; import java.util.Objects; import java.util.Random; import java.util.UUID; /** Collects sms events per phone ID for the pulled atom. */ public class SmsStats { Loading @@ -76,6 +82,8 @@ public class SmsStats { /** 3GPP2 error for out of service: "Other radio interface problem" in N.S0005 Table 171 */ private static final int NO_NETWORK_ERROR_3GPP2 = 66; public static final UUID NTN_OUTGOING_SMS_ERROR_ANOMALY_UUID = UUID.fromString( "bfd2a3d9-9f2c-4070-b9df-bdbb7f9c645a"); private final Phone mPhone; Loading @@ -84,6 +92,7 @@ public class SmsStats { private static final Random RANDOM = new Random(); public SmsStats(Phone phone) { mPhone = phone; } Loading Loading @@ -213,6 +222,7 @@ public class SmsStats { proto.networkErrorCode = networkErrorCode; mAtomsStorage.addOutgoingSms(proto); reportNtnOutgoingSmsAnomaly(proto); CarrierRoamingSatelliteSessionStats sessionStats = CarrierRoamingSatelliteSessionStats.getInstance(mPhone.getSubId()); sessionStats.onOutgoingSms(mPhone.getSubId()); Loading Loading @@ -428,6 +438,45 @@ public class SmsStats { return phone.getCarrierId(); } private void reportNtnOutgoingSmsAnomaly(OutgoingSms proto) { if (!proto.isNtn && !proto.isNbIotNtn) { return; } if (proto.sendResult == OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_SUCCESS) { // Do not report anomaly if sendResult is success return; } if (proto.errorCode == OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_NONE && proto.smsTech != OUTGOING_SMS__SMS_TECH__SMS_TECH_UNKNOWN) { // Only report anomaly for errorCode==ERROR_NONE when sms_tech is unknown. return; } // For NTN outgoing SMS, proto.errorCode == proto.networkErrorCode switch (proto.errorCode) { case OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_NONE: case OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_NETWORK_ERROR: case OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_GENERIC_FAILURE: case SmsManager.SMS_RP_CAUSE_CONGESTION: case SmsManager.SMS_RP_CAUSE_PROTOCOL_ERROR: String message = "NTN Outgoing SMS failed"; Rlog.d(TAG, message + " with errorCode=" + proto.errorCode + " with sendResult=" + proto.sendResult + " smsTech=" + proto.smsTech); AnomalyReporter.reportAnomaly(generateUUID(proto.errorCode, proto.sendResult), message, proto.carrierId); } } private UUID generateUUID(int errorCode, int sendResult) { long lerrorCode = errorCode; long lsendResult = sendResult; return new UUID(NTN_OUTGOING_SMS_ERROR_ANOMALY_UUID.getMostSignificantBits(), NTN_OUTGOING_SMS_ERROR_ANOMALY_UUID.getLeastSignificantBits() + ((lsendResult << 32) + lerrorCode)); } private boolean isNbIotNtn(Phone phone) { return SatelliteController.getInstance().isInCarrierRoamingNbIotNtn(phone); } Loading
src/java/com/android/internal/telephony/satellite/PointingAppController.java +1 −0 Original line number Diff line number Diff line Loading @@ -472,6 +472,7 @@ public class PointingAppController extends Handler { launchIntent.putExtra("needFullScreen", needFullScreenPointingUI); launchIntent.putExtra("isDemoMode", isDemoMode); launchIntent.putExtra("isEmergency", isEmergency); launchIntent.setFlags(Intent.FLAG_ACTIVITY_NO_USER_ACTION); try { if (!mListenerForPointingUIRegistered.get()) { Loading
src/java/com/android/internal/telephony/satellite/SatelliteConfig.java +21 −1 Original line number Diff line number Diff line Loading @@ -60,8 +60,17 @@ public class SatelliteConfig { private File mSatelliteAccessConfigJsonFile; private SatelliteConfigData.SatelliteConfigProto mConfigData; public SatelliteConfig() { logd("SatelliteConfig: constructing from scratch"); } public SatelliteConfig(@NonNull SatelliteConfig satelliteConfig) { logd("SatelliteConfig: constructing through deep copy of: " + satelliteConfig); new SatelliteConfig(satelliteConfig.mConfigData); } public SatelliteConfig(@NonNull SatelliteConfigData.SatelliteConfigProto configData) { logd("SatelliteConfig"); logd("SatelliteConfig: constructing with configData: " + configData); mConfigData = configData; mVersion = mConfigData.version; logd("mVersion: " + mVersion); Loading Loading @@ -165,6 +174,17 @@ public class SatelliteConfig { return null; } /** * Overrides the satellite max allowed data mode. * * @param maxAllowedDataMode the new max allowed data mode */ @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) public void overrideSatelliteMaxAllowedDataMode(int maxAllowedDataMode) { logd("overrideSatelliteMaxAllowedDataMode: " + maxAllowedDataMode); mCarrierRoamingMaxAllowedDataMode = maxAllowedDataMode; } /** * Get satellite plmns for carrier * Loading