Merge "Add the new DTS audio formats to metrics"
diff --git a/OWNERS b/OWNERS
index e02753e..4886179 100644
--- a/OWNERS
+++ b/OWNERS
@@ -8,4 +8,4 @@
 yaochen@google.com
 
 # Settings UI
-per-file settings_enums.proto=tmfang@google.com
+per-file settings_enums.proto=edgarwang@google.com
diff --git a/stats/atoms.proto b/stats/atoms.proto
index 7cb9e15..22092bb 100644
--- a/stats/atoms.proto
+++ b/stats/atoms.proto
@@ -728,6 +728,7 @@
         ProviderAcquisitionEventReported provider_acquisition_event_reported =
                 477 [(module) = "framework"];
         BluetoothDeviceNameReported bluetooth_device_name_reported = 478 [(module) = "bluetooth"];
+        UwbStartRanging uwb_ranging_start = 489 [(module) = "uwb"];
         NetworkDnsServerSupportReported network_dns_server_support_reported = 504 [(module) = "resolv"];
         VmBooted vm_booted = 505 [(module) = "virtualizationservice"];
         VmExited vm_exited = 506 [(module) = "virtualizationservice"];
@@ -739,9 +740,11 @@
                 510 [(module) = "media_metrics"];
         MediametricsHeadTrackerDeviceSupportedReported mediametrics_headtrackerdevicesupported_reported =
                 511 [(module) = "media_metrics"];
+        IwlanSetupDataCallResultReported iwlan_setup_data_call_result_reported = 519 [(module) = "iwlan"];
+        IwlanPdnDisconnectedReasonReported iwlan_pdn_disconnected_reason_reported = 520 [(module) = "iwlan"];
         AirplaneModeSessionReported airplane_mode_session_reported = 521 [(module) = "wifi", (module) = "bluetooth"];
-        VmCpuStatusReported vm_cpu_status_reported = 522 [(module) = "virtualizationservice"];
-        VmMemStatusReported vm_mem_status_reported = 523 [(module) = "virtualizationservice"];
+        VmCpuStatusReported vm_cpu_status_reported = 522 [(module) = "virtualizationservice", deprecated = true];
+        VmMemStatusReported vm_mem_status_reported = 523 [(module) = "virtualizationservice", deprecated = true];
         DefaultNetworkRematchInfo default_network_rematch_info = 525 [(module) = "connectivity"];
         NetworkSelectionPerformance network_selection_performance = 526 [(module) = "connectivity"];
         NetworkNsdReported network_nsd_reported = 527 [(module) = "connectivity"];
@@ -752,12 +755,15 @@
         BluetoothLocalSupportedFeaturesReported bluetooth_local_supported_features_reported = 532 [(module) = "bluetooth"];
         BluetoothGattAppInfo bluetooth_gatt_app_info = 533 [(module) = "bluetooth"];
         OdsignReported odsign_reported = 548 [(module) = "art"];
+        ArtDeviceDatumReported art_device_datum_reported = 550 [(module) = "art"];
+        NetworkSliceSessionEnded network_slice_session_ended = 558 [(module) = "connectivity"];
+        NetworkSliceDailyDataUsageReported network_slice_daily_data_usage_reported = 559 [(module) = "connectivity"];
         // StatsdStats tracks platform atoms with ids upto 750.
         // Update StatsdStats::kMaxPushedAtomId when atom ids here approach that value.
     }
 
     // Pulled events will start at field 10000.
-    // Next: 10165
+    // Next: 10169
     oneof pulled {
         WifiBytesTransfer wifi_bytes_transfer = 10000 [(module) = "framework"];
         WifiBytesTransferByFgBg wifi_bytes_transfer_by_fg_bg = 10001 [(module) = "framework"];
@@ -948,6 +954,7 @@
         NetworkBpfMapInfo network_bpf_map_info = 10161 [(module) = "connectivity"];
         ConnectivityStateSample connectivity_state_sample = 10163 [(module) = "connectivity"];
         NetworkSelectionRematchReasonsInfo network_selection_rematch_reasons_info = 10164 [(module) = "connectivity"];
+        NetworkSliceRequestCountSample network_slice_request_count = 10168 [(module) = "connectivity"];
     }
 
     // DO NOT USE field numbers above 100,000 in AOSP.
@@ -17054,15 +17061,25 @@
     optional DeathReason death_reason = 3;
     // Elapsed time between start and termination of a VM
     optional int64 elapsed_time_millis = 4;
+
+    // Guest time for CPU usage
+    optional int64 guest_time_millis = 5;
+
+    // RSS for memory usage
+    optional int64 rss_vm_kb = 6;
+    optional int64 rss_crosvm_kb = 7;
 }
 
 /**
+ * (Deprecated)
  * Logs telemetry for Android Virtualization framework
  *
  * For every second while VM is running, an atom is pushed that records CPU time information of VM.
  * Logged from: packages/modules/Virtualization/
  */
 message VmCpuStatusReported {
+    option deprecated = true;
+
     optional int32 uid = 1 [(is_uid) = true];
     optional string vm_identifier = 2;
 
@@ -17073,12 +17090,15 @@
 }
 
 /**
+ * (Deprecated)
  * Logs telemetry for Android Virtualization framework
  *
  * For every second while VM is running, an atom is pushed that records memory information of VM.
  * Logged from: packages/modules/Virtualization/
  */
 message VmMemStatusReported {
+    option deprecated = true;
+
     optional int32 uid = 1 [(is_uid) = true];
     optional string vm_identifier = 2;
 
@@ -20209,6 +20229,28 @@
 }
 
 /*
+ * Logs details of start UWB ranging
+ * Logged from packages/modules/Uwb/service/java/com/android/server/uwb/UwbMetrics.java
+ */
+message UwbStartRanging {
+    // UWB profiles
+    optional android.uwb.Profile profile = 1;
+    // Scrambled timestamp sequence (STS) Type
+    optional android.uwb.Sts sts = 2;
+    // Was it an initiator as opposed to responder?
+    optional bool is_initiator = 3;
+    // Was it a controller as opposed to controlee?
+    optional bool is_controller = 4;
+    // Was the connection done by the app as opposed to by the framework?
+    optional bool is_framework_initiated = 5;
+    // Was it out-of-band connection as opposed to in-band connection?
+    // Note that this field is ignored if is_framework_initiated is false.
+    optional bool is_out_of_band = 6;
+    // The status code of ranging start.
+    optional android.uwb.RangingStatus status = 7;
+}
+
+/*
  * Log that the ranging measurement is received
  * Logged from packages/modules/Uwb/service/java/com/android/server/uwb/UwbMetrics.java
  */
@@ -21366,13 +21408,13 @@
     // cancellation.
     optional android.app.job.StopReasonEnum cancellation_reason = 2;
 
-    // The duration of the job run, in milliseconds, not counting time spent in
-    // sleep.
+    // The duration of the job run, in milliseconds.
     optional int64 duration_ms = 3;
 
     // The duration of the job run, in milliseconds, including time spent in
-    // sleep.
-    optional int64 duration_including_sleep_ms = 4;
+    // sleep. Deprecated as the job scheduler holds a wake lock, hence this
+    // duration is always going to be the same as above.
+    optional int64 duration_including_sleep_ms = 4 [deprecated = true];
 }
 
 /**
@@ -21767,6 +21809,69 @@
     optional int32 selection_issued_latency_milli = 5;
 }
 
+message NetworkSliceRequestCountSample {
+    // Bitfield representing the network's capability(e.g. NET_CAPABILITY_PRIORITIZE_LATENCY),
+    // defined in packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
+    optional int64 slice_id = 1;
+
+    // Bitfield representing the network's enterprise capability identifier
+    // (e.g. NET_ENTERPRISE_ID_1), defined in
+    // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
+    optional int32 enterprise_id = 2;
+
+    // number of request for this slice
+    optional int32 request_count = 3;
+
+    // number of apps with outstanding request(s) for this slice
+    optional int32 distinct_app_count = 4;
+}
+
+message NetworkSliceSessionEnded {
+    // Bitfield representing the network's capability(e.g. NET_CAPABILITY_PRIORITIZE_LATENCY),
+    // defined in packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
+    optional int64 slice_id = 1;
+
+    // Bitfield representing the network's enterprise capability identifier
+    // (e.g. NET_ENTERPRISE_ID_1), defined in
+    // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
+    optional int32 enterprise_id = 2;
+
+    // Number of bytes received at the device on this slice id
+    optional int64 rx_bytes = 3;
+
+    // Number of bytes transmitted by the device on this slice id
+    optional int64 tx_bytes = 4;
+
+    // Number of apps that have used this slice
+    optional int32 number_of_apps = 5;
+
+    // How long(in seconds) this slice has been connected
+    optional int32 slice_connection_duration_sec = 6;
+}
+
+message NetworkSliceDailyDataUsageReported {
+    // Bitfield representing the network's capability(e.g. NET_CAPABILITY_PRIORITIZE_LATENCY),
+    // defined in packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
+    optional int64 slice_id = 1;
+
+    // Bitfield representing the network's enterprise capability identifier
+    // (e.g. NET_ENTERPRISE_ID_1), defined in
+    // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
+    optional int32 enterprise_id = 2;
+
+    // Number of bytes received at the device on this slice id
+    optional int64 rx_bytes = 3;
+
+    // Number of bytes transmitted by the device on this slice id
+    optional int64 tx_bytes = 4;
+
+    // Number of apps that have used this slice
+    optional int32 number_of_apps = 5;
+
+    // How long(in seconds) this slice has been connected
+    optional int32 slice_connection_duration_sec = 6;
+}
+
 /**
  * Logs odsign metrics.
  *
@@ -21798,3 +21903,110 @@
 
     optional Status status = 1;
 }
+
+/**
+ * Logs when Iwlan responds the setup data call request.
+ *
+ * Logged from:
+ *   packages/services/Iwlan/src/com/google/android/iwlan/IwlanDataService.java
+ */
+message IwlanSetupDataCallResultReported {
+  enum IwlanError {
+    NO_ERROR = 0;
+    IKE_PROTOCOL_EXCEPTION = 1;
+    IKE_INTERNAL_IO_EXCEPTION = 2;
+    IKE_GENERIC_EXCEPTION = 3;
+    EPDG_SELECTOR_SERVER_SELECTION_FAILED = 4;
+    TUNNEL_TRANSFORM_FAILED = 5;
+    SIM_NOT_READY_EXCEPTION = 6;
+    NETWORK_FAILURE = 7;
+    UNKNOWN_EXCEPTION = 8;
+  }
+
+  // Setup data call apn type
+  // See go/apntypedefinition
+  optional int32 apn_type = 1;
+  // Is the request for handover
+  optional bool is_handover = 2;
+  // ePDG server address
+  optional string epdg_server_address = 3;
+  // If the request type is handover, record the source network type
+  // See
+  // frameworks/base/telephony/java/android/telephony/TelephonyManager.java
+  optional int32 source_rat = 4;
+  // If the request type is handover, record the source network roaming status
+  optional bool is_cellular_roaming = 5;
+  // Is network connected
+  optional bool is_network_connected = 6;
+  // Default network transport type
+  // See
+  // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
+  optional int32 transport_type = 7;
+  // Setup result
+  optional int32 setup_request_result = 8;
+  // Iwlan error code if setup failed
+  optional IwlanError iwlan_error = 9;
+  // Data call fail cause
+  // See
+  // frameworks/base/telephony/java/android/telephony/DataFailCause.java
+  optional int32 data_call_fail_cause = 10;
+  // Setup request processing duration
+  optional int32 processing_duration_millis = 11;
+  // Time for doing ePDG server selection through DNS query of FQDNs
+  optional int32 epdg_server_selection_duration_millis = 12;
+  // Time for establishing IKE tunnel
+  optional int32 ike_tunnel_establishment_duration_millis = 13;
+  // Tunnel State
+  // See
+  // packages/services/Iwlan/src/com/google/android/iwlan/IwlanDataService.java
+  optional int32 tunnel_state = 14;
+  // Handover failure mode
+  // See
+  // frameworks/base/telephony/java/android/telephony/data/DataCallResponse.java
+  optional int32 handover_failure_mode = 15;
+  // Retry duration
+  optional int32 retry_duration_millis = 16;
+}
+
+/**
+ * Logs when Iwlan reports IWLAN PDN disconnected without deactivation request.
+ *
+ * Logged from:
+ *   packages/services/Iwlan/src/com/google/android/iwlan/IwlanDataService.java
+ */
+message IwlanPdnDisconnectedReasonReported {
+  // Disconnection cause
+  // See
+  // frameworks/base/telephony/java/android/telephony/DataFailCause.java
+  optional int32 cause = 1;
+  // Is network connected
+  optional bool is_network_connected = 2;
+  // default network transport type
+  // See
+  // packages/services/Iwlan/src/com/google/android/iwlan/IwlanDataService.java
+  optional int32 transport_type = 3;
+  // Wifi signal level
+  optional int32 wifi_signal_level = 4;
+}
+
+/**
+ * Logs ART metrics that are device-specific (as opposed to app-specific ones logged by
+ * ArtDatumReported).
+ *
+ * Logged from:
+ *   art/runtime/metrics/statsd.cc
+ */
+message ArtDeviceDatumReported {
+    enum BootImageStatus {
+        // Unknown value.
+        STATUS_UNSPECIFIED = 0;
+        // Boot image(s) are fully usable.
+        STATUS_FULL = 1;
+        // Only the minimal boot image is usable.
+        STATUS_MINIMAL = 2;
+        // No boot image is usable.
+        STATUS_NONE = 3;
+    }
+
+    optional BootImageStatus boot_image_status = 1;
+}
diff --git a/stats/enums/uwb/enums.proto b/stats/enums/uwb/enums.proto
index 9802a5b..99aac80 100644
--- a/stats/enums/uwb/enums.proto
+++ b/stats/enums/uwb/enums.proto
@@ -48,6 +48,22 @@
     PROVISION_FAILED = 8;
 }
 
+// UWB ranging session status codes
+enum RangingStatus {
+    RANGING_STATUS_UNKNOWN = 0;
+    RANGING_SUCCESS = 1;
+    RANGING_GENERAL_FAILURE = 2;
+    RANGING_BAD_PARAMs = 3;
+    RANGING_REJECTED = 4;
+    TX_FAILED = 5;
+    RX_PHY_DEC_FAILED = 6;
+    RX_PHY_TOA_FAILED = 7;
+    RX_PHY_STS_FAILED = 8;
+    RX_MAC_DEC_FAILED = 9;
+    RX_MAC_IE_DEC_FAILED = 10;
+    RX_MAC_IE_MISSING = 11;
+}
+
 // UWB session duration buckets
 enum DurationBucket {
     DURATION_UNKNOWN = 0;