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

Commit 49fa9893 authored by Hakjun Choi's avatar Hakjun Choi
Browse files

Add metrics for Carrier Roaming NB-IoT NTN module

1. added carrier_id field into every NB-IoT NTN related atoms except ConfigSource for distinguish from which NTN service this atom information was reported.

2. added a new field count_of_satellite_notification_displayed to measure how many times user was notified when satellite service become eligible

3. added below 2 fields into existing SatelliteSession atom to measure how many times satellite session was automatically disconnected with specific reason.
   1. auto exit due to screen off and no conversion until time out
   2. auto exit due to scann avilable TN network

Design doc : go/nbiotntn-metrics

Bug: 360855952
Flag: com.android.internal.telephony.flags.carrier_roaming_nb_iot_ntn
Test: atest SatelliteControllerTest SatelliteStatsTest PersistAtomsStorageTest DatagramdispatcherTest DatagramReceiverTet
      manually run satellite service in live network and verify the persist_atoms.db

Change-Id: Ie7dd90c5b09f3d78dd2fb970f6e0187a643af523
parent 9ee9b28f
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -719,6 +719,7 @@ message SatelliteController {
    optional int32 count_of_disallowed_satellite_access = 27;
    optional int32 count_of_satellite_access_check_fail = 28;
    optional bool is_provisioned = 29;
    optional int32 carrier_id = 30;
}

message SatelliteSession {
@@ -735,6 +736,10 @@ message SatelliteSession {
    optional int32 count_of_incoming_datagram_failed = 11;
    optional bool is_demo_mode = 12;
    optional int32 max_ntn_signal_strength_level = 13;
    optional int32 carrier_id = 14;
    optional int32 count_of_satellite_notification_displayed = 15;
    optional int32 count_of_auto_exit_due_to_screen_off = 16;
    optional int32 count_of_auto_exit_due_to_tn_network = 17;
}

message SatelliteIncomingDatagram {
@@ -742,6 +747,7 @@ message SatelliteIncomingDatagram {
    optional int32 datagram_size_bytes = 2;
    optional int64 datagram_transfer_time_millis = 3;
    optional bool is_demo_mode = 4;
    optional int32 carrier_id = 5;
}

message SatelliteOutgoingDatagram {
@@ -750,6 +756,7 @@ message SatelliteOutgoingDatagram {
    optional int32 datagram_size_bytes = 3;
    optional int64 datagram_transfer_time_millis = 4;
    optional bool is_demo_mode = 5;
    optional int32 carrier_id = 6;
}

message SatelliteProvision {
@@ -757,6 +764,7 @@ message SatelliteProvision {
    optional int32 provisioning_time_sec = 2;
    optional bool is_provision_request = 3;
    optional bool is_canceled = 4;
    optional int32 carrier_id = 5;
}

message SatelliteSosMessageRecommender {
@@ -809,6 +817,7 @@ message CarrierRoamingSatelliteControllerStats {
    optional int32 satellite_session_gap_min_sec = 5;
    optional int32 satellite_session_gap_avg_sec = 6;
    optional int32 satellite_session_gap_max_sec = 7;
    optional int32 carrier_id = 8;
}

message SatelliteEntitlement {
@@ -836,4 +845,5 @@ message SatelliteAccessController {
    optional int32 result_code = 7;
    repeated string country_codes = 8;
    optional int32 config_data_source = 9;
    optional int32 carrier_id = 10;
}
+17 −7
Original line number Diff line number Diff line
@@ -1476,7 +1476,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
                satelliteController.countOfAllowedSatelliteAccess,
                satelliteController.countOfDisallowedSatelliteAccess,
                satelliteController.countOfSatelliteAccessCheckFail,
                satelliteController.isProvisioned);
                satelliteController.isProvisioned,
                satelliteController.carrierId);
    }

    private static StatsEvent buildStatsEvent(SatelliteSession satelliteSession) {
@@ -1494,7 +1495,11 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
                satelliteSession.countOfIncomingDatagramSuccess,
                satelliteSession.countOfIncomingDatagramFailed,
                satelliteSession.isDemoMode,
                satelliteSession.maxNtnSignalStrengthLevel);
                satelliteSession.maxNtnSignalStrengthLevel,
                satelliteSession.carrierId,
                satelliteSession.countOfSatelliteNotificationDisplayed,
                satelliteSession.countOfAutoExitDueToScreenOff,
                satelliteSession.countOfAutoExitDueToTnNetwork);
    }

    private static StatsEvent buildStatsEvent(SatelliteIncomingDatagram stats) {
@@ -1503,7 +1508,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
                stats.resultCode,
                stats.datagramSizeBytes,
                stats.datagramTransferTimeMillis,
                stats.isDemoMode);
                stats.isDemoMode,
                stats.carrierId);
    }

    private static StatsEvent buildStatsEvent(SatelliteOutgoingDatagram stats) {
@@ -1513,7 +1519,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
                stats.resultCode,
                stats.datagramSizeBytes,
                stats.datagramTransferTimeMillis,
                stats.isDemoMode);
                stats.isDemoMode,
                stats.carrierId);
    }

    private static StatsEvent buildStatsEvent(SatelliteProvision stats) {
@@ -1522,7 +1529,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
                stats.resultCode,
                stats.provisioningTimeSec,
                stats.isProvisionRequest,
                stats.isCanceled);
                stats.isCanceled,
                stats.carrierId);
    }

    private static StatsEvent buildStatsEvent(SatelliteSosMessageRecommender stats) {
@@ -1582,7 +1590,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
                stats.countOfSatelliteNotificationDisplayed,
                stats.satelliteSessionGapMinSec,
                stats.satelliteSessionGapAvgSec,
                stats.satelliteSessionGapMaxSec);
                stats.satelliteSessionGapMaxSec,
                stats.carrierId);
    }

    private static StatsEvent buildStatsEvent(SatelliteEntitlement stats) {
@@ -1614,7 +1623,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
                stats.isEmergency,
                stats.resultCode,
                stats.countryCodes,
                stats.configDataSource);
                stats.configDataSource,
                stats.carrierId);
    }

    /** Returns all phones in {@link PhoneFactory}, or an empty array if phones not made yet. */
+8 −1
Original line number Diff line number Diff line
@@ -771,6 +771,7 @@ public class PersistAtomsStorage {
        atom.countOfDisallowedSatelliteAccess += stats.countOfDisallowedSatelliteAccess;
        atom.countOfSatelliteAccessCheckFail += stats.countOfSatelliteAccessCheckFail;
        atom.isProvisioned = stats.isProvisioned;
        atom.carrierId = stats.carrierId;

        mAtoms.satelliteController = atomArray;
        saveAtomsToFile(SAVE_TO_FILE_DELAY_FOR_UPDATE_MILLIS);
@@ -870,6 +871,7 @@ public class PersistAtomsStorage {
        atom.satelliteSessionGapMinSec = stats.satelliteSessionGapMinSec;
        atom.satelliteSessionGapAvgSec = stats.satelliteSessionGapAvgSec;
        atom.satelliteSessionGapMaxSec = stats.satelliteSessionGapMaxSec;
        atom.carrierId = stats.carrierId;

        mAtoms.carrierRoamingSatelliteControllerStats = atomArray;
        saveAtomsToFile(SAVE_TO_FILE_DELAY_FOR_UPDATE_MILLIS);
@@ -2332,7 +2334,12 @@ public class PersistAtomsStorage {
                    && stats.countOfIncomingDatagramSuccess == key.countOfIncomingDatagramSuccess
                    && stats.countOfIncomingDatagramFailed == key.countOfIncomingDatagramFailed
                    && stats.isDemoMode == key.isDemoMode
                    && stats.maxNtnSignalStrengthLevel == key.maxNtnSignalStrengthLevel) {
                    && stats.maxNtnSignalStrengthLevel == key.maxNtnSignalStrengthLevel
                    && stats.carrierId == key.carrierId
                    && stats.countOfSatelliteNotificationDisplayed
                    == key.countOfSatelliteNotificationDisplayed
                    && stats.countOfAutoExitDueToScreenOff == key.countOfAutoExitDueToScreenOff
                    && stats.countOfAutoExitDueToTnNetwork == key.countOfAutoExitDueToTnNetwork) {
                return stats;
            }
        }
+182 −4

File changed.

Preview size limit exceeded, changes collapsed.

+1 −0
Original line number Diff line number Diff line
@@ -729,6 +729,7 @@ public class DatagramDispatcher extends Handler {
                        .setDatagramTransferTimeMillis(argument.datagramStartTime > 0
                                ? (System.currentTimeMillis() - argument.datagramStartTime) : 0)
                        .setIsDemoMode(mIsDemoMode)
                        .setCarrierId(SatelliteController.getInstance().getSatelliteCarrierId())
                        .build());
        if (resultCode == SatelliteManager.SATELLITE_RESULT_SUCCESS) {
            mControllerMetricsStats.reportOutgoingDatagramSuccessCount(argument.datagramType,
Loading