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

Commit 8007e177 authored by Jack Yu's avatar Jack Yu
Browse files

Log PS WWAN RAT from registration info

Log the actual cellular RAT instead of the combined RAT.
Note that on IWLAN legacy mode device, modem might still
reports IWLAN as the data RAT.

Test: Manual + unit test
Bug: 131927497
Bug: 144389598
Bug: 145759808

Merged-In: Ifdab565fc23938b3a5780268abb761bdc1da82c1
Change-Id: Ifdab565fc23938b3a5780268abb761bdc1da82c1
parent 9a4d18df
Loading
Loading
Loading
Loading
+37 −0
Original line number Diff line number Diff line
@@ -242,6 +242,17 @@ message TelephonyServiceState {
    optional string numeric = 3;
  }

  message NetworkRegistrationInfo {
    // Network domain
    optional Domain domain = 1;

    // Network transport
    optional Transport transport = 2;

    // Radio access technology
    optional RadioAccessTechnology rat = 3;
  }

  // Roaming type
  enum RoamingType {

@@ -262,6 +273,29 @@ message TelephonyServiceState {
    ROAMING_TYPE_INTERNATIONAL = 3;
  }

  // Domain type
  enum Domain {
    // Unknown
    DOMAIN_UNKNOWN = 0;

    // Circuit switching domain
    DOMAIN_CS = 1;

    // Packet switching domain
    DOMAIN_PS = 2;
  }

  enum Transport {
    // Unknown
    TRANSPORT_UNKNOWN = 0;

    // Transport type for Wireless Wide Area Networks (i.e. Cellular)
    TRANSPORT_WWAN = 1;

    // Transport type for Wireless Local Area Networks (i.e. Wifi)
    TRANSPORT_WLAN = 2;
  }

  // Current registered operator
  optional TelephonyOperator voice_operator = 1;

@@ -282,6 +316,9 @@ message TelephonyServiceState {

  // Current Channel Number
  optional int32 channel_number = 7;

  // Network registration info
  repeated NetworkRegistrationInfo networkRegistrationInfo = 10;
}

// Radio access families
+27 −0
Original line number Diff line number Diff line
@@ -41,8 +41,10 @@ import android.os.Build;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.provider.Telephony.Sms.Intents;
import android.telephony.AccessNetworkConstants;
import android.telephony.CallQuality;
import android.telephony.DisconnectCause;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.Rlog;
import android.telephony.ServiceState;
import android.telephony.SmsManager;
@@ -434,6 +436,11 @@ public class TelephonyMetrics {
                        + " Voice RAT " + event.serviceState.voiceRat
                        + " Channel Number " + event.serviceState.channelNumber
                        + ")");
                for (int i = 0; i < event.serviceState.networkRegistrationInfo.length; i++) {
                    pw.print("reg info: domain="
                            + event.serviceState.networkRegistrationInfo[i].domain
                            + ", rat=" + event.serviceState.networkRegistrationInfo[i].rat);
                }
            } else {
                pw.print(telephonyEventToString(event.type));
            }
@@ -908,6 +915,26 @@ public class TelephonyMetrics {
            ssProto.dataOperator.numeric = serviceState.getDataOperatorNumeric();
        }

        // Log PS WWAN only because CS WWAN would be exactly the same as voiceRat, and PS WLAN
        // would be always IWLAN in the rat field.
        // Note that we intentionally do not log reg state because it changes too frequently that
        // will grow the proto size too much.
        List<TelephonyServiceState.NetworkRegistrationInfo> nriList = new ArrayList<>();
        NetworkRegistrationInfo nri = serviceState.getNetworkRegistrationInfo(
                NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        if (nri != null) {
            TelephonyServiceState.NetworkRegistrationInfo nriProto =
                    new TelephonyServiceState.NetworkRegistrationInfo();
            nriProto.domain = TelephonyServiceState.Domain.DOMAIN_PS;
            nriProto.transport = TelephonyServiceState.Transport.TRANSPORT_WWAN;
            nriProto.rat = ServiceState.networkTypeToRilRadioTechnology(
                    nri.getAccessNetworkTechnology());
            nriList.add(nriProto);
            ssProto.networkRegistrationInfo =
                    new TelephonyServiceState.NetworkRegistrationInfo[nriList.size()];
            nriList.toArray(ssProto.networkRegistrationInfo);
        }

        ssProto.voiceRat = serviceState.getRilVoiceRadioTechnology();
        ssProto.dataRat = serviceState.getRilDataRadioTechnology();
        ssProto.channelNumber = serviceState.getChannelNumber();