Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ac4cbd57 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 11847214 from 34fae707 to 24Q3-release

Change-Id: I08bfd6bf2113eee328f55767379b11fb9b69e5fe
parents 439b3658 34fae707
Loading
Loading
Loading
Loading
+69 −1
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ option java_outer_classname = "PersistAtomsProto";

// Holds atoms to store on persist storage in case of power cycle or process crash.
// NOTE: using int64 rather than google.protobuf.Timestamp for timestamps simplifies implementation.
// Next id: 72
// Next id: 80
message PersistAtoms {
    /* Aggregated RAT usage during the call. */
    repeated VoiceCallRatUsage voice_call_rat_usage = 1;
@@ -237,6 +237,30 @@ message PersistAtoms {

    /* Timestamp of last data_network_validation pull. */
    optional int64 data_network_validation_pull_timestamp_millis = 71;

    /* Snapshot of carrier roaming satellite session. */
    repeated CarrierRoamingSatelliteSession carrier_roaming_satellite_session = 72;

    /* Timestamp of last carrier_roaming_satellite_session pull. */
    optional int64 carrier_roaming_satellite_session_pull_timestamp_millis = 73;

    /* Snapshot of carrier roaming satellite controller stats. */
    repeated CarrierRoamingSatelliteControllerStats carrier_roaming_satellite_controller_stats = 74;

    /* Timestamp of last carrier_roaming_satellite_controller_stats pull. */
    optional int64 carrier_roaming_satellite_controller_stats_pull_timestamp_millis = 75;

    /* Snapshot of satellite entitlement. */
    repeated SatelliteEntitlement satellite_entitlement = 76;

    /* Timestamp of last satellite_entitlement pull. */
    optional int64 satellite_entitlement_pull_timestamp_millis = 77;

    /* Snapshot of satellite config updater. */
    repeated SatelliteConfigUpdater satellite_config_updater = 78;

    /* Timestamp of last satellite_config_updater pull. */
    optional int64 satellite_config_updater_pull_timestamp_millis = 79;
}

// The canonical versions of the following enums live in:
@@ -739,3 +763,47 @@ message DataNetworkValidation {
    optional bool handover_attempted = 6;
    optional int32 network_validation_count = 7;
}

message CarrierRoamingSatelliteSession {
    optional int32 carrier_id = 1;
    optional bool is_ntn_roaming_in_home_country = 2;
    optional int32 total_satellite_mode_time_sec = 3;
    optional int32 number_of_satellite_connections = 4;
    optional int32 avg_duration_of_satellite_connection_sec = 5;
    optional int32 satellite_connection_gap_min_sec = 6;
    optional int32 satellite_connection_gap_avg_sec = 7;
    optional int32 satellite_connection_gap_max_sec = 8;
    optional int32 rsrp_avg = 9;
    optional int32 rsrp_median = 10;
    optional int32 rssnr_avg = 11;
    optional int32 rssnr_median = 12;
    optional int32 count_of_incoming_sms = 13;
    optional int32 count_of_outgoing_sms = 14;
    optional int32 count_of_incoming_mms = 15;
    optional int32 count_of_outgoing_mms = 16;
}

message CarrierRoamingSatelliteControllerStats {
    optional int32 config_data_source = 1;
    optional int32 count_of_entitlement_status_query_request = 2;
    optional int32 count_of_satellite_config_update_request = 3;
    optional int32 count_of_satellite_notification_displayed = 4;
    optional int32 satellite_session_gap_min_sec = 5;
    optional int32 satellite_session_gap_avg_sec = 6;
    optional int32 satellite_session_gap_max_sec = 7;
}

message SatelliteEntitlement {
    optional int32 carrier_id = 1;
    optional int32 result = 2;
    optional int32 entitlement_status = 3;
    optional bool is_retry = 4;
    optional int32 count = 5;
}

message SatelliteConfigUpdater {
    optional int32 config_version = 1;
    optional int32 oem_config_result = 2;
    optional int32 carrier_config_result = 3;
    optional int32 count = 4;
}
+6 −3
Original line number Diff line number Diff line
@@ -811,9 +811,12 @@ public class RIL extends BaseCommands implements CommandsInterface {
    public synchronized RadioServiceProxy getRadioServiceProxy(int service) {
        if (!SubscriptionManager.isValidPhoneId(mPhoneId)) return mServiceProxies.get(service);
        if ((service >= HAL_SERVICE_IMS) && !isRadioServiceSupported(service)) {
            // Suppress the excessive logging for HAL_SERVICE_IMS when not supported.
            if (service != HAL_SERVICE_IMS) {
                riljLogw("getRadioServiceProxy: " + serviceToString(service) + " for "
                        + HIDL_SERVICE_NAME[mPhoneId] + " is not supported\n"
                        + android.util.Log.getStackTraceString(new RuntimeException()));
            }
            return mServiceProxies.get(service);
        }
        if (!mIsCellularSupported) {
+19 −0
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@ import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.satellite.SatelliteConfig;
import com.android.internal.telephony.satellite.SatelliteConfigParser;
import com.android.internal.telephony.satellite.SatelliteConstants;
import com.android.internal.telephony.satellite.metrics.ConfigUpdaterMetricsStats;
import com.android.internal.telephony.util.TelephonyUtils;
import com.android.server.updates.ConfigUpdateInstallReceiver;

@@ -57,6 +59,7 @@ public class TelephonyConfigUpdateInstallReceiver extends ConfigUpdateInstallRec
    private final Object mConfigParserLock = new Object();
    @GuardedBy("mConfigParserLock")
    private ConfigParser mConfigParser;
    @NonNull private final ConfigUpdaterMetricsStats mConfigUpdaterMetricsStats;


    public static TelephonyConfigUpdateInstallReceiver sReceiverAdaptorInstance =
@@ -72,6 +75,7 @@ public class TelephonyConfigUpdateInstallReceiver extends ConfigUpdateInstallRec

    public TelephonyConfigUpdateInstallReceiver() {
        super(UPDATE_DIR, NEW_CONFIG_CONTENT_PATH, UPDATE_METADATA_PATH, VERSION);
        mConfigUpdaterMetricsStats = ConfigUpdaterMetricsStats.getOrCreateInstance();
    }

    /**
@@ -97,6 +101,8 @@ public class TelephonyConfigUpdateInstallReceiver extends ConfigUpdateInstallRec
        SatelliteConfig satelliteConfig = (SatelliteConfig) parser.getConfig();
        if (satelliteConfig == null) {
            Log.e(TAG, "satelliteConfig is null");
            mConfigUpdaterMetricsStats.reportOemAndCarrierConfigError(
                    SatelliteConstants.CONFIG_UPDATE_RESULT_NO_SATELLITE_DATA);
            return false;
        }

@@ -109,12 +115,16 @@ public class TelephonyConfigUpdateInstallReceiver extends ConfigUpdateInstallRec
            for (String plmn : plmns) {
                if (!TelephonyUtils.isValidPlmn(plmn)) {
                    Log.e(TAG, "found invalid plmn : " + plmn);
                    mConfigUpdaterMetricsStats.reportCarrierConfigError(
                            SatelliteConstants.CONFIG_UPDATE_RESULT_CARRIER_DATA_INVALID_PLMN);
                    return false;
                }
                Set<Integer> serviceSet = plmnsServices.get(plmn);
                for (int service : serviceSet) {
                    if (!TelephonyUtils.isValidService(service)) {
                        Log.e(TAG, "found invalid service : " + service);
                        mConfigUpdaterMetricsStats.reportCarrierConfigError(SatelliteConstants
                                .CONFIG_UPDATE_RESULT_CARRIER_DATA_INVALID_SUPPORTED_SERVICES);
                        return false;
                    }
                }
@@ -149,8 +159,11 @@ public class TelephonyConfigUpdateInstallReceiver extends ConfigUpdateInstallRec
                int previousVersion = getInstance().mConfigParser.mVersion;
                Log.d(TAG, "previous version is " + previousVersion + " | updated version is "
                        + updatedVersion);
                mConfigUpdaterMetricsStats.setConfigVersion(updatedVersion);
                if (updatedVersion <= previousVersion) {
                    Log.e(TAG, "updatedVersion is smaller than previousVersion");
                    mConfigUpdaterMetricsStats.reportOemAndCarrierConfigError(
                            SatelliteConstants.CONFIG_UPDATE_RESULT_INVALID_VERSION);
                    return;
                }
            }
@@ -167,6 +180,8 @@ public class TelephonyConfigUpdateInstallReceiver extends ConfigUpdateInstallRec

        if (!copySourceFileToTargetFile(NEW_CONFIG_CONTENT_PATH, VALID_CONFIG_CONTENT_PATH)) {
            Log.e(TAG, "fail to copy to the valid satellite carrier config data");
            mConfigUpdaterMetricsStats.reportOemAndCarrierConfigError(
                    SatelliteConstants.CONFIG_UPDATE_RESULT_IO_ERROR);
        }
    }

@@ -231,6 +246,8 @@ public class TelephonyConfigUpdateInstallReceiver extends ConfigUpdateInstallRec
    public ConfigParser getNewConfigParser(String domain, @Nullable byte[] data) {
        if (data == null) {
            Log.d(TAG, "content data is null");
            mConfigUpdaterMetricsStats.reportOemAndCarrierConfigError(
                    SatelliteConstants.CONFIG_UPDATE_RESULT_NO_DATA);
            return null;
        }
        switch (domain) {
@@ -238,6 +255,8 @@ public class TelephonyConfigUpdateInstallReceiver extends ConfigUpdateInstallRec
                return new SatelliteConfigParser(data);
            default:
                Log.e(TAG, "DOMAIN should be specified");
                mConfigUpdaterMetricsStats.reportOemAndCarrierConfigError(
                        SatelliteConstants.CONFIG_UPDATE_RESULT_INVALID_DOMAIN);
                return null;
        }
    }
+129 −4
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
package com.android.internal.telephony.metrics;

import static com.android.internal.telephony.TelephonyStatsLog.CARRIER_ID_TABLE_VERSION;
import static com.android.internal.telephony.TelephonyStatsLog.CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS;
import static com.android.internal.telephony.TelephonyStatsLog.CARRIER_ROAMING_SATELLITE_SESSION;
import static com.android.internal.telephony.TelephonyStatsLog.CELLULAR_DATA_SERVICE_SWITCH;
import static com.android.internal.telephony.TelephonyStatsLog.CELLULAR_SERVICE_STATE;
import static com.android.internal.telephony.TelephonyStatsLog.DATA_CALL_SESSION;
@@ -37,7 +39,9 @@ import static com.android.internal.telephony.TelephonyStatsLog.PER_SIM_STATUS;
import static com.android.internal.telephony.TelephonyStatsLog.PRESENCE_NOTIFY_EVENT;
import static com.android.internal.telephony.TelephonyStatsLog.RCS_ACS_PROVISIONING_STATS;
import static com.android.internal.telephony.TelephonyStatsLog.RCS_CLIENT_PROVISIONING_STATS;
import static com.android.internal.telephony.TelephonyStatsLog.SATELLITE_CONFIG_UPDATER;
import static com.android.internal.telephony.TelephonyStatsLog.SATELLITE_CONTROLLER;
import static com.android.internal.telephony.TelephonyStatsLog.SATELLITE_ENTITLEMENT;
import static com.android.internal.telephony.TelephonyStatsLog.SATELLITE_INCOMING_DATAGRAM;
import static com.android.internal.telephony.TelephonyStatsLog.SATELLITE_OUTGOING_DATAGRAM;
import static com.android.internal.telephony.TelephonyStatsLog.SATELLITE_PROVISION;
@@ -70,6 +74,8 @@ import com.android.internal.telephony.TelephonyStatsLog;
import com.android.internal.telephony.emergency.EmergencyNumberTracker;
import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.imsphone.ImsPhone;
import com.android.internal.telephony.nano.PersistAtomsProto.CarrierRoamingSatelliteControllerStats;
import com.android.internal.telephony.nano.PersistAtomsProto.CarrierRoamingSatelliteSession;
import com.android.internal.telephony.nano.PersistAtomsProto.CellularDataServiceSwitch;
import com.android.internal.telephony.nano.PersistAtomsProto.CellularServiceState;
import com.android.internal.telephony.nano.PersistAtomsProto.DataCallSession;
@@ -89,7 +95,9 @@ import com.android.internal.telephony.nano.PersistAtomsProto.OutgoingSms;
import com.android.internal.telephony.nano.PersistAtomsProto.PresenceNotifyEvent;
import com.android.internal.telephony.nano.PersistAtomsProto.RcsAcsProvisioningStats;
import com.android.internal.telephony.nano.PersistAtomsProto.RcsClientProvisioningStats;
import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteConfigUpdater;
import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteController;
import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteEntitlement;
import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteIncomingDatagram;
import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteOutgoingDatagram;
import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteProvision;
@@ -178,14 +186,15 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {

    public MetricsCollector(Context context, @NonNull FeatureFlags featureFlags) {
        this(context, new PersistAtomsStorage(context),
                new DeviceStateHelper(context), new VonrHelper(featureFlags), featureFlags);
                new DeviceStateHelper(context), new VonrHelper(featureFlags),
                new DefaultNetworkMonitor(context, featureFlags), featureFlags);
    }

    /** Allows dependency injection. Used during unit tests. */
    @VisibleForTesting
    public MetricsCollector(
            Context context, PersistAtomsStorage storage, DeviceStateHelper deviceStateHelper,
                    VonrHelper vonrHelper, @NonNull FeatureFlags featureFlags) {
    public MetricsCollector(Context context, PersistAtomsStorage storage,
            DeviceStateHelper deviceStateHelper, VonrHelper vonrHelper,
            DefaultNetworkMonitor defaultNetworkMonitor, @NonNull FeatureFlags featureFlags) {
        mStorage = storage;
        mDeviceStateHelper = deviceStateHelper;
        mStatsManager = (StatsManager) context.getSystemService(Context.STATS_MANAGER);
@@ -229,6 +238,10 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
            registerAtom(SATELLITE_PROVISION);
            registerAtom(SATELLITE_SOS_MESSAGE_RECOMMENDER);
            registerAtom(DATA_NETWORK_VALIDATION);
            registerAtom(CARRIER_ROAMING_SATELLITE_SESSION);
            registerAtom(CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS);
            registerAtom(SATELLITE_ENTITLEMENT);
            registerAtom(SATELLITE_CONFIG_UPDATER);
            Rlog.d(TAG, "registered");
        } else {
            Rlog.e(TAG, "could not get StatsManager, atoms not registered");
@@ -325,6 +338,14 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
                return pullSatelliteSosMessageRecommender(data);
            case DATA_NETWORK_VALIDATION:
                return pullDataNetworkValidation(data);
            case CARRIER_ROAMING_SATELLITE_SESSION:
                return pullCarrierRoamingSatelliteSession(data);
            case CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS:
                return pullCarrierRoamingSatelliteControllerStats(data);
            case SATELLITE_ENTITLEMENT:
                return pullSatelliteEntitlement(data);
            case SATELLITE_CONFIG_UPDATER:
                return pullSatelliteConfigUpdater(data);
            default:
                Rlog.e(TAG, String.format("unexpected atom ID %d", atomTag));
                return StatsManager.PULL_SKIP;
@@ -958,6 +979,59 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
        }
    }

    private int pullCarrierRoamingSatelliteSession(List<StatsEvent> data) {
        CarrierRoamingSatelliteSession[] carrierRoamingSatelliteSessionAtoms =
                mStorage.getCarrierRoamingSatelliteSessionStats(MIN_COOLDOWN_MILLIS);
        if (carrierRoamingSatelliteSessionAtoms != null) {
            Arrays.stream(carrierRoamingSatelliteSessionAtoms)
                    .forEach(persistAtom -> data.add(buildStatsEvent(persistAtom)));
            return StatsManager.PULL_SUCCESS;
        } else {
            Rlog.w(TAG, "CARRIER_ROAMING_SATELLITE_SESSION pull too frequent, skipping");
            return StatsManager.PULL_SKIP;
        }
    }

    private int pullCarrierRoamingSatelliteControllerStats(List<StatsEvent> data) {
        CarrierRoamingSatelliteControllerStats[] carrierRoamingSatelliteControllerStatsAtoms =
                mStorage.getCarrierRoamingSatelliteControllerStats(MIN_COOLDOWN_MILLIS);
        if (carrierRoamingSatelliteControllerStatsAtoms != null) {
            Arrays.stream(carrierRoamingSatelliteControllerStatsAtoms)
                    .forEach(persistAtom -> data.add(buildStatsEvent(persistAtom)));
            return StatsManager.PULL_SUCCESS;
        } else {
            Rlog.w(TAG, "CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS "
                    + "pull too frequent, skipping");
            return StatsManager.PULL_SKIP;
        }
    }

    private int pullSatelliteEntitlement(List<StatsEvent> data) {
        SatelliteEntitlement[] satelliteEntitlementAtoms =
                mStorage.getSatelliteEntitlementStats(MIN_COOLDOWN_MILLIS);
        if (satelliteEntitlementAtoms != null) {
            Arrays.stream(satelliteEntitlementAtoms)
                    .forEach(persistAtom -> data.add(buildStatsEvent(persistAtom)));
            return StatsManager.PULL_SUCCESS;
        } else {
            Rlog.w(TAG, "SATELLITE_ENTITLEMENT pull too frequent, skipping");
            return StatsManager.PULL_SKIP;
        }
    }

    private int pullSatelliteConfigUpdater(List<StatsEvent> data) {
        SatelliteConfigUpdater[] satelliteConfigUpdaterAtoms =
                mStorage.getSatelliteConfigUpdaterStats(MIN_COOLDOWN_MILLIS);
        if (satelliteConfigUpdaterAtoms != null) {
            Arrays.stream(satelliteConfigUpdaterAtoms)
                    .forEach(persistAtom -> data.add(buildStatsEvent(persistAtom)));
            return StatsManager.PULL_SUCCESS;
        } else {
            Rlog.w(TAG, "SATELLITE_CONFIG_UPDATER pull too frequent, skipping");
            return StatsManager.PULL_SKIP;
        }
    }

    /** Registers a pulled atom ID {@code atomId}. */
    private void registerAtom(int atomId) {
        mStatsManager.setPullAtomCallback(atomId, /* metadata= */ null,
@@ -1448,6 +1522,57 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
                stats.networkValidationCount);
    }

    private static StatsEvent buildStatsEvent(CarrierRoamingSatelliteSession stats) {
        return TelephonyStatsLog.buildStatsEvent(
                CARRIER_ROAMING_SATELLITE_SESSION,
                stats.carrierId,
                stats.isNtnRoamingInHomeCountry,
                stats.totalSatelliteModeTimeSec,
                stats.numberOfSatelliteConnections,
                stats.avgDurationOfSatelliteConnectionSec,
                stats.satelliteConnectionGapMinSec,
                stats.satelliteConnectionGapAvgSec,
                stats.satelliteConnectionGapMaxSec,
                stats.rsrpAvg,
                stats.rsrpMedian,
                stats.rssnrAvg,
                stats.rssnrMedian,
                stats.countOfIncomingSms,
                stats.countOfOutgoingSms,
                stats.countOfIncomingMms,
                stats.countOfOutgoingMms);
    }

    private static StatsEvent buildStatsEvent(CarrierRoamingSatelliteControllerStats stats) {
        return TelephonyStatsLog.buildStatsEvent(
                CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS,
                stats.configDataSource,
                stats.countOfEntitlementStatusQueryRequest,
                stats.countOfSatelliteConfigUpdateRequest,
                stats.countOfSatelliteNotificationDisplayed,
                stats.satelliteSessionGapMinSec,
                stats.satelliteSessionGapAvgSec,
                stats.satelliteSessionGapMaxSec);
    }

    private static StatsEvent buildStatsEvent(SatelliteEntitlement stats) {
        return TelephonyStatsLog.buildStatsEvent(
                SATELLITE_ENTITLEMENT,
                stats.carrierId,
                stats.result,
                stats.entitlementStatus,
                stats.isRetry,
                stats.count);
    }

    private static StatsEvent buildStatsEvent(SatelliteConfigUpdater stats) {
        return TelephonyStatsLog.buildStatsEvent(SATELLITE_CONFIG_UPDATER,
                stats.configVersion,
                stats.oemConfigResult,
                stats.carrierConfigResult,
                stats.count);
    }

    /** Returns all phones in {@link PhoneFactory}, or an empty array if phones not made yet. */
    static Phone[] getPhonesIfAny() {
        try {
+191 −0

File changed.

Preview size limit exceeded, changes collapsed.

Loading