Snap for 10716635 from 3b285f67f2c52884731a66cc84396fee6ac1c6d5 to mainline-neuralnetworks-release

Change-Id: I30c85009d82dc10d6ed5c462ee207d292233c2cb
diff --git a/stats/atoms.proto b/stats/atoms.proto
index bf6cb52..4f325f8 100644
--- a/stats/atoms.proto
+++ b/stats/atoms.proto
@@ -1047,6 +1047,10 @@
     extensions 711; // OnDevicePersonalizationApiCalled ondevicepersonalization_api_called
     extensions 712; // FederatedComputeApiCalled federated_compute_api_called
     extensions 714; // AdServicesEnrollmentFailed ad_services_enrollment_failed
+    extensions 719; // PnoScanStarted pno_scan_started
+    extensions 720; // PnoScanStopped pno_scan_stopped
+    extensions 722; // WifiIsUnusableReported wifi_is_unusable_reported
+    extensions 723; // WifiApCapabilitiesReported wifi_ap_capabilities_reported
     extensions 9999; // Atom9999 atom_9999
     // StatsdStats tracks platform atoms with ids up to 900.
     // Update StatsdStats::kMaxPushedAtomId when atom ids here approach that value.
@@ -1630,6 +1634,11 @@
     optional int32 tx_kbps = 6 [default = -1];
     // estimated rx throughput in kbps
     optional int32 rx_kbps = 7 [default = -1];
+   // External scorer UID if external scorer is enabled. Otherwise WIFI_UID for
+   // AOSP scorer.
+   optional int32 scorer_uid = 8;
+   // Whether or not Wi-Fi is predicted as usable by the scorer
+   optional bool is_wifi_predicted_as_usable = 9;
 }
 
 /**
@@ -1723,6 +1732,20 @@
     optional bool is_oob_pseudonym_enabled = 11;
     // The client mode role for the connection, can use to determine the connection type.
     optional android.net.wifi.ClientModeRole role = 12;
+    // The status code specific to each failure code.
+    // - For FAILURE_ASSOCIATION_REJECTION, the value should be one of
+    //   SupplicantStaIfaceHal.StaIfaceStatusCode.
+    // - For FAILURE_NETWORK_DISCONNECTION, the value should be
+    //   one of SupplicantStaIfaceHal.StaIfaceReasonCode.
+    // - For FAILURE_AUTHENTICATION_EAP, the value should be a EAP failure code.
+    // For all other failure codes, this should be 0.
+    optional int32 failure_specific_status_code = 13;
+    // Information only applicable for EAP networks.
+    optional android.net.wifi.EapType eap_type = 14;
+    optional android.net.wifi.EapInnerMethod eap_inner_method = 15;
+    optional android.net.wifi.RoamingType passpoint_roaming_type = 16;
+    // carrier ID of the network
+    optional int32 carrier_id = 17;
 }
 
 /**
@@ -1806,6 +1829,40 @@
         SUPPLICANT_DISCONNECTED = 10002;
         CONNECTING_WATCHDOG_TIMER = 10003;
         ROAM_WATCHDOG_TIMER = 10004;
+
+        // New reasons tracking disconnections initiated by wifi framework
+        DISCONNECT_GENERAL = 10005; // Framework disconnect, generic reason
+        // Disconnecting due to unspecified IP reachability lost.
+        DISCONNECT_NUD_FAILURE_GENERIC = 10006;
+        // Disconnecting due to IP reachability lost from roaming
+        DISCONNECT_NUD_FAILURE_ROAM = 10007;
+        // Disconnecting due to IP reachability lost from the CONFIRM command
+        DISCONNECT_NUD_FAILURE_CONFIRM = 10008;
+        // Disconnecting due to IP reachability lost from kernel check
+        DISCONNECT_NUD_FAILURE_ORGANIC = 10009;
+        // Connectivity no longer wants this network
+        DISCONNECT_UNWANTED_BY_CONNECTIVITY = 10010;
+        // Timeout creating the IP client
+        DISCONNECT_CREATE_IP_CLIENT_TIMEOUT = 10011;
+        DISCONNECT_IP_PROVISIONING_FAILURE = 10012; // IP provisioning failure
+        DISCONNECT_P2P_REQUESTED_DISCONNECT = 10013; // Disconnect by P2P
+        // Network is removed from the WifiConfigManager
+        DISCONNECT_NETWORK_REMOVED = 10014;
+        DISCONNECT_NETWORK_UNTRUSTED = 10015; // Network is marked as untrusted
+        DISCONNECT_NETWORK_METERED = 10016; // Network is marked as metered
+        DISCONNECT_TEMP_DISABLED = 10017; // Network is temporarily disabled
+        DISCONNECT_PERM_DISABLED = 10018; // Network is permanently disabled
+        DISCONNECT_CARRIER_OFFLOAD_DISABLED = 10019;
+        // Disconnecting due to Passpoint terms and conditions page
+        DISCONNECT_PASSPOINT_TAC = 10020;
+        // Disconnecting due to issues with terms and conditions URL
+        DISCONNECT_VNC_REQUEST = 10021;
+        // Connected to a network that is already removed
+        DISCONNECT_UNKNOWN_NETWORK = 10022;
+        // User initiated a new connection
+        DISCONNECT_NEW_CONNECTION_USER = 10023;
+        // New connection triggered by non-user
+        DISCONNECT_NEW_CONNECTION_OTHERS = 10024;
     }
 
     // How long the session lasted from successful connection to disconnect.
@@ -1825,6 +1882,26 @@
 
     // Last seen link speed before the disconnect.
     optional int32 last_link_speed = 6;
+
+    // Time since the last RSSI and link speed update.
+    // Useful for filtering out very old data
+    optional int32 time_since_last_rssi_poll_seconds = 7;
+
+    // Time from the last NETWORK_CONNECTION_EVENT to the disconnect
+    optional int32 connected_time_since_last_roam_seconds = 8;
+
+    // The purpose the of the connection
+    optional android.net.wifi.ClientModeRole role = 9;
+
+    // The type of EAP authentication. Only applicable for EAP networks.
+    optional android.net.wifi.EapType eap_type = 10;
+
+    optional android.net.wifi.EapInnerMethod eap_inner_method = 11;
+
+    optional android.net.wifi.RoamingType passpoint_roaming_type = 12;
+
+    // Carrier id of the network.
+    optional int32 carrier_id = 13;
 }
 
 /**
@@ -9600,6 +9677,9 @@
 
   // Record query service count before unregistered service
   optional int32 replied_requests_count = 11;
+
+  // Record sent query count before stopped discovery
+  optional int32 sent_query_count = 12;
 }
 
 /**
@@ -23362,6 +23442,10 @@
         GA_UX_LANDING_PAGE_OPT_OUT = 65;
         // user clicked opt out on the landing page.
         LANDING_PAGE_OPT_OUT = 66;
+        // (enrolled) user clicked on the privacy sandbox entry point.
+        PRIVACY_SANDBOX_ENTRY_POINT_CLICKED = 67;
+        // daily maintenance job was run.
+        DAILY_MAINTENANCE_JOB_FINISHED = 68;
     }
     // UI action performed by user.
     optional AdServiceSettingsName action = 2;
@@ -23454,6 +23538,8 @@
         FIRST_CONSENT_NOTIFICATION_CHANNEL = 4;
         // reconsent notification.
         RECONSENT_NOTIFICATION_CHANNEL = 5;
+        // consent notification reset channel.
+        CONSENT_NOTIFICATION_RESET_CHANNEL = 6;
     }
 
     // Type of privacy sandbox enrollment channel.
diff --git a/stats/atoms/art/background_extension_dexopt_atoms.proto b/stats/atoms/art/background_extension_dexopt_atoms.proto
index ea66983..c782948 100644
--- a/stats/atoms/art/background_extension_dexopt_atoms.proto
+++ b/stats/atoms/art/background_extension_dexopt_atoms.proto
@@ -86,4 +86,13 @@
     // 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];
-}
\ No newline at end of file
+
+    // The number of packages successfully optimized in this run.
+    optional int32 optimized_package_count = 5;
+    // The number of packages depending on the boot classpath.
+    optional int32 packages_depending_on_boot_classpath_count = 6;
+    // The total number of packages scanned in this run. This is usually the
+    // total number of packages on device, but may vary due to
+    // OEM customizations.
+    optional int32 total_package_count = 7;
+}
diff --git a/stats/atoms/wifi/wifi_extension_atoms.proto b/stats/atoms/wifi/wifi_extension_atoms.proto
index 7635858..5dd1b7e 100644
--- a/stats/atoms/wifi/wifi_extension_atoms.proto
+++ b/stats/atoms/wifi/wifi_extension_atoms.proto
@@ -46,6 +46,10 @@
         = 693 [(module) = "wifi"];
     optional WifiThreadTaskExecuted wifi_thread_task_executed = 694 [(module) = "wifi"];
     optional WifiStateChanged wifi_state_changed = 700 [(module) = "wifi"];
+    optional PnoScanStarted pno_scan_started = 719 [(module) = "wifi"];
+    optional PnoScanStopped pno_scan_stopped = 720 [(module) = "wifi"];
+    optional WifiIsUnusableReported wifi_is_unusable_reported = 722 [(module) = "wifi"];
+    optional WifiApCapabilitiesReported wifi_ap_capabilities_reported= 723 [(module) = "wifi"];
 
     // Pull metrics
     optional WifiAwareCapabilities wifi_aware_capabilities = 10190 [(module) = "wifi"];
@@ -250,9 +254,9 @@
     // Whether or not the opportunistic no usage timeout for DBS is enabled
     optional bool is_dbs_timeout_enabled = 12;
     // Band of the DBS instance that failed, if any
-    optional bool dbs_instance_failure_band = 13;
+    optional int32 dbs_instance_failure_band = 13;
     // Band of the DBS instance that timed out, if any
-    optional bool dbs_instance_timeout_band = 14;
+    optional int32 dbs_instance_timeout_band = 14;
     // Upstream transport type at the time of stopping
     optional android.stats.connectivity.TransportType upstream_transport = 15;
 }
@@ -389,19 +393,57 @@
     optional bool enabled_by_wifi_wake = 3;
 }
 
+// Logged when a PNO scan is started.
+message PnoScanStarted {
+    // Whether this scan includes Passpoint SSIDs
+    optional bool includes_passpoint_ssids = 1;
+}
+
+// Logged when a PNO scan is stopped.
+message PnoScanStopped {
+    enum StopReason {
+        UNSPECIFIED = 0;
+        SCAN_FAILED = 1;
+        FOUND_RESULTS = 2;
+    }
+
+    enum FailureCode {
+        UNSPECIFIED_FAILURE = 0;
+        WIFICOND_SCAN_FAILURE = 1;
+        WIFICOND_REQUEST_FAILURE = 2;
+        WIFI_SCANNING_SERVICE_FAILURE = 3;
+    }
+
+    // Reason that this scan stopped
+    optional StopReason stop_reason = 1;
+    // Number of results found by this scan
+    optional int32 num_results = 2;
+    // Whether we were scanning for Passpoint SSIDs
+    optional bool scanned_for_passpoint_ssids = 3;
+    // Whether any Passpoint results were found
+    optional bool includes_passpoint_results = 4;
+    // Whether this scan led to the selection of a connection candidate
+    optional bool candidate_selected = 5;
+    // Whether the connection candidate is a Passpoint network
+    optional bool candidate_is_passpoint = 6;
+    // Failure code if this scan stopped due to a failure
+    optional FailureCode failure_code = 7;
+}
+
 /**
  * Pulled to indicate a single boolean Wifi setting.
  */
 message WifiSettingInfo {
     enum SettingName {
-        WIFI_SCAN_ALWAYS_AVAILABLE = 0;
-        WIFI_SCAN_THROTTLE = 1;
-        WIFI_SCORING = 2;
-        WIFI_PASSPOINT = 3;
-        WIFI_WAKE = 4;
-        WIFI_ENHANCED_MAC_RANDOMIZATION = 5;
-        WIFI_NETWORKS_AVAILABLE_NOTIFICATION = 6;
-        LOCATION_MODE = 7;
+        UNSPECIFIED = 0;
+        WIFI_SCAN_ALWAYS_AVAILABLE = 1;
+        WIFI_SCAN_THROTTLE = 2;
+        WIFI_SCORING = 3;
+        WIFI_PASSPOINT = 4;
+        WIFI_WAKE = 5;
+        WIFI_ENHANCED_MAC_RANDOMIZATION = 6;
+        WIFI_NETWORKS_AVAILABLE_NOTIFICATION = 7;
+        LOCATION_MODE = 8;
     }
 
     // Name of the Wifi setting
@@ -415,14 +457,130 @@
  */
 message WifiComplexSettingInfo {
     enum MultiInternetMode {
+        // Default value. Mode is unknown.
+        MULTI_INTERNET_MODE_UNSPECIFIED = 0;
         // Simultaneous connection to multiple APs is disabled
-        MULTI_INTERNET_MODE_DISABLED = 0;
+        MULTI_INTERNET_MODE_DISABLED = 1;
         // Enabled but restricted to a single network on multiple bands
-        MULTI_INTERNET_MODE_DBS_AP = 1;
+        MULTI_INTERNET_MODE_DBS_AP = 2;
         // Enabled and allowed to connect to multiple APs using different bands
-        MULTI_INTERNET_MODE_MULTI_AP = 2;
+        MULTI_INTERNET_MODE_MULTI_AP = 3;
     }
 
     // Wifi multi-internet mode
     optional MultiInternetMode multi_internet_mode = 1;
 }
+
+/**
+ * Logged for every Wi-Fi unusable event.
+ */
+message WifiIsUnusableReported {
+   enum ReportType {
+      // Default/Invalid
+      TYPE_UNKNOWN = 0;
+      // There is a data stall from tx failures
+      TYPE_DATA_STALL_BAD_TX = 1;
+      // There is a data stall from rx failures
+      TYPE_DATA_STALL_TX_WITHOUT_RX = 2;
+      // There is a data stall from both tx and rx failures
+      TYPE_DATA_STALL_BOTH = 3;
+      // Firmware generated an alert
+      TYPE_FIRMWARE_ALERT = 4;
+      // IP Manager lost reachability to network neighbors
+      TYPE_IP_REACHABILITY_LOST = 5;
+   }
+   // Type of this report
+   optional ReportType type = 1;
+   // External scorer UID if external scorer is enabled. Otherwise WIFI_UID for
+   // AOSP scorer.
+   optional int32 scorer_uid = 2;
+   // Whether or not Wi-Fi is predicted as usable by the scorer
+   optional bool is_wifi_predicted_as_usable = 3;
+}
+
+/**
+ * AP capabilities logged for every Wi-Fi connection
+ */
+message WifiApCapabilitiesReported {
+    /**
+     * Online certificate status protocol stapling type
+     */
+    enum OcspType {
+        TYPE_OCSP_UNKNOWN = 0;
+        // Do not use OCSP stapling
+        TYPE_OCSP_NONE = 1;
+        // Try to use OCSP stapling, but not require response
+        TYPE_OCSP_REQUEST_CERT_STATUS = 2;
+        // Require valid OCSP stapling response
+        TYPE_OCSP_REQUIRE_CERT_STATUS = 3;
+        // Require valid OCSP stapling response for all not-trusted certificates
+        // in the server certificate chain
+        TYPE_OCSP_REQUIRE_ALL_NON_TRUSTED_CERTS_STATUS = 4;
+    }
+
+    /**
+     * 6 GHz AP type as encoded in 'HE operation -> 6 GHz operation info -> Control ->
+     * Regulatory info'
+     */
+    enum ApType6GHz {
+       AP_TYPE_6HZ_UNKNOWN = 0;
+       AP_TYPE_6GHZ_INDOOR = 1;
+       AP_TYPE_6GHZ_STANDARD_POWER = 2;
+       AP_TYPE_6GHZ_LOW_POWER_INDOOR = 3;
+       AP_TYPE_6GHZ_VERY_LOW_POWER = 4;
+    }
+
+    // Whether roaming is initiated by the framework to connect this AP
+    optional bool is_framework_initiated_roaming = 1;
+    // The center frequency of the primary 20 MHz frequency (in MHz) of the channel over which the
+    // connection was made.
+    optional int32 channel_frequency_mhz = 2;
+    // Band of the channel_frequency_mhz
+    optional android.net.wifi.WifiBandBucket band_mhz = 3;
+    // The DTIM period (in beacon periods) of the AP
+    optional int32 dtimPeriod = 4;
+    // Security mode of the connection
+    optional android.net.wifi.SecurityMode connected_security_mode = 5;
+    // Whether AP is hidden
+    optional bool is_hidden = 6;
+    // Whether the AP is configured incorrectly as hidden by the user
+    optional bool is_incorrectly_configured_as_hidden = 7;
+    // Wi-Fi standard of the connection
+    optional android.net.wifi.WifiStandard standard = 8;
+    // Whether IEEE 802.11b supported by the AP
+    optional bool is_11b_supported = 9;
+    // EAP type used by the AP
+    optional android.net.wifi.EapType eap_type = 10;
+    // EAP inner method used by the AP
+    optional android.net.wifi.EapInnerMethod eap_inner_method = 11;
+    // OCSP used by the AP
+    optional OcspType ocsp_type = 12;
+    // Whether the AP enabled PMK caching
+    optional bool is_pmk_caching_enabled = 13;
+    // Whether AP supports MBO
+    optional bool is_mbo_supported = 14;
+    // Whether AP supports OCE
+    optional bool is_oce_supported = 15;
+    // Whether the AP supports FILS
+    optional bool is_fils_supported = 16;
+    // Whether AP requires TWT support (individual or broadcast)
+    optional bool is_twt_required = 17;
+    // Whether the AP supports individual TWT agreements
+    optional bool is_individual_twt_supported = 18;
+    // Whether the AP supports broadcast TWT agreements
+    optional bool is_broadcast_twt_supported = 19;
+    // Whether the AP supports restricted TWT agreements
+    optional bool is_restricted_twt_supported = 20;
+    // Whether the AP supports IEEE 802.11mc
+    optional bool is_11mc_supported = 21;
+    // Whether the AP supports IEEE 802.11az
+    optional bool is_11az_supported = 22;
+    // Passpoint release version if a Passpoint connection, otherwise PassPointRelease.UNKNOWN
+    optional android.net.wifi.PasspointRelease passpoint_release = 23;
+    // If the Passpoint connection is provided by the Home provider or Roaming/visited network
+    optional bool is_passpoint_home_provider = 24;
+    // 6 GHz AP type
+    optional ApType6GHz ap_type_6ghz = 25;
+    // Whether AP supports ECPS priority access
+    optional bool is_ecps_priority_access_supported = 26;
+}
diff --git a/stats/enums/adservices/common/adservices_enums.proto b/stats/enums/adservices/common/adservices_enums.proto
index 2417b3c..66fbc35 100644
--- a/stats/enums/adservices/common/adservices_enums.proto
+++ b/stats/enums/adservices/common/adservices_enums.proto
@@ -223,9 +223,18 @@
   TOPICS_DELETE_TABLE_FAILURE = 1040;
 
   // Measurement errors: 2001-3000
-  // Error eccurred when inserting enrollment data to DB.
+  // Error occurred when inserting enrollment data to DB.
   ENROLLMENT_DATA_INSERT_ERROR = 2001;
 
+  // Error occurred when deleting enrollment data to DB.
+  ENROLLMENT_DATA_DELETE_ERROR = 2002;
+
+  // Measurement datastore failure.
+  MEASUREMENT_DATASTORE_FAILURE = 2004;
+
+  // Measurement datastore unknown failure.
+  MEASUREMENT_DATASTORE_UNKNOWN_FAILURE = 2005;
+
   // UX errors: 4001-5000
   CONSENT_REVOKED_ERROR = 4001;
 
@@ -267,6 +276,9 @@
 
   // Ad services entry point failure.
   AD_SERVICES_ENTRY_POINT_FAILURE = 4014;
+
+  // Measurement foreground unknown failure.
+  MEASUREMENT_FOREGROUND_UNKNOWN_FAILURE = 4015;
 }
 
 /**
diff --git a/stats/enums/bluetooth/enums.proto b/stats/enums/bluetooth/enums.proto
index a081118..5beb045 100644
--- a/stats/enums/bluetooth/enums.proto
+++ b/stats/enums/bluetooth/enums.proto
@@ -327,7 +327,7 @@
         LE_SCAN_DURATION_COUNT_BATCH_1H = 120108;
         LE_SCAN_DURATION_COUNT_BATCH_1HP = 120109;
 
-        // [120,200 - 120,300) LE scan radio active duration
+        // [120,200 - 120,250) LE scan radio active duration
         LE_SCAN_RADIO_DURATION_ALL = 120200;
         LE_SCAN_RADIO_DURATION_REGULAR = 120201;
         LE_SCAN_RADIO_DURATION_BATCH = 120202;
@@ -336,6 +336,22 @@
         LE_SCAN_RADIO_DURATION_BATCH_SCREEN_ON = 120205;
         LE_SCAN_RADIO_DURATION_BATCH_SCREEN_OFF = 120206;
 
+        // [120,250 - 120,300) LE scan radio scan mode count
+        LE_SCAN_RADIO_SCAN_MODE_OPPORTUNISTIC_COUNT = 120250;
+        LE_SCAN_RADIO_SCAN_MODE_LOW_POWER_COUNT = 120251;
+        LE_SCAN_RADIO_SCAN_MODE_BALANCED_COUNT = 120252;
+        LE_SCAN_RADIO_SCAN_MODE_LOW_LATENCY_COUNT = 120253;
+        LE_SCAN_RADIO_SCAN_MODE_AMBIENT_DISCOVERY_COUNT = 120254;
+        LE_SCAN_RADIO_SCAN_MODE_SCREEN_OFF_COUNT = 120255;
+        LE_SCAN_RADIO_SCAN_MODE_SCREEN_OFF_BALANCED_COUNT = 120256;
+        LE_SCAN_RADIO_SCAN_MODE_OPPORTUNISTIC_COUNT_SCREEN_OFF = 120257;
+        LE_SCAN_RADIO_SCAN_MODE_LOW_POWER_COUNT_SCREEN_OFF = 120258;
+        LE_SCAN_RADIO_SCAN_MODE_BALANCED_COUNT_SCREEN_OFF = 120259;
+        LE_SCAN_RADIO_SCAN_MODE_LOW_LATENCY_COUNT_SCREEN_OFF = 120260;
+        LE_SCAN_RADIO_SCAN_MODE_AMBIENT_DISCOVERY_COUNT_SCREEN_OFF = 120261;
+        LE_SCAN_RADIO_SCAN_MODE_SCREEN_OFF_COUNT_SCREEN_OFF = 120262;
+        LE_SCAN_RADIO_SCAN_MODE_SCREEN_OFF_BALANCED_COUNT_SCREEN_OFF = 120263;
+
         // [120,300 - 120,400) LE scan results count
         LE_SCAN_RESULTS_COUNT_ALL = 120300;
         LE_SCAN_RESULTS_COUNT_REGULAR = 120301;
@@ -344,9 +360,14 @@
         LE_SCAN_RESULTS_COUNT_REGULAR_SCREEN_OFF =  120304;
         LE_SCAN_RESULTS_COUNT_BATCH_SCREEN_ON = 120305;
         LE_SCAN_RESULTS_COUNT_BATCH_SCREEN_OFF = 120306;
+        LE_SCAN_RESULTS_COUNT_BATCH_BUNDLE = 120307;
+        LE_SCAN_RESULTS_COUNT_BATCH_BUNDLE_SCREEN_ON = 120308;
+        LE_SCAN_RESULTS_COUNT_BATCH_BUNDLE_SCREEN_OFF = 120309;
 
         // [120,400 - 120,500) LE scan abuse count
         LE_SCAN_ABUSE_COUNT_SCAN_TIMEOUT = 120400;
+        LE_SCAN_ABUSE_COUNT_HW_FILTER_NOT_AVAILABLE = 120401;
+        LE_SCAN_ABUSE_COUNT_TRACKING_HW_FILTER_NOT_AVAILABLE = 120402;
 
     // [120,500 - 121,000) LE advertise related
         // [120,500 - 120,600) LE advertise enable/disable count
@@ -386,6 +407,14 @@
   // [120,900 - 121,000) GATT Related Count
         GATT_CLIENT_CONNECT_IS_DIRECT = 120900;
         GATT_CLIENT_CONNECT_IS_AUTOCONNECT = 120901;
+        GATT_CLIENT_CONNECT_IS_DIRECT_IN_FOREGROUND = 120902;
+        GATT_CLIENT_CONNECT_IS_DIRECT_NOT_IN_FOREGROUND = 120903;
+        GATT_CLIENT_CONNECT_IS_AUTOCONNECT_IN_FOREGROUND = 120904;
+        GATT_CLIENT_CONNECT_IS_AUTOCONNECT_NOT_IN_FOREGROUND = 120905;
+        GATT_SERVER_CONNECT_IS_DIRECT_IN_FOREGROUND = 120906;
+        GATT_SERVER_CONNECT_IS_DIRECT_NOT_IN_FOREGROUND = 120907;
+        GATT_SERVER_CONNECT_IS_AUTOCONNECT_IN_FOREGROUND = 120908;
+        GATT_SERVER_CONNECT_IS_AUTOCONNECT_NOT_IN_FOREGROUND = 120909;
 
         // [121,000 - 121,010) Screen on/off count
         SCREEN_ON_EVENT = 121000;
diff --git a/stats/enums/healthfitness/ui/enums.proto b/stats/enums/healthfitness/ui/enums.proto
index 8d9eff7..479a9eb 100644
--- a/stats/enums/healthfitness/ui/enums.proto
+++ b/stats/enums/healthfitness/ui/enums.proto
@@ -33,7 +33,7 @@
     DATA_AND_ACCESS_BUTTON = 2;
     SEE_ALL_RECENT_ACCESS_BUTTON = 3;
     RECENT_ACCESS_ENTRY = 4;
-    BACKUP_DATA_BUTTON = 5;
+    MANAGE_DATA_BUTTON = 153;
 
     // Onboarding page
     ONBOARDING_COMPLETED_BUTTON = 6;
@@ -246,7 +246,18 @@
     ERROR_PAGE_STATE = 151;
     WITH_DATA_PAGE_STATE = 152;
 
-    // Next available: 153;
+    // Next available: 160;
+
+    // Manage data page
+    BACKUP_DATA_BUTTON = 5;
+    DATA_SOURCES_AND_PRIORITY_BUTTON = 154;
+    SET_UNITS_BUTTON = 155;
+
+    // Data sources page
+    DATA_TYPE_SPINNER_BUTTON = 156;
+    DATA_TOTALS_CARD = 157;
+    APP_SOURCE_BUTTON = 158;
+    ADD_AN_APP_BUTTON = 159;
 
 }
 
@@ -282,6 +293,8 @@
     MIGRATION_MODULE_UPDATE_NEEDED_PAGE = 23;
     MIGRATION_MORE_SPACE_NEEDED_PAGE = 24;
     MIGRATION_PAUSED_PAGE = 25;
+    MANAGE_DATA_PAGE = 26;
+    DATA_SOURCES_PAGE = 27;
 }
 
 enum Action {
diff --git a/stats/enums/stats/connectivity/connectivity_service.proto b/stats/enums/stats/connectivity/connectivity_service.proto
index 3d5b2f8..b2df89b 100644
--- a/stats/enums/stats/connectivity/connectivity_service.proto
+++ b/stats/enums/stats/connectivity/connectivity_service.proto
@@ -59,6 +59,7 @@
     NET_REGISTER = 1;
     NET_DISCOVER = 2;
     NET_RESOLVE = 3;
+    NET_SERVICE_INFO_CALLBACK = 4;
 }
 
 enum MdnsQueryResult {
@@ -71,4 +72,8 @@
     MQR_SERVICE_DISCOVERY_STOP = 6;
     MQR_SERVICE_RESOLVED = 7;
     MQR_SERVICE_RESOLUTION_FAILED = 8;
+    MQR_SERVICE_RESOLUTION_STOP = 9;
+    MQR_SERVICE_INFO_CALLBACK_REGISTERED = 10;
+    MQR_SERVICE_INFO_CALLBACK_REGISTRATION_FAILED = 11;
+    MQR_SERVICE_INFO_CALLBACK_UNREGISTERED = 12;
 }
diff --git a/stats/enums/wifi/enums.proto b/stats/enums/wifi/enums.proto
index 9dd4a57..19db684 100644
--- a/stats/enums/wifi/enums.proto
+++ b/stats/enums/wifi/enums.proto
@@ -203,6 +203,58 @@
     STA_STATUS_CONNECTED_6_GHZ = 4;
 }
 
+enum EapType {
+    // Unknown Type
+    TYPE_UNKNOWN = 0;
+    // EAP_TLS (13)
+    TYPE_EAP_TLS = 1;
+    // EAP_TTLS (21)
+    TYPE_EAP_TTLS = 2;
+    // EAP_SIM (18)
+    TYPE_EAP_SIM = 3;
+    // EAP_AKA (23)
+    TYPE_EAP_AKA = 4;
+    // EAP_AKA_PRIME (50)
+    TYPE_EAP_AKA_PRIME = 5;
+    TYPE_EAP_WAPI_CERT = 6;
+    TYPE_EAP_UNAUTH_TLS = 7;
+    TYPE_EAP_PEAP = 8;
+    TYPE_EAP_PWD = 9;
+    TYPE_EAP_OTHERS = 10;
+}
+
+enum EapInnerMethod {
+    METHOD_UNKNOWN = 0;
+    METHOD_PAP = 1;
+    METHOD_MSCHAP = 2;
+    METHOD_MSCHAP_V2 = 3;
+    METHOD_OTHERS = 4;
+    // Generic Token Card
+    METHOD_GTC = 5;
+    // EAP-Subscriber Identity Module [RFC-4186]
+    METHOD_SIM = 6;
+    // EAP-Authentication and Key Agreement [RFC-4187]
+    METHOD_AKA = 7;
+    // EAP-Authentication and Key Agreement Prime [RFC-5448]
+    METHOD_AKA_PRIME = 8;
+}
+
+enum RoamingType {
+    ROAMING_UNKNOWN = 0;
+    // Not a Passpoint network
+    ROAMING_NOT_PASSPOINT = 1;
+    // Non-Roaming
+    ROAMING_NONE = 2;
+    // Other RCOI Roaming
+    ROAMING_RCOI_OTHERS = 3;
+    // Free OpenRoaming
+    ROAMING_RCOI_OPENROAMING_FREE = 4;
+    // Settled OpenRoaming
+    ROAMING_RCOI_OPENROAMING_SETTLED = 5;
+    // Not RCOI roaming
+    ROAMING_NOT_RCOI = 6;
+}
+
 /**
  * Wi-Fi Standards
  */
@@ -263,4 +315,37 @@
     AWARE_INITIATE_BOOTSTRAPPING_REQUEST = 20;
     AWARE_RESPOND_TO_BOOTSTRAPPING_INDICATION_REQUEST = 21;
     AWARE_TERMINATE_PAIRING_REQUEST = 22;
-}
\ No newline at end of file
+}
+
+/**
+ * Wi-Fi Security modes defined by the combinations of cipher suite, AKM and PMF
+ */
+enum SecurityMode {
+    SECURITY_MODE_UNKNOWN = 0;
+    SECURITY_MODE_INVALID = 1;
+    SECURITY_MODE_WPA3_ENTERPRISE_192_BIT = 2;
+    SECURITY_MODE_WPA3_ENTERPRISE = 3;
+    SECURITY_MODE_WPA3_PERSONAL = 4;
+    SECURITY_MODE_WPA3_WPA2_PERSONAL_TRANSITION = 5;
+    SECURITY_MODE_DPP = 6;
+    SECURITY_MODE_WPA2_PERSONAL = 7;
+    SECURITY_MODE_WPA2_WPA_PERSONAL_TRANSITION = 8;
+    SECURITY_MODE_WAPI_CERT = 9;
+    SECURITY_MODE_WAPI_PSK = 10;
+    SECURITY_MODE_WPA_ENTERPRISE_LEGACY = 11;
+    SECURITY_MODE_WPA_PERSONAL_LEGACY = 12;
+    SECURITY_MODE_OWE = 13;
+    SECURITY_MODE_OWE_TRANSITION = 14;
+    SECURITY_MODE_WEP = 15;
+    SECURITY_MODE_NONE = 16;
+}
+
+/**
+ * Passpoint release versions
+ */
+enum PasspointRelease {
+  PASSPOINT_RELEASE_UNKNOWN = 0;
+  PASSPOINT_RELEASE_1 = 1;
+  PASSPOINT_RELEASE_2 = 2;
+  PASSPOINT_RELEASE_3 = 3;
+}
diff --git a/stats/stats_log_api_gen/Android.bp b/stats/stats_log_api_gen/Android.bp
index 4c72d9e..a8d57fb 100644
--- a/stats/stats_log_api_gen/Android.bp
+++ b/stats/stats_log_api_gen/Android.bp
@@ -222,6 +222,7 @@
         },
         host: {
             static_libs: [
+                "libbase",
                 "libstatssocket",
                 "libstatspull",
                 "statsd-aidl-ndk",