Indicates raw registration state from modem.

CS/WWAN, PS/WWAN, PS/WLAN

Test: manually verify RadioInfo page
Bug: 272085852
Change-Id: I6baaad6d072ec4a4528e982677e6d36b9bb9c341
diff --git a/res/layout/radio_info.xml b/res/layout/radio_info.xml
index c414fe1..2efa1d4 100644
--- a/res/layout/radio_info.xml
+++ b/res/layout/radio_info.xml
@@ -92,6 +92,12 @@
             <TextView android:id="@+id/data_network" style="@style/info_value" />
         </LinearLayout>
 
+        <!-- Data Raw Registration State -->
+        <LinearLayout style="@style/RadioInfo_entry_layout">
+            <TextView android:text="@string/radio_info_data_raw_registration_state_label" style="@style/info_label" />
+            <TextView android:id="@+id/data_raw_registration_state" style="@style/info_value" />
+        </LinearLayout>
+
         <!-- Override Network Type -->
         <LinearLayout style="@style/RadioInfo_entry_layout">
             <TextView android:text="@string/radio_info_override_network_type_label" style="@style/info_label" />
@@ -110,6 +116,18 @@
             <TextView android:id="@+id/voice_network" style="@style/info_value" />
         </LinearLayout>
 
+        <!-- Voice Raw Registration State -->
+        <LinearLayout style="@style/RadioInfo_entry_layout">
+            <TextView android:text="@string/radio_info_voice_raw_registration_state_label" style="@style/info_label" />
+            <TextView android:id="@+id/voice_raw_registration_state" style="@style/info_value" />
+        </LinearLayout>
+
+        <!-- PS IWLAN Raw Registration State -->
+        <LinearLayout style="@style/RadioInfo_entry_layout">
+            <TextView android:text="@string/radio_info_wlan_data_raw_registration_state_label" style="@style/info_label" />
+            <TextView android:id="@+id/wlan_data_raw_registration_state" style="@style/info_value" />
+        </LinearLayout>
+
         <!-- Signal Strength -->
         <LinearLayout style="@style/RadioInfo_entry_layout">
             <TextView android:text="@string/radio_info_signal_strength_label" style="@style/info_label" />
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e21f761..fe679f2 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2137,6 +2137,12 @@
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_override_network_type_label">Override Network Type:</string>
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
+    <string name="radio_info_voice_raw_registration_state_label">Voice Raw Registration State:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
+    <string name="radio_info_data_raw_registration_state_label">Data Raw Registration State:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
+    <string name="radio_info_wlan_data_raw_registration_state_label">WLAN Data Raw Registration State:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="phone_index_label">Select phone index</string>
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_set_perferred_label">Set Preferred Network Type:</string>
diff --git a/src/com/android/phone/settings/RadioInfo.java b/src/com/android/phone/settings/RadioInfo.java
index 574440a..214934d 100644
--- a/src/com/android/phone/settings/RadioInfo.java
+++ b/src/com/android/phone/settings/RadioInfo.java
@@ -236,6 +236,9 @@
     private TextView mGprsState;
     private TextView mVoiceNetwork;
     private TextView mDataNetwork;
+    private TextView mVoiceRawReg;
+    private TextView mDataRawReg;
+    private TextView mWlanDataRawReg;
     private TextView mOverrideNetwork;
     private TextView mDBm;
     private TextView mMwi;
@@ -377,6 +380,7 @@
             updateServiceState(serviceState);
             updateRadioPowerState();
             updateNetworkType();
+            updateRawRegistrationState(serviceState);
             updateImsProvisionedState();
             updateNrStats(serviceState);
         }
@@ -514,6 +518,9 @@
         mGprsState = (TextView) findViewById(R.id.gprs);
         mVoiceNetwork = (TextView) findViewById(R.id.voice_network);
         mDataNetwork = (TextView) findViewById(R.id.data_network);
+        mVoiceRawReg = (TextView) findViewById(R.id.voice_raw_registration_state);
+        mDataRawReg = (TextView) findViewById(R.id.data_raw_registration_state);
+        mWlanDataRawReg = (TextView) findViewById(R.id.wlan_data_raw_registration_state);
         mOverrideNetwork = (TextView) findViewById(R.id.override_network);
         mDBm = (TextView) findViewById(R.id.dbm);
         mMwi = (TextView) findViewById(R.id.mwi);
@@ -855,8 +862,11 @@
         mOperatorName.setText("");
         mGprsState.setText("");
         mDataNetwork.setText("");
+        mDataRawReg.setText("");
         mOverrideNetwork.setText("");
         mVoiceNetwork.setText("");
+        mVoiceRawReg.setText("");
+        mWlanDataRawReg.setText("");
         mSent.setText("");
         mReceived.setText("");
         mCallState.setText("");
@@ -1204,6 +1214,32 @@
         }
     }
 
+    private String getRawRegistrationStateText(ServiceState ss, int domain, int transportType) {
+        if (ss != null) {
+            NetworkRegistrationInfo nri = ss.getNetworkRegistrationInfo(domain, transportType);
+            if (nri != null) {
+                return NetworkRegistrationInfo.registrationStateToString(
+                        nri.getNetworkRegistrationState())
+                        + (nri.isEmergencyEnabled() ? "_EM" : "");
+            }
+        }
+        return "";
+    }
+
+    private void updateRawRegistrationState(ServiceState serviceState) {
+        ServiceState ss = serviceState;
+        if (ss == null && mPhone != null) {
+            ss = mPhone.getServiceState();
+        }
+
+        mVoiceRawReg.setText(getRawRegistrationStateText(ss, NetworkRegistrationInfo.DOMAIN_CS,
+                    AccessNetworkConstants.TRANSPORT_TYPE_WWAN));
+        mDataRawReg.setText(getRawRegistrationStateText(ss, NetworkRegistrationInfo.DOMAIN_PS,
+                    AccessNetworkConstants.TRANSPORT_TYPE_WWAN));
+        mWlanDataRawReg.setText(getRawRegistrationStateText(ss, NetworkRegistrationInfo.DOMAIN_PS,
+                    AccessNetworkConstants.TRANSPORT_TYPE_WLAN));
+    }
+
     private void updateNrStats(ServiceState serviceState) {
         if ((mTelephonyManager.getSupportedRadioAccessFamily()
                 & TelephonyManager.NETWORK_TYPE_BITMASK_NR) == 0) {