• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17syntax = "proto2";
18
19package android.os.statsd;
20
21option optimize_for = CODE_SIZE;
22option java_package = "com.android.os";
23option java_outer_classname = "AtomsProto";
24
25import "frameworks/proto_logging/stats/attribution_node.proto";
26import "frameworks/proto_logging/stats/atoms/adpf/adpf_atoms.proto";
27import "frameworks/proto_logging/stats/atoms/agif/agif_atoms.proto";
28import "frameworks/proto_logging/stats/atoms/corenetworking/connectivity/connectivity_atoms.proto";
29import "frameworks/proto_logging/stats/atoms/display/display_atoms.proto";
30import "frameworks/proto_logging/stats/atoms/dnd/dnd_atoms.proto";
31import "frameworks/proto_logging/stats/atoms/gps/gps_atoms.proto";
32import "frameworks/proto_logging/stats/atoms/hardware/biometrics/biometrics_atoms.proto";
33import "frameworks/proto_logging/stats/atoms/hotword/hotword_atoms.proto";
34import "frameworks/proto_logging/stats/atoms/input/input_atoms.proto";
35import "frameworks/proto_logging/stats/atoms/kernel/kernel_atoms.proto";
36import "frameworks/proto_logging/stats/atoms/locale/locale_atoms.proto";
37import "frameworks/proto_logging/stats/atoms/location/location_atoms.proto";
38import "frameworks/proto_logging/stats/atoms/media/media_drm_atoms.proto";
39import "frameworks/proto_logging/stats/atoms/wearsysui/wearsysui_atoms.proto";
40import "frameworks/proto_logging/stats/atoms/providers/mediaprovider/media_provider_atoms.proto";
41import "frameworks/proto_logging/stats/atoms/sysui/sysui_atoms.proto";
42import "frameworks/proto_logging/stats/atoms/usb/usb_atoms.proto";
43import "frameworks/proto_logging/stats/atoms/view/inputmethod/inputmethod_atoms.proto";
44import "frameworks/proto_logging/stats/atom_field_options.proto";
45import "frameworks/proto_logging/stats/enums/anr/enums.proto";
46import "frameworks/proto_logging/stats/enums/app_shared/app_enums.proto";
47import "frameworks/proto_logging/stats/enums/app_shared/app_op_enums.proto";
48import "frameworks/proto_logging/stats/enums/app/job/job_enums.proto";
49import "frameworks/proto_logging/stats/enums/app/remoteprovisioner_enums.proto";
50import "frameworks/proto_logging/stats/enums/app/settings/settings_enums.proto";
51import "frameworks/proto_logging/stats/enums/app/wearservices/wearservices_enums.proto";
52import "frameworks/proto_logging/stats/enums/app/tvsettings_enums.proto";
53import "frameworks/proto_logging/stats/enums/app/wearsettings/wearsettings_enums.proto";
54import "frameworks/proto_logging/stats/enums/autofill/enums.proto";
55import "frameworks/proto_logging/stats/enums/bluetooth/a2dp/enums.proto";
56import "frameworks/proto_logging/stats/enums/bluetooth/enums.proto";
57import "frameworks/proto_logging/stats/enums/bluetooth/hci/enums.proto";
58import "frameworks/proto_logging/stats/enums/bluetooth/hfp/enums.proto";
59import "frameworks/proto_logging/stats/enums/bluetooth/leaudio/enums.proto";
60import "frameworks/proto_logging/stats/enums/bluetooth/smp/enums.proto";
61import "frameworks/proto_logging/stats/enums/contexthub/enums.proto";
62import "frameworks/proto_logging/stats/enums/debug/enums.proto";
63import "frameworks/proto_logging/stats/enums/display/display_enums.proto";
64import "frameworks/proto_logging/stats/enums/hardware/biometrics/enums.proto";
65import "frameworks/proto_logging/stats/enums/jank/enums.proto";
66import "frameworks/proto_logging/stats/enums/media/audio/enums.proto";
67import "frameworks/proto_logging/stats/enums/media/midi/enums.proto";
68import "frameworks/proto_logging/stats/enums/media/outputswitcher/enums.proto";
69import "frameworks/proto_logging/stats/enums/media/enums.proto";
70import "frameworks/proto_logging/stats/enums/mms/enums.proto";
71import "frameworks/proto_logging/stats/enums/nearby/enums.proto";
72import "frameworks/proto_logging/stats/enums/net/enums.proto";
73import "frameworks/proto_logging/stats/enums/neuralnetworks/enums.proto";
74import "frameworks/proto_logging/stats/enums/nfc/enums.proto";
75import "frameworks/proto_logging/stats/enums/notification/enums.proto";
76import "frameworks/proto_logging/stats/enums/os/enums.proto";
77import "frameworks/proto_logging/stats/enums/server/connectivity/data_stall_event.proto";
78import "frameworks/proto_logging/stats/enums/server/display/enums.proto";
79import "frameworks/proto_logging/stats/enums/server/enums.proto";
80import "frameworks/proto_logging/stats/enums/server/job/enums.proto";
81import "frameworks/proto_logging/stats/enums/server/location/enums.proto";
82import "frameworks/proto_logging/stats/enums/service/enums.proto";
83import "frameworks/proto_logging/stats/enums/service/procstats_enum.proto";
84import "frameworks/proto_logging/stats/enums/stats/connectivity/connectivity_service.proto";
85import "frameworks/proto_logging/stats/enums/stats/connectivity/network_stack.proto";
86import "frameworks/proto_logging/stats/enums/stats/connectivity/tethering.proto";
87import "frameworks/proto_logging/stats/enums/stats/dnsresolver/dns_resolver.proto";
88import "frameworks/proto_logging/stats/enums/stats/devicepolicy/device_policy.proto";
89import "frameworks/proto_logging/stats/enums/stats/devicepolicy/device_policy_enums.proto";
90import "frameworks/proto_logging/stats/enums/stats/docsui/docsui_enums.proto";
91import "frameworks/proto_logging/stats/enums/stats/accessibility/accessibility_enums.proto";
92import "frameworks/proto_logging/stats/enums/stats/enums.proto";
93import "frameworks/proto_logging/stats/enums/stats/hdmi/enums.proto";
94import "frameworks/proto_logging/stats/enums/stats/intelligence/enums.proto";
95import "frameworks/proto_logging/stats/enums/stats/location/location_enums.proto";
96import "frameworks/proto_logging/stats/enums/stats/mediametrics/mediametrics.proto";
97import "frameworks/proto_logging/stats/enums/stats/mediaprovider/mediaprovider_enums.proto";
98import "frameworks/proto_logging/stats/enums/stats/privacysignals/enums.proto";
99import "frameworks/proto_logging/stats/enums/stats/safetycenter/enums.proto";
100import "frameworks/proto_logging/stats/enums/stats/storage/storage_enums.proto";
101import "frameworks/proto_logging/stats/enums/stats/style/style_enums.proto";
102import "frameworks/proto_logging/stats/enums/stats/sysui/notification_enums.proto";
103import "frameworks/proto_logging/stats/enums/stats/tls/enums.proto";
104import "frameworks/proto_logging/stats/enums/stats/tv/tif_enums.proto";
105import "frameworks/proto_logging/stats/enums/stats/wm/enums.proto";
106import "frameworks/proto_logging/stats/enums/system/security/keystore2/enums.proto";
107import "frameworks/proto_logging/stats/enums/telecomm/enums.proto";
108import "frameworks/proto_logging/stats/enums/telephony/enums.proto";
109import "frameworks/proto_logging/stats/enums/transparency/enums.proto";
110import "frameworks/proto_logging/stats/enums/uwb/enums.proto";
111import "frameworks/proto_logging/stats/enums/view/enums.proto";
112import "frameworks/proto_logging/stats/enums/wifi/enums.proto";
113import "frameworks/proto_logging/stats/enums/stats/textclassifier/textclassifier_enums.proto";
114import "frameworks/proto_logging/stats/enums/stats/otaupdate/updateengine_enums.proto";
115import "frameworks/proto_logging/stats/message/mediametrics_message.proto";
116import "frameworks/proto_logging/stats/atoms/devicelogs/device_logs_atoms.proto";
117import "frameworks/proto_logging/stats/atoms/wearservices/wearservices_atoms.proto";
118import "frameworks/proto_logging/stats/atoms/wear/media/wear_media_atoms.proto";
119
120/**
121 * The primary atom class. This message defines all of the available
122 * raw stats log events from the Android system, also known as "atoms."
123 *
124 * This field contains a single oneof with all of the available messages.
125 * The stats-log-api-gen tool runs as part of the Android build and
126 * generates the android.util.StatsLog class, which contains the constants
127 * and methods that Android uses to log.
128 *
129 * This Atom class is not actually built into the Android system.
130 * Instead, statsd on Android constructs these messages synthetically,
131 * in the format defined here and in stats_log.proto.
132 */
133message Atom {
134    // Pushed atoms start at 2.
135    oneof pushed {
136        // For StatsLog reasons, 1 is illegal and will not work. Must start at 2.
137        BleScanStateChanged ble_scan_state_changed = 2
138                [(module) = "bluetooth", (module) = "statsdtest"];
139        ProcessStateChanged process_state_changed = 3 [(module) = "framework", deprecated = true];
140        BleScanResultReceived ble_scan_result_received = 4
141            [(module) = "bluetooth", (module) = "statsdtest"];
142        SensorStateChanged sensor_state_changed =
143                5 [(module) = "framework", (module) = "statsdtest"];
144        gps.GpsScanStateChanged gps_scan_state_changed = 6 [(module) = "framework"];
145        SyncStateChanged sync_state_changed = 7 [(module) = "framework", (module) = "statsdtest"];
146        ScheduledJobStateChanged scheduled_job_state_changed =
147                8 [(module) = "framework", (module) = "statsdtest"];
148        ScreenBrightnessChanged screen_brightness_changed =
149                9 [(module) = "framework", (module) = "statsdtest"];
150        WakelockStateChanged wakelock_state_changed =
151                10 [(module) = "framework", (module) = "statsdtest"];
152        LongPartialWakelockStateChanged long_partial_wakelock_state_changed =
153                11 [(module) = "framework"];
154        MobileRadioPowerStateChanged mobile_radio_power_state_changed =
155                12 [(module) = "framework", (truncate_timestamp) = true];
156        WifiRadioPowerStateChanged wifi_radio_power_state_changed = 13 [(module) = "framework"];
157        ActivityManagerSleepStateChanged activity_manager_sleep_state_changed =
158                14 [(module) = "framework"];
159        MemoryFactorStateChanged memory_factor_state_changed = 15 [(module) = "framework"];
160        ExcessiveCpuUsageReported excessive_cpu_usage_reported = 16 [(module) = "framework"];
161        CachedKillReported cached_kill_reported = 17 [(module) = "framework", deprecated = true];
162        ProcessMemoryStatReported process_memory_stat_reported =
163                18 [(module) = "framework", deprecated = true];
164        sysui.LauncherUIChanged launcher_event = 19 [(module) = "sysui"];
165        BatterySaverModeStateChanged battery_saver_mode_state_changed =
166                20 [(module) = "framework", (module) = "statsdtest"];
167        DeviceIdleModeStateChanged device_idle_mode_state_changed = 21 [(module) = "framework"];
168        DeviceIdlingModeStateChanged device_idling_mode_state_changed = 22 [(module) = "framework"];
169        AudioStateChanged audio_state_changed =
170                23 [(module) = "framework", (truncate_timestamp) = true];
171        MediaCodecStateChanged media_codec_state_changed = 24 [(module) = "framework"];
172        CameraStateChanged camera_state_changed = 25 [(module) = "framework"];
173        FlashlightStateChanged flashlight_state_changed = 26 [(module) = "framework"];
174        UidProcessStateChanged uid_process_state_changed =
175                27 [(module) = "framework", (module) = "statsdtest"];
176        ProcessLifeCycleStateChanged process_life_cycle_state_changed =
177                28 [(module) = "framework", (module) = "statsdtest"];
178        ScreenStateChanged screen_state_changed =
179                29 [(module) = "framework", (module) = "statsdtest"];
180        BatteryLevelChanged battery_level_changed =
181                30 [(module) = "framework", (module) = "statsdtest"];
182        ChargingStateChanged charging_state_changed = 31 [(module) = "framework"];
183        PluggedStateChanged plugged_state_changed = 32
184                [(module) = "framework", (module) = "statsdtest"];
185        InteractiveStateChanged interactive_state_changed = 33 [(module) = "framework"];
186        input.TouchEventReported touch_event_reported = 34;
187        WakeupAlarmOccurred wakeup_alarm_occurred = 35 [(module) = "framework"];
188        KernelWakeupReported kernel_wakeup_reported = 36 [(module) = "framework"];
189        WifiLockStateChanged wifi_lock_state_changed = 37 [(module) = "wifi"];
190        WifiSignalStrengthChanged wifi_signal_strength_changed = 38 [(module) = "wifi"];
191        WifiScanStateChanged wifi_scan_state_changed = 39 [(module) = "wifi"];
192        PhoneSignalStrengthChanged phone_signal_strength_changed =
193                40 [(module) = "framework", (module) = "statsdtest", (truncate_timestamp) = true];
194        SettingChanged setting_changed = 41 [(module) = "framework"];
195        ActivityForegroundStateChanged activity_foreground_state_changed =
196                42 [(module) = "framework", (module) = "statsdtest"];
197        IsolatedUidChanged isolated_uid_changed =
198                43 [(module) = "framework", (module) = "statsd", (module) = "statsdtest"];
199        PacketWakeupOccurred packet_wakeup_occurred = 44 [(module) = "framework"];
200        WallClockTimeShifted wall_clock_time_shifted = 45 [(module) = "framework"];
201        AnomalyDetected anomaly_detected = 46 [(module) = "statsd"];
202        AppBreadcrumbReported app_breadcrumb_reported = 47
203            [(module) = "statsd", (module) = "statsdtest"];
204        AppStartOccurred app_start_occurred = 48 [(module) = "framework", (module) = "statsdtest"];
205        AppStartCanceled app_start_canceled = 49 [(module) = "framework"];
206        AppStartFullyDrawn app_start_fully_drawn = 50 [(module) = "framework"];
207        LmkKillOccurred lmk_kill_occurred = 51 [(module) = "framework"];
208        PictureInPictureStateChanged picture_in_picture_state_changed = 52 [(module) = "framework"];
209        WifiMulticastLockStateChanged wifi_multicast_lock_state_changed = 53 [(module) = "wifi"];
210        AppStartMemoryStateCaptured app_start_memory_state_captured = 55 [(module) = "framework"];
211        ShutdownSequenceReported shutdown_sequence_reported = 56 [(module) = "framework"];
212        BootSequenceReported boot_sequence_reported = 57;
213        OverlayStateChanged overlay_state_changed =
214                59 [(module) = "framework", (module) = "statsdtest"];
215        ForegroundServiceStateChanged foreground_service_state_changed
216                = 60 [(module) = "framework"];
217        CallStateChanged call_state_changed =
218                61 [(module) = "telecom", (truncate_timestamp) = true];
219        sysui.KeyguardStateChanged keyguard_state_changed = 62 [(module) = "sysui"];
220        sysui.KeyguardBouncerStateChanged keyguard_bouncer_state_changed = 63 [(module) = "sysui"];
221        sysui.KeyguardBouncerPasswordEntered keyguard_bouncer_password_entered =
222                64 [(module) = "sysui"];
223        AppDied app_died = 65 [(module) = "framework"];
224        ResourceConfigurationChanged resource_configuration_changed = 66 [(module) = "framework"];
225        BluetoothEnabledStateChanged bluetooth_enabled_state_changed = 67 [(module) = "bluetooth"];
226        BluetoothConnectionStateChanged bluetooth_connection_state_changed =
227                68 [(module) = "bluetooth"];
228        GpsSignalQualityChanged gps_signal_quality_changed = 69 [(module) = "framework"];
229        UsbConnectorStateChanged usb_connector_state_changed = 70 [(module) = "framework"];
230        SpeakerImpedanceReported speaker_impedance_reported = 71 [(module) = "statshidl"];
231        HardwareFailed hardware_failed = 72 [(module) = "statshidl"];
232        PhysicalDropDetected physical_drop_detected = 73 [(module) = "statshidl"];
233        ChargeCyclesReported charge_cycles_reported = 74 [(module) = "statshidl"];
234        MobileConnectionStateChanged mobile_connection_state_changed = 75 [(module) = "telephony"];
235        MobileRadioTechnologyChanged mobile_radio_technology_changed = 76 [(module) = "telephony"];
236        UsbDeviceAttached usb_device_attached = 77 [(module) = "framework"];
237        AppCrashOccurred app_crash_occurred = 78 [(module) = "framework", (module) = "statsdtest"];
238        ANROccurred anr_occurred = 79 [(module) = "framework"];
239        WTFOccurred wtf_occurred = 80 [(module) = "framework"];
240        LowMemReported low_mem_reported = 81 [(module) = "framework"];
241        GenericAtom generic_atom = 82;
242        VibratorStateChanged vibrator_state_changed = 84 [(module) = "framework"];
243        DeferredJobStatsReported deferred_job_stats_reported = 85 [(module) = "framework"];
244        ThermalThrottlingStateChanged thermal_throttling = 86 [deprecated=true];
245        BiometricAcquired biometric_acquired = 87 [(module) = "framework"];
246        BiometricAuthenticated biometric_authenticated = 88 [(module) = "framework"];
247        BiometricErrorOccurred biometric_error_occurred = 89 [(module) = "framework"];
248        UiEventReported ui_event_reported = 90 [
249            (module) = "framework",
250            (module) = "sysui",
251            (module) = "mediaprovider"
252        ];
253        BatteryHealthSnapshot battery_health_snapshot = 91 [(module) = "statshidl"];
254        SlowIo slow_io = 92 [(module) = "statshidl"];
255        BatteryCausedShutdown battery_caused_shutdown = 93 [(module) = "statshidl"];
256        PhoneServiceStateChanged phone_service_state_changed = 94 [(module) = "framework"];
257        PhoneStateChanged phone_state_changed = 95 [(module) = "framework"];
258        UserRestrictionChanged user_restriction_changed = 96;
259        SettingsUIChanged settings_ui_changed = 97 [(module) = "settings"];
260        ConnectivityStateChanged connectivity_state_changed = 98 [(module) = "framework"];
261        // TODO: service state change is very noisy shortly after boot, as well
262        // as at other transitions - coming out of doze, device plugged in, etc.
263        // Consider removing this if it becomes a problem
264        ServiceStateChanged service_state_changed = 99 [(module) = "framework"];
265        ServiceLaunchReported service_launch_reported = 100 [(module) = "framework"];
266        FlagFlipUpdateOccurred flag_flip_update_occurred = 101 [(module) = "framework"];
267        BinaryPushStateChanged binary_push_state_changed = 102 [(module) = "statsd"];
268        DevicePolicyEvent device_policy_event = 103 [(module) = "framework"];
269        DocsUIFileOperationCanceledReported docs_ui_file_op_canceled = 104 [(module) = "docsui"];
270        DocsUIFileOperationCopyMoveModeReported docs_ui_file_op_copy_move_mode_reported =
271            105 [(module) = "docsui"];
272        DocsUIFileOperationFailureReported docs_ui_file_op_failure = 106 [(module) = "docsui"];
273        DocsUIFileOperationReported docs_ui_provider_file_op = 107 [(module) = "docsui"];
274        DocsUIInvalidScopedAccessRequestReported docs_ui_invalid_scoped_access_request =
275            108 [(module) = "docsui"];
276        DocsUILaunchReported docs_ui_launch_reported = 109 [(module) = "docsui"];
277        DocsUIRootVisitedReported docs_ui_root_visited = 110 [(module) = "docsui"];
278        DocsUIStartupMsReported docs_ui_startup_ms = 111 [(module) = "docsui"];
279        DocsUIUserActionReported docs_ui_user_action_reported = 112 [(module) = "docsui"];
280        WifiEnabledStateChanged wifi_enabled_state_changed = 113 [(module) = "framework"];
281        WifiRunningStateChanged wifi_running_state_changed = 114
282                [(module) = "framework", deprecated = true];
283        AppCompacted app_compacted = 115 [(module) = "framework", deprecated = true];
284        NetworkDnsEventReported network_dns_event_reported = 116 [(module) = "resolv"];
285        DocsUIPickerLaunchedFromReported docs_ui_picker_launched_from_reported =
286            117 [(module) = "docsui"];
287        DocsUIPickResultReported docs_ui_pick_result_reported = 118 [(module) = "docsui"];
288        DocsUISearchModeReported docs_ui_search_mode_reported = 119 [(module) = "docsui"];
289        DocsUISearchTypeReported docs_ui_search_type_reported = 120 [(module) = "docsui"];
290        DataStallEvent data_stall_event = 121 [(module) = "network_stack"];
291        RescuePartyResetReported rescue_party_reset_reported = 122 [(module) = "crashrecovery", (module) = "framework"];
292        SignedConfigReported signed_config_reported = 123 [(module) = "framework"];
293        GnssNiEventReported gnss_ni_event_reported = 124 [(module) = "framework"];
294        BluetoothLinkLayerConnectionEvent bluetooth_link_layer_connection_event =
295                125 [(module) = "bluetooth"];
296        BluetoothAclConnectionStateChanged bluetooth_acl_connection_state_changed =
297                126 [(module) = "bluetooth"];
298        BluetoothScoConnectionStateChanged bluetooth_sco_connection_state_changed =
299                127 [(module) = "bluetooth"];
300        AppDowngraded app_downgraded = 128 [(module) = "framework"];
301        AppOptimizedAfterDowngraded app_optimized_after_downgraded = 129;
302        LowStorageStateChanged low_storage_state_changed = 130 [(module) = "framework"];
303        GnssNfwNotificationReported gnss_nfw_notification_reported = 131 [(module) = "framework"];
304        GnssConfigurationReported gnss_configuration_reported = 132 [(module) = "framework"];
305        UsbPortOverheatEvent usb_port_overheat_event_reported = 133 [(module) = "statshidl"];
306        NfcErrorOccurred nfc_error_occurred = 134 [(module) = "nfc"];
307        NfcStateChanged nfc_state_changed = 135 [(module) = "nfc"];
308        NfcBeamOccurred nfc_beam_occurred = 136 [(module) = "nfc"];
309        NfcCardemulationOccurred nfc_cardemulation_occurred = 137 [(module) = "nfc"];
310        NfcTagOccurred nfc_tag_occurred = 138 [(module) = "nfc"];
311        NfcHceTransactionOccurred nfc_hce_transaction_occurred = 139 [(module) = "nfc"];
312        SeStateChanged se_state_changed = 140 [(module) = "secure_element"];
313        SeOmapiReported se_omapi_reported = 141 [(module) = "secure_element"];
314        BroadcastDispatchLatencyReported broadcast_dispatch_latency_reported =
315                142 [(module) = "framework"];
316        AttentionManagerServiceResultReported attention_manager_service_result_reported =
317                143 [(module) = "framework"];
318        AdbConnectionChanged adb_connection_changed = 144 [(module) = "framework"];
319        SpeechDspStatReported speech_dsp_stat_reported = 145 [(module) = "statshidl"];
320        UsbContaminantReported usb_contaminant_reported = 146 [(module) = "framework"];
321        WatchdogRollbackOccurred watchdog_rollback_occurred =
322                147 [(module) = "framework", (module) = "crashrecovery", (module) = "statsd"];
323        BiometricSystemHealthIssueDetected biometric_system_health_issue_detected =
324                148 [(module) = "framework"];
325        BubbleUIChanged bubble_ui_changed = 149 [(module) = "framework"];
326        ScheduledJobConstraintChanged scheduled_job_constraint_changed =
327                150 [(module) = "framework"];
328        BluetoothActiveDeviceChanged bluetooth_active_device_changed =
329                151 [(module) = "bluetooth"];
330        BluetoothA2dpPlaybackStateChanged bluetooth_a2dp_playback_state_changed =
331                152 [(module) = "bluetooth"];
332        BluetoothA2dpCodecConfigChanged bluetooth_a2dp_codec_config_changed =
333                153 [(module) = "bluetooth"];
334        BluetoothA2dpCodecCapabilityChanged bluetooth_a2dp_codec_capability_changed =
335                154 [(module) = "bluetooth"];
336        BluetoothA2dpAudioUnderrunReported bluetooth_a2dp_audio_underrun_reported =
337                155 [(module) = "bluetooth"];
338        BluetoothA2dpAudioOverrunReported bluetooth_a2dp_audio_overrun_reported =
339                156 [(module) = "bluetooth"];
340        BluetoothDeviceRssiReported bluetooth_device_rssi_reported =
341                157 [(module) = "bluetooth"];
342        BluetoothDeviceFailedContactCounterReported
343                bluetooth_device_failed_contact_counter_reported = 158 [(module) = "bluetooth"];
344        BluetoothDeviceTxPowerLevelReported bluetooth_device_tx_power_level_reported =
345                159 [(module) = "bluetooth"];
346        BluetoothHciTimeoutReported bluetooth_hci_timeout_reported =
347                160 [(module) = "bluetooth"];
348        BluetoothQualityReportReported bluetooth_quality_report_reported =
349                161 [(module) = "bluetooth"];
350        BluetoothDeviceInfoReported bluetooth_device_info_reported =
351                162 [(module) = "bluetooth"];
352        BluetoothRemoteVersionInfoReported bluetooth_remote_version_info_reported =
353                163 [(module) = "bluetooth"];
354        BluetoothSdpAttributeReported bluetooth_sdp_attribute_reported =
355                164 [(module) = "bluetooth"];
356        BluetoothBondStateChanged bluetooth_bond_state_changed =
357                165 [(module) = "bluetooth"];
358        BluetoothClassicPairingEventReported bluetooth_classic_pairing_event_reported =
359                166 [(module) = "bluetooth"];
360        BluetoothSmpPairingEventReported bluetooth_smp_pairing_event_reported =
361                167 [(module) = "bluetooth"];
362        ScreenTimeoutExtensionReported screen_timeout_extension_reported =
363                168 [(module) = "framework"];
364        ProcessStartTime process_start_time = 169 [(module) = "framework"];
365        PermissionGrantRequestResultReported permission_grant_request_result_reported =
366                170 [(module) = "permissioncontroller"];
367        BluetoothSocketConnectionStateChanged bluetooth_socket_connection_state_changed =
368                171 [(module) = "bluetooth"];
369        DeviceIdentifierAccessDenied device_identifier_access_denied =
370                172 [(module) = "telephony_common"];
371        BubbleDeveloperErrorReported bubble_developer_error_reported = 173 [(module) = "framework"];
372        sysui.AssistGestureStageReported assist_gesture_stage_reported = 174 [(module) = "sysui"];
373        sysui.AssistGestureFeedbackReported assist_gesture_feedback_reported =
374                175 [(module) = "sysui"];
375        sysui.AssistGestureProgressReported assist_gesture_progress_reported =
376                176 [(module) = "sysui"];
377        input.TouchGestureClassified touch_gesture_classified = 177 [(module) = "framework"];
378        HiddenApiUsed hidden_api_used = 178 [(module) = "framework"];
379        StyleUIChanged style_ui_changed = 179 [(module) = "sysui", (module) = "wallpaper"];
380        PrivacyIndicatorsInteracted privacy_indicators_interacted =
381                180 [(module) = "permissioncontroller"];
382        AppInstallOnExternalStorageReported app_install_on_external_storage_reported =
383                181 [(module) = "framework"];
384        NetworkStackReported network_stack_reported = 182 [(module) = "network_stack"];
385        AppMovedStorageReported app_moved_storage_reported = 183 [(module) = "framework"];
386        BiometricEnrolled biometric_enrolled = 184 [(module) = "framework"];
387        SystemServerWatchdogOccurred system_server_watchdog_occurred = 185 [(module) = "framework"];
388        TombStoneOccurred tomb_stone_occurred = 186 [(module) = "framework"];
389        BluetoothClassOfDeviceReported bluetooth_class_of_device_reported =
390                187 [(module) = "bluetooth"];
391        IntelligenceEventReported intelligence_event_reported =
392                188 [(module) = "intelligence"];
393        ThermalThrottlingSeverityStateChanged thermal_throttling_severity_state_changed =
394                189 [(module) = "framework"];
395        RoleRequestResultReported role_request_result_reported =
396                190 [(module) = "permissioncontroller"];
397        MediametricsAudiopolicyReported mediametrics_audiopolicy_reported =
398                191 [(module) = "media_metrics"];
399        MediametricsAudiorecordReported mediametrics_audiorecord_reported =
400                192[(module) = "media_metrics"];
401        MediametricsAudiothreadReported mediametrics_audiothread_reported =
402                193 [(module) = "media_metrics"];
403        MediametricsAudiotrackReported mediametrics_audiotrack_reported =
404                194 [(module) = "media_metrics"];
405        MediametricsCodecReported mediametrics_codec_reported =
406                195 [(module) = "media_metrics"];
407        MediametricsDrmWidevineReported mediametrics_drm_widevine_reported =
408                196 [(module) = "media_metrics"];
409        MediametricsExtractorReported mediametrics_extractor_reported =
410                197 [(module) = "media_metrics"];
411        MediametricsMediadrmReported mediametrics_mediadrm_reported =
412                198 [(module) = "media_metrics"];
413        MediametricsNuPlayerReported mediametrics_nuplayer_reported =
414                199 [(module) = "media_metrics"];
415        MediametricsRecorderReported mediametrics_recorder_reported =
416                200 [(module) = "media_metrics"];
417        MediametricsDrmManagerReported mediametrics_drmmanager_reported =
418                201 [(module) = "media_metrics"];
419        CarPowerStateChanged car_power_state_changed = 203 [(module) = "car"];
420        GarageModeInfo garage_mode_info = 204 [(module) = "car"];
421        TestAtomReported test_atom_reported = 205
422            [(module) = "cts", (module) = "statsdtest"];
423        ContentCaptureCallerMismatchReported content_capture_caller_mismatch_reported =
424                206 [(module) = "framework"];
425        ContentCaptureServiceEvents content_capture_service_events = 207 [(module) = "framework"];
426        ContentCaptureSessionEvents content_capture_session_events = 208 [(module) = "framework"];
427        ContentCaptureFlushed content_capture_flushed = 209 [(module) = "framework"];
428        LocationManagerApiUsageReported location_manager_api_usage_reported =
429                210 [(module) = "framework"];
430        ReviewPermissionsFragmentResultReported review_permissions_fragment_result_reported =
431                211 [(module) = "permissioncontroller"];
432        RuntimePermissionsUpgradeResult runtime_permissions_upgrade_result =
433                212 [(module) = "permissioncontroller"];
434        GrantPermissionsActivityButtonActions grant_permissions_activity_button_actions =
435                213 [(module) = "permissioncontroller"];
436        LocationAccessCheckNotificationAction location_access_check_notification_action =
437                214 [(module) = "permissioncontroller"];
438        AppPermissionFragmentActionReported app_permission_fragment_action_reported =
439                215 [(module) = "permissioncontroller"];
440        AppPermissionFragmentViewed app_permission_fragment_viewed =
441                216 [(module) = "permissioncontroller"];
442        AppPermissionsFragmentViewed app_permissions_fragment_viewed =
443                217 [(module) = "permissioncontroller"];
444        PermissionAppsFragmentViewed permission_apps_fragment_viewed =
445                218  [(module) = "permissioncontroller"];
446        TextSelectionEvent text_selection_event = 219  [(module) = "textclassifier"];
447        TextLinkifyEvent text_linkify_event = 220  [(module) = "textclassifier"];
448        ConversationActionsEvent conversation_actions_event = 221  [(module) = "textclassifier"];
449        LanguageDetectionEvent language_detection_event = 222  [(module) = "textclassifier"];
450        ExclusionRectStateChanged exclusion_rect_state_changed = 223 [(module) = "framework"];
451        sysui.BackGesture back_gesture_reported_reported = 224 [(module) = "sysui"];
452        UpdateEngineUpdateAttemptReported update_engine_update_attempt_reported =
453                225 [(module) = "update_engine"];
454        UpdateEngineSuccessfulUpdateReported update_engine_successful_update_reported =
455                226 [(module) = "update_engine"];
456        CameraActionEvent camera_action_event = 227 [(module) = "framework"];
457        AppCompatibilityChangeReported app_compatibility_change_reported =
458                228 [(module) = "framework"];
459        PerfettoUploaded perfetto_uploaded = 229 [(module) = "perfetto"];
460        VmsClientConnectionStateChanged vms_client_connection_state_changed =
461                230 [(module) = "car"];
462        MediaProviderScanOccurred media_provider_scan_occurred = 233 [(module) = "mediaprovider"];
463        MediaContentDeleted media_content_deleted = 234 [(module) = "mediaprovider"];
464        MediaProviderPermissionRequested media_provider_permission_requested =
465            235 [(module) = "mediaprovider"];
466        MediaProviderSchemaChanged media_provider_schema_changed = 236 [(module) = "mediaprovider"];
467        MediaProviderIdleMaintenanceFinished media_provider_idle_maintenance_finished =
468            237 [(module) = "mediaprovider"];
469        RebootEscrowRecoveryReported reboot_escrow_recovery_reported = 238 [(module) = "framework"];
470        BootTimeEventDuration boot_time_event_duration_reported = 239 [(module) = "framework"];
471        BootTimeEventElapsedTime boot_time_event_elapsed_time_reported =
472                240 [(module) = "framework"];
473        BootTimeEventUtcTime boot_time_event_utc_time_reported = 241;
474        BootTimeEventErrorCode boot_time_event_error_code_reported = 242 [(module) = "framework"];
475        UserspaceRebootReported userspace_reboot_reported = 243 [(module) = "framework"];
476        NotificationReported notification_reported = 244 [(module) = "framework"];
477        sysui.NotificationPanelReported notification_panel_reported = 245 [(module) = "sysui"];
478        NotificationChannelModified notification_channel_modified = 246 [(module) = "framework"];
479        IntegrityCheckResultReported integrity_check_result_reported = 247 [(module) = "framework"];
480        IntegrityRulesPushed integrity_rules_pushed = 248 [(module) = "framework"];
481        CellBroadcastMessageReported cb_message_reported =
482            249 [(module) = "cellbroadcast"];
483        CellBroadcastMessageError cb_message_error =
484            250 [(module) = "cellbroadcast"];
485        WifiHealthStatReported wifi_health_stat_reported = 251 [(module) = "wifi"];
486        WifiFailureStatReported wifi_failure_stat_reported = 252 [(module) = "wifi"];
487        WifiConnectionResultReported wifi_connection_result_reported = 253 [(module) = "wifi"];
488        AppFreezeChanged app_freeze_changed = 254 [(module) = "framework"];
489        SnapshotMergeReported snapshot_merge_reported =
490            255 [(module) = "update_engine"];
491        ForegroundServiceAppOpSessionEnded foreground_service_app_op_session_ended =
492            256  [(module) = "framework"];
493        // DisplayJankReported was deprecated in Android 12+
494        DisplayJankReported display_jank_reported = 257 [deprecated = true];
495        AppStandbyBucketChanged app_standby_bucket_changed = 258 [(module) = "framework"];
496        SharesheetStarted sharesheet_started = 259 [(module) = "framework"];
497        RankingSelected ranking_selected = 260 [
498            (module) = "framework",
499            (module) = "sysui",
500            (module) = "mediaprovider"
501        ];
502        TvSettingsUIInteracted tvsettings_ui_interacted = 261 [(module) = "tv_settings"];
503        sysui.LauncherStaticLayout launcher_snapshot = 262 [(module) = "sysui"];
504        PackageInstallerV2Reported package_installer_v2_reported = 263 [(module) = "framework"];
505        UserLifecycleJourneyReported user_lifecycle_journey_reported = 264 [(module) = "framework"];
506        UserLifecycleEventOccurred user_lifecycle_event_occurred = 265 [(module) = "framework"];
507        AccessibilityShortcutReported accessibility_shortcut_reported =
508            266 [(module) = "framework"];
509        AccessibilityServiceReported accessibility_service_reported = 267 [(module) = "settings"];
510        DocsUIDragAndDropReported docs_ui_drag_and_drop_reported = 268 [(module) = "docsui"];
511        AppUsageEventOccurred app_usage_event_occurred = 269 [(module) = "framework"];
512        AutoRevokeNotificationClicked auto_revoke_notification_clicked =
513            270 [(module) = "permissioncontroller"];
514        AutoRevokeFragmentAppViewed auto_revoke_fragment_app_viewed =
515            271 [(module) = "permissioncontroller"];
516        AutoRevokedAppInteraction auto_revoked_app_interaction =
517            272 [(module) = "permissioncontroller", (module) = "settings"];
518        AppPermissionGroupsFragmentAutoRevokeAction
519            app_permission_groups_fragment_auto_revoke_action =
520            273 [(module) = "permissioncontroller"];
521        EvsUsageStatsReported evs_usage_stats_reported = 274 [(module) = "evs"];
522        AudioPowerUsageDataReported audio_power_usage_data_reported =
523            275 [(module) = "media_metrics"];
524        TvTunerStateChanged tv_tuner_state_changed = 276 [(module) = "framework"];
525        sysui.MediaOutputOpSwitchReported mediaoutput_op_switch_reported =
526            277 [(module) = "sysui"];
527        CellBroadcastMessageFiltered cb_message_filtered =
528            278 [(module) = "cellbroadcast"];
529        TvTunerDvrStatus tv_tuner_dvr_status = 279 [(module) = "framework"];
530        TvCasSessionOpenStatus tv_cas_session_open_status =
531            280 [(module) = "framework"];
532        AssistantInvocationReported assistant_invocation_reported = 281 [(module) = "framework"];
533        DisplayWakeReported display_wake_reported = 282 [(module) = "framework"];
534        CarUserHalModifyUserRequestReported car_user_hal_modify_user_request_reported =
535            283 [(module) = "car"];
536        CarUserHalModifyUserResponseReported car_user_hal_modify_user_response_reported =
537            284 [(module) = "car"];
538        CarUserHalPostSwitchResponseReported car_user_hal_post_switch_response_reported =
539            285 [(module) = "car"];
540        CarUserHalInitialUserInfoRequestReported car_user_hal_initial_user_info_request_reported =
541            286 [(module) = "car"];
542        CarUserHalInitialUserInfoResponseReported car_user_hal_initial_user_info_response_reported =
543            287 [(module) = "car"];
544        CarUserHalUserAssociationRequestReported car_user_hal_user_association_request_reported =
545            288 [(module) = "car"];
546        CarUserHalSetUserAssociationResponseReported car_user_hal_set_user_association_response_reported =
547            289 [(module) = "car"];
548        NetworkIpProvisioningReported network_ip_provisioning_reported =
549            290 [(module) = "network_stack"];
550        NetworkDhcpRenewReported network_dhcp_renew_reported = 291 [(module) = "network_stack"];
551        NetworkValidationReported network_validation_reported = 292 [(module) = "network_stack"];
552        NetworkStackQuirkReported network_stack_quirk_reported = 293 [(module) = "network_stack"];
553        MediametricsAudioRecordDeviceUsageReported mediametrics_audiorecorddeviceusage_reported =
554            294 [(module) = "media_metrics"];
555        MediametricsAudioThreadDeviceUsageReported mediametrics_audiothreaddeviceusage_reported =
556            295 [(module) = "media_metrics"];
557        MediametricsAudioTrackDeviceUsageReported mediametrics_audiotrackdeviceusage_reported =
558            296 [(module) = "media_metrics"];
559        MediametricsAudioDeviceConnectionReported mediametrics_audiodeviceconnection_reported =
560            297 [(module) = "media_metrics"];
561        BlobCommitted blob_committed = 298 [(module) = "framework"];
562        BlobLeased blob_leased = 299 [(module) = "framework"];
563        BlobOpened blob_opened = 300 [(module) = "framework"];
564        ContactsProviderStatusReported contacts_provider_status_reported = 301;
565        KeystoreKeyEventReported keystore_key_event_reported = 302;
566        NetworkTetheringReported  network_tethering_reported =
567            303 [(module) = "network_tethering"];
568        sysui.ImeTouchReported ime_touch_reported = 304 [(module) = "sysui"];
569        UIInteractionFrameInfoReported ui_interaction_frame_info_reported =
570            305 [(module) = "framework"];
571        UIActionLatencyReported ui_action_latency_reported = 306 [(module) = "framework"];
572        WifiDisconnectReported wifi_disconnect_reported = 307 [(module) = "wifi"];
573        WifiConnectionStateChanged wifi_connection_state_changed = 308 [(module) = "wifi"];
574        HdmiCecActiveSourceChanged hdmi_cec_active_source_changed = 309 [(module) = "framework"];
575        HdmiCecMessageReported hdmi_cec_message_reported = 310 [(module) = "framework"];
576        AirplaneMode airplane_mode = 311 [(module) = "telephony"];
577        ModemRestart modem_restart = 312 [(module) = "telephony"];
578        CarrierIdMismatchReported carrier_id_mismatch_reported = 313 [(module) = "telephony"];
579        CarrierIdTableUpdated carrier_id_table_updated = 314 [(module) = "telephony"];
580        DataStallRecoveryReported data_stall_recovery_reported = 315 [(module) = "telephony"];
581        MediametricsMediaParserReported mediametrics_mediaparser_reported =
582                316 [(module) = "media_metrics"];
583        TlsHandshakeReported tls_handshake_reported = 317 [(module) = "conscrypt"];
584        TextClassifierApiUsageReported text_classifier_api_usage_reported = 318  [(module) = "textclassifier"];
585        CarWatchdogKillStatsReported car_watchdog_kill_stats_reported = 319 [(module) = "car", (module) = "framework"];
586        MediametricsPlaybackReported mediametrics_playback_reported = 320 [(module) = "media_metrics"];
587        MediaNetworkInfoChanged media_network_info_changed = 321 [(module) = "media_metrics"];
588        MediaPlaybackStateChanged media_playback_state_changed = 322 [(module) = "media_metrics"];
589        MediaPlaybackErrorReported media_playback_error_reported = 323 [(module) = "media_metrics"];
590        MediaPlaybackTrackChanged media_playback_track_changed = 324 [(module) = "media_metrics"];
591        WifiScanReported wifi_scan_reported = 325 [(module) = "wifi"];
592        WifiPnoScanReported wifi_pno_scan_reported = 326  [(module) = "wifi"];
593        TifTuneStateChanged tif_tune_changed = 327 [(module) = "framework"];
594        AutoRotateReported auto_rotate_reported = 328 [(module) = "framework"];
595        PerfettoTrigger perfetto_trigger = 329 [(module) = "perfetto"];
596        TranscodingData transcoding_data = 330 [(module) = "mediaprovider"];
597        ImsServiceEntitlementUpdated ims_service_entitlement_updated = 331 [(module) = "imsentitlement"];
598        DeviceRotated device_rotated = 333 [(module) = "framework"];
599        SimSpecificSettingsRestored sim_specific_settings_restored = 334
600            [(module) = "telephony"];
601        TextClassifierDownloadReported text_classifier_download_reported = 335 [(module) = "textclassifier"];
602        PinStorageEvent pin_storage_event = 336 [(module) = "telephony"];
603        FaceDownReported face_down_reported = 337 [(module) = "framework"];
604        BluetoothHALCrashReasonReported bluetooth_hal_crash_reason_reported =
605            338 [(module) = "bluetooth"];
606        RebootEscrowPreparationReported reboot_escrow_preparation_reported =
607            339 [(module) = "framework"];
608        RebootEscrowLskfCaptureReported reboot_escrow_lskf_capture_reported =
609            340 [(module) = "framework"];
610        RebootEscrowRebootReported reboot_escrow_reboot_reported = 341 [(module) = "framework"];
611        BinderLatencyReported binder_latency_reported = 342 [(module) = "framework"];
612        MediametricsAAudioStreamReported mediametrics_aaudiostream_reported =
613            343 [(module) = "media_metrics"];
614        MediaTranscodingSessionEnded media_transcoding_session_ended = 344
615            [(module) = "media"];
616        MagnificationUsageReported magnification_usage_reported =
617            345 [(module) = "framework"];
618        MagnificationModeWithImeOnReported magnification_mode_with_ime_on_reported =
619            346 [(module) = "framework"];
620        AppSearchCallStatsReported app_search_call_stats_reported = 347 [(module) = "appsearch"];
621        AppSearchPutDocumentStatsReported app_search_put_document_stats_reported = 348 [(module) = "appsearch"];
622        sysui.DeviceControlChanged device_control_changed = 349 [(module) = "sysui"];
623        DeviceStateChanged device_state_changed = 350 [(module) = "framework"];
624        input.InputDeviceRegistered inputdevice_registered = 351 [(module) = "framework"];
625        sysui.SmartSpaceCardReported smartspace_card_reported = 352 [(module) = "sysui"];
626        AuthPromptAuthenticateInvoked auth_prompt_authenticate_invoked = 353 [(module) = "framework"];
627        AuthManagerCanAuthenticateInvoked auth_manager_can_authenticate_invoked = 354 [(module) = "framework"];
628        AuthEnrollActionInvoked auth_enroll_action_invoked = 355 [(module) = "framework"];
629        AuthDeprecatedAPIUsed auth_deprecated_api_used = 356 [(module) = "framework"];
630        UnattendedRebootOccurred unattended_reboot_occurred = 357 [(module) = "scheduling"];
631        LongRebootBlockingReported long_reboot_blocking_reported = 358 [(module) = "scheduling"];
632        LocationTimeZoneProviderStateChanged location_time_zone_provider_state_changed =
633            359 [(module) = "framework"];
634        // 360-363 are reserved.
635        FdtrackEventOccurred fdtrack_event_occurred = 364 [(module) = "framework"];
636        TimeoutAutoExtendedReported timeout_auto_extended_reported = 365
637            [(module) = "framework"];
638        AlarmBatchDelivered alarm_batch_delivered = 367 [(module) = "framework"];
639        AlarmScheduled alarm_scheduled = 368 [(module) = "framework"];
640        CarWatchdogIoOveruseStatsReported car_watchdog_io_overuse_stats_reported = 369 [(module) = "car"];
641        UserLevelHibernationStateChanged user_level_hibernation_state_changed = 370 [(module) = "framework"];
642        AppSearchInitializeStatsReported app_search_initialize_stats_reported = 371 [(module) = "appsearch"];
643        AppSearchQueryStatsReported app_search_query_stats_reported = 372 [(module) = "appsearch"];
644        AppProcessDied app_process_died = 373 [(module) = "framework"];
645        NetworkIpReachabilityMonitorReported network_ip_reachability_monitor_reported =
646            374 [(module) = "network_stack"];
647        input.SlowInputEventReported slow_input_event_reported = 375 [(module) = "input"];
648        ANROccurredProcessingStarted anr_occurred_processing_started = 376 [(module) = "framework"];
649        AppSearchRemoveStatsReported app_search_remove_stats_reported = 377 [(module) = "appsearch"];
650        MediaCodecReported media_codec_reported =
651            378 [(module) = "framework", (module) = "media_metrics"];
652        PermissionUsageFragmentInteraction permission_usage_fragment_interaction = 379 [(module) = "permissioncontroller"];
653        PermissionDetailsInteraction permission_details_interaction = 380 [(module) = "permissioncontroller"];
654        PrivacySensorToggleInteraction privacy_sensor_toggle_interaction = 381 [(module) = "framework"];
655        PrivacyToggleDialogInteraction privacy_toggle_dialog_interaction = 382 [(module) = "framework"];
656        AppSearchOptimizeStatsReported app_search_optimize_stats_reported = 383 [(module) = "appsearch"];
657        NonA11yToolServiceWarningReported non_a11y_tool_service_warning_report = 384 [(module) = "framework"];
658        AppCompatStateChanged app_compat_state_changed = 386 [(module) = "framework"];
659        SizeCompatRestartButtonEventReported size_compat_restart_button_event_reported = 387 [(module) = "framework"];
660        SplitscreenUIChanged splitscreen_ui_changed = 388 [(module) = "framework"];
661        NetworkDnsHandshakeReported network_dns_handshake_reported = 389 [(module) = "resolv"];
662        BluetoothCodePathCounter bluetooth_code_path_counter =
663            390 [(module) = "bluetooth"];
664        BluetoothLeBatchScanReportDelay bluetooth_le_batch_scan_report_delay =
665            392 [(module) = "bluetooth"];
666        sysui.AccessibilityFloatingMenuUIChanged accessibility_floating_menu_ui_changed =
667            393 [(module) = "sysui"];
668        NeuralNetworksCompilationCompleted neuralnetworks_compilation_completed = 394
669            [(module) = "neuralnetworks"];
670        NeuralNetworksExecutionCompleted neuralnetworks_execution_completed = 395
671            [(module) = "neuralnetworks"];
672        NeuralNetworksCompilationFailed neuralnetworks_compilation_failed = 396
673            [(module) = "neuralnetworks"];
674        NeuralNetworksExecutionFailed neuralnetworks_execution_failed = 397
675            [(module) = "neuralnetworks"];
676        ContextHubBooted context_hub_booted = 398 [(module) = "contexthub"];
677        ContextHubRestarted context_hub_restarted = 399 [(module) = "contexthub"];
678        ContextHubLoadedNanoappSnapshotReported context_hub_loaded_nanoapp_snapshot_reported = 400
679            [(module) = "contexthub"];
680        ChreCodeDownloadTransacted chre_code_download_transacted = 401 [(module) = "contexthub"];
681        UwbSessionInitiated uwb_session_inited = 402 [(module) = "uwb"];
682        UwbSessionClosed uwb_session_closed = 403 [(module) = "uwb"];
683        UwbFirstRangingReceived uwb_first_ranging_received = 404 [(module) = "uwb"];
684        UwbRangingMeasurementReceived uwb_ranging_measurement_received = 405 [(module) = "uwb"];
685        TextClassifierDownloadWorkScheduled text_classifier_download_work_scheduled = 406 [(module) = "textclassifier"];
686        TextClassifierDownloadWorkCompleted text_classifier_download_work_completed = 407 [(module) = "textclassifier"];
687        ClipboardCleared clipboard_cleared = 408 [(module) = "framework"];
688        VmCreationRequested vm_creation_requested = 409 [(module) = "virtualizationservice"];
689        NearbyDeviceScanStateChanged nearby_device_scan_state_changed = 410 [(module) = "nearby"];
690        // reserved 411 for a deprecated CameraCompatControlEventReported.
691        ApplicationLocalesChanged application_locales_changed = 412 [(module) = "framework"];
692        MediametricsAudioTrackStatusReported mediametrics_audiotrackstatus_reported =
693            413 [(module) = "media_metrics"];
694        FoldStateDurationReported fold_state_duration_reported = 414 [(module) = "framework"];
695        LocationTimeZoneProviderControllerStateChanged location_time_zone_provider_controller_state_changed =
696            415 [(module) = "framework"];
697        DisplayHbmStateChanged display_hbm_state_changed = 416 [(module) = "framework"];
698        DisplayHbmBrightnessChanged display_hbm_brightness_changed = 417 [(module) = "framework"];
699        PersistentUriPermissionsFlushed persistent_uri_permissions_flushed =
700            418 [(module) = "framework"];
701        EarlyBootCompOsArtifactsCheckReported early_boot_comp_os_artifacts_check_reported = 419 [(module) = "art"];
702        VBMetaDigestReported vbmeta_digest_reported = 420 [(module) = "framework"];
703        ApexInfoGathered apex_info_gathered = 421 [(module) = "framework"];
704        PvmInfoGathered pvm_info_gathered = 422 [(module) = "framework"];
705        WearSettingsUIInteracted wear_settings_ui_interacted = 423 [(module) = "wear_settings"];
706        TracingServiceReportEvent tracing_service_report_event = 424 [(module) = "framework"];
707        MediametricsAudioRecordStatusReported mediametrics_audiorecordstatus_reported =
708            425 [(module) = "media_metrics"];
709        sysui.LauncherLatency launcher_latency = 426 [(module) = "sysui"];
710        DropboxEntryDropped dropbox_entry_dropped = 427 [(module) = "framework"];
711        WifiP2pConnectionReported wifi_p2p_connection_reported = 428 [(module) = "wifi"];
712        GameStateChanged game_state_changed = 429 [(module) = "framework"];
713        hotword.HotwordDetectorCreateRequested hotword_detector_create_requested = 430
714            [(module) = "framework"];
715        hotword.HotwordDetectionServiceInitResultReported hotword_detection_service_init_result_reported = 431
716            [(module) = "framework"];
717        hotword.HotwordDetectionServiceRestarted hotword_detection_service_restarted = 432
718            [(module) = "framework"];
719        hotword.HotwordDetectorKeyphraseTriggered hotword_detector_keyphrase_triggered = 433
720            [(module) = "framework"];
721        hotword.HotwordDetectorEvents hotword_detector_events = 434
722            [(module) = "framework"];
723        BootCompletedBroadcastCompletionLatencyReported boot_completed_broadcast_completion_latency_reported =
724                437 [(module) = "framework"];
725        ContactsIndexerUpdateStatsReported contacts_indexer_update_stats_reported = 440
726            [(module) = "appsearch"];
727        AppBackgroundRestrictionsInfo app_background_restrictions_info =
728            441 [(module) = "framework"];
729        MmsSmsProviderGetThreadIdFailed mms_sms_provider_get_thread_id_failed = 442 [(module) = "telephony"];
730        MmsSmsDatabaseHelperOnUpgradeFailed mms_sms_database_helper_on_upgrade_failed = 443 [(module) = "telephony"];
731        PermissionReminderNotificationInteracted permission_reminder_notification_interacted =
732            444 [(module) = "permissioncontroller"];
733        RecentPermissionDecisionsInteracted recent_permission_decisions_interacted =
734            445 [(module) = "permissioncontroller"];
735        GnssPsdsDownloadReported gnss_psds_download_reported = 446 [(module) = "framework"];
736        LeAudioConnectionSessionReported le_audio_connection_session_reported = 447 [(module) = "bluetooth"];
737        LeAudioBroadcastSessionReported le_audio_broadcast_session_reported = 448 [(module) = "bluetooth"];
738        DreamUiEventReported dream_ui_event_reported = 449 [(module) = "framework"];
739        sysui.TaskManagerEventReported task_manager_event_reported = 450 [(module) = "sysui"];
740        CdmAssociationAction cdm_association_action = 451 [(module) = "framework"];
741        MagnificationTripleTapAndHoldActivatedSessionReported magnification_triple_tap_and_hold_activated_session_reported =
742            452 [(module) = "framework"];
743        MagnificationFollowTypingFocusActivatedSessionReported magnification_follow_typing_focus_activated_session_reported =
744            453 [(module) = "framework"];
745        AccessibilityTextReadingOptionsChanged accessibility_text_reading_options_changed = 454 [(module) = "settings"];
746        WifiSetupFailureCrashReported wifi_setup_failure_crash_reported = 455 [(module) = "wifi"];
747        UwbDeviceErrorReported uwb_device_error_reported = 456 [(module) = "uwb"];
748        IsolatedCompilationScheduled isolated_compilation_scheduled = 457 [(module) = "art"];
749        IsolatedCompilationEnded isolated_compilation_ended = 458 [(module) = "art"];
750        OnsOpportunisticEsimProvisioningComplete ons_opportunistic_esim_provisioning_complete = 459 [(module) = "ons"];
751        SystemServerPreWatchdogOccurred system_server_pre_watchdog_occurred = 460 [(module) = "framework"];
752        TelephonyAnomalyDetected telephony_anomaly_detected = 461 [(module) = "telephony"];
753        LetterboxPositionChanged letterbox_position_changed = 462 [(module) = "framework"];
754        RemoteKeyProvisioningAttempt remote_key_provisioning_attempt = 463 [(module) = "rkpd"];
755        RemoteKeyProvisioningNetworkInfo remote_key_provisioning_network_info = 464 [(module) = "rkpd"];
756        RemoteKeyProvisioningTiming remote_key_provisioning_timing = 465 [(module) = "rkpd"];
757        sysui.MediaOutputOpInteractionReported mediaoutput_op_interaction_report =
758            466 [(module) = "sysui"];
759        SyncExemptionOccurred sync_exemption_occurred = 468 [(module) = "framework"];
760        AutofillPresentationEventReported autofill_presentation_event_reported = 469 [(module) = "framework"];
761        DockStateChanged dock_state_changed = 470 [(module) = "framework"];
762        SafetySourceStateCollected safety_source_state_collected = 471 [(module) = "permissioncontroller"];
763        SafetyCenterSystemEventReported safety_center_system_event_reported = 472 [(module) = "permissioncontroller"];
764        SafetyCenterInteractionReported safety_center_interaction_reported = 473 [(module) = "permissioncontroller"];
765        SettingsProviderSettingChanged settings_provider_setting_changed = 474 [(module) = "framework"];
766        BroadcastDeliveryEventReported broadcast_delivery_event_reported =
767                475 [(module) = "framework"];
768        ServiceRequestEventReported service_request_event_reported = 476 [(module) = "framework"];
769        ProviderAcquisitionEventReported provider_acquisition_event_reported =
770                477 [(module) = "framework"];
771        BluetoothDeviceNameReported bluetooth_device_name_reported = 478 [(module) = "bluetooth"];
772        CellBroadcastConfigUpdated cb_config_updated = 479 [(module) = "cellbroadcast"];
773        CellBroadcastModuleErrorReported cb_module_error_reported = 480 [(module) = "cellbroadcast"];
774        CellBroadcastServiceFeatureChanged cb_service_feature_changed = 481 [(module) = "cellbroadcast"];
775        CellBroadcastReceiverFeatureChanged cb_receiver_feature_changed = 482 [(module) = "cellbroadcast"];
776        PrivacySignalNotificationInteraction privacy_signal_notification_interaction = 484 [(module) = "permissioncontroller"];
777        PrivacySignalIssueCardInteraction privacy_signal_issue_card_interaction = 485 [(module) = "permissioncontroller"];
778        PrivacySignalsJobFailure privacy_signals_job_failure = 486 [(module) = "permissioncontroller"];
779        VibrationReported vibration_reported = 487 [(module) = "framework"];
780        UwbStartRanging uwb_ranging_start = 489 [(module) = "uwb"];
781        AppCompactedV2 app_compacted_v2 = 491 [(module) = "framework"];
782        // reserved 492
783        DisplayBrightnessChanged display_brightness_changed = 494 [(module) = "framework"];
784        ActivityActionBlocked activity_action_blocked = 495 [(module) = "framework"];
785        NetworkDnsServerSupportReported network_dns_server_support_reported = 504 [(module) = "resolv"];
786        VmBooted vm_booted = 505 [(module) = "virtualizationservice"];
787        VmExited vm_exited = 506 [(module) = "virtualizationservice"];
788        AmbientBrightnessStatsReported ambient_brightness_stats_reported = 507 [(module) = "framework"];
789        MediametricsSpatializerCapabilitiesReported mediametrics_spatializercapabilities_reported =
790                508 [(module) = "media_metrics"];
791        MediametricsSpatializerDeviceEnabledReported mediametrics_spatializerdeviceenabled_reported =
792                509 [(module) = "media_metrics"];
793        MediametricsHeadTrackerDeviceEnabledReported mediametrics_headtrackerdeviceenabled_reported =
794                510 [(module) = "media_metrics"];
795        MediametricsHeadTrackerDeviceSupportedReported mediametrics_headtrackerdevicesupported_reported =
796                511 [(module) = "media_metrics"];
797        HearingAidInfoReported hearing_aid_info_reported = 513 [(module) = "framework"];
798        DeviceWideJobConstraintChanged device_wide_job_constraint_changed =
799            514 [(module) = "framework"];
800        AmbientModeChanged ambient_mode_changed = 515 [(module) = "framework"];
801        ANRLatencyReported anr_latency_reported = 516 [(module) = "framework"];
802        ResourceValueApiStatisticsReported resource_api_info = 517 [(module) = "framework"];
803        SystemDefaultNetworkChanged system_default_network_changed =
804            518 [(module) = "network_stack"];
805        IwlanSetupDataCallResultReported iwlan_setup_data_call_result_reported = 519 [(module) = "iwlan"];
806        IwlanPdnDisconnectedReasonReported iwlan_pdn_disconnected_reason_reported = 520 [(module) = "iwlan"];
807        AirplaneModeSessionReported airplane_mode_session_reported = 521 [(module) = "wifi", (module) = "bluetooth"];
808        VmCpuStatusReported vm_cpu_status_reported = 522 [(module) = "virtualizationservice", deprecated = true];
809        VmMemStatusReported vm_mem_status_reported = 523 [(module) = "virtualizationservice", deprecated = true];
810        PackageInstallationSessionReported package_installation_session_reported = 524 [(module) = "framework"];
811        DefaultNetworkRematchInfo default_network_rematch_info = 525 [(module) = "connectivity"];
812        NetworkSelectionPerformance network_selection_performance = 526 [(module) = "connectivity"];
813        NetworkNsdReported network_nsd_reported = 527 [(module) = "connectivity"];
814        BluetoothDisconnectionReasonReported bluetooth_disconnection_reason_reported = 529 [(module) = "bluetooth"];
815        BluetoothLocalVersionsReported bluetooth_local_versions_reported = 530 [(module) = "bluetooth"];
816        BluetoothRemoteSupportedFeaturesReported bluetooth_remote_supported_features_reported = 531 [(module) = "bluetooth"];
817        BluetoothLocalSupportedFeaturesReported bluetooth_local_supported_features_reported = 532 [(module) = "bluetooth"];
818        BluetoothGattAppInfo bluetooth_gatt_app_info = 533 [(module) = "bluetooth"];
819        BrightnessConfigurationUpdated brightness_configuration_updated = 534 [(module) = "framework"];
820        WearMediaOutputSwitcherLaunched wear_media_output_switcher_launched =
821            538 [(module) = "MediaOutputSwitcher"];
822        WearMediaOutputSwitcherFinished wear_media_output_switcher_finished =
823            539 [(module) = "MediaOutputSwitcher"];
824        WearMediaOutputSwitcherConnectionReported
825            wear_media_output_switcher_connection_reported =
826                540 [(module) = "MediaOutputSwitcher"];
827        WearMediaOutputSwitcherDeviceScanTriggered
828            wear_media_output_switcher_device_scan_triggered =
829                541 [(module) = "MediaOutputSwitcher"];
830        WearMediaOutputSwitcherFirstDeviceScanLatency
831            wear_media_output_switcher_first_device_scan_latency =
832                542 [(module) = "MediaOutputSwitcher"];
833        WearMediaOutputSwitcherConnectDeviceLatency
834            wear_media_output_switcher_connect_device_latency =
835                543 [(module) = "MediaOutputSwitcher"];
836        PackageManagerSnapshotReported
837            package_manager_snapshot_reported = 544 [(module) = "framework"];
838        PackageManagerAppsFilterCacheBuildReported
839            package_manager_apps_filter_cache_build_reported = 545 [(module) = "framework"];
840        PackageManagerAppsFilterCacheUpdateReported
841            package_manager_apps_filter_cache_update_reported = 546 [(module) = "framework"];
842        sysui.LauncherImpressionEvent launcher_impression_event = 547 [(module) = "sysui"];
843        WearMediaOutputSwitcherAllDevicesScanLatency
844            wear_media_output_switcher_all_devices_scan_latency =
845                549 [(module) = "MediaOutputSwitcher"];
846        WsWatchFaceEdited ws_watch_face_edited = 551 [(module) = "wearservices"];
847        WsWatchFaceFavouriteActionReported ws_watch_face_favorite_action_reported = 552 [(module) = "wearservices"];
848        WsWatchFaceSetActionReported ws_watch_face_set_action_reported = 553 [(module) = "wearservices"];
849        PackageUninstallationReported package_uninstallation_reported = 554 [(module) = "framework"];
850        agif.GameModeChanged game_mode_changed = 555 [(module) = "framework"];
851        agif.GameModeConfigurationChanged game_mode_configuration_changed = 556 [(module) = "framework"];
852        BedtimeModeStateChanged bedtime_mode_state_changed = 557 [(module) = "framework"];
853        NetworkSliceSessionEnded network_slice_session_ended = 558 [(module) = "connectivity"];
854        NetworkSliceDailyDataUsageReported network_slice_daily_data_usage_reported = 559 [(module) = "connectivity"];
855        NfcTagTypeOccurred nfc_tag_type_occurred = 560 [(module) = "nfc"];
856        NfcAIDConflictOccurred nfc_aid_conflict_occurred = 561 [(module) = "nfc"];
857        NfcReaderConflictOccurred nfc_reader_conflict_occurred = 562 [(module) = "nfc"];
858        WsTileListChanged ws_tile_list_changed = 563 [(module) = "wearservices"];
859        GetTypeAccessedWithoutPermission get_type_accessed_without_permission = 564[(module) = "framework"];
860        MobileBundledAppInfoGathered mobile_bundled_app_info_gathered = 566 [(module) = "framework"];
861        WsWatchFaceComplicationSetChanged ws_watch_face_complication_set_changed = 567 [(module) = "wearservices"];
862        media.MediaDrmCreated media_drm_created = 568 [(module) = "media_metrics"];
863        media.MediaDrmErrored media_drm_errored = 569 [(module) = "media_metrics"];
864        media.MediaDrmSessionOpened media_drm_session_opened = 570
865            [(module) = "media_metrics"];
866        media.MediaDrmSessionClosed media_drm_session_closed = 571
867            [(module) = "media_metrics"];
868        UserSelectedResolution user_selected_resolution = 572 [(module) = "settings"];
869        UnsafeIntentEventReported unsafe_intent_event_reported = 573 [(module) = "framework"];
870        adpf.PerformanceHintSessionReported performance_hint_session_reported = 574 [(module) = "framework"];
871        MediametricsMidiDeviceCloseReported mediametrics_midi_device_close_reported =
872            576 [(module) = "media_metrics"];
873        hardware.biometrics.BiometricTouchReported biometric_touch_reported = 577 [(module) = "sysui"];
874        hotword.HotwordAudioEgressEventReported hotword_audio_egress_event_reported = 578
875            [(module) = "framework"];
876        location.LocationEnabledStateChanged location_enabled_state_changed = 580 [(module) = "framework"];
877        view.inputmethod.ImeRequestFinished ime_request_finished = 581 [(module) = "framework"];
878        usb.UsbComplianceWarningsReported usb_compliance_warnings_reported = 582 [(module) = "framework"];
879        locale.AppSupportedLocalesChanged app_supported_locales_changed = 583 [(module) = "framework"];
880        providers.mediaprovider.MediaProviderVolumeRecoveryReported
881            media_provider_volume_recovery_reported = 586 [(module) = "mediaprovider"];
882        hardware.biometrics.BiometricPropertiesCollected
883            biometric_properties_collected = 587 [(module) = "framework"];
884        kernel.KernelWakeupAttributed kernel_wakeup_attributed = 588 [(module) = "framework"];
885        display.ScreenStateChangedV2 screen_state_changed_v2 = 589 [(module) = "framework"];
886        wearservices.WsBackupActionReported ws_backup_action_reported = 590
887            [(module) = "wearservices"];
888        wearservices.WsRestoreActionReported ws_restore_action_reported = 591
889            [(module) = "wearservices"];
890        devicelogs.DeviceLogAccessEventReported device_log_access_event_reported = 592 [(module) = "sysui"];
891        wear.media.MediaSessionUpdated media_session_updated = 594 [(module) = "wearmedia"];
892        wearsysui.WearOobeStateChanged wear_oobe_state_changed = 595 [(module) = "framework"];
893        wearservices.WsNotificationUpdated ws_notification_updated = 596
894            [(module) = "wearservices"];
895        // reserved 597
896        corenetworking.connectivity.NetworkValidationFailureStatsDailyReported
897            network_validation_failure_stats_daily_reported = 601 [(module) = "connectivity"];
898        wearservices.WsComplicationTapped ws_complication_tapped = 602 [(module) = "wearservices"];
899        wearservices.WsNotificationBlocking ws_notification_blocking = 780 [(module) = "wearservices"];
900        wearservices.WsNotificationBridgemodeUpdated ws_notification_bridgemode_updated = 822 [(module) = "wearservices"];
901        wearservices.WsNotificationDismissalActioned ws_notification_dismissal_actioned = 823 [(module) = "wearservices"];
902        wearservices.WsNotificationActioned ws_notification_actioned = 824 [(module) = "wearservices"];
903        wearservices.WsNotificationLatency ws_notification_latency = 880 [(module) = "wearservices"];
904    }
905
906    // Pushed atom extensions.
907    // The atom definitions are under atoms/<feature>/<feature>_extension_atoms.proto
908    extensions 332; // ArtDatumReported art_datum_reported
909    extensions 366; // OdrefreshReported odrefresh_reported
910    extensions 385; // AppSearchSetSchemaStatsReported app_search_set_schema_stats_reported
911    extensions 435; // AdServicesApiCalled ad_services_api_called
912    extensions 436; // AdServicesMeasurementReportsUploaded ad_services_mesurement_reports_uploaded
913    extensions 467; // BackgroundDexoptJobEnded background_dexopt_job_ended
914    extensions 483; // JSScriptEngineLatencyReported jsscriptengine_latency_reported
915    extensions 488; // SandboxApiCalled sandbox_api_called
916    extensions 490; // MobileDataDownloadFileGroupDownloadStatusReported mobile_data_download_file_group_status_reported
917    extensions 493; // AdServicesSettingsUsageReported ad_services_settings_usage_reported
918    extensions 496; // BackgroundFetchProcessReported background_fetch_process_reported
919    extensions 497; // UpdateCustomAudienceProcessReported update_custom_audience_process_reported
920    extensions 498; // RunAdBiddingProcessReported run_ad_bidding_process_reported
921    extensions 499; // RunAdScoringProcessReported run_ad_scoring_process_reported
922    extensions 500; //RunAdSelectionProcessReported run_ad_selection_process_reported
923    extensions 501; // RunAdBiddingPerCAProcessReported run_ad_bidding_per_ca_process_reported
924    extensions 502; // MobileDataDownloadDownloadResultReported mobile_data_download_download_result_reported
925    extensions 503; // MobileDataDownloadFileGroupStorageStatsReported mobile_data_download_file_group_storage_stats_reported
926    extensions 512; // AdServicesMeasurementRegistrations ad_services_measurement_registrations
927    extensions 528; // ExpressEventReported express_event_reported
928    extensions 535; // AdServicesGetTopicsReported ad_services_get_topics_reported
929    extensions 536; // AdServicesEpochComputationGetTopTopicsReported ad_services_epoch_computation_get_top_topics_reported
930    extensions 537; // ServicesEpochComputationClassifierReported ad_services_epoch_computation_classifier_reported
931    extensions 548; // OdsignReported odsign_reported
932    extensions 550; // ArtDeviceDatumReported art_device_datum_reported
933    extensions 565; // ArtDatumDeltaReported art_datum_delta_reported
934    extensions 579; // AppSearchSchemaMigrationStatsReported app_search_schema_migration_stats_reported
935    extensions 584; // ApplicationGrammaticalInflectionChanged application_grammatical_inflection_changed
936    extensions 585; // CredentialManagerApiCalled credential_manager_api_called
937    extensions 593; // ExpressHistogramSampleReported express_histogram_sample_reported
938    extensions 598; // AdServicesBackCompatGetTopicsReported ad_services_back_compat_get_topics_reported
939    extensions 599; // AdServicesBackCompatEpochComputationClassifierReported ad_services_back_compat_epoch_computation_classifier_reported
940    extensions 600; // MediaCodecReclaimRequestCompleted media_codec_reclaim_request_completed
941    extensions 603; // AutofillUiEventReported autofill_ui_event_reported
942    extensions 604; // AutofillFillRequestReported autofill_fill_request_reported
943    extensions 605; // AutofillFillResponseReported autofill_fill_response_reported
944    extensions 606; // AutofillSaveEventReported autofill_save_event_reported
945    extensions 607; // AutofillSessionCommitted autofill_session_committed
946    extensions 608; // MediaActionReported media_action_reported
947    extensions 609; // MediaControlsLaunched media_controls_launched
948    extensions 610; // WsWearTimeSession ws_wear_time_session
949    extensions 611; // LockscreenShortcutSelected lockscreen_shortcut_selected
950    extensions 612; // LockscreenShortcutTriggered lockscreen_shortcut_triggered
951    extensions 613; // BluetoothHashedDeviceNameReported bluetooth_hashed_device_name_reported
952    extensions 614; // BluetoothL2capCocClientConnection bluetooth_l2cap_coc_client_connection
953    extensions 615; // BluetoothL2capCocServerConnection bluetooth_l2cap_coc_server_connection
954    extensions 616; // HealthConnectApiCalled health_connect_api_called
955    extensions 617; // HealthConnectUsageStats health_usage_stats
956    extensions 618; // HealthConnectStorageStats health_connect_storage_stats
957    extensions 619; // WearAdaptiveSuspendStatsReported wear_adaptive_suspend_stats_reported
958    extensions 620; // WearPowerAnomalyServiceOperationalStatsReported wear_power_anomaly_service_operational_stats_reported
959    extensions 621; // WearPowerAnomalyServiceEventStatsReported wear_power_anomaly_service_event_stats_reported
960    extensions 622; // SettingsSpaReported settings_spa_reported
961    extensions 623; // HealthConnectUiImpression health_connect_ui_impression
962    extensions 624; // HealthConnectUiInteraction health_connect_ui_interaction
963    extensions 625; // HealthConnectAppOpenedReported health_connect_app_opened_reported
964    extensions 626; // WsIncomingCallActionReported ws_incoming_call_action_reported
965    extensions 627; // WsCallDisconnectionReported ws_call_disconnection_reported
966    extensions 628; // WsCallDurationReported ws_call_duration_reported
967    extensions 629; // WsCallUserExperienceLatencyReported ws_call_user_experience_latency_reported
968    extensions 630; // WsCallInteractionReported ws_call_interaction_reported
969    extensions 631; // FullScreenIntentLaunched full_screen_intent_launched
970    extensions 632; // BalAllowed bal_allowed
971    extensions 633; // EmergencyStateChanged emergency_state_changed
972    extensions 634; // QualifiedRatListChanged qualified_rat_list_changed
973    extensions 635; // QnsImsCallDropStats qns_ims_call_drop_stats
974    extensions 636; // QnsFallbackRestrictionChanged qns_fallback_restriction_changed
975    extensions 637; // EmergencyNumberDialed emergency_number_dialed
976    extensions 638; // WifiAwareNdpReported wifi_aware_ndp_reported
977    extensions 639; // WifiAwareAttachReported wifi_aware_attach_reported
978    extensions 640; // AdServicesMeasurementDebugKeys ad_services_measurement_debug_keys
979    extensions 641; // MediaCodecStarted media_codec_started
980    extensions 642; // MediaCodecStopped media_codec_stopped
981    extensions 643; // HealthConnectApiInvoked health_connect_api_invoked
982    extensions 644; // ExpressUidEventReported express_uid_event_reported
983    extensions 645; // PermissionRationaleDialogViewed permission_rationale_dialog_viewed
984    extensions 646; // PermissionRationaleDialogActionReported permission_rationale_dialog_action_reported
985    extensions 647; // AppDataSharingUpdatesNotificationInteraction app_data_sharing_updates_notification_interaction
986    extensions 648; // AppDataSharingUpdatesFragmentViewed app_data_sharing_updates_fragment_viewed
987    extensions 649; // AppDataSharingUpdatesFragmentActionReported app_data_sharing_updates_fragment_action_reported
988    extensions 650; // DailykeepaliveInfoReported daily_keepalive_info_reported
989    extensions 651; // CredentialManagerInitialPhaseReported credential_manager_init_phase_reported
990    extensions 652; // CredentialManagerCandidatePhaseReported credential_manager_candidate_phase_reported
991    extensions 653; // CredentialManagerFinalPhaseReported credential_manager_final_phase_reported
992    extensions 654; // ExerciseRouteApiCalled exercise_route_api_called
993    extensions 655; // PluginInitialized plugin_initialized
994    extensions 656; // BluetoothLeSessionConnected bluetooth_le_session_connected
995    extensions 657; // DNDStateChanged dnd_state_changed
996    extensions 658; // ExpressUidHistogramSampleReported express_uid_histogram_sample_reported
997    extensions 659; // AutofillFieldClassificationEventReported autofill_field_classification_event_reported
998    extensions 660; // TestExtensionAtomReported test_extension_atom_reported
999    extensions 661; // WifiSelfRecoveryTriggered wifi_self_recovery_triggered
1000    extensions 662; // AdServicesErrorReported ad_services_error_reported
1001    extensions 663; // AdServicesBackgroundJobsExecutionReported ad_services_background_jobs_execution_reported
1002    extensions 664; // RkpdPoolStats rkpd_pool_stats
1003    extensions 665; // RkpdClientOperation rkpd_client_operation
1004    extensions 666;  // RestrictedBluetoothDeviceNameReported restricted_bluetooth_device_name_reported
1005    extensions 667; // CredentialManagerTotalCandidateReported credential_manager_total_reported
1006    extensions 668; // CredentialManagerFinalNoUidReported credential_manager_finalnouid_reported
1007    extensions 669; // CredentialManagerGetProviderReported credential_manager_get_reported
1008    extensions 670; // CredentialManagerBrowsedAuthenticationClicked credential_manager_auth_click_reported
1009    extensions 671; // CredentialManagerApiV2Called credential_manager_apiv2_called
1010    extensions 672; // TestRestrictedAtomReported test_restricted_atom_reported
1011    extensions 673; // AdServicesMeasurementDelayedSourceRegistration ad_services_measurement_delayed_source_registration
1012    extensions 674; // AdServicesMeasurementAttribution ad_services_measurement_attribution
1013    extensions 675; // AdServicesMeasurementJobs ad_services_measurement_jobs
1014    extensions 676; // AdServicesMeasurementWipeout ad_services_measurement_wipeout
1015    extensions 677; // MediaSessionStateChanged media_session_state_changed
1016    extensions 678; // IkeSessionTerminated ike_session_terminated
1017    extensions 679; // TvLowPowerStandbyPolicy tv_low_power_standby_policy
1018    extensions 680; // SoftApStarted softap_started
1019    extensions 681; // SoftApStopped softap_stopped
1020    extensions 682; // KeyboardConfigured keyboard_configured
1021    extensions 683; // KeyboardSystemsEventReported keyboard_systems_event_reported
1022    extensions 684; // MediaCodecRendered media_codec_rendered
1023    extensions 685; // InTaskActivityStarted in_task_activity_started
1024    extensions 686; // InputDeviceUsageReported inputdevice_usage_reported
1025    extensions 687; // WifiLockReleased wifi_lock_released
1026    extensions 688; // WifiLockDeactivated wifi_lock_deactivated
1027    extensions 689; // WifiConfigSaved wifi_config_saved
1028    extensions 690; // WifiAwareResourceUsingChanged wifi_aware_resource_using_changed
1029    extensions 691; // WifiAwareHalApiCalled wifi_aware_hal_api_called
1030    extensions 692; // WifiLocalOnlyRequestReceived wifi_local_only_request_received
1031    extensions 693; // WifiLocalOnlyRequestScanTriggered wifi_local_only_request_scan_triggered
1032    extensions 694; // WifiThreadTaskExecuted wifi_thread_task_executed
1033    extensions 695; // AdServicesMeasurementAdIdMatchForDebugKeys ad_services_ad_id_match_for_debug_keys
1034    extensions 696; // BluetoothProfileConnectionAttempted bluetooth_profile_connection_attempted
1035    extensions 697; // AdServicesEnrollmentDataStored ad_services_enrollment_data_stored
1036    extensions 698; // AdServicesEnrollmentFileDownloaded ad_services_enrollment_file_downloaded
1037    extensions 699; // AdServicesEnrollmentMatched ad_services_enrollment_matched
1038    extensions 700; // WifiStateChanged wifi_state_changed
1039    extensions 701; // HdmiEarcStatusReported hdmi_earc_status_reported
1040    extensions 702; // AdServicesConsentMigrated ad_services_consent_migrated
1041    extensions 703; // CronetEngineCreated cronet_engine_created
1042    extensions 704; // CronetTrafficReported cronet_traffic_reported
1043    extensions 705; // DreamSettingChanged dream_setting_changed
1044    extensions 706; // AiWallpapersButtonPressed ai_wallpapers_button_pressed
1045    extensions 707; // AiWallpapersTemplateSelected ai_wallpapers_template_selected
1046    extensions 708; // AiWallpapersTermSelected ai_wallpapers_term_selected
1047    extensions 709; // AiWallpapersWallpaperSet ai_wallpapers_wallpaper_set
1048    extensions 710; // AiWallpapersSessionSummary ai_wallpapers_session_summary
1049    extensions 711; // OnDevicePersonalizationApiCalled ondevicepersonalization_api_called
1050    extensions 712; // FederatedComputeApiCalled federated_compute_api_called
1051    extensions 713; // CellularRadioPowerStateChanged cellular_radio_power_state_changed
1052    extensions 714; // AdServicesEnrollmentFailed ad_services_enrollment_failed
1053    extensions 715; // WearModeStateChanged wear_mode_state_changed
1054    extensions 716; // LauncherImpressionEventV2 launcher_impression_event_v2
1055    extensions 717; // ExternalTvInputEvent external_tv_input_event
1056    extensions 718; // StylusPredictionMetricsReported stylus_prediction_metrics_reported
1057    extensions 719; // PnoScanStarted pno_scan_started
1058    extensions 720; // PnoScanStopped pno_scan_stopped
1059    extensions 721; // MediatorUpdated mediator_updated
1060    extensions 722; // WifiIsUnusableReported wifi_is_unusable_reported
1061    extensions 723; // WifiApCapabilitiesReported wifi_ap_capabilities_reported
1062    extensions 724; // HdmiSoundbarModeStatusReported hdmi_soundbar_mode_status_reported
1063    extensions 725; // UserRiskEventReported user_risk_event_reported
1064    extensions 726; // DeviceLockCheckInRequestReported device_lock_check_in_request_reported
1065    extensions 727; // DeviceLockProvisioningCompleteReported device_lock_provisioning_complete_reported
1066    extensions 728; // DeviceLockKioskAppRequestReported device_lock_kiosk_app_request_reported
1067    extensions 729; // MediaProjectionStateChanged media_projection_state_changed
1068    extensions 730; // MediaProjectionTargetChanged media_projection_target_changed
1069    extensions 731; // WearPowerMenuOpened wear_power_menu_opened
1070    extensions 732; // ApexInstallationRequested apex_installation_requested
1071    extensions 733; // ApexInstallationStaged apex_installation_staged
1072    extensions 734; // ApexInstallationEnded apex_installation_ended
1073    extensions 735; // SandboxActivityEventOccurred sandbox_activity_event_occurred
1074    extensions 736; // RendererInitialized renderer_initialized
1075    extensions 737; // SchemaVersionReceived schema_version_received
1076    extensions 738; // ThreadnetworkTelemetryDataReported threadnetwork_telemetry_data_reported
1077    extensions 739; // ThreadnetworkTopoEntryRepeated threadnetwork_topo_entry_repeated
1078    extensions 740; // ThreadnetworkDeviceInfoReported threadnetwork_device_info_reported
1079    extensions 741; // LayoutInspected layout_inspected
1080    extensions 742; // LayoutExpressionsInspected layout_expression_inspected
1081    extensions 743; // LayoutAnimationsInspected layout_animations_inspected
1082    extensions 744; // MaterialComponentsInspected material_components_inspected
1083    extensions 745; // TileRequested tile_requested
1084    extensions 746; // StateResponseReceived state_response_received
1085    extensions 747; // TileResponseReceived tile_response_received
1086    extensions 748; // InflationFinished inflation_finished
1087    extensions 749; // InflationFailed inflation_failed
1088    extensions 750; // IgnoredInflationFailuresReported ignored_inflation_failures_reported
1089    extensions 751; // DrawableRendered drawable_rendered
1090    extensions 752; // StatsSocketLossReported stats_socket_loss_reported
1091    extensions 753; // DisplaySwitchLatencyTracked display_switch_latency_tracked
1092    extensions 754; // KernelOomKillOccurred kernel_oom_kill_occurred
1093    extensions 755; // WearAssistantOpened wear_assistant_opened
1094    extensions 756; // AdServicesMeasurementClickVerification ad_services_measurement_click_verification
1095    extensions 757; // WearMediaOutputSwitcherDeviceScanApiLatency wear_media_output_switcher_device_scan_api_latency
1096    extensions 758; // WearMediaOutputSwitcherSassDeviceUnavailable wear_media_output_switcher_sass_device_unavailable
1097    extensions 759; // WearMediaOutputSwitcherFastPairApiTimeout wear_media_output_switcher_fastpair_api_timeout
1098    extensions 760; // IkeLivenessCheckSessionValidated ike_liveness_check_session_validated
1099    extensions 761; // HotwordEventEgressSize hotword_egress_size_atom_reported
1100    extensions 762; // CronetEngineBuilderInitialized cronet_engine_builder_initialized
1101    extensions 763; // CronetHttpFlagsInitialized cronet_http_flags_initialized
1102    extensions 764; // CronetInitialized cronet_initialized
1103    extensions 765; // AdServicesEncryptionKeyFetched ad_services_encryption_key_fetched
1104    extensions 766; // AdServicesEncryptionKeyDbTransactionEnded ad_services_encryption_key_db_transaction_ended
1105    extensions 767; // DestinationRegisteredBeacons destination_registered_beacons
1106    extensions 768; // ReportInteractionApiCalled report_interaction_api_called
1107    extensions 769; // InteractionReportingTableCleared interaction_reporting_table_cleared
1108    extensions 770; // CarRecentsEventReported car_recents_event_reported
1109    extensions 771; // FederatedComputeTrainingEventReported federated_compute_training_event_reported
1110    extensions 772; // ThermalStatusCalled thermal_status_called
1111    extensions 773; // ThermalHeadroomCalled thermal_headroom_called
1112    extensions 774; // ThermalHeadroomThresholdsCalled thermal_headroom_thresholds_called
1113    extensions 775; // BootIntegrityInfoReported boot_integrity_info_reported
1114    extensions 776; // ScreenOffReported screen_off_reported
1115    extensions 777; // ApfSessionInfoReported apf_session_info_reported
1116    extensions 778; // IpClientRaInfoReported ip_client_ra_info_reported
1117    extensions 779; // NetworkRequestStateChanged network_request_state_changed
1118    extensions 781; // BluetoothContentProfileErrorReported bluetooth_content_profile_error_reported
1119    extensions 782; // BluetoothRfcommConnectionAttempted bluetooth_rfcomm_connection_attempted
1120    extensions 783; // NetworkStatsRecorderFileOperated network_stats_recorder_file_operated
1121    extensions 784; // MediaProviderDatabaseRollbackReported media_provider_database_rollback_reported
1122    extensions 785; // BackupSetupStatusReported backup_setup_status_reported
1123    extensions 786; // SysproxyConnectionUpdated sysproxy_connection_updated
1124    extensions 787; // WsOnBodyStateChanged ws_on_body_state_changed
1125    extensions 788; // AppManifestConfigHelperCalled app_manifest_config_helper_called
1126    extensions 789; // CheckInRetryReported device_lock_check_in_retry_reported
1127    extensions 790; // ProvisionFailureReported device_lock_provision_failure_reported
1128    extensions 791; // LockUnlockDeviceFailureReported device_lock_unlock_device_failure_reported
1129    extensions 792; // DisplayModeDirectorVoteChanged display_mode_director_vote_changed
1130    extensions 793; // AdFilteringProcessJoinCAReported ad_filtering_process_join_ca_reported
1131    extensions 794; // AdFilteringProcessAdSelectionReported ad_filtering_process_ad_selection_reported
1132    extensions 795; // AdCounterHistogramUpdaterReported ad_counter_histogram_updater_reported
1133    extensions 796; // SdkSandboxRestrictedAccessInSession sdk_sandbox_restricted_access_in_session
1134    extensions 797; // CarCalmModeEventReported car_calm_mode_event_reported
1135    extensions 798; // MediaEditingEndedReported media_editing_ended_reported
1136    extensions 799; // SELinux selinux_audit_log
1137    extensions 800; // CellularIdentifierDisclosed cellular_identifier_disclosed
1138    // reserved 801
1139    extensions 802; // WsWatchFaceRestrictedComplicationsImpacted ws_watch_face_restricted_complications_impacted
1140    extensions 803; // WsWatchFaceDefaultRestrictedComplicationsRemoved ws_watch_face_default_restricted_complications_removed
1141    extensions 804; // WsComplicationsImpactedNotificationEventReported ws_complications_impacted_notification_event_reported
1142    extensions 805; // SoftApStateChanged soft_ap_state_changed
1143    extensions 806; // ExternalDisplayStateChanged external_display_state_changed
1144    extensions 807; // SignatureVerification signature_verification
1145    extensions 808; // KAnonImmediateSignJoinStatusReported k_anon_immediate_sign_join_status_reported
1146    extensions 809; // KAnonBackgroundJobStatusReported k_anon_background_job_status_reported
1147    extensions 810; // KAnonInitializeStatusReported k_anon_initialize_status_reported
1148    extensions 811; // KAnonSignStatusReported k_anon_sign_status_reported
1149    extensions 812; // KAnonJoinStatusReported k_anon_join_status_reported
1150    extensions 813; // KAnonKeyAttestationStatusReported k_anon_key_attestation_status_reported
1151    extensions 814; // GetAdSelectionDataApiCalled get_ad_selection_data_api_called
1152    extensions 815; // GetAdSelectionDataBuyerInputGenerated get_ad_selection_data_buyer_input_generated
1153    extensions 816; // SystemGrammaticalInflectionChanged system_grammatical_inflection_changed
1154    extensions 817; // BiometricFRRNotification biometric_frr_notification
1155    extensions 818; // DesktopModeUIChanged desktop_mode_ui_changed
1156    extensions 819; // DesktopModeSessionTaskUpdate desktop_mode_session_task_update
1157    extensions 820; // AdaptiveAuthUnlockAfterLockReported adaptive_auth_unlock_after_lock_reported
1158    extensions 821; // NegotiatedSecurityAssociation negotiated_security_association
1159    extensions 825; // AppSearchUsageSearchIntentStatsReported app_search_usage_search_intent_stats_reported
1160    extensions 826; // AppSearchUsageSearchIntentRawQueryStatsReported app_search_usage_search_intent_raw_query_stats_reported
1161    extensions 827; // EnhancedConfirmationDialogResultReported
1162    extensions 828; // EnhancedConfirmationRestrictionCleared
1163    extensions 829; // NotificationListenerService
1164    extensions 830; // SensitiveContentMediaProjectionSession
1165    extensions 831; // SensitiveNotificationAppProtectionSession
1166    extensions 832; // SensitiveNotificationAppProtectionApplied
1167    extensions 833; // SensitiveNotificationRedaction
1168    extensions 834; // BackgroundJobSchedulingReported background_job_scheduling_reported
1169    extensions 835; // SensitiveContentAppProtection
1170    extensions 836; // ScreenTimeoutOverrideReported screen_timeout_override_reported
1171    extensions 837; // ScreenInteractiveSessionReported screen_interactive_session_reported
1172    extensions 838; // ExampleIteratorNextLatencyReported example_iterator_next_latency_reported
1173    extensions 839; // AdpfHintSessionTidCleanup adpf_hint_session_tid_cleanup
1174    extensions 840; // TopicsEncryptionEpochComputationReported topics_encryption_epoch_computation_reported
1175    extensions 841; // TopicsEncryptionGetTopicsReported topics_encryption_get_topics_reported
1176    extensions 842; // AdServicesShellCommandCalled adservices_shell_command_called
1177    extensions 843; // UpdateSignalsApiCalled update_signals_api_called
1178    extensions 844; // EncodingJobRun encoding_job_run
1179    extensions 845; // EncodingJsFetch encoding_js_fetch
1180    extensions 846; // EncodingJsExecution encoding_js_execution
1181    extensions 847; // PersistAdSelectionResultCalled persist_ad_selection_result_called
1182    extensions 848; // ServerAuctionKeyFetchCalled server_auction_key_fetch_called
1183    extensions 849; // ServerAuctionBackgroundKeyFetchScheduled server_auction_background_key_fetch_enabled
1184    extensions 850; // VpnConnectionStateChanged vpn_connection_state_changed
1185    extensions 851; // VpnConnectionReported vpn_connection_reported
1186    extensions 852; // CarWakeupFromSuspendReported car_wakeup_from_suspend_reported
1187    extensions 853; // ExcessiveBinderProxyCountReported excessive_binder_proxy_count_reported
1188    extensions 854; // DataRatStateChanged data_rat_state_changed
1189    extensions 855; // NfcObserveModeStateChanged nfc_observe_mode_state_changed
1190    extensions 856; // NfcFieldChanged nfc_field_changed
1191    extensions 857; // NfcPollingLoopNotificationReported nfc_polling_loop_notification_reported
1192    extensions 858; // NfcProprietaryCapabilitiesReported nfc_proprietary_capabilities_reported
1193    extensions 859; // PdfLoadReported pdf_load_reported
1194    extensions 860; // PdfApiUsageReported pdf_api_usage_reported
1195    extensions 861; // PdfSearchReported pdf_search_reported
1196    extensions 862; // RemoteDeviceInformationWithMetricId remote_device_information_with_metric_id
1197    extensions 863; // ComponentStateChangedReported component_state_changed_reported
1198    extensions 864; // AdServicesMeasurementProcessOdpRegistration ad_services_measurement_process_odp_registration
1199    extensions 865; // AdServicesMeasurementNotifyRegistrationToOdp ad_services_measurement_notify_registration_to_odp
1200    extensions 866; // AppRestrictionStateChanged app_restriction_state_changed
1201    extensions 867; // ScreenDimReported screen_dim_reported
1202    extensions 868; // ChreSignificantMotionStateChanged chre_significant_motion_state_changed
1203    extensions 869; // NavHandleTouchPoints nav_handle_touch_points
1204    extensions 870; // LeAppScanStateChanged le_app_scan_state_changed
1205    extensions 871; // LeRadioScanStopped le_radio_scan_stopped
1206    extensions 872; // LeScanResultReceived le_scan_result_received
1207    extensions 873; // LeScanAbused le_scan_abused
1208    extensions 874; // LeAdvStateChanged le_adv_state_changed
1209    extensions 875; // LeAdvErrorReported le_adv_error_reported
1210    extensions 876; // SelectAdsFromOutcomesApiCalled select_ads_from_outcomes_api_called
1211    extensions 877; // ReportImpressionApiCalled report_impression_api_called
1212    extensions 878; // Reserved for b/333882013
1213    extensions 879; // Reserved for b/333882013
1214    extensions 881; // Reserved for b/339008431
1215    extensions 882; // ConnectedChannelChanged connected_channel_changed
1216    extensions 883; // PreRebootDexoptJobEnded pre_reboot_dexopt_job_ended
1217    extensions 884; // ScorerPredictionResultReported scorer_prediction_result_reported
1218    extensions 885; // AdServicesEnrollmentTransactionStats ad_services_enrollment_transaction_stats
1219    extensions 886; // PhotopickerSessionInfoReported photopicker_session_info_reported
1220    extensions 887; // PhotopickerApiInfoReported photopicker_api_info_reported
1221    extensions 888; // PhotopickerUIEventLogged photopicker_ui_event_logged
1222    extensions 889; // PhotopickerMediaItemStatusRepoprted photopicker_media_item_status_reported
1223    extensions 890; // PhotopickerPreviewInfoLogged photopicker_preview_info_logged
1224    extensions 891; // PhotopickerMenuInteractionLogged photopicker_menu_interaction_logged
1225    extensions 892; // PhotopickerBannerInteractionLogged photopicker_banner_interaction_logged
1226    extensions 893; // PhotopickerMediaLibraryInfoLogged photopicker_media_library_info_logged
1227    extensions 894; // PhotopickerPageInfoLogged photopicker_page_info_logged
1228    extensions 895; // PhotopickerMediaGridSyncInfoReported photopicker_media_grid_sync_info_reported
1229    extensions 896; // PhotopickerAlbumSyncInfoReported photopicker_album_sync_info_reported
1230    extensions 897; // PhotopickerSearchInfoReported photopicker_search_info_reported
1231    extensions 898; // SearchDataExtractionDetailsReported search_data_extraction_details_reported
1232    extensions 899; // EmbeddedPhotopickerInfoReported embedded_photopicker_info_reported
1233    extensions 900; // CameraFeatureCombinationQueryEvent camera_feature_combination_query_event
1234    extensions 901; // MicroXRDeviceBootCompleteReported microxr_device_boot_complete_reported
1235    extensions 902; // AdServicesCobaltLoggerEventReported ad_services_cobalt_logger_event_reported
1236    extensions 903; // AdServicesCobaltPeriodicJobEventReported ad_services_cobalt_periodic_job_event_reported
1237    extensions 904; // A2dpSessionReported a2dp_session_reported
1238    extensions 905; // UpdateSignalsProcessReported update_signals_process_reported
1239    extensions 906; // DeviceOrientationChanged device_orientation_changed
1240    extensions 907; // HealthConnectExportInvoked
1241    extensions 908; // CommunalHubWidgetEventReported communal_hub_widget_event_reported
1242    extensions 909; // AppSearchAppsIndexerStatsReported app_search_apps_indexer_stats_reported
1243    extensions 910; // AccessibilityCheckResultReported accessibility_check_result_reported
1244    extensions 911; // WearTimeSyncRequested wear_time_sync_requested
1245    extensions 912; // WearTimeUpdateStarted wear_time_update_started
1246    extensions 913; // WearTimeSyncAttemptCompleted wear_time_sync_attempt_completed
1247    extensions 914; // WearTimeChanged wear_time_changed
1248    extensions 915; // TestUprobeStatsAtomReported
1249    extensions 916; // BluetoothCrossLayerEventReported bluetooth_cross_layer_event_reported
1250    extensions 917; // FirstOverlayStateChanged first_overlay_state_changed
1251    extensions 918; // HealthConnectImportInvoked
1252    extensions 919; // HealthConnectExportImportStatsReported
1253    extensions 920; // WsRemoteEventUsageReported ws_remote_event_usage_reported
1254    extensions 921; // WearCompanionConnectionState
1255    extensions 922; // BroadcastSent broadcast_sent
1256    extensions 923; // IwlanUnderlyingNetworkValidationResultReported iwlan_underlying_network_validation_result_reported
1257    extensions 924; // PostGcMemorySnapshot postgc_memory_snapshot
1258    extensions 925; // TetheringActiveSessionsReported
1259    extensions 926; // PowerSaveTempAllowlistChanged power_save_temp_allowlist_changed
1260    extensions 927; // BroadcastAudioSessionReported broadcast_audio_session_reported
1261    extensions 928; // BroadcastAudioSyncReported broadcast_audio_sync_reported
1262    extensions 929; // ArtDex2OatReported art_dex2oat_reported
1263    extensions 930; // TopicsScheduleEpochJobSettingReported topics_schedule_epoch_job_setting_reported
1264    extensions 931; // AppOpAccessTracked app_op_access_tracked
1265    extensions 932; // InputEventLatencyReported input_event_latency_reported
1266    extensions 933; // ContentOrFileUriEventReported content_or_file_uri_event_reported
1267    extensions 934; // CertificateTransparencyLogListStateChanged certificate_transparency_log_list_state_changed
1268    extensions 935; // DesktopModeTaskSizeUpdated desktop_mode_task_size_updated
1269    extensions 940; // DeviceIdleTempAllowlistUpdated device_idle_temp_allowlist_updated
1270    extensions 941; // WsNotificationManagedDismissalSync ws_notification_managed_dismissal_sync
1271    extensions 942; // PeripheralTutorialLaunched peripheral_tutorial_launched
1272    extensions 943; // AppOpNoteOpOrCheckOpBinderApiCalled app_op_note_op_or_check_op_binder_api_called
1273    extensions 944; // BiometricUnenrolled biometric_unenrolled
1274    extensions 945; // BiometricEnumerated biometric_enumerated
1275    extensions 946; // HardwareRendererEvent hardware_renderer_event
1276    extensions 947; // TextureViewEvent texture_view_event
1277    extensions 948; // SurfaceControlEvent surface_control_event
1278    extensions 949; // SysproxyServiceStateUpdated sysproxy_service_state_updated
1279    extensions 950; // JankFrameCountByWidgetReported jank_frame_count_by_widget_reported
1280    extensions 951; // AccountManagerEvent account_manager_event
1281    extensions 952; // OnDevicePersonalizationTraceEvent ondevicepersonalization_trace_event
1282    extensions 953; // WearSetupWizardDeviceStatusReported wear_setup_wizard_device_status_reported
1283    extensions 954; // WearSetupWizardPairingCompleted wear_setup_wizard_pairing_completed
1284    extensions 955; // WearSetupWizardConnectionEstablished wear_setup_wizard_connection_established
1285    extensions 956; // WearSetupWizardCheckinCompleted wear_setup_wizard_checkin_completed
1286    extensions 957; // WearSetupWizardCompanionTimeReported wear_setup_wizard_companion_time_reported
1287    extensions 958; // WearSetupWizardStatusReported wear_setup_wizard_status_reported
1288    extensions 959; // WearSetupWizardHeartbeatReported wear_setup_wizard_hearbeat_reported
1289    extensions 960; // WearSetupWizardFrpTriggered wear_setup_wizard_frp_triggered
1290    extensions 961; // WearSetupWizardSystemUpdateTriggered wear_setup_wizard_system_update_triggered
1291    extensions 962; // WearSetupWizardPhoneSwitchTriggered wear_setup_wizard_phone_switch_triggered
1292    extensions 963; // HealthConnectPermissionStats health_connect_permission_stats
1293    extensions 964; // WsBugreportEventReported ws_bugreport_event_reported
1294    extensions 965; // ConscryptServiceUsed conscrypt_service_used
1295    extensions 966; // MediaControlApiUsageReported media_control_api_usage_reported
1296    extensions 967; // ScheduledCustomAudienceUpdateScheduleAttempted scheduled_custom_audience_update_schedule_attempted
1297    extensions 968; // ScheduledCustomAudienceUpdatePerformed scheduled_custom_audience_update_performed
1298    extensions 969; // ScheduledCustomAudienceUpdatePerformedAttemptedFailureReported scheduled_custom_audience_update_performed_attempted_failure_reported
1299    extensions 970; // ScheduledCustomAudienceUpdateBackgroundJobRan scheduled_custom_audience_update_background_job_ran
1300    extensions 971; // ContextualEducationTriggered contextual_education_triggered
1301    extensions 972; // CertificateTransparencyLogListUpdateStateChanged certificate_transparency_log_list_update_state_changed
1302    extensions 973; // Reserved for b/375457523
1303    extensions 974; // CarSystemUiDataSubscriptionEventReported car_system_ui_data_subscription_event_reported
1304    extensions 975; // CarSettingsDataSubscriptionEventReported car_settings_data_subscription_event_reported
1305    extensions 976; // CarQcLibEventReported car_qc_lib_event_reported
1306    extensions 977; // ImageDecoded image_decoded
1307    extensions 978; // IntentCreatorTokenAdded intent_creator_token_added
1308    extensions 979; // CoreNetworkingTerribleErrorOccurred core_networking_terrible_error_occurred
1309    extensions 980; // HealthConnectPhrApiInvoked health_connect_phr_api_invoked
1310    extensions 981; // HealthConnectPhrUsageStats health_connect_phr_usage_stats
1311    extensions 982; // BluetoothRfcommConnectionReportedAtClose bluetooth_rfcomm_connection_reported_at_close
1312    extensions 983; // NotificationChannelClassification notification_channel_classification
1313    extensions 984; // HealthConnectPhrStorageStats health_connect_phr_storage_stats
1314    extensions 985; // HealthConnectRestrictedEcosystemStats health_connect_restricted_ecosystem_stats
1315    extensions 986; // HealthConnectEcosystemStats health_connect_ecosystem_stats
1316    extensions 987; // BackportedFixStatusReported backported_fix_status_reported
1317    extensions 988; // BluetoothLeConnection bluetooth_le_connection
1318    extensions 989; // CertificateTransparencyVerificationReported certificate_transparency_verification_reported
1319    extensions 990; // MediaSubscriptionChanged media_subscription_changed
1320    extensions 991; // HdmiPowerStateChangeOnActiveSourceLostToggled hdmi_power_state_change_on_active_source_lost_toggled
1321    extensions 992; // FederatedComputeTraceEventReported federated_compute_trace_event_reported
1322    extensions 993; // RangingSessionConfigured ranging_session_configured
1323    extensions 994; // RangingSessionStarted ranging_session_started
1324    extensions 995; // RangingSessionClosed ranging_session_closed
1325    extensions 996; // RangingTechnologyStarted ranging_technology_started
1326    extensions 997; // RangingTechnologyStopped ranging_technology_stopped
1327    extensions 998; // AppFunctionsRequestReported app_functions_request_reported
1328    extensions 999; // CameraStatusForCompatibilityChanged camera_status_for_compatibility_changed
1329    extensions 1000; // NotificationBundleInteracted notification_bundle_interacted
1330    extensions 1001; // SettingsExtApiReported settings_extapi_reported
1331    extensions 1002; // PopulationDensityProviderLoadingReported population_density_provider_loading_reported
1332    extensions 1003; // DensityBasedCoarseLocationsUsageReported density_based_coarse_locations_usage_reported
1333    extensions 1004; // DensityBasedCoarseLocationsProviderQueryReported density_based_coarse_locations_provider_query_reported
1334    extensions 1005; // WsNotificationApiUsageReported ws_notification_api_usage_reported
1335    extensions 1006; // AdServicesProcessLifecycleReported ad_services_process_lifecycle_reported
1336    extensions 1007; // AdServicesProcessStableFlagsReported ad_services_process_stable_flags_reported
1337    extensions 1008; // AdServicesFlagUpdateReported ad_services_flag_update_reported
1338    extensions 1009; // SqliteDiscreteOpEventReported sqlite_discrete_op_event_reported
1339    extensions 1010; // WifiSoftApCallbackOnClientsDisconnected wifi_soft_ap_callback_on_clients_disconnected
1340    extensions 1011; // DeviceStateAutoRotateSettingIssueReported device_state_auto_rotate_setting_issue_reported
1341    extensions 1012; // WsRemoteInteractionsApiUsageReported ws_remote_interactions_api_usage_reported
1342    extensions 1013; // ReportingWithDestinationPerformed reporting_with_destination_performed
1343    extensions 1014; // NumberOfTypesOfReportingUrlsReceived number_of_types_of_reporting_url_received
1344    extensions 1015; // ZramMaintenanceExecuted zram_maintenance_executed
1345    extensions 1016; // ProcessTextActionLaunchedReported process_text_action_launched_reported
1346    extensions 1017; // MediaRouterEventReported media_router_event_reported
1347    extensions 1018; // SetComponentEnabledSettingReported set_component_enabled_setting_reported
1348    extensions 1019; // BalProcessControllerAddBoundClientUidReported bal_process_controller_add_bound_client_uid_reported
1349    extensions 1020; // RoleSettingsFragmentActionReported role_settings_fragment_action_reported
1350    extensions 1021; // HearingDeviceActiveEventReported hearing_device_active_event_reported
1351    extensions 1022; // Reserved for b/377302168
1352    extensions 1023; // HealthConnectDataBackupInvoked health_connect_data_backup_invoked
1353    extensions 1024; // HealthConnectSettingsBackupInvoked health_connect_settings_backup_invoked
1354    extensions 1025; // HealthConnectDataRestoreInvoked health_connect_data_restore_invoked
1355    extensions 1026; // HealthConnectSettingsRestoreInvoked health_connect_settings_restore_invoked
1356    extensions 1027; // HealthConnectRestoreEligibilityChecked health_connect_restore_eligibility_checked
1357    extensions 1028; // BroadcastProcessed broadcast_processed
1358    extensions 1029; // ZramSetupExecuted zram_setup_executed
1359    extensions 1030; // SensitiveAppLockStateChanged sensitive_app_lock_state_changed
1360    extensions 1031; // MobileDataDownloadLatencyReported mobile_data_download_latency_reported
1361    extensions 1032; // OtpNotificationDisplayed otp_notification_displayed
1362    extensions 1033; // XrRecorderSessionStatusReported xr_recorder_session_status_reported
1363    extensions 1034; // EcmRestrictionQueryInCall ecm_restriction_query_in_call
1364    extensions 1035; // CallWithEcmInteraction call_with_ecm_restriction
1365    extensions 1036; // NfcExitFrameTableChanged nfc_exit_frame_table_changed
1366    extensions 1037; // IntentRedirectBlocked intent_redirect_blocked
1367    extensions 1038; // NfcAutoTransactReported nfc_auto_transact_reported
1368    extensions 1039; // AndroidGraphicsBitmapAllocated android_graphics_bitmap_allocated
1369    extensions 1040; // AdvancedProtectionStateChanged advanced_protection_state_changed
1370    extensions 1041; // AdvancedProtectionSupportDialogDisplayed advanced_protection_support_dialog_displayed
1371    extensions 1042; // ExtraIntentKeysCollectedOnServer extra_intent_keys_collected_on_server
1372    extensions 1043; // PhotopickerAppMediaCapabilitiesReported photopicker_app_media_capabilities_reported
1373    extensions 1044; // PhotopickerVideoTranscodingDetailsLogged photopicker_video_transcoding_details_logged
1374    extensions 1045; // BindServiceLockedWithBalFlagsReported bind_service_locked_with_bal_flags_reported
1375    extensions 1046; // AdservicesMeasurementBackgroundJobInfo adservices_measurement_background_job_info
1376    extensions 1047; // AppSearchVmPayloadStatsReported app_search_vm_payload_stats_reported
1377    extensions 1048; // ClipboardGetEventReported clipboard_get_event_reported
1378    extensions 9999; // Atom9999 atom_9999
1379
1380    // StatsdStats tracks platform atoms with ids up to 1500.
1381    // Update StatsdStats::kMaxPushedAtomId when atom ids here approach that value.
1382
1383    // Pulled events will start at field 10000.
1384    // Next: 10237
1385    oneof pulled {
1386        WifiBytesTransfer wifi_bytes_transfer = 10000 [(module) = "framework"];
1387        WifiBytesTransferByFgBg wifi_bytes_transfer_by_fg_bg = 10001 [(module) = "framework"];
1388        MobileBytesTransfer mobile_bytes_transfer =
1389                10002 [(module) = "framework", (truncate_timestamp) = true];
1390        MobileBytesTransferByFgBg mobile_bytes_transfer_by_fg_bg =
1391                10003 [(module) = "framework", (truncate_timestamp) = true];
1392        BluetoothBytesTransfer bluetooth_bytes_transfer = 10006 [(module) = "framework"];
1393        KernelWakelock kernel_wakelock = 10004 [(module) = "framework"];
1394        SubsystemSleepState subsystem_sleep_state = 10005 [(module) = "framework", (module) = "statsdtest"];
1395        CpuTimePerUid cpu_time_per_uid = 10009 [(module) = "framework", (module) = "statsdtest"];
1396        CpuTimePerUidFreq cpu_time_per_uid_freq =
1397                10010 [(module) = "framework", (module) = "statsd"];
1398        WifiActivityInfo wifi_activity_info = 10011 [(module) = "framework"];
1399        ModemActivityInfo modem_activity_info = 10012 [(module) = "framework"];
1400        BluetoothActivityInfo bluetooth_activity_info = 10007 [(module) = "framework"];
1401        ProcessMemoryState process_memory_state = 10013 [(module) = "framework"];
1402        SystemElapsedRealtime system_elapsed_realtime = 10014 [(module) = "framework"];
1403        SystemUptime system_uptime = 10015 [(module) = "framework"];
1404        CpuActiveTime cpu_active_time = 10016 [(module) = "framework", (module) = "statsdtest"];
1405        CpuClusterTime cpu_cluster_time = 10017 [(module) = "framework"];
1406        DiskSpace disk_space = 10018 [deprecated=true, (module) = "statsdtest"];
1407        RemainingBatteryCapacity remaining_battery_capacity = 10019 [(module) = "framework"];
1408        FullBatteryCapacity full_battery_capacity = 10020 [(module) = "framework"];
1409        Temperature temperature = 10021 [(module) = "framework", (module) = "statsdtest"];
1410        BinderCalls binder_calls = 10022 [(module) = "framework", (module) = "statsd"];
1411        BinderCallsExceptions binder_calls_exceptions = 10023 [(module) = "framework"];
1412        LooperStats looper_stats = 10024 [(module) = "framework", (module) = "statsd"];
1413        DiskStats disk_stats = 10025 [(module) = "framework"];
1414        DirectoryUsage directory_usage = 10026 [(module) = "framework"];
1415        AppSize app_size = 10027 [(module) = "framework"];
1416        CategorySize category_size = 10028 [(module) = "framework"];
1417        ProcStats proc_stats = 10029 [(module) = "framework"];
1418        BatteryVoltage battery_voltage = 10030 [(module) = "framework"];
1419        NumFingerprintsEnrolled num_fingerprints_enrolled = 10031 [(module) = "framework"];
1420        DiskIo disk_io = 10032 [(module) = "framework"];
1421        PowerProfile power_profile = 10033 [(module) = "framework"];
1422        ProcStatsPkgProc proc_stats_pkg_proc = 10034 [(module) = "framework"];
1423        ProcessCpuTime process_cpu_time = 10035 [(module) = "framework"];
1424        CpuTimePerThreadFreq cpu_time_per_thread_freq = 10037 [(module) = "framework"];
1425        OnDevicePowerMeasurement on_device_power_measurement = 10038 [(module) = "framework"];
1426        DeviceCalculatedPowerUse device_calculated_power_use = 10039 [(module) = "framework"];
1427        ProcessMemoryHighWaterMark process_memory_high_water_mark = 10042 [(module) = "framework"];
1428        BatteryLevel battery_level = 10043 [(module) = "framework"];
1429        BuildInformation build_information = 10044 [(module) = "framework"];
1430        BatteryCycleCount battery_cycle_count = 10045 [(module) = "framework"];
1431        DebugElapsedClock debug_elapsed_clock = 10046 [(module) = "framework"];
1432        DebugFailingElapsedClock debug_failing_elapsed_clock = 10047 [(module) = "framework"];
1433        NumFacesEnrolled num_faces_enrolled = 10048 [(module) = "framework"];
1434        RoleHolder role_holder = 10049 [(module) = "framework"];
1435        DangerousPermissionState dangerous_permission_state = 10050 [(module) = "framework"];
1436        TrainInfo train_info = 10051 [(module) = "statsd"];
1437        TimeZoneDataInfo time_zone_data_info = 10052 [(module) = "framework"];
1438        ExternalStorageInfo external_storage_info = 10053 [(module) = "framework"];
1439        GpuStatsGlobalInfo gpu_stats_global_info = 10054;
1440        GpuStatsAppInfo gpu_stats_app_info = 10055;
1441        SystemIonHeapSize system_ion_heap_size = 10056 [deprecated = true, (module) = "framework"];
1442        AppsOnExternalStorageInfo apps_on_external_storage_info = 10057 [(module) = "framework"];
1443        FaceSettings face_settings = 10058 [(module) = "framework"];
1444        CoolingDevice cooling_device = 10059 [(module) = "framework"];
1445        AppOps app_ops = 10060 [(module) = "framework"];
1446        ProcessSystemIonHeapSize process_system_ion_heap_size = 10061 [(module) = "framework"];
1447        SurfaceflingerStatsGlobalInfo surfaceflinger_stats_global_info = 10062;
1448        SurfaceflingerStatsLayerInfo surfaceflinger_stats_layer_info = 10063;
1449        ProcessMemorySnapshot process_memory_snapshot = 10064 [(module) = "framework"];
1450        VmsClientStats vms_client_stats = 10065 [(module) = "car"];
1451        NotificationRemoteViews notification_remote_views = 10066 [(module) = "framework"];
1452        DangerousPermissionStateSampled dangerous_permission_state_sampled =
1453                10067 [(module) = "framework"];
1454        GraphicsStats graphics_stats = 10068 [(module) = "hwui"];
1455        RuntimeAppOpAccess runtime_app_op_access = 10069 [(module) = "framework"];
1456        IonHeapSize ion_heap_size = 10070 [(module) = "framework"];
1457        PackageNotificationPreferences package_notification_preferences =
1458                10071 [(module) = "framework"];
1459        PackageNotificationChannelPreferences package_notification_channel_preferences =
1460                10072 [(module) = "framework"];
1461        PackageNotificationChannelGroupPreferences package_notification_channel_group_preferences =
1462                10073 [(module) = "framework"];
1463        GnssStats gnss_stats = 10074 [(module) = "framework"];
1464        AttributedAppOps attributed_app_ops = 10075 [(module) = "framework"];
1465        VoiceCallSession voice_call_session = 10076 [(module) = "telephony"];
1466        VoiceCallRatUsage voice_call_rat_usage = 10077 [(module) = "telephony"];
1467        SimSlotState sim_slot_state = 10078 [(module) = "telephony"];
1468        SupportedRadioAccessFamily supported_radio_access_family = 10079 [(module) = "telephony"];
1469        SettingSnapshot setting_snapshot = 10080 [(module) = "framework"];
1470        BlobInfo blob_info = 10081 [(module) = "framework"];
1471        DataUsageBytesTransfer data_usage_bytes_transfer =
1472                10082 [(module) = "framework", (truncate_timestamp) = true];
1473        BytesTransferByTagAndMetered bytes_transfer_by_tag_and_metered =
1474                10083 [(module) = "framework", (truncate_timestamp) = true];
1475        dnd.DNDModeProto dnd_mode_rule = 10084 [(module) = "framework"];
1476        GeneralExternalStorageAccessStats general_external_storage_access_stats =
1477            10085 [(module) = "mediaprovider"];
1478        IncomingSms incoming_sms = 10086 [(module) = "telephony"];
1479        OutgoingSms outgoing_sms = 10087 [(module) = "telephony"];
1480        CarrierIdTableVersion carrier_id_table_version = 10088 [(module) = "telephony"];
1481        DataCallSession data_call_session = 10089 [(module) = "telephony"];
1482        CellularServiceState cellular_service_state = 10090 [(module) = "telephony"];
1483        CellularDataServiceSwitch cellular_data_service_switch = 10091 [(module) = "telephony"];
1484        SystemMemory system_memory = 10092 [(module) = "framework"];
1485        ImsRegistrationTermination ims_registration_termination = 10093 [(module) = "telephony"];
1486        ImsRegistrationStats ims_registration_stats = 10094 [(module) = "telephony"];
1487        CpuTimePerClusterFreq cpu_time_per_cluster_freq = 10095 [(module) = "framework"];
1488        CpuCyclesPerUidCluster cpu_cycles_per_uid_cluster = 10096 [(module) = "framework"];
1489        DeviceRotatedData device_rotated_data = 10097 [(module) = "framework"];
1490        CpuCyclesPerThreadGroupCluster cpu_cycles_per_thread_group_cluster = 10098 [(module) = "framework"];
1491        MediaDrmActivityInfo media_drm_activity_info = 10099 [(module) = "media_metrics"];
1492        OemManagedBytesTransfer oem_managed_bytes_transfer = 10100 [(module) = "framework"];
1493        GnssPowerStats gnss_power_stats = 10101 [(module) = "framework"];
1494        TimeZoneDetectorState time_zone_detector_state = 10102 [(module) = "framework"];
1495        Keystore2StorageStats keystore2_storage_stats = 10103 [(module) = "framework"];
1496        RkpPoolStats rkp_pool_stats = 10104 [deprecated = true];
1497        ProcessDmabufMemory process_dmabuf_memory = 10105 [(module) = "framework"];
1498        PendingAlarmInfo pending_alarm_info = 10106 [(module) = "framework"];
1499        UserLevelHibernatedApps user_level_hibernated_apps = 10107 [(module) = "framework"];
1500        sysui.LauncherLayoutSnapshot launcher_layout_snapshot = 10108
1501            [(module) = "sysui"];
1502        GlobalHibernatedApps global_hibernated_apps = 10109 [(module) = "framework"];
1503        input.InputEventLatencySketch input_event_latency_sketch = 10110 [(module) = "input"];
1504        BatteryUsageStatsBeforeReset battery_usage_stats_before_reset =
1505            10111 [(module) = "framework"];
1506        BatteryUsageStatsSinceReset battery_usage_stats_since_reset =
1507            10112 [(module) = "framework"];
1508        BatteryUsageStatsSinceResetUsingPowerProfileModel
1509            battery_usage_stats_since_reset_using_power_profile_model =
1510            10113 [(module) = "framework"];
1511        InstalledIncrementalPackage installed_incremental_package = 10114 [(module) = "framework"];
1512        TelephonyNetworkRequests telephony_network_requests =
1513            10115 [(module) = "telephony", deprecated = true];
1514        AppSearchStorageInfo app_search_storage_info = 10116 [(module) = "appsearch"];
1515        VmStat vmstat = 10117 [(module) = "framework"];
1516        Keystore2KeyCreationWithGeneralInfo keystore2_key_creation_with_general_info =
1517                10118 [(module) = "framework"];
1518        Keystore2KeyCreationWithAuthInfo keystore2_key_creation_with_auth_info =
1519                10119 [(module) = "framework"];
1520        Keystore2KeyCreationWithPurposeAndModesInfo
1521                keystore2_key_creation_with_purpose_and_modes_info = 10120 [(module) = "framework"];
1522        Keystore2AtomWithOverflow keystore2_atom_with_overflow = 10121 [(module) = "framework"];
1523        Keystore2KeyOperationWithPurposeAndModesInfo
1524                keystore2_key_operation_with_purpose_and_modes_info =
1525                        10122 [(module) = "framework"];
1526        Keystore2KeyOperationWithGeneralInfo keystore2_key_operation_with_general_info =
1527                10123 [(module) = "framework"];
1528        RkpErrorStats rkp_error_stats = 10124 [(module) = "framework"];
1529        Keystore2CrashStats keystore2_crash_stats = 10125 [(module) = "framework"];
1530        VendorApexInfo vendor_apex_info = 10126 [(module) = "framework"];
1531        AccessibilityShortcutStats accessibility_shortcut_stats = 10127 [(module) = "framework"];
1532        AccessibilityFloatingMenuStats accessibility_floating_menu_stats =
1533            10128 [(module) = "framework"];
1534        DataUsageBytesTransferV2 data_usage_bytes_transfer_v2 = 10129 [(module) = "framework",
1535                (truncate_timestamp) = true];
1536        MediaCapabilities media_capabilities = 10130 [(module) = "framework"];
1537        CarWatchdogSystemIoUsageSummary car_watchdog_system_io_usage_summary =
1538            10131 [(module) = "car"];
1539        CarWatchdogUidIoUsageSummary car_watchdog_uid_io_usage_summary = 10132 [(module) = "car"];
1540        ImsRegistrationFeatureTagStats ims_registration_feature_tag_stats =
1541                10133 [(module) = "telephony"];
1542        RcsClientProvisioningStats rcs_client_provisioning_stats =
1543                10134 [(module) = "telephony"];
1544        RcsAcsProvisioningStats rcs_acs_provisioning_stats =
1545                10135 [(module) = "telephony"];
1546        SipDelegateStats sip_delegate_stats = 10136 [(module) = "telephony"];
1547        SipTransportFeatureTagStats sip_transport_feature_tag_stats =
1548                10137 [(module) = "telephony"];
1549        SipMessageResponse sip_message_response = 10138 [(module) = "telephony"];
1550        SipTransportSession sip_transport_session = 10139 [(module) = "telephony"];
1551        ImsDedicatedBearerListenerEvent ims_dedicated_bearer_listener_event =
1552                10140 [(module) = "telephony"];
1553        ImsDedicatedBearerEvent ims_dedicated_bearer_event = 10141 [(module) = "telephony"];
1554        ImsRegistrationServiceDescStats ims_registration_service_desc_stats =
1555                10142 [(module) = "telephony"];
1556        UceEventStats uce_event_stats = 10143 [(module) = "telephony"];
1557        PresenceNotifyEvent presence_notify_event = 10144 [(module) = "telephony"];
1558        GbaEvent gba_event = 10145 [(module) = "telephony"];
1559        PerSimStatus per_sim_status = 10146 [(module) = "telephony"];
1560        GpuWorkPerUid gpu_work_per_uid = 10147;
1561        PersistentUriPermissionsAmountPerPackage persistent_uri_permissions_amount_per_package =
1562            10148 [(module) = "framework"];
1563        SignedPartitionInfo signed_partition_info = 10149 [(module) = "framework"];
1564        PinnedFileSizesPerPackage pinned_file_sizes_per_package = 10150
1565            [(module) = "framework"];
1566        PendingIntentsPerPackage pending_intents_per_package = 10151
1567            [(module) = "framework"];
1568        UserInfo user_info = 10152 [(module) = "framework"];
1569        TelephonyNetworkRequestsV2 telephony_network_requests_v2 = 10153 [(module) = "telephony"];
1570        DeviceTelephonyProperties device_telephony_properties = 10154 [(module) = "telephony"];
1571        RemoteKeyProvisioningErrorCounts remote_key_provisioning_error_counts = 10155 [deprecated = true];
1572        SafetyState safety_state = 10156 [(module) = "permissioncontroller"];
1573        IncomingMms incoming_mms = 10157 [(module) = "mms"];
1574        OutgoingMms outgoing_mms = 10158 [(module) = "mms"];
1575        MultiUserInfo multi_user_info = 10160 [(module) = "framework"];
1576        NetworkBpfMapInfo network_bpf_map_info = 10161 [(module) = "connectivity"];
1577        OutgoingShortCodeSms outgoing_short_code_sms = 10162 [(module) = "telephony"];
1578        ConnectivityStateSample connectivity_state_sample = 10163 [(module) = "connectivity"];
1579        NetworkSelectionRematchReasonsInfo network_selection_rematch_reasons_info = 10164 [(module) = "connectivity"];
1580        agif.GameModeInfo game_mode_info = 10165 [(module) = "framework"];
1581        agif.GameModeConfiguration game_mode_configuration = 10166 [(module) = "framework"];
1582        agif.GameModeListener game_mode_listener = 10167 [(module) = "framework"];
1583        NetworkSliceRequestCountSample network_slice_request_count = 10168 [(module) = "connectivity"];
1584        WsTileSnapshot ws_tile_snapshot = 10169 [(module) = "wearservices"];
1585        WsActiveWatchFaceComplicationSetSnapshot ws_active_watch_face_complication_set_snapshot = 10170 [(module) = "wearservices"];
1586        ProcessState process_state = 10171 [(module) = "framework"];
1587        ProcessAssociation process_association = 10172 [(module) = "framework"];
1588        adpf.ADPFSystemComponentInfo adpf_system_component_info = 10173 [(module) = "framework"];
1589        sysui.NotificationMemoryUse notification_memory_use = 10174 [(module) = "sysui"];
1590        display.HdrCapabilities hdr_capabilities = 10175 [(module) = "framework"];
1591        WsFavouriteWatchFaceListSnapshot ws_favourite_watch_face_list_snapshot = 10176 [(module) = "wearservices"];
1592    }
1593
1594    // Pulled atom extensions.
1595    // The atom definitions are under atoms/<feature>/<feature>_extension_atoms.proto
1596    extensions 10159; // SandboxSdkStorage sandbox_sdk_storage
1597    extensions 10177; // QnsRatPreferenceMismatchInfo qns_rat_preference_mismatch_info
1598    extensions 10178; // QnsHandoverTimeMillis qns_handover_time_millis
1599    extensions 10179; // QnsHandoverPingpong qns_handover_pingpong
1600    extensions 10180; // EmergencyNumbersInfo emergency_numbers_info
1601    extensions 10181; // MteState mte_state
1602    extensions 10182; // SatelliteController satellite_controller
1603    extensions 10183; // SatelliteSession satellite_session
1604    extensions 10184; // SatelliteIncomingDatagram satellite_incoming_datagram
1605    extensions 10185; // SatelliteOutgoingDatagram satellite_outgoing_datagram
1606    extensions 10186; // SatelliteProvision satellite_provision
1607    extensions 10187; // SatelliteSosMessageRecommender satellite_sos_message_recommender
1608    extensions 10188; // UwbActivityInfo uwb_activity_info
1609    extensions 10189; // CachedAppsHighWaterMark cached_apps_high_watermark
1610    extensions 10190; // WifiAwareCapabilities wifi_aware_capabilities
1611    extensions 10191; // TouchpadUsage touchpad_usage
1612    extensions 10192; // DreamSettingSnapshot dream_setting_snapshot
1613    extensions 10193; // WifiModuleInfo wifi_module_info
1614    extensions 10194; // WifiSettingInfo wifi_setting_info
1615    extensions 10195; // WifiComplexSettingInfo wifi_complex_setting_info
1616    // Deprecated, use proxy_bytes_transfer_by_fg_bg (10200) instead.
1617    extensions 10196; // SysproxyBluetoothBytesTransfer sysproxy_bluetooth_bytes_transfer
1618    extensions 10197; // WsStandaloneModeSnapshot ws_standalone_mode_snapshot
1619    extensions 10198; // WifiConfiguredNetworkInfo wifi_configured_network_info;
1620    extensions 10199; // CpuPolicy cpu_policy
1621    extensions 10200; // ProxyBytesTransferByFgBg proxy_bytes_transfer_by_fg_bg
1622    extensions 10201; // ThermalHeadroomThresholds thermal_headroom_thresholds
1623    extensions 10202; // Reserved for b/308823939.
1624    extensions 10203; // Reserved for b/308823939.
1625    extensions 10204; // MobileBytesTransferByProcState mobile_bytes_transfer_by_proc_state
1626    extensions 10205; // ArtDeviceStatus art_device_status
1627    extensions 10206; // WsFavouriteWatchFaceSnapshot ws_favorite_watch_face_snapshot
1628    extensions 10207; // DataNetworkValidation data_network_validation
1629    // 10208 is reserved due to removing the old atom.
1630    extensions 10209; // BatteryUsageStatsPerUid battery_usage_stats_per_uid
1631    extensions 10210; // Reserved for b/339008431
1632    extensions 10211; // CarrierRoamingSatelliteSession carrier_roaming_satellite_session
1633    extensions 10212; // CarrierRoamingSatelliteControllerStats carrier_roaming_satellite_controller_stats
1634    extensions 10213; // ControllerStatsPerPackage controller_stats_per_package
1635    extensions 10214; // SatelliteEntitlement satellite_entitlement
1636    extensions 10215; // SatelliteConfigUpdater satellite_config_updater
1637    extensions 10216; // DevicePolicyManagementMode
1638    extensions 10217; // DevicePolicyPolicyState
1639    extensions 10218; // AdpfSessionSnapshot adpf_session_snapshot
1640    extensions 10219; // SatelliteAccessController satellite_access_controller
1641    extensions 10220; // AndroidHardwareHealthBattery android_hardware_health_battery
1642    extensions 10221; // CallStats call_stats
1643    extensions 10222; // CallAudioRouteStats call_audio_route_stats
1644    extensions 10223; // TelecomApiStats telecom_api_stats
1645    extensions 10224; // TelecomErrorStats telecom_error_stats
1646    extensions 10225; // WsPhotosWatchFaceFeatureSnapshot ws_photos_watch_face_feature_snapshot
1647    extensions 10226; // CommunalHubSnapshot communal_hub_snapshot
1648    extensions 10227; // WsWatchFaceCustomizationSnapshot ws_watch_face_customization_snapshot
1649    // 10228 is reserved due to removing the old atom
1650    extensions 10229; // PressureStallInformation pressure_stall_information
1651    extensions 10230; // FrameworkWakelockInfo framework_wakelock_info
1652    extensions 10231; // NotificationBundlePreferences notification_bundle_preferences
1653    extensions 10232; // ZramMmStatMmd zram_mm_stat_mmd
1654    extensions 10233; // ZramBdStatMmd zram_bd_stat_mmd
1655    extensions 10234; // WidgetMemoryStats
1656    extensions 10235; // TelecomEventStats telecom_event_stats
1657    extensions 10236; // AdvancedProtectionStateInfo advanced_protection_state_info
1658    extensions 99999; // Atom99999 atom_99999
1659
1660    // DO NOT USE field numbers above 100,000 in AOSP.
1661    // Field numbers 100,000 - 199,999 are reserved for non-AOSP (e.g. OEMs) to use.
1662    // Field numbers 200,000 and above are reserved for future use; do not use them at all.
1663    reserved 54, 58, 83, 360 to 363, 492, 597, 801, 936, 937, 938, 939, 10008, 10036, 10040, 10041, 10228, 21004, 21005;
1664}
1665
1666/*
1667 * *****************************************************************************
1668 * Below are all of the individual atoms that are logged by Android via statsd.
1669 *
1670 * RULES:
1671 *   - The field ids for each atom must start at 1, and count upwards by 1.
1672 *     Skipping field ids is not allowed.
1673 *   - These form an API, so renaming, renumbering or removing fields is
1674 *     not allowed between android releases.  (This is not currently enforced,
1675 *     but there will be a tool to enforce this restriction).
1676 *   - The types must be built-in protocol buffer types, namely, no sub-messages
1677 *     are allowed (yet).  The bytes type is also not allowed.
1678 *   - The CamelCase name of the message type should match the
1679 *     underscore_separated name as defined in Atom.
1680 *   - If an atom represents work that can be attributed to an app, there can
1681 *     be exactly one AttributionChain field. It must be field number 1.
1682 *   - A field that is a uid should be an int32 field, tagged with the
1683 *     [(is_uid) = true] annotation.
1684 *
1685 * CONVENTIONS:
1686 *   - Events are past tense. e.g. ScreenStateChanged, not ScreenStateChange.
1687 *   - If there is a UID, it goes first. Think in an object-oriented fashion.
1688 * *****************************************************************************
1689 */
1690
1691/**
1692 * This atom is deprecated starting in Q. Please use ThermalThrottlingSeverityStateChanged.
1693 * Logs when the Thermal service HAL notifies the throttling start/stop events.
1694 *
1695 * Logged from:
1696 *   frameworks/base/services/core/java/com/android/server/stats/StatsCompanionService.java
1697 */
1698message ThermalThrottlingStateChanged {
1699    // The type of temperature being reported (CPU, GPU, SKIN, etc)
1700    optional android.os.TemperatureTypeEnum sensor_type = 1;
1701
1702    // Throttling state, this field is DEPRECATED
1703    enum State {
1704        UNKNOWN = 0;
1705        START = 1; // START indicated that throttling was triggered.
1706        STOP = 2; // STOP indicates that throttling was cleared.
1707    }
1708    optional State state = 2;
1709
1710    optional float temperature = 3;
1711}
1712
1713/**
1714 * Track transcoding service usage
1715 * Logged from:
1716 *   packages/providers/MediaProvider/src/com/android/providers/media/TranscodeHelper.java
1717 * Next Tag: 14
1718 */
1719message TranscodingData {
1720    // Reason that leads to the type of access.
1721    enum AccessReason {
1722        UNKNOWN = 0;
1723        SYSTEM_DEFAULT = 1; // Default option
1724        SYSTEM_CONFIG = 2;  // Server-side/on-device config
1725        APP_MANIFEST = 3;  // media_capabilites.xml
1726        APP_COMPAT = 4;   // App compat framework
1727        APP_EXTRA = 5;   // ApplicationMediaCapabilities API in open()
1728    }
1729
1730    // Causes that leads to the failure of transcode.
1731    enum FailureCause {
1732        CAUSE_UNKNOWN = 0;
1733        TRANSCODING_SERVICE_ERROR = 1;     // Error from transcoding service.
1734        TRANSCODING_CLIENT_TIMEOUT = 2;    // Timeout from MediaProvider.
1735        TRANSCODING_SESSION_CANCELED = 3; // MediaProvider cancels the transcode.
1736    }
1737
1738    enum AccessType {
1739        HEVC_WRITE = 1;
1740        READ_DIRECT = 2;
1741        READ_CACHE = 3;
1742        READ_TRANSCODE = 4;
1743        WRITE_CACHE = 5; // App trying to write to transcodeid avc file in cache, this is rare.
1744        AVC_WRITE = 6;
1745    }
1746
1747    enum Result {
1748        SUCCESS = 0;
1749        FAIL = 1;
1750        UNDEFINED = 2;
1751    }
1752
1753    optional string requestor_package = 1;
1754    optional AccessType access_type = 2;
1755    optional int64 file_size_bytes = 3;
1756    optional Result transcode_result = 4;
1757    optional int64 transcode_duration_millis = 5; // The duration of transcoding.
1758    optional int64 file_duration_millis = 6; // The duration of the video file.
1759    optional int64 file_framerate_fps = 7; // The framerate of the video file.
1760    optional AccessReason access_reason = 8;
1761    optional int64 width = 9;
1762    optional int64 height = 10;
1763    optional bool hit_anr = 11;
1764    optional FailureCause failure_cause = 12;   // This field is valid only when fails.
1765    optional int64 transcoding_service_error_code = 13; // Error code from transcoding service.
1766}
1767
1768/**
1769 * Logs when the screen state changes.
1770 *
1771 * Logged from:
1772 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
1773 */
1774message ScreenStateChanged {
1775    // New screen state, from frameworks/proto_logging/stats/enums/view/enums.proto.
1776    optional android.view.DisplayStateEnum state = 1
1777            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
1778}
1779
1780/**
1781 * Part of the go/activity-security project. Logs information about activity
1782 * starts which would be blocked as part of the project.
1783 *
1784 * Logged from:
1785 *  - frameworks/base/services/core/java/com/android/server/wm/ActivityStarter.java
1786 *  - frameworks/base/services/core/java/com/android/server/wm/ActivityClientController.java
1787 */
1788message ActivityActionBlocked {
1789    enum Action {
1790        ACTION_UNSPECIFIED = 0;
1791        ACTIVITY_START_SAME_TASK = 1;
1792        ACTIVITY_START_DIFFERENT_TASK = 2;
1793        ACTIVITY_START_NEW_TASK = 3;
1794        FINISH_TASK = 4;
1795    }
1796    optional int32 caller_uid = 1 [(is_uid) = true];
1797    optional string caller_activity_class_name = 2;
1798    optional int32 target_task_top_activity_uid = 3 [(is_uid) = true];
1799    optional string target_task_top_activity_class_name = 4;
1800    optional bool target_task_is_different = 5;
1801    optional int32 target_activity_uid = 6 [(is_uid) = true];
1802    optional string target_activity_class_name = 7;
1803    optional string target_intent_action = 8;
1804    optional int32 target_intent_flags = 9;
1805
1806    optional Action action = 10;
1807    optional int32 version = 11;
1808    optional bool multi_window = 12;
1809    optional int32 bal_code = 13;
1810    optional string task_debug_info = 14;
1811}
1812
1813/**
1814 * Logs that the process state of the uid, as determined by ActivityManager
1815 * (i.e. the highest process state of that uid's processes) has changed.
1816 *
1817 * Logged from:
1818 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
1819 */
1820message UidProcessStateChanged {
1821    optional int32 uid = 1 [(state_field_option).primary_field = true, (is_uid) = true];
1822
1823    // The state, from frameworks/proto_logging/stats/enums/app_shared/app_enums.proto.
1824    optional android.app.ProcessStateEnum state = 2
1825            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
1826}
1827
1828/**
1829 * Logs process state change of a process, as per the activity manager.
1830 *
1831 * Logged from:
1832 *   frameworks/base/services/core/java/com/android/server/am/ProcessRecord.java
1833 */
1834message ProcessStateChanged {
1835    optional int32 uid = 1 [(is_uid) = true];
1836    optional string process_name = 2;
1837    optional string package_name = 3;
1838    // TODO: remove this when validation is done
1839    optional int64 version = 5;
1840    // The state, from frameworks/proto_logging/stats/enums/app_shared/app_enums.proto.
1841    optional android.app.ProcessStateEnum state = 4;
1842}
1843
1844/**
1845 * Logs how long a process was in each of the states.
1846 */
1847message ProcessState {
1848  optional int32 uid = 1 [(is_uid) = true];
1849  optional string process_name = 2;
1850
1851  // Measurement period. Can be used as denominator.
1852  // The gauge duration is not representative because we want uptime and also
1853  // the measurement usually ends at a time earlier than pull time.
1854  optional int32 measurement_start_uptime_seconds = 3;
1855  optional int32 measurement_end_uptime_seconds = 4;
1856  optional int32 measurement_duration_uptime_seconds = 5;
1857
1858  // Individual state breakdowns, summing up to total process runtime.
1859  // Flattening (instead of a dimensions - value pair) for two reasons:
1860  // 1. Makes metric filtering possible (can pull the entire process data based
1861  //    on a specific value.
1862  // 2. More efficient to encode (proto id serves as dimension).
1863  optional int32 top_seconds = 6;
1864  optional int32 fgs_seconds = 7;
1865  optional int32 bound_top_seconds = 8;
1866  optional int32 bound_fgs_seconds = 9;
1867  optional int32 important_fg_bg_seconds = 10;
1868  optional int32 cached_seconds = 11;
1869  optional int32 frozen_seconds = 12;
1870  optional int32 other_seconds = 13;
1871}
1872
1873/**
1874 * Logs association between processes.
1875 */
1876message ProcessAssociation {
1877  optional int32 client_uid = 1 [(is_uid) = true];
1878
1879  // If we only care about the package name name we do not need to upload this
1880  // (even though we should add it to the atom for filtering / sharding)
1881  optional string client_process = 2;
1882
1883  optional int32 service_uid = 3 [(is_uid) = true];
1884
1885  optional string service_name = 4;
1886
1887  optional string service_process = 10;
1888
1889  // Measurement period. Can be used as denominator.
1890  // The gauge duration is not representative because we want uptime and also
1891  // the measurement usually ends at a time earlier than pull time.
1892  optional int32 measurement_start_uptime_seconds = 5;
1893  optional int32 measurement_end_uptime_seconds = 6;
1894  optional int32 measurement_duration_uptime_seconds = 7;
1895
1896  optional int32 duration_seconds = 8;
1897
1898  // Number of times this association was established.
1899  optional int32 count = 9;
1900}
1901
1902/**
1903 * Logs when ActivityManagerService sleep state is changed.
1904 *
1905 * Logged from:
1906 *   frameworks/base/services/core/java/com/android/server/am/ActivityTaskManagerService.java
1907 */
1908message ActivityManagerSleepStateChanged {
1909    // TODO: import frameworks proto
1910    enum State {
1911        UNKNOWN = 0;
1912        ASLEEP = 1;
1913        AWAKE = 2;
1914    }
1915    optional State state = 1
1916            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
1917}
1918
1919/**
1920 * Logs when system memory state changes.
1921 *
1922 * Logged from:
1923 *   frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
1924 */
1925message MemoryFactorStateChanged {
1926    // TODO: import frameworks proto
1927    enum State {
1928        MEMORY_UNKNOWN = 0;
1929        NORMAL = 1;     // normal.
1930        MODERATE = 2;   // moderate memory pressure.
1931        LOW = 3;        // low memory.
1932        CRITICAL = 4;   // critical memory.
1933
1934    }
1935    optional State factor = 1 [
1936        (state_field_option).exclusive_state = true,
1937        (state_field_option).nested = false
1938    ];
1939}
1940
1941/**
1942 * Logs when app is using too much cpu, according to ActivityManagerService.
1943 *
1944 * Logged from:
1945 *   frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
1946 */
1947message ExcessiveCpuUsageReported {
1948    optional int32 uid = 1 [(is_uid) = true];
1949    optional string process_name = 2;
1950    optional string package_name = 3;
1951    // package version. TODO: remove this when validation is done
1952    optional int64 version = 4;
1953}
1954
1955/**
1956 * Logs when a cached process is killed, along with its pss.
1957 *
1958 * Logged from:
1959 *   frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
1960 */
1961message CachedKillReported {
1962    optional int32 uid = 1 [(is_uid) = true];
1963    optional string process_name = 2;
1964    optional string package_name = 3;
1965    // TODO: remove this when validation is done
1966    optional int64 version = 5;
1967    optional int64 pss = 4;
1968}
1969
1970/**
1971 * Logs the change in wifi health.
1972 *
1973 * Logged from:
1974 *   frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiDataStall.java
1975 */
1976message WifiHealthStatReported {
1977    enum Band {
1978        UNKNOWN = 0;
1979        // All of 2.4GHz band
1980        BAND_2G = 1;
1981        // Frequencies in the range of [5150, 5250) GHz
1982        BAND_5G_LOW = 2;
1983        // Frequencies in the range of [5250, 5725) GHz
1984        BAND_5G_MIDDLE = 3;
1985        // Frequencies in the range of [5725, 5850) GHz
1986        BAND_5G_HIGH = 4;
1987        // Frequencies in the range of [5925, 6425) GHz
1988        BAND_6G_LOW = 5;
1989        // Frequencies in the range of [6425, 6875) GHz
1990        BAND_6G_MIDDLE = 6;
1991        // Frequencies in the range of [6875, 7125) GHz
1992        BAND_6G_HIGH = 7;
1993    }
1994    // duration this stat is obtained over in milliseconds
1995    optional int32 duration_millis = 1;
1996    // whether wifi is classified as sufficient for the user's data traffic, determined
1997    // by whether the calculated throughput exceeds the average demand within |duration_millis|
1998    optional bool is_sufficient = 2;
1999    // whether cellular data is available
2000    optional bool is_cell_data_available = 3;
2001    // the Band bucket the connected network is on
2002    optional Band band = 4;
2003    // the Signal strength in the range of [-126, 0)
2004    optional int32 rssi = 5;
2005    // estimated tx throughput in kbps
2006    optional int32 tx_kbps = 6 [default = -1];
2007    // estimated rx throughput in kbps
2008    optional int32 rx_kbps = 7 [default = -1];
2009   // External scorer UID if external scorer is enabled. Otherwise WIFI_UID for
2010   // AOSP scorer.
2011   optional int32 scorer_uid = 8 [(is_uid) = true];
2012   // Whether or not Wi-Fi is predicted as usable by the scorer
2013   // Note: 'is_wifi_predicted_as_usable' is deprectaed by 'wifi_predicted_usability_state'.
2014   optional bool is_wifi_predicted_as_usable = 9;
2015   // Wi-Fi usability state as predicted by the scorer
2016   optional android.net.wifi.WifiPredictedUsabilityState wifi_predicted_usability_state = 10;
2017   // Wi-Fi Tx link speed
2018   optional int32 txLinkSpeed = 11;
2019   // Wi-Fi Rx link speed
2020   optional int32 rxLinkSpeed = 12;
2021   // Supported bandwidth in current connection channel
2022   optional android.net.wifi.WifiChannelWidth channel_width_mhz = 13;
2023}
2024
2025/**
2026 * Logged when wifi detects a significant change in connection failure rate.
2027 *
2028 * Logged from: frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiHealthMonitor.java
2029 *
2030 */
2031message WifiFailureStatReported {
2032    enum AbnormalityType {
2033        UNKNOWN = 0;
2034        SIGNIFICANT_INCREASE = 1;
2035        SIGNIFICANT_DECREASE = 2;
2036        SIMPLY_HIGH = 3;
2037    }
2038    enum FailureType {
2039        FAILURE_UNKNOWN = 0;
2040        FAILURE_CONNECTION = 1;
2041        FAILURE_ASSOCIATION_REJECTION = 2;
2042        FAILURE_ASSOCIATION_TIMEOUT = 3;
2043        FAILURE_AUTHENTICATION = 4;
2044        FAILURE_NON_LOCAL_DISCONNECTION = 5;
2045        FAILURE_SHORT_CONNECTION_DUE_TO_NON_LOCAL_DISCONNECTION = 6;
2046    }
2047    // Reason for uploading this stat
2048    optional AbnormalityType abnormality_type = 1;
2049    // The particular type of failure
2050    optional FailureType failure_type = 2;
2051    // How many times we have encountered this combination of AbnormalityType and FailureType
2052    optional int32 failure_count = 3;
2053}
2054
2055/**
2056 * Logs whether a Wifi connection attempt was successful and reasons for failure if it wasn't.
2057 *
2058 * Logged from:
2059 *   frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiMetrics.java
2060 */
2061message WifiConnectionResultReported {
2062    enum FailureCode {
2063        FAILURE_UNKNOWN = 0;
2064        FAILURE_ASSOCIATION_TIMEOUT = 1;
2065        FAILURE_ASSOCIATION_REJECTION = 2;
2066        FAILURE_AUTHENTICATION_GENERAL = 3;
2067        FAILURE_AUTHENTICATION_EAP = 4;
2068        FAILURE_DHCP = 5;
2069        FAILURE_NETWORK_DISCONNECTION = 6;
2070        FAILURE_ROAM_TIMEOUT = 7;
2071        FAILURE_WRONG_PASSWORD = 8;
2072        FAILURE_CONNECT_NETWORK_FAILED = 9;
2073        FAILURE_NEW_CONNECTION_ATTEMPT = 10;
2074        FAILURE_REDUNDANT_CONNECTION_ATTEMPT = 11;
2075        FAILURE_NETWORK_NOT_FOUND = 12;
2076        FAILURE_NO_RESPONSE = 13;
2077        FAILURE_OTHERS = 14;
2078    }
2079
2080    enum Trigger {
2081        UNKNOWN = 0;
2082        // Connection attempt was initiated manually.
2083        MANUAL = 1;
2084        // Automatic reconnection to the same network as connected previously.
2085        RECONNECT_SAME_NETWORK = 2;
2086        // Automatic reconnection to a saved network, but not the previous one.
2087        AUTOCONNECT_CONFIGURED_NETWORK = 3;
2088        // Automatic first connection attempt after device boot.
2089        AUTOCONNECT_BOOT = 4;
2090    }
2091
2092    // True represents a successful connection.
2093    optional bool connection_result = 1;
2094    // Reason for the connection failure.
2095    optional FailureCode failure_code = 2;
2096    // Scan RSSI before the connection attempt.
2097    optional int32 rssi = 3;
2098    // Time taken by this connection attempt.
2099    optional int32 connection_attempt_duration_millis = 4;
2100    // Band bucket the connected network is on.
2101    optional android.net.wifi.WifiBandBucket band = 5;
2102    // Authentication type.
2103    optional android.net.wifi.WifiAuthType auth_type = 6;
2104    // What triggered this connection attempt.
2105    optional Trigger trigger = 7;
2106    // Whether this network was used (successfully connected to) previously.
2107    optional bool network_used = 8;
2108    // Time taken from the last successful connection (or device boot if that's the first one).
2109    optional int32 time_since_last_connection_seconds = 9;
2110    // Whether the connection is carrier wifi.
2111    optional bool is_carrier_wifi = 10;
2112    // Whether the OOB pseeudonym is enabled for the current connection.
2113    optional bool is_oob_pseudonym_enabled = 11;
2114    // The client mode role for the connection, can use to determine the connection type.
2115    optional android.net.wifi.ClientModeRole role = 12;
2116    // The status code specific to each failure code.
2117    // - For FAILURE_ASSOCIATION_REJECTION, the value should be one of
2118    //   SupplicantStaIfaceHal.StaIfaceStatusCode.
2119    // - For FAILURE_NETWORK_DISCONNECTION, the value should be
2120    //   one of SupplicantStaIfaceHal.StaIfaceReasonCode.
2121    // - For FAILURE_AUTHENTICATION_EAP, the value should be a EAP failure code.
2122    // For all other failure codes, this should be 0.
2123    optional int32 failure_specific_status_code = 13;
2124    // Information only applicable for EAP networks.
2125    optional android.net.wifi.EapType eap_type = 14;
2126    optional android.net.wifi.EapInnerMethod eap_inner_method = 15;
2127    optional android.net.wifi.RoamingType passpoint_roaming_type = 16;
2128    // carrier ID of the network
2129    optional int32 carrier_id = 17;
2130    optional android.net.wifi.TofuConfiguration tofu_configuration = 18;
2131    // uid of the caller who initiated this connection
2132    optional int32 connection_uid = 19 [(is_uid) = true];
2133    // connection channel frequency
2134    optional int32 frequency = 20;
2135    // L2 connecting time duration in millis
2136    optional int64 l2_connecting_duration_ms = 21;
2137    // L3 connecting time duration in millis
2138    optional int64 l3_connecting_duration_ms = 22;
2139}
2140
2141/**
2142 * Logs when a Wifi connection drops.
2143 *
2144 * Logged from:
2145 *   frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiMetrics.java
2146 */
2147message WifiDisconnectReported {
2148    enum FailureCode {
2149        UNKNOWN = 0;
2150
2151        // Wifi supplicant failure reason codes (IEEE Std 802.11-2016, 9.4.1.7, Table 9-45).
2152        // See ISupplicantStaIfaceCallback.java:ReasonCode
2153        UNSPECIFIED = 1;
2154        PREV_AUTH_NOT_VALID = 2;
2155        DEAUTH_LEAVING = 3;
2156        DISASSOC_DUE_TO_INACTIVITY = 4;
2157        DISASSOC_AP_BUSY = 5;
2158        CLASS2_FRAME_FROM_NONAUTH_STA = 6;
2159        CLASS3_FRAME_FROM_NONASSOC_STA = 7;
2160        DISASSOC_STA_HAS_LEFT = 8;
2161        STA_REQ_ASSOC_WITHOUT_AUTH = 9;
2162        PWR_CAPABILITY_NOT_VALID = 10;
2163        SUPPORTED_CHANNEL_NOT_VALID = 11;
2164        BSS_TRANSITION_DISASSOC = 12;
2165        INVALID_IE = 13;
2166        MICHAEL_MIC_FAILURE = 14;
2167        FOURWAY_HANDSHAKE_TIMEOUT = 15;
2168        GROUP_KEY_UPDATE_TIMEOUT = 16;
2169        IE_IN_4WAY_DIFFERS = 17;
2170        GROUP_CIPHER_NOT_VALID = 18;
2171        PAIRWISE_CIPHER_NOT_VALID = 19;
2172        AKMP_NOT_VALID = 20;
2173        UNSUPPORTED_RSN_IE_VERSION = 21;
2174        INVALID_RSN_IE_CAPAB = 22;
2175        IEEE_802_1X_AUTH_FAILED = 23;
2176        CIPHER_SUITE_REJECTED = 24;
2177        TDLS_TEARDOWN_UNREACHABLE = 25;
2178        TDLS_TEARDOWN_UNSPECIFIED = 26;
2179        SSP_REQUESTED_DISASSOC = 27;
2180        NO_SSP_ROAMING_AGREEMENT = 28;
2181        BAD_CIPHER_OR_AKM = 29;
2182        NOT_AUTHORIZED_THIS_LOCATION = 30;
2183        SERVICE_CHANGE_PRECLUDES_TS = 31;
2184        UNSPECIFIED_QOS_REASON = 32;
2185        NOT_ENOUGH_BANDWIDTH = 33;
2186        DISASSOC_LOW_ACK = 34;
2187        EXCEEDED_TXOP = 35;
2188        STA_LEAVING = 36;
2189        END_TS_BA_DLS = 37;
2190        UNKNOWN_TS_BA = 38;
2191        TIMEOUT = 39;
2192        PEERKEY_MISMATCH = 45;
2193        AUTHORIZED_ACCESS_LIMIT_REACHED = 46;
2194        EXTERNAL_SERVICE_REQUIREMENTS = 47;
2195        INVALID_FT_ACTION_FRAME_COUNT = 48;
2196        INVALID_PMKID = 49;
2197        INVALID_MDE = 50;
2198        INVALID_FTE = 51;
2199        MESH_PEERING_CANCELLED = 52;
2200        MESH_MAX_PEERS = 53;
2201        MESH_CONFIG_POLICY_VIOLATION = 54;
2202        MESH_CLOSE_RCVD = 55;
2203        MESH_MAX_RETRIES = 56;
2204        MESH_CONFIRM_TIMEOUT = 57;
2205        MESH_INVALID_GTK = 58;
2206        MESH_INCONSISTENT_PARAMS = 59;
2207        MESH_INVALID_SECURITY_CAP = 60;
2208        MESH_PATH_ERROR_NO_PROXY_INFO = 61;
2209        MESH_PATH_ERROR_NO_FORWARDING_INFO = 62;
2210        MESH_PATH_ERROR_DEST_UNREACHABLE = 63;
2211        MAC_ADDRESS_ALREADY_EXISTS_IN_MBSS = 64;
2212        MESH_CHANNEL_SWITCH_REGULATORY_REQ = 65;
2213        MESH_CHANNEL_SWITCH_UNSPECIFIED = 66;
2214
2215        // ClientModeImpl error codes
2216        // Defined in /frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiMetrics.java
2217        IFACE_DESTROYED = 10000;
2218        WIFI_DISABLED = 10001;
2219        SUPPLICANT_DISCONNECTED = 10002;
2220        CONNECTING_WATCHDOG_TIMER = 10003;
2221        ROAM_WATCHDOG_TIMER = 10004;
2222
2223        // New reasons tracking disconnections initiated by wifi framework
2224        DISCONNECT_GENERAL = 10005; // Framework disconnect, generic reason
2225        // Disconnecting due to unspecified IP reachability lost.
2226        DISCONNECT_NUD_FAILURE_GENERIC = 10006;
2227        // Disconnecting due to IP reachability lost from roaming
2228        DISCONNECT_NUD_FAILURE_ROAM = 10007;
2229        // Disconnecting due to IP reachability lost from the CONFIRM command
2230        DISCONNECT_NUD_FAILURE_CONFIRM = 10008;
2231        // Disconnecting due to IP reachability lost from kernel check
2232        DISCONNECT_NUD_FAILURE_ORGANIC = 10009;
2233        // Connectivity no longer wants this network
2234        DISCONNECT_UNWANTED_BY_CONNECTIVITY = 10010;
2235        // Timeout creating the IP client
2236        DISCONNECT_CREATE_IP_CLIENT_TIMEOUT = 10011;
2237        DISCONNECT_IP_PROVISIONING_FAILURE = 10012; // IP provisioning failure
2238        DISCONNECT_P2P_REQUESTED_DISCONNECT = 10013; // Disconnect by P2P
2239        // Network is removed from the WifiConfigManager
2240        DISCONNECT_NETWORK_REMOVED = 10014;
2241        DISCONNECT_NETWORK_UNTRUSTED = 10015; // Network is marked as untrusted
2242        DISCONNECT_NETWORK_METERED = 10016; // Network is marked as metered
2243        DISCONNECT_TEMP_DISABLED = 10017; // Network is temporarily disabled
2244        DISCONNECT_PERM_DISABLED = 10018; // Network is permanently disabled
2245        DISCONNECT_CARRIER_OFFLOAD_DISABLED = 10019;
2246        // Disconnecting due to Passpoint terms and conditions page
2247        DISCONNECT_PASSPOINT_TAC = 10020;
2248        // Disconnecting due to issues with terms and conditions URL
2249        DISCONNECT_VNC_REQUEST = 10021;
2250        // Connected to a network that is already removed
2251        DISCONNECT_UNKNOWN_NETWORK = 10022;
2252        // User initiated a new connection
2253        DISCONNECT_NEW_CONNECTION_USER = 10023;
2254        // New connection triggered by non-user
2255        DISCONNECT_NEW_CONNECTION_OTHERS = 10024;
2256        // Wi-Fi 7 is enabled or disabled for this network
2257        DISCONNECT_NETWORK_WIFI7_TOGGLED = 10025;
2258    }
2259
2260    // How long the session lasted from successful connection to disconnect.
2261    optional int32 connected_duration_seconds = 1;
2262
2263    // Reason for the disconnect.
2264    optional FailureCode failure_code = 2;
2265
2266    // Band bucket the connected network was on.
2267    optional android.net.wifi.WifiBandBucket band = 3;
2268
2269    // Authentication type.
2270    optional android.net.wifi.WifiAuthType auth_type = 4;
2271
2272    // Last seen RSSI before the disconnect.
2273    optional int32 last_rssi = 5;
2274
2275    // Last seen link speed before the disconnect.
2276    optional int32 last_link_speed = 6;
2277
2278    // Time since the last RSSI and link speed update.
2279    // Useful for filtering out very old data
2280    optional int32 time_since_last_rssi_poll_seconds = 7;
2281
2282    // Time from the last NETWORK_CONNECTION_EVENT to the disconnect
2283    optional int32 connected_time_since_last_roam_seconds = 8;
2284
2285    // The purpose the of the connection
2286    optional android.net.wifi.ClientModeRole role = 9;
2287
2288    // The type of EAP authentication. Only applicable for EAP networks.
2289    optional android.net.wifi.EapType eap_type = 10;
2290
2291    optional android.net.wifi.EapInnerMethod eap_inner_method = 11;
2292
2293    optional android.net.wifi.RoamingType passpoint_roaming_type = 12;
2294
2295    // Carrier id of the network.
2296    optional int32 carrier_id = 13;
2297
2298    // uid of the caller who initiated this connection
2299    optional int32 connection_uid = 14 [(is_uid) = true];
2300}
2301
2302/**
2303 * Logs when Wifi connection is established or dropped.
2304 *
2305 * Logged from:
2306 *   frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiMetrics.java
2307 */
2308message WifiConnectionStateChanged {
2309    optional bool is_connected = 1 [
2310        (state_field_option).exclusive_state = true,
2311        (state_field_option).nested = false
2312    ];
2313
2314    // Band bucket the connected network was on.
2315    // Filled for both connected and disconnected cases.
2316    optional android.net.wifi.WifiBandBucket band = 2;
2317
2318    // Authentication type.
2319    // Filled for both connected and disconnected cases.
2320    optional android.net.wifi.WifiAuthType auth_type = 3;
2321}
2322
2323/**
2324 * Logged when wifi peer to peer connection happens
2325 */
2326message WifiP2pConnectionReported {
2327    enum Type {
2328        UNSPECIFIED = 0;
2329        // fresh new connection.
2330        FRESH = 1;
2331        // reinvoke a group.
2332        REINVOKE = 2;
2333        // create a group with the current device as the group owner locally.
2334        LOCAL = 3;
2335        // create a group or join a group with config.
2336        FAST = 4;
2337    }
2338    enum FailureCode {
2339        // Failure is unknown.
2340        UNKNOWN = 0;
2341        // No failure.
2342        NONE = 1;
2343        // Timeout for current connecting request.
2344        TIMEOUT = 2;
2345        // The connecting request is canceled by the user.
2346        CANCEL = 3;
2347        // Provision discovery failure, e.g. no pin code, timeout, rejected by the peer.
2348        PROV_DISC_FAIL = 4;
2349        // Invitation failure, e.g. rejected by the peer.
2350        INVITATION_FAIL = 5;
2351        // Incoming request is rejected by the user.
2352        USER_REJECT = 6;
2353        // New connection request is issued before ending previous connecting request.
2354        NEW_CONNECTION_ATTEMPT = 7;
2355        // Group has been removed
2356        GROUP_REMOVED = 8;
2357        // Creating group failed
2358        CREATE_GROUP_FAILED = 9;
2359    }
2360    enum GroupRole {
2361        GROUP_UNKNOWN = 0;
2362        GROUP_OWNER = 1;
2363        GROUP_CLIENT = 2;
2364    }
2365    enum Band {
2366        // Unknown band/frequency
2367        BAND_UNKNOWN = 0;
2368        // any band
2369        BAND_AUTO = 1;
2370        // With 2G band
2371        BAND_2G = 2;
2372        // With 5G band
2373        BAND_5G = 3;
2374        // With 6G band
2375        BAND_6G = 4;
2376        // With a specific frequency
2377        BAND_FREQUENCY = 5;
2378    }
2379    // Type of the connection.
2380    optional Type type = 1;
2381    // Duration to connect in millis.
2382    optional int32 latency_ms= 2;
2383    // Duration to connect in step size of 200 millis.
2384    optional int32 latency_200ms= 3;
2385    // Failure code
2386    optional FailureCode failure_code = 4;
2387    // Group role. This could be unknown with connect() call when the WifiConfig doesn't have the
2388    // credential.
2389    optional GroupRole group_role = 5;
2390    // Group band preference
2391    optional Band band = 6;
2392    // Group frequency in MHz if positive. Otherwise, no frequency preference.
2393    optional int32 frequency_mhz = 7;
2394    // STA mode channel frequency. 0 means unknown.
2395    optional int32 sta_frequency_mhz = 8;
2396    // The uid of the app that initiates the connection.
2397    optional int32 uid = 9 [(is_uid) = true];
2398    // if the country code is in the world mode
2399    optional bool is_country_code_world_mode = 10;
2400    // fallback to negotiation if device receives invitation response status code "information is
2401    // currently unavailable"
2402    optional bool fallback_to_negotiation_on_invite_status_info_unavailable = 11;
2403    // The try count of connection
2404    optional int32 try_count = 12;
2405    // The Attribution tag to identify the caller
2406    optional string attribution_tag = 13;
2407}
2408
2409/**
2410 * Logged when wifi setup failure or crash reported
2411 */
2412message WifiSetupFailureCrashReported {
2413    enum Type {
2414        UNKNOWN = 0;
2415        // Wifi HAL crash
2416        HAL_CRASH = 1;
2417        // Wificond crash
2418        WIFICOND_CRASH = 2;
2419        // Supplicant crash
2420        SUPPLICANT_CRASH = 3;
2421        // hostapd crash
2422        HOSTAPD_CRASH = 4;
2423        // HAL error on WifiNative.setupInterfaceForClientMode
2424        CLIENT_FAILURE_HAL = 5;
2425        // Wificond error on WifiNative.setupInterfaceForClientMode
2426        CLIENT_FAILURE_WIFICOND = 6;
2427        // Supplicant error on WifiNative.setupInterfaceForClientMode
2428        CLIENT_FAILURE_SUPPLICANT = 7;
2429        // HAL error on WifiNative.setupInterfaceForSoftApMode
2430        SOFT_AP_FAILURE_HAL = 8;
2431        // Wificond error on WifiNative.setupInterfaceForSoftApMode
2432        SOFT_AP_FAILURE_WIFICOND = 9;
2433        // Hostapd error on WifiNative.setupInterfaceForSoftApMode
2434        SOFT_AP_FAILURE_HOSTAPD = 10;
2435        // HAL error on WifiP2pNative.setupInterface
2436        P2P_FAILURE_HAL = 11;
2437        // Supplicant error on WifiP2pNative.setupInterface
2438        P2P_FAILURE_SUPPLICANT = 12;
2439    }
2440    // Type of failure
2441    optional Type type= 1;
2442}
2443
2444
2445/*
2446 * Logs metrics on bedtime mode state changed
2447 *
2448 * Logged From:
2449 *  frameworks/opt/wear/src/com/google/android/clockwork/healthservices/BedtimeModeController.java
2450*/
2451message BedtimeModeStateChanged {
2452    enum BedTimeModeState {
2453        BEDTIME_OFF = 0;
2454        BEDTIME_ON = 1;
2455    }
2456    // Log the bedtime mode state
2457    optional BedTimeModeState bedtime_mode_state = 1;
2458    enum State {
2459        OFF = 0;
2460        ON = 1;
2461    }
2462    // Current Wifi state when bedtime mode is toggled
2463    optional State current_wifi_state = 2;
2464
2465    // Current LTE state when bedtime mode is toggled
2466    optional State current_cellular_state = 3;
2467
2468    // Current BT state when bedtime mode is toggled
2469    optional State current_bluetooth_state = 4;
2470
2471    // Current Battery level. Should be in [0, 100].
2472    optional int32 battery_level = 5;
2473}
2474
2475/**
2476 * Logs when memory stats of a process is reported.
2477 *
2478 * Logged from:
2479 *   frameworks/base/services/core/java/com/android/server/am/ProcessRecord.java
2480 */
2481message ProcessMemoryStatReported {
2482    optional int32 uid = 1 [(is_uid) = true];
2483    optional string process_name = 2;
2484    optional string package_name = 3;
2485    //TODO: remove this when validation is done
2486    optional int64 version = 9;
2487    optional int64 pss = 4;
2488    optional int64 uss = 5;
2489    optional int64 rss = 6;
2490    enum Type {
2491        ADD_PSS_INTERNAL_SINGLE = 0;
2492        ADD_PSS_INTERNAL_ALL_MEM = 1;
2493        ADD_PSS_INTERNAL_ALL_POLL = 2;
2494        ADD_PSS_EXTERNAL = 3;
2495        ADD_PSS_EXTERNAL_SLOW = 4;
2496    }
2497    optional Type type = 7;
2498    optional int64 duration_millis = 8;
2499
2500    // The types of the components this process is hosting at the moment this
2501    // snapshot is taken.
2502    // See the available types in HostingComponentType in AppProtoEnums.
2503    optional int32 current_hosting_component_types = 10;
2504
2505    // The historical types of the components this process is or was hosting
2506    // since it's born.
2507    // See the available types in HostingComponentType in AppProtoEnums.
2508    optional int32 historical_hosting_component_types = 11;
2509}
2510
2511/**
2512 * Logs that a process started, finished, crashed, or ANRed.
2513 *
2514 * Logged from:
2515 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
2516 */
2517message ProcessLifeCycleStateChanged {
2518    optional int32 uid = 1 [(is_uid) = true];
2519
2520    // The process name (usually same as the app name).
2521    optional string process_name = 2;
2522
2523    // What lifecycle state the process changed to.
2524    // This enum is specific to atoms.proto.
2525    enum State {
2526        FINISHED = 0;
2527        STARTED = 1;
2528        CRASHED = 2;
2529    }
2530    optional State state = 3;
2531}
2532
2533/**
2534 * Logs when the ble scan state changes.
2535 *
2536 * Logged from:
2537 *   packages/apps/Bluetooth/src/com/android/bluetooth/le_scan/AppScanStats.java
2538 */
2539message BleScanStateChanged {
2540    repeated AttributionNode attribution_node = 1
2541            [(state_field_option).primary_field_first_uid = true];
2542
2543    enum State {
2544        OFF = 0;
2545        ON = 1;
2546        // RESET indicates all ble stopped. Used when it (re)starts (e.g. after it crashes).
2547        RESET = 2;
2548    }
2549    optional State state = 2 [
2550        (state_field_option).exclusive_state = true,
2551        (state_field_option).default_state_value = 0 /* State.OFF */,
2552        (state_field_option).trigger_state_reset_value = 2 /* State.RESET */,
2553        (state_field_option).nested = true
2554    ];
2555
2556    // Does the scan have a filter.
2557    optional bool is_filtered = 3 [(state_field_option).primary_field = true];
2558    // Whether the scan is a CALLBACK_TYPE_FIRST_MATCH scan. Called 'background' scan internally.
2559    optional bool is_first_match = 4 [(state_field_option).primary_field = true];
2560    // Whether the scan set to piggy-back off the results of other scans (SCAN_MODE_OPPORTUNISTIC).
2561    optional bool is_opportunistic = 5 [(state_field_option).primary_field = true];
2562}
2563
2564/**
2565 * Logs reporting of a ble scan finding results.
2566 *
2567 * Logged from:
2568 *   packages/apps/Bluetooth/src/com/android/bluetooth/le_scan/AppScanStats.java
2569 */
2570// TODO: Consider also tracking per-scanner-id.
2571message BleScanResultReceived {
2572    repeated AttributionNode attribution_node = 1;
2573
2574    // Number of ble scan results returned.
2575    optional int32 num_results = 2;
2576}
2577
2578/**
2579 * Logs when a sensor state changes.
2580 *
2581 * Logged from:
2582 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
2583 */
2584message SensorStateChanged {
2585    repeated AttributionNode attribution_node = 1;
2586
2587    // The id (int) of the sensor.
2588    optional int32 sensor_id = 2;
2589
2590    enum State {
2591        OFF = 0;
2592        ON = 1;
2593    }
2594    optional State state = 3;
2595}
2596
2597/**
2598 * Logs when GPS signal quality.
2599 *
2600 * Logged from:
2601 *   /frameworks/base/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
2602 */
2603message GpsSignalQualityChanged {
2604    optional android.server.location.GpsSignalQualityEnum level = 1;
2605}
2606
2607
2608/**
2609 * Logs when a sync manager sync state changes.
2610 *
2611 * Logged from:
2612 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
2613 */
2614message SyncStateChanged {
2615    repeated AttributionNode attribution_node = 1;
2616
2617    // Name of the sync (as named in the app). Can be chosen at run-time.
2618    optional string sync_name = 2;
2619
2620    enum State {
2621        OFF = 0;
2622        ON = 1;
2623    }
2624    optional State state = 3;
2625}
2626
2627/*
2628 * Deferred job stats.
2629 *
2630 * Logged from:
2631 *   frameworks/base/services/core/java/com/android/server/job/JobSchedulerService.java
2632*/
2633message DeferredJobStatsReported {
2634    repeated AttributionNode attribution_node = 1;
2635
2636    // Number of jobs deferred.
2637    optional int32 num_jobs_deferred = 2;
2638
2639    // Time since the last job runs.
2640    optional int64 time_since_last_job_millis = 3;
2641}
2642
2643/**
2644 * Logs when a job scheduler job state changes.
2645 *
2646 * Logged from:
2647 *   frameworks/base/services/core/java/com/android/server/job/JobSchedulerService.java
2648 *   frameworks/base/services/core/java/com/android/server/job/JobServiceContext.java
2649 *
2650 * Next tag: 57
2651 */
2652message ScheduledJobStateChanged {
2653    repeated AttributionNode attribution_node = 1;
2654
2655    // Name of the job (as named in the app)
2656    optional string job_name = 2;
2657
2658    enum State {
2659        // A job started executing (passed through the STARTED state) and has finished.
2660        FINISHED = 0;
2661        // A scheduled job has just started executing.
2662        STARTED = 1;
2663        // An app just scheduled this job to be executed at some point in the future.
2664        SCHEDULED = 2;
2665        // The job was SCHEDULED but cancelled before it started executing (so it never went
2666        // through the STARTED state).
2667        CANCELLED = 3;
2668    }
2669    optional State state = 3;
2670
2671    // The internal reason a job has stopped.
2672    // This is only applicable when the state is FINISHED.
2673    // The default value is INTERNAL_STOP_REASON_UNKNOWN.
2674    optional android.app.job.InternalStopReasonEnum internal_stop_reason = 4;
2675
2676    // The publicly returned reason onStopJob() was called.
2677    // This is only applicable when the state is FINISHED, but may be undefined if
2678    // JobService.onStopJob() was never called for the job.
2679    // The default value is STOP_REASON_UNDEFINED.
2680    optional android.app.job.StopReasonEnum public_stop_reason = 17;
2681
2682    // The standby bucket of the app that scheduled the job. These match the framework constants
2683    // defined in JobSchedulerService.java with the addition of UNKNOWN using -1, as ACTIVE is
2684    // already assigned 0.
2685    enum Bucket {
2686        UNKNOWN = -1;
2687        ACTIVE = 0;
2688        WORKING_SET = 1;
2689        FREQUENT = 2;
2690        RARE = 3;
2691        NEVER = 4;
2692        RESTRICTED = 5;
2693        EXEMPTED = 6;
2694    }
2695    optional Bucket standby_bucket = 5 [default = UNKNOWN];
2696
2697    // On T- builds, this is the job id (as assigned by the app).
2698    // On U+ builds, this is generated by the system, factoring in the job's namespace.
2699    optional int64 job_id = 6;
2700
2701    // One flag for each of the API constraints defined by JobScheduler. Does not include implicit
2702    // constraints as they are always assumed to be set.
2703    optional bool has_charging_constraint = 7;
2704    optional bool has_battery_not_low_constraint = 8;
2705    optional bool has_storage_not_low_constraint = 9;
2706    optional bool has_timing_delay_constraint = 10;
2707    optional bool has_deadline_constraint = 11;
2708    optional bool has_idle_constraint = 12;
2709    optional bool has_connectivity_constraint = 13;
2710    optional bool has_content_trigger_constraint = 14;
2711    optional bool is_prefetch = 18;
2712    optional bool is_periodic = 34;
2713    optional bool has_flex_constraint = 47;
2714
2715    // True if the app has requested this run as an expedited job.
2716    optional bool is_requested_expedited_job = 15;
2717    // True if the job is running as an expedited job. Only valid for STARTED and FINISHED states.
2718    optional bool is_running_as_expedited_job = 16;
2719
2720    // True if the app has requested this run as a user initiated job.
2721    optional bool is_requested_as_user_initiated_job = 32;
2722    // True if the job is running as a user initiated job. Only valid for STARTED/FINISHED states.
2723    optional bool is_running_as_user_initiated_job = 33;
2724
2725    // The priority set by the app (via JobInfo.Builder.setPriority()).
2726    optional int32 requested_priority = 19;
2727    // The priority JobScheduler ran the job at. Only valid for STARTED and FINISHED states.
2728    optional int32 effective_priority = 20;
2729
2730    // Number of times JobScheduler has tried to run this particular job. This value is incremented
2731    // when a job is stopped and rescheduled for various reasons (lost network, constraints no
2732    // longer satisfied, etc). For periodic jobs, this value is reset after a successful run.
2733    optional int32 num_previous_attempts = 21;
2734
2735    // The deadline that the Job has requested.
2736    // This is only valid if has_deadline_constraint is true.
2737    optional int64 deadline_ms = 22;
2738
2739    // The delay that the Job has requested.
2740    // This is only valid if has_timing_delay_constraint is true.
2741    optional int64 delay_ms = 35;
2742
2743    // True if the Job hit its deadline
2744    optional bool is_deadline_constraint_satisfied = 23;
2745
2746    optional bool is_charging_constraint_satisfied = 24;
2747
2748    optional bool is_battery_not_low_constraint_satisfied = 25;
2749
2750    optional bool is_storage_not_low_constraint_satisfied = 26;
2751
2752    optional bool is_timing_delay_constraint_satisfied = 27;
2753
2754    optional bool is_idle_constraint_satisfied = 28;
2755
2756    optional bool is_connectivity_constraint_satisfied = 29;
2757
2758    optional bool is_content_trigger_constraint_satisfied = 30;
2759
2760    optional bool is_flex_constraint_satisfied = 48;
2761
2762    // The amount of time that elapsed between the job being scheduled (state = SCHEDULED)
2763    // and it being started (state = STARTED). Persisted jobs loaded at boot are considered
2764    // to be scheduled at boot, so all values are within the current boot cycle. Periodic
2765    // and other rescheduled jobs are considered to be newly scheduled and therefore this
2766    // value reflects the time since the most recent (re)schedule.
2767    // This is only valid for the STARTED and FINISHED states.
2768    optional int64 job_start_latency_ms = 31;
2769
2770    // The amount of data the app estimated it would download.
2771    // This is only valid if has_connectivity_constraint is true.
2772    // If the job has JobWorkItems attached, this value will include the estimates from the items.
2773    optional int64 estimated_download_bytes = 36;
2774
2775    // The amount of data the app estimated it would upload.
2776    // This is only valid if has_connectivity_constraint is true.
2777    // If the job has JobWorkItems attached, this value will include the estimates from the items.
2778    optional int64 estimated_upload_bytes = 37;
2779
2780    // The number of JobWorkItems the app has attached to this job but not completed
2781    // (by calling JobParameters.completeWork()).
2782    optional int32 num_uncompleted_work_items = 38;
2783
2784    // Proc state of the UID of the logged event
2785    optional android.app.ProcessStateEnum proc_state = 39 [default = PROCESS_STATE_UNKNOWN];
2786
2787    // Hash of the namespace set via JobScheduler.forNamespace(String).
2788    optional string namespace_hash = 40;
2789
2790    // System estimated/measured bytes that the job
2791    // downloaded over its runtime. Only valid for FINISHED
2792    // state. We measure here for the SOURCE UID
2793    optional int64 system_measured_source_download_bytes = 41;
2794
2795    // System estimated/measured uploaded bytes that the job
2796    // uploaded over its runtime. Only valid for FINISHED
2797    // state. We measure here for the SOURCE UID
2798    optional int64 system_measured_source_upload_bytes = 42;
2799
2800    // System estimated/measured bytes that the job
2801    // downloaded over its runtime. Only valid for FINISHED
2802    // state. We measure here for the CALLING UID
2803    optional int64 system_measured_calling_download_bytes = 43;
2804
2805    // System estimated/measured uploaded bytes that the job
2806    // uploaded over its runtime. Only valid for FINISHED
2807    // state. We measure here for the CALLING UID
2808    optional int64 system_measured_calling_upload_bytes = 44;
2809
2810    // Interval for the job to recur when it is set as periodic.
2811    // Valid only if is_periodic is true
2812    optional int64 periodic_job_interval_ms = 45;
2813
2814    // Flex interval for the periodic job. This value is set via the second
2815    // parameter of JobInfo.Builder.setPeriodic(long, long). The job can
2816    // execute at any time in a window flex length at the end of the period.
2817    // Valid only if is_periodic is true
2818    optional int64 periodic_job_flex_interval_ms = 46;
2819
2820    // Whether transport preference logic can be applied to this job with flex policy
2821    optional bool can_apply_transport_affinities = 49;
2822
2823    // The number of flexible job constraints being applied to the job.
2824    // num_required_flex_constraints = num_applied_flex_constraints - num_dropped_flex_constraints.
2825    optional int32 num_applied_flex_constraints = 50;
2826
2827    // The number of required flexible job constraints that have been dropped for this job.
2828    // num_required_flex_constraints = num_applied_flex_constraints - num_dropped_flex_constraints.
2829    optional int32 num_dropped_flex_constraints = 51;
2830
2831    // Trace tag set via JobInfo.Builder.setTraceTag(). Basic PII filtering has been applied,
2832    // but further filtering should be done by clients.
2833    optional string filtered_trace_tag = 52;
2834
2835    // Set of tags set by the app to characterize the work being done. Set via
2836    // JobInfo.Builder.addDebugTag(). Basic PII filtering has been applied,
2837    // but further filtering should be done by clients.
2838    repeated string filtered_debug_tags = 53;
2839
2840    // Number of reschedules due to job being abandoned.
2841    optional int32 num_reschedules_due_to_abandonment = 54;
2842
2843    // Back off policy applied to the job that gets rescheduled.
2844    // This is defined in JobInfo.java (See JobInfo.BACKOFF_POLICY_*).
2845    enum BackOffPolicyType {
2846        UNKNOWN_POLICY = 0;
2847        LINEAR = 1;
2848        EXPONENTIAL = 2;
2849    }
2850    // Back off policy applied to the job that gets rescheduled.
2851    optional BackOffPolicyType back_off_policy_type  = 55;
2852    // Is back off policy restriction applied due to abandoned job.
2853    optional bool is_back_off_policy_restriction_applied = 56;
2854}
2855
2856/**
2857 * Logs when the audio state changes.
2858 *
2859 * Logged from:
2860 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
2861 */
2862message AudioStateChanged {
2863    repeated AttributionNode attribution_node = 1;
2864
2865    enum State {
2866        OFF = 0;
2867        ON = 1;
2868        // RESET indicates all audio stopped. Used when it (re)starts (e.g. after it crashes).
2869        RESET = 2;
2870    }
2871    optional State state = 2;
2872}
2873
2874/**
2875 * Logs when the video codec state changes.
2876 *
2877 * Logged from:
2878 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
2879 */
2880message MediaCodecStateChanged {
2881    repeated AttributionNode attribution_node = 1;
2882
2883    enum State {
2884        OFF = 0;
2885        ON = 1;
2886        // RESET indicates all mediaCodec stopped. Used when it (re)starts (e.g. after it crashes).
2887        RESET = 2;
2888    }
2889    optional State state = 2;
2890}
2891
2892/**
2893 * Logs when the flashlight state changes.
2894 *
2895 * Logged from:
2896 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
2897 */
2898message FlashlightStateChanged {
2899    repeated AttributionNode attribution_node = 1;
2900
2901    enum State {
2902        OFF = 0;
2903        ON = 1;
2904        // RESET indicates all flashlight stopped. Used when it (re)starts (e.g. after it crashes).
2905        RESET = 2;
2906    }
2907    optional State state = 2;
2908}
2909
2910/**
2911 * Logs when the camera state changes.
2912 *
2913 * Logged from:
2914 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
2915 */
2916message CameraStateChanged {
2917    repeated AttributionNode attribution_node = 1;
2918
2919    enum State {
2920        OFF = 0;
2921        ON = 1;
2922        // RESET indicates all camera stopped. Used when it (re)starts (e.g. after it crashes).
2923        RESET = 2;
2924    }
2925    optional State state = 2;
2926}
2927
2928/**
2929 * Logs that the state of a wakelock (per app and per wakelock name) has changed.
2930 *
2931 * Logged from:
2932 *   TODO
2933 */
2934message WakelockStateChanged {
2935    repeated AttributionNode attribution_node = 1
2936            [(state_field_option).primary_field_first_uid = true];
2937
2938    // The type (level) of the wakelock; e.g. a partial wakelock or a full wakelock.
2939    // From frameworks/proto_logging/stats/enums/os/enums.proto.
2940    optional android.os.WakeLockLevelEnum type = 2 [(state_field_option).primary_field = true];
2941
2942    // The wakelock tag (Called tag in the Java API, sometimes name elsewhere).
2943    optional string tag = 3 [(state_field_option).primary_field = true];
2944
2945    enum State {
2946        RELEASE = 0;
2947        ACQUIRE = 1;
2948        CHANGE_RELEASE = 2;
2949        CHANGE_ACQUIRE = 3;
2950    }
2951    optional State state = 4 [
2952        (state_field_option).exclusive_state = true,
2953        (state_field_option).default_state_value = 0,
2954        (state_field_option).nested = true
2955    ];
2956
2957    optional android.app.ProcessStateEnum process_state = 5 [default = PROCESS_STATE_UNKNOWN];
2958}
2959
2960/**
2961 * Logs when a partial wakelock is considered 'long' (over 1 min).
2962 *
2963 * Logged from:
2964 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
2965 */
2966message LongPartialWakelockStateChanged {
2967    repeated AttributionNode attribution_node = 1;
2968
2969    // The wakelock tag (Called tag in the Java API, sometimes name elsewhere).
2970    optional string tag = 2;
2971
2972    // TODO: I have no idea what this is.
2973    optional string history_tag = 3;
2974
2975    enum State {
2976        OFF = 0;
2977        ON = 1;
2978    }
2979    optional State state = 4;
2980}
2981
2982/**
2983 * Logs when the device is interactive, according to the PowerManager Notifier.
2984 *
2985 * Logged from:
2986 *   frameworks/base/services/core/java/com/android/server/power/Notifier.java
2987 */
2988message InteractiveStateChanged {
2989    enum State {
2990        OFF = 0;
2991        ON = 1;
2992    }
2993    optional State state = 1
2994            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
2995}
2996
2997/**
2998 * Logs Battery Saver state change.
2999 *
3000 * Logged from:
3001 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
3002 */
3003message BatterySaverModeStateChanged {
3004    enum State {
3005        OFF = 0;
3006        ON = 1;
3007    }
3008    optional State state = 1
3009            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
3010}
3011
3012/**
3013 * Logs Doze mode state change.
3014 *
3015 * Logged from:
3016 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
3017 */
3018message DeviceIdleModeStateChanged {
3019    optional android.server.DeviceIdleModeEnum state = 1
3020            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
3021}
3022
3023
3024/**
3025 * Logs state change of Doze mode including maintenance windows.
3026 *
3027 * Logged from:
3028 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
3029 */
3030message DeviceIdlingModeStateChanged {
3031    optional android.server.DeviceIdleModeEnum state = 1
3032            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
3033}
3034
3035/**
3036 * Logs screen brightness level.
3037 *
3038 * Logged from:
3039 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
3040 */
3041message ScreenBrightnessChanged {
3042    // Screen brightness level. Should be in [-1, 255] according to PowerManager.java.
3043    optional int32 level = 1;
3044}
3045
3046/**
3047 * Logs battery level (percent full, from 0 to 100).
3048 *
3049 * Logged from:
3050 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
3051 */
3052message BatteryLevelChanged {
3053    // Battery level. Should be in [0, 100].
3054    optional int32 battery_level = 1;
3055}
3056
3057/**
3058 * Logs change in charging status of the device.
3059 *
3060 * Logged from:
3061 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
3062 */
3063message ChargingStateChanged {
3064    // State of the battery, from frameworks/proto_logging/stats/enums/os/enums.proto.
3065    optional android.os.BatteryStatusEnum state = 1
3066            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
3067}
3068
3069/**
3070 * Logs whether the device is plugged in, and what power source it is using.
3071 *
3072 * Logged from:
3073 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
3074 */
3075message PluggedStateChanged {
3076    // Whether the device is plugged in, from frameworks/proto_logging/stats/enums/os/enums.proto.
3077    optional android.os.BatteryPluggedStateEnum state = 1
3078            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
3079}
3080
3081/**
3082 * Logs whether the device is docked, and what type of dock it is using.
3083 *
3084 * Logged from:
3085 *   services/core/java/com/android/server/power/PowerManagerService.java
3086 */
3087message DockStateChanged {
3088    // The device dock state, from frameworks/proto_logging/stats/enums/server/enums.proto.
3089    optional android.server.DockStateEnum state = 1
3090    [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
3091}
3092
3093/**
3094 * Logs when an app's wakeup alarm fires.
3095 *
3096 * Logged from:
3097 *   frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
3098 */
3099message WakeupAlarmOccurred {
3100    repeated AttributionNode attribution_node = 1;
3101
3102    // Name of the wakeup alarm.
3103    optional string tag = 2;
3104
3105    // Name of source package (for historical reasons, since BatteryStats tracked it).
3106    optional string package_name = 3;
3107
3108    // The App Standby bucket of the app that scheduled the alarm at the time the alarm fired.
3109    optional AppStandbyBucketChanged.Bucket app_standby_bucket = 4;
3110}
3111
3112/**
3113 * Logs when an an app causes the mobile radio to change state.
3114 * Changing from LOW to MEDIUM or HIGH can be considered the app waking the mobile radio.
3115 *
3116 * Logged from:
3117 *   frameworks/base/services/core/java/com/android/server/NetworkManagementService.java
3118 */
3119message MobileRadioPowerStateChanged {
3120    repeated AttributionNode attribution_node = 1;
3121
3122    // Power state, from frameworks/proto_logging/stats/enums/telephony/enums.proto.
3123    optional android.telephony.DataConnectionPowerStateEnum state = 2;
3124}
3125
3126/**
3127 * Logs when an an app causes the wifi radio to change state.
3128 * Changing from LOW to MEDIUM or HIGH can be considered the app waking the wifi radio.
3129 *
3130 * Logged from:
3131 *   frameworks/base/services/core/java/com/android/server/NetworkManagementService.java
3132 */
3133message WifiRadioPowerStateChanged {
3134    repeated AttributionNode attribution_node = 1;
3135
3136    // Power state, from frameworks/proto_logging/stats/enums/telephony/enums.proto.
3137    optional android.telephony.DataConnectionPowerStateEnum state = 2;
3138}
3139
3140/**
3141 * Logs kernel wakeup reasons and aborts.
3142 *
3143 * Logged from:
3144 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
3145 */
3146message KernelWakeupReported {
3147    // Name of the kernel wakeup reason (or abort).
3148    optional string wakeup_reason_name = 1;
3149
3150    // Duration (in microseconds) for the wake-up interrupt to be serviced.
3151    optional int64 duration_micros = 2;
3152
3153    // The elapsed time when this wake-up was reported.
3154    optional int64 elapsed_millis = 3;
3155}
3156
3157/**
3158 * Logs when Wifi is toggled on/off.
3159 * Note that Wifi may still perform certain functions (e.g. location scanning) even when disabled.
3160 *
3161 * Logged from:
3162 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
3163 */
3164message WifiEnabledStateChanged {
3165    enum State {
3166        OFF = 0;
3167        ON = 1;
3168    }
3169    optional State state = 1;
3170}
3171
3172/**
3173 * This atom is deprecated starting in R.
3174 *
3175 * Logs when an app causes Wifi to run. In this context, 'to run' means to use Wifi Client Mode.
3176 * TODO: Include support for Hotspot, perhaps by using an extra field to denote 'mode'.
3177 * Note that Wifi Scanning is monitored separately in WifiScanStateChanged.
3178 *
3179 * Logged from:
3180 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
3181 */
3182message WifiRunningStateChanged {
3183    repeated AttributionNode attribution_node = 1;
3184
3185    enum State {
3186        OFF = 0;
3187        ON = 1;
3188    }
3189    optional State state = 2;
3190}
3191
3192/**
3193 * Logs wifi locks held by an app.
3194 *
3195 * Logged from:
3196 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
3197 */
3198message WifiLockStateChanged {
3199    repeated AttributionNode attribution_node = 1;
3200
3201    enum State {
3202        OFF = 0;
3203        ON = 1;
3204    }
3205    optional State state = 2;
3206
3207    // WifiLock type, from frameworks/proto_logging/stats/enums/wifi/enums.proto.
3208    optional android.net.wifi.WifiModeEnum mode = 3;
3209}
3210
3211/**
3212 * Logs wifi signal strength changes.
3213 *
3214 * Logged from:
3215 *   frameworks/opt/net/wifi/service/java/com/android/server/wifi/ClientModeImpl.java
3216 */
3217message WifiSignalStrengthChanged {
3218    // Signal strength, from frameworks/proto_logging/stats/enums/telephony/enums.proto.
3219    optional android.telephony.SignalStrengthEnum signal_strength = 1
3220            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
3221}
3222
3223/**
3224 * Logs wifi scans performed by an app.
3225 *
3226 * Logged from:
3227 *   frameworks/opt/net/wifi/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
3228 */
3229message WifiScanStateChanged {
3230    repeated AttributionNode attribution_node = 1;
3231
3232    enum State {
3233        OFF = 0;
3234        ON = 1;
3235    }
3236    optional State state = 2;
3237}
3238
3239/**
3240 * Logs wifi multicast locks held by an app
3241 *
3242 * Logged from:
3243 *   frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiMulticastLockManager.java
3244 */
3245message WifiMulticastLockStateChanged {
3246    repeated AttributionNode attribution_node = 1;
3247
3248    enum State {
3249        OFF = 0;
3250        ON = 1;
3251    }
3252    optional State state = 2;
3253
3254    optional string tag = 3;
3255}
3256
3257/**
3258 * Logs shutdown reason and duration on next boot.
3259 *
3260 * Logged from:
3261 *   frameworks/base/core/java/com/android/server/BootReceiver.java
3262 */
3263message ShutdownSequenceReported {
3264    // True if shutdown is for a reboot. Default: false if we do not know.
3265    optional bool reboot = 1;
3266
3267    // Reason for shutdown. Eg: userrequested. Default: "<EMPTY>".
3268    optional string reason = 2;
3269
3270    // Beginning of shutdown time in ms using wall clock time since unix epoch.
3271    // Default: 0 if no start time received.
3272    optional int64 start_time_millis = 3;
3273
3274    // Duration of shutdown in ms. Default: 0 if no duration received.
3275    optional int64 duration_millis = 4;
3276}
3277
3278
3279/**
3280 * Logs boot reason and duration.
3281 *
3282 * Logged from:
3283 *   system/core/bootstat/bootstat.cpp
3284 */
3285message BootSequenceReported {
3286    // Reason for bootloader boot. Eg. reboot. See bootstat.cpp for larger list
3287    // Default: "<EMPTY>" if not available.
3288    optional string bootloader_reason = 1;
3289
3290    // Reason for system boot. Eg. bootloader, reboot,userrequested
3291    // Default: "<EMPTY>" if not available.
3292    optional string system_reason = 2;
3293
3294    // End of boot time in ms from unix epoch using system wall clock.
3295    optional int64 end_time_millis = 3;
3296
3297    // Total boot duration in ms.
3298    optional int64 total_duration_millis = 4;
3299
3300    // Bootloader duration in ms.
3301    optional int64 bootloader_duration_millis = 5;
3302
3303    // Time since last boot in ms. Default: 0 if not available.
3304    optional int64 time_since_last_boot = 6;
3305}
3306
3307
3308/**
3309 * Logs call state and disconnect cause (if applicable).
3310 *
3311 * Logged from:
3312 *   packages/services/Telecomm/src/com/android/server/telecom/Call.java
3313 */
3314message CallStateChanged {
3315    // The state of the call. Eg. DIALING, ACTIVE, ON_HOLD, DISCONNECTED.
3316    // From frameworks/proto_logging/stats/enums/telecomm/enums.proto.
3317    optional android.telecom.CallStateEnum call_state = 1;
3318
3319    // The reason the call disconnected. Eg. ERROR, MISSED, REJECTED, BUSY.
3320    // This value is only applicable when the call_state is DISCONNECTED, and
3321    // should always be UNKNOWN if the call_state is not DISCONNECTED.
3322    // From frameworks/proto_logging/stats/enums/telecomm/enums.proto.
3323    optional android.telecom.DisconnectCauseEnum disconnect_cause = 2;
3324
3325    // True if the call is self-managed, which are apps that use the
3326    // telecom infrastructure to make their own calls.
3327    optional bool self_managed = 3;
3328
3329    // True if call is external. External calls are calls on connected Wear
3330    // devices but show up in Telecom so the user can pull them onto the device.
3331    optional bool external_call = 4;
3332
3333    // True if call is emergency call.
3334    optional bool emergency_call = 5;
3335
3336    // UID of the package that has initiated the call.
3337    optional int32 uid = 6 [(is_uid) = true];
3338
3339    // Elapsed time between CALL_STATE_ACTIVE to CALL_STATE_DISCONNECTED.
3340    // This value is only applicable when the call_state is DISCONNECTED,
3341    // 0 otherwise.
3342    optional int32 duration_seconds = 7;
3343
3344    // Number of all existing calls when this call is created.
3345    optional int32 existing_call_count = 8;
3346
3347    // Number of existing calls held by this call.
3348    // This value is set after a call is actually held, 0 otherwise.
3349    optional int32 held_call_count = 9;
3350
3351    // The reason the call hasn't been started by device condition.
3352    // This value is only applicable when the call_state is DISCONNECTED,
3353    // and should always be NONE if the call_state is not DISCONNECTED.
3354    // From frameworks/base/core/proto/android/telecomm/enums.proto.
3355    optional android.telecom.CallFailureCauseEnum start_fail_cause = 10;
3356}
3357
3358/*
3359 * Logs changes to the configuration of the device. The configuration is defined
3360 * in frameworks/base/core/java/android/content/res/Configuration.java
3361 * More documentation is at https://d.android.com/reference/android/content/res/Configuration.html
3362 * Please go there to interpret the possible values each field can be.
3363 *
3364 * Logged from:
3365 *   frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
3366 */
3367message ResourceConfigurationChanged {
3368    // Bit mask of color capabilities of the screen.
3369    // Contains information about the color gamut and hdr mode of the screen.
3370    // See: https://d.android.com/reference/android/content/res/Configuration.html#colorMode
3371    optional int32 color_mode = 1;
3372
3373    // The target screen density being rendered to.
3374    // See: https://d.android.com/reference/android/content/res/Configuration.html#densityDpi
3375    optional int32 density_dpi = 2;
3376
3377    // Current user preference for the scaling factor for fonts,
3378    // relative to the base density scaling.
3379    // See: https://d.android.com/reference/android/content/res/Configuration.html#fontScale
3380    optional float font_scale = 3;
3381
3382    // Flag indicating whether the hard keyboard is hidden.
3383    // See: https://d.android.com/reference/android/content/res/Configuration.html#hardKeyboardHidden
3384    optional int32 hard_keyboard_hidden = 4;
3385
3386    // The type of keyboard attached to the device.
3387    // See: https://d.android.com/reference/android/content/res/Configuration.html#keyboard
3388    optional int32 keyboard = 5;
3389
3390    // Flag indicating whether any keyboard is available. Takes soft keyboards into account.
3391    // See: https://d.android.com/reference/android/content/res/Configuration.html#keyboardHidden
3392    optional int32 keyboard_hidden = 6;
3393
3394    // IMSI MCC (Mobile Country Code), corresponding to mcc resource qualifier.
3395    // 0 if undefined.
3396    // See: https://d.android.com/reference/android/content/res/Configuration.html#mcc
3397    optional int32 mcc = 7;
3398
3399    // IMSI MNC (Mobile Network Code), corresponding to mnc resource qualifier.
3400    // 0 if undefined. Note: the actual MNC may be 0, to check for this use the
3401    // MNC_ZERO symbol defined in Configuration.java.
3402    // See: https://d.android.com/reference/android/content/res/Configuration.html#mnc
3403    optional int32 mnc = 8;
3404
3405    // The kind of navigation available on the device.
3406    // See: https://developer.android.com/reference/android/content/res/Configuration.html#navigation
3407    optional int32 navigation = 9;
3408
3409    // Flag indicating whether the navigation is available.
3410    // See: https://d.android.com/reference/android/content/res/Configuration.html#navigationHidden
3411    optional int32 navigation_hidden = 10;
3412
3413    // Overall orientation of the screen.
3414    // See: https://d.android.com/reference/android/content/res/Configuration.html#orientation
3415    optional int32 orientation = 11;
3416
3417    // The current height of the available screen space, in dp units.
3418    // See: https://d.android.com/reference/android/content/res/Configuration.html#screenHeightDp
3419    optional int32 screen_height_dp = 12;
3420
3421    // Bit mask of overall layout of the screen.
3422    // Contains information about screen size, whether the screen is wider/taller
3423    // than normal, whether the screen layout is right-tl-left or left-to-right,
3424    // and whether the screen has a rounded shape.
3425    // See: https://d.android.com/reference/android/content/res/Configuration.html#screenLayout
3426    optional int32 screen_layout = 13;
3427
3428    // Current width of the available screen space, in dp units.
3429    // See: https://d.android.com/reference/android/content/res/Configuration.html#screenWidthDp
3430    optional int32 screen_width_dp = 14;
3431
3432    // The smallest screen size an application will see in normal operation.
3433    // This is the smallest value of both screenWidthDp and screenHeightDp
3434    // in portrait and landscape.
3435    // See: https://d.android.com/reference/android/content/res/Configuration.html#smallestScreenWidthDp
3436    optional int32 smallest_screen_width_dp = 15;
3437
3438    // The type of touch screen attached to the device.
3439    // See: https://d.android.com/reference/android/content/res/Configuration.html#touchscreen
3440    optional int32 touchscreen = 16;
3441
3442    // Bit mask of the ui mode.
3443    // Contains information about the overall ui mode of the device.
3444    // Eg: NORMAL, DESK, CAR, TELEVISION, WATCH, VR_HEADSET
3445    // Also contains information about whether the device is in night mode.
3446    // See: https://d.android.com/reference/android/content/res/Configuration.html#uiMode
3447    optional int32 ui_mode = 17;
3448}
3449
3450
3451/**
3452 * Logs changes in the connection state of the mobile radio.
3453 *
3454 * Logged from:
3455 *    frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
3456 */
3457message MobileConnectionStateChanged {
3458    // States are from the state machine DataConnection.java.
3459    enum State {
3460        UNKNOWN = 0;
3461        // The connection is inactive, or disconnected.
3462        INACTIVE = 1;
3463        // The connection is being activated, or connecting.
3464        ACTIVATING = 2;
3465        // The connection is active, or connected.
3466        ACTIVE = 3;
3467        // The connection is disconnecting.
3468        DISCONNECTING = 4;
3469        // The connection is disconnecting after creating a connection.
3470        DISCONNECTION_ERROR_CREATING_CONNECTION = 5;
3471    }
3472    optional State state  = 1;
3473    // For multi-sim phones, this distinguishes between the sim cards.
3474    optional int32 sim_slot_index = 2;
3475    // Used to identify the connection. Starts at 0 and increments by 1 for
3476    // every new network created. Resets whenever the device reboots.
3477    optional int32 data_connection_id = 3;
3478    // A bitmask for the capabilities of this connection.
3479    // Eg. DEFAULT (internet), MMS, SUPL, DUN, IMS.
3480    // Default value (if we have no information): 0
3481    optional int64 capabilities = 4;
3482    // If this connection has internet.
3483    // This just checks if the DEFAULT bit of capabilities is set.
3484    optional bool has_internet = 5;
3485}
3486
3487/**
3488 * Logs changes in mobile radio technology. eg: LTE, EDGE, CDMA.
3489 *
3490 * Logged from:
3491 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/ServiceStateTracker.java
3492 */
3493message MobileRadioTechnologyChanged {
3494    optional android.telephony.NetworkTypeEnum state = 1;
3495    // For multi-sim phones, this distinguishes between the sim cards.
3496    optional int32 sim_slot_index = 2;
3497}
3498
3499/**
3500 * Logs the VID and PID of any connected USB devices.
3501 *
3502 * Notes if any Audio, HID (input buttons/mouse/keyboard), or Storage interfaces are present.
3503 *
3504 * Logged by Vendor.
3505 */
3506message UsbDeviceAttached {
3507    optional int32 vid = 1;
3508    optional int32 pid = 2;
3509    optional bool has_audio = 3;
3510    optional bool has_hid = 4;
3511    optional bool has_storage = 5;
3512    enum State {
3513        STATE_DISCONNECTED = 0;
3514        STATE_CONNECTED = 1;
3515    }
3516    optional State state = 6;
3517    optional int64 last_connect_duration_millis = 7;
3518}
3519
3520
3521/**
3522 * Logs when Bluetooth is enabled and disabled.
3523 *
3524 * Logged from:
3525 *   services/core/java/com/android/server/BluetoothManagerService.java
3526 */
3527message BluetoothEnabledStateChanged {
3528    repeated AttributionNode attribution_node = 1;
3529    // Whether or not bluetooth is enabled on the device.
3530    enum State {
3531        UNKNOWN = 0;
3532        ENABLED = 1;
3533        DISABLED = 2;
3534    }
3535    optional State state = 2;
3536    // The reason for being enabled/disabled.
3537    // Eg. Airplane mode, crash, application request.
3538    optional android.bluetooth.EnableDisableReasonEnum reason = 3;
3539    // If the reason is an application request, this will be the package name.
3540    optional string pkg_name = 4;
3541    // Previous state. Default: UNKNOWN if there is no previous state.
3542    optional State previous_state = 5;
3543    // Timedelta in milliseconds since the last state changed.
3544    // Default: 0 if there is no previous state.
3545    optional int64 time_since_last_changed_millis = 6;
3546}
3547
3548/**
3549 * Logs when profiles on a Bluetooth device connects and disconnects.
3550 *
3551 * Logged from:
3552 *    packages/apps/Bluetooth/src/com/android/bluetooth/btservice/RemoteDevices.java
3553 *
3554 * Next Tag: 6
3555 */
3556message BluetoothConnectionStateChanged {
3557    // The state of the connection.
3558    // Eg: CONNECTING, CONNECTED, DISCONNECTING, DISCONNECTED.
3559    optional android.bluetooth.ConnectionStateEnum state = 1;
3560    // An identifier that can be used to match connect and disconnect events.
3561    // Currently is last two bytes of a hash of a device level ID and
3562    // the mac address of the bluetooth device that is connected.
3563    // Deprecated: use obfuscated_id instead, this one is always 0 for Q+
3564    optional int32 obfuscated_id = 2 [deprecated = true];
3565    // The profile that is connected. Eg. GATT, A2DP, HEADSET.
3566    // From android.bluetooth.BluetoothAdapter.java
3567    // Default: 0 when not used
3568    optional int32 bt_profile = 3;
3569    // An identifier that can be used to match events for this device.
3570    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
3571    // Salt: Randomly generated 256 bit value
3572    // Hash algorithm: HMAC-SHA256
3573    // Size: 32 byte
3574    // Default: null or empty if the device identifier is not known
3575    optional bytes new_obfuscated_id = 4 [(android.os.statsd.log_mode) = MODE_BYTES];
3576    // An identifier that can be used to match events for this device.
3577    // The incremental identifier is locally generated and guaranteed not derived
3578    // from any globally unique hardware id.
3579    // For paired devices, it stays consistent between Bluetooth toggling for the
3580    // same remote device.
3581    // For unpaired devices, it stays consistent within the same Bluetooth adapter
3582    // session for the same remote device.
3583    // Default: 0 if the device's metric id is unknown.
3584    optional int32 metric_id = 5;
3585    // An index to group connection events by session. It's a counter generated by
3586    // each profile. e.g. Gatt server generate such id to identify Gatt apps
3587    optional int32 session_index = 6;
3588    // An identifier that indicates the connection failure reason
3589    optional int32 connection_reason = 7;
3590}
3591
3592/**
3593 * Logs when a Bluetooth device connects and disconnects over ACL
3594 *
3595 * Logged from:
3596 *    packages/apps/Bluetooth/src/com/android/bluetooth/btservice/AdapterProperties.java
3597 *
3598 * Next Tag: 4
3599 */
3600message BluetoothAclConnectionStateChanged {
3601    // An identifier that can be used to match events for this device.
3602    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
3603    // Salt: Randomly generated 256 bit value
3604    // Hash algorithm: HMAC-SHA256
3605    // Size: 32 byte
3606    // Default: null or empty if the device identifier is not known
3607    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
3608    // The state of the connection.
3609    // Eg: CONNECTING, CONNECTED, DISCONNECTING, DISCONNECTED.
3610    optional android.bluetooth.ConnectionStateEnum state = 2;
3611    // An identifier that can be used to match events for this device.
3612    // The incremental identifier is locally generated and guaranteed not derived
3613    // from any globally unique hardware id.
3614    // For paired devices, it stays consistent between Bluetooth toggling for the
3615    // same remote device.
3616    // For unpaired devices, it stays consistent within the same Bluetooth adapter
3617    // session for the same remote device.
3618    // Default: 0 if the device's metric id is unknown.
3619    optional int32 metric_id = 3;
3620    // Used transport of this event.
3621    optional android.bluetooth.TransportTypeEnum transport = 4;
3622}
3623
3624/**
3625 * Logs when a Bluetooth device connects and disconnects over SCO
3626 *
3627 * Logged from:
3628 *    packages/apps/Bluetooth/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
3629 *    packages/apps/Bluetooth/src/com/android/bluetooth/hfp/HeadsetClientStateMachine.java
3630 *
3631 * Next Tag: 5
3632 */
3633message BluetoothScoConnectionStateChanged {
3634    // An identifier that can be used to match events for this device.
3635    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
3636    // Salt: Randomly generated 256 bit value
3637    // Hash algorithm: HMAC-SHA256
3638    // Size: 32 byte
3639    // Default: null or empty if the device identifier is not known
3640    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
3641    // The state of the connection.
3642    // Eg: CONNECTING, CONNECTED, DISCONNECTING, DISCONNECTED.
3643    optional android.bluetooth.ConnectionStateEnum state = 2;
3644    // Codec used for this SCO connection
3645    // Default: UNKNOWN
3646    optional android.bluetooth.hfp.ScoCodec codec = 3;
3647    // An identifier that can be used to match events for this device.
3648    // The incremental identifier is locally generated and guaranteed not derived
3649    // from any globally unique hardware id.
3650    // For paired devices, it stays consistent between Bluetooth toggling for the
3651    // same remote device.
3652    // For unpaired devices, it stays consistent within the same Bluetooth adapter
3653    // session for the same remote device.
3654    // Default: 0 if the device's metric id is unknown.
3655    optional int32 metric_id = 4;
3656}
3657
3658/**
3659 * Logged when active device of a profile changes
3660 *
3661 * Logged from:
3662 *     packages/apps/Bluetooth/src/com/android/bluetooth/a2dp/A2dpService.java
3663 *     packages/apps/Bluetooth/src/com/android/bluetooth/hfp/HeadsetService.java
3664 *     packages/apps/Bluetooth/src/com/android/bluetooth/hearingaid/HearingAidService.java
3665 */
3666message BluetoothActiveDeviceChanged {
3667    // The profile whose active device has changed. Eg. A2DP, HEADSET, HEARING_AID
3668    // From android.bluetooth.BluetoothProfile
3669    optional int32 bt_profile = 1;
3670    // An identifier that can be used to match events for this new active device.
3671    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
3672    // Salt: Randomly generated 256 bit value
3673    // Hash algorithm: HMAC-SHA256
3674    // Size: 32 byte
3675    // Default: null or empty if there is no active device for this profile
3676    optional bytes obfuscated_id = 2 [(android.os.statsd.log_mode) = MODE_BYTES];
3677    // An identifier that can be used to match events for this device.
3678    // The incremental identifier is locally generated and guaranteed not derived
3679    // from any globally unique hardware id.
3680    // For paired devices, it stays consistent between Bluetooth toggling for the
3681    // same remote device.
3682    // For unpaired devices, it stays consistent within the same Bluetooth adapter
3683    // session for the same remote device.
3684    // Default: 0 if the device's metric id is unknown.
3685    optional int32 metric_id = 3;
3686}
3687
3688// Logs when there is an event affecting Bluetooth device's link layer connection.
3689// - This event is triggered when there is a related HCI command or event
3690// - Users of this metrics can deduce Bluetooth device's connection state from these events
3691// - HCI commands are logged before the command is sent, after receiving command status, and after
3692//   receiving command complete
3693// - HCI events are logged when they arrive
3694//
3695// Low level log from system/bt
3696//
3697// Bluetooth classic commands:
3698// - CMD_CREATE_CONNECTION
3699// - CMD_DISCONNECT
3700// - CMD_CREATE_CONNECTION_CANCEL
3701// - CMD_ACCEPT_CONNECTION_REQUEST
3702// - CMD_REJECT_CONNECTION_REQUEST
3703// - CMD_SETUP_ESCO_CONNECTION
3704// - CMD_ACCEPT_ESCO_CONNECTION
3705// - CMD_REJECT_ESCO_CONNECTION
3706// - CMD_ENH_SETUP_ESCO_CONNECTION
3707// - CMD_ENH_ACCEPT_ESCO_CONNECTION
3708//
3709// Bluetooth low energy commands:
3710// - CMD_BLE_CREATE_LL_CONN [Only logged on error or when initiator filter policy is 0x00]
3711// - CMD_BLE_CREATE_CONN_CANCEL [Only logged when there is an error]
3712// - CMD_BLE_EXTENDED_CREATE_CONNECTION [Only logged on error or when initiator filter policy is 0x00]
3713// - CMD_BLE_CLEAR_WHITE_LIST
3714// - CMD_BLE_ADD_WHITE_LIST
3715// - CMD_BLE_REMOVE_WHITE_LIST
3716//
3717// Bluetooth classic events:
3718// - EVT_CONNECTION_COMP
3719// - EVT_CONNECTION_REQUEST
3720// - EVT_DISCONNECTION_COMP
3721// - EVT_ESCO_CONNECTION_COMP
3722// - EVT_ESCO_CONNECTION_CHANGED
3723//
3724// Bluetooth low energy meta events:
3725// - BLE_EVT_CONN_COMPLETE_EVT
3726// - BLE_EVT_ENHANCED_CONN_COMPLETE_EVT
3727//
3728// Next tag: 10
3729message BluetoothLinkLayerConnectionEvent {
3730    // An identifier that can be used to match events for this device.
3731    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
3732    // Salt: Randomly generated 256 bit value
3733    // Hash algorithm: HMAC-SHA256
3734    // Size: 32 byte
3735    // Default: null or empty if the device identifier is not known
3736    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
3737    // Connection handle of this connection if available
3738    // Range: 0x0000 - 0x0EFF (12 bits)
3739    // Default: 0xFFFF if the handle is unknown
3740    optional int32 connection_handle = 2;
3741    // Direction of the link
3742    // Default: DIRECTION_UNKNOWN
3743    optional android.bluetooth.DirectionEnum direction = 3;
3744    // Type of this link
3745    // Default: LINK_TYPE_UNKNOWN
3746    optional android.bluetooth.LinkTypeEnum type = 4;
3747
3748    // Reason metadata for this link layer connection event, rules for interpretation:
3749    // 1. If hci_cmd is set and valid, hci_event can be either EVT_COMMAND_STATUS or
3750    //    EVT_COMMAND_COMPLETE, ignore hci_ble_event in this case
3751    // 2. If hci_event is set to EVT_BLE_META, look at hci_ble_event; otherwise, if hci_event is
3752    //    set and valid, ignore hci_ble_event
3753
3754    // HCI command associated with this event
3755    // Default: CMD_UNKNOWN
3756    optional android.bluetooth.hci.CommandEnum hci_cmd = 5;
3757    // HCI event associated with this event
3758    // Default: EVT_UNKNOWN
3759    optional android.bluetooth.hci.EventEnum hci_event = 6;
3760    // HCI BLE meta event associated with this event
3761    // Default: BLE_EVT_UNKNOWN
3762    optional android.bluetooth.hci.BleMetaEventEnum hci_ble_event = 7;
3763    // HCI command status code if this is triggerred by hci_cmd
3764    // Default: STATUS_UNKNOWN
3765    optional android.bluetooth.hci.StatusEnum cmd_status = 8;
3766    // HCI reason code associated with this event
3767    // Default: STATUS_UNKNOWN
3768    optional android.bluetooth.hci.StatusEnum reason_code = 9;
3769    // An identifier that can be used to match events for this device.
3770    // The incremental identifier is locally generated and guaranteed not derived
3771    // from any globally unique hardware id.
3772    // For paired devices, it stays consistent between Bluetooth toggling for the
3773    // same remote device.
3774    // For unpaired devices, it stays consistent within the same Bluetooth adapter
3775    // session for the same remote device.
3776    // Default: 0 if the device's metric id is unknown.
3777    optional int32 metric_id = 10;
3778}
3779
3780/**
3781 * Logs when a module is rolled back by Watchdog.
3782 *
3783 * Logged from: Rollback Manager
3784 */
3785message WatchdogRollbackOccurred {
3786    enum RollbackType {
3787        UNKNOWN = 0;
3788        ROLLBACK_INITIATE = 1;
3789        ROLLBACK_SUCCESS = 2;
3790        ROLLBACK_FAILURE = 3;
3791        ROLLBACK_BOOT_TRIGGERED = 4;
3792    }
3793    optional RollbackType rollback_type = 1;
3794
3795    optional string package_name = 2;
3796
3797    optional int32 package_version_code = 3;
3798
3799    enum RollbackReasonType {
3800        REASON_UNKNOWN = 0;
3801        REASON_NATIVE_CRASH = 1;
3802        REASON_EXPLICIT_HEALTH_CHECK = 2;
3803        REASON_APP_CRASH = 3;
3804        REASON_APP_NOT_RESPONDING = 4;
3805        REASON_NATIVE_CRASH_DURING_BOOT = 5;
3806        REASON_NETWORK_RELATED_CRASH = 6;
3807        REASON_BOOT_LOOPING = 7;
3808    }
3809    optional RollbackReasonType rollback_reason = 4;
3810
3811    // Set by RollbackPackageHealthObserver to be the package that is failing when a rollback
3812    // is initiated. Empty if the package is unknown.
3813    optional string failing_package_name = 5;
3814
3815    optional TrainExperimentIds experiment_ids = 6 [(log_mode) = MODE_BYTES];
3816}
3817
3818/**
3819 * Logs when there is a change in Bluetooth A2DP playback state
3820 *
3821 * Logged from:
3822 *     packages/apps/Bluetooth/src/com/android/bluetooth/a2dp/A2dpService.java
3823 */
3824message BluetoothA2dpPlaybackStateChanged {
3825    // An identifier that can be used to match events for this device.
3826    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
3827    // Salt: Randomly generated 256 bit value
3828    // Hash algorithm: HMAC-SHA256
3829    // Size: 32 byte
3830    // Default: null or empty if the device identifier is not known
3831    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
3832    // Current playback state
3833    // Default: PLAYBACK_STATE_UNKNOWN
3834    optional android.bluetooth.a2dp.PlaybackStateEnum playback_state = 2;
3835    // Current audio coding mode
3836    // Default: AUDIO_CODING_MODE_UNKNOWN
3837    optional android.bluetooth.a2dp.AudioCodingModeEnum audio_coding_mode = 3;
3838    // An identifier that can be used to match events for this device.
3839    // The incremental identifier is locally generated and guaranteed not derived
3840    // from any globally unique hardware id.
3841    // For paired devices, it stays consistent between Bluetooth toggling for the
3842    // same remote device.
3843    // For unpaired devices, it stays consistent within the same Bluetooth adapter
3844    // session for the same remote device.
3845    // Default: 0 if the device's metric id is unknown.
3846    optional int32 metric_id = 4;
3847}
3848
3849/**
3850 * Logs when there is a change in A2DP codec config for a particular remote device
3851 *
3852 * Logged from:
3853 *     frameworks/base/core/java/android/bluetooth/BluetoothCodecConfig.java
3854 *     packages/apps/Bluetooth/src/com/android/bluetooth/a2dp/A2dpService.java
3855 */
3856message BluetoothA2dpCodecConfigChanged {
3857    // An identifier that can be used to match events for this device.
3858    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
3859    // Salt: Randomly generated 256 bit value
3860    // Hash algorithm: HMAC-SHA256
3861    // Size: 32 byte
3862    // Default: null or empty if the device identifier is not known
3863    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
3864    // Type of codec as defined by various SOURCE_CODEC_TYPE_* constants in BluetoothCodecConfig
3865    // Default SOURCE_CODEC_TYPE_INVALID
3866    optional int32 codec_type = 2;
3867    // Codec priroity, the higher the more preferred, -1 for disabled
3868    // Default: CODEC_PRIORITY_DEFAULT
3869    optional int32 codec_priority = 3;
3870    // Sample rate in Hz as defined by various SAMPLE_RATE_* constants in BluetoothCodecConfig
3871    // Default: SAMPLE_RATE_NONE
3872    optional int32 sample_rate = 4;
3873    // Bits per sample as defined by various BITS_PER_SAMPLE_* constants in BluetoothCodecConfig
3874    // Default: BITS_PER_SAMPLE_NONE
3875    optional int32 bits_per_sample = 5;
3876    // Channel mode as defined by various CHANNEL_MODE_* constants in BluetoothCodecConfig
3877    // Default: CHANNEL_MODE_NONE
3878    optional int32 channel_mode = 6;
3879    // Codec specific values
3880    // Default 0
3881    optional int64 codec_specific_1 = 7;
3882    optional int64 codec_specific_2 = 8;
3883    optional int64 codec_specific_3 = 9;
3884    optional int64 codec_specific_4 = 10;
3885    // An identifier that can be used to match events for this device.
3886    // The incremental identifier is locally generated and guaranteed not derived
3887    // from any globally unique hardware id.
3888    // For paired devices, it stays consistent between Bluetooth toggling for the
3889    // same remote device.
3890    // For unpaired devices, it stays consistent within the same Bluetooth adapter
3891    // session for the same remote device.
3892    // Default: 0 if the device's metric id is unknown.
3893    optional int32 metric_id = 11;
3894}
3895
3896/**
3897 * Logs when there is a change in selectable A2DP codec capability for a paricular remote device
3898 * Each codec's capability is logged separately due to statsd restriction
3899 *
3900 * Logged from:
3901 *     frameworks/base/core/java/android/bluetooth/BluetoothCodecConfig.java
3902 *     packages/apps/Bluetooth/src/com/android/bluetooth/a2dp/A2dpService.java
3903 */
3904message BluetoothA2dpCodecCapabilityChanged {
3905    // An identifier that can be used to match events for this device.
3906    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
3907    // Salt: Randomly generated 256 bit value
3908    // Hash algorithm: HMAC-SHA256
3909    // Size: 32 byte
3910    // Default: null or empty if the device identifier is not known
3911    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
3912    // Type of codec as defined by various SOURCE_CODEC_TYPE_* constants in BluetoothCodecConfig
3913    // Default SOURCE_CODEC_TYPE_INVALID
3914    optional int32 codec_type = 2;
3915    // Codec priroity, the higher the more preferred, -1 for disabled
3916    // Default: CODEC_PRIORITY_DEFAULT
3917    optional int32 codec_priority = 3;
3918    // A bit field of supported sample rates as defined by various SAMPLE_RATE_* constants
3919    // in BluetoothCodecConfig
3920    // Default: empty and SAMPLE_RATE_NONE for individual item
3921    optional int32 sample_rate = 4;
3922    // A bit field of supported bits per sample as defined by various BITS_PER_SAMPLE_* constants
3923    // in BluetoothCodecConfig
3924    // Default: empty and BITS_PER_SAMPLE_NONE for individual item
3925    optional int32 bits_per_sample = 5;
3926    // A bit field of supported channel mode as defined by various CHANNEL_MODE_* constants in
3927    // BluetoothCodecConfig
3928    // Default: empty and CHANNEL_MODE_NONE for individual item
3929    optional int32 channel_mode = 6;
3930    // Codec specific values
3931    // Default 0
3932    optional int64 codec_specific_1 = 7;
3933    optional int64 codec_specific_2 = 8;
3934    optional int64 codec_specific_3 = 9;
3935    optional int64 codec_specific_4 = 10;
3936    // An identifier that can be used to match events for this device.
3937    // The incremental identifier is locally generated and guaranteed not derived
3938    // from any globally unique hardware id.
3939    // For paired devices, it stays consistent between Bluetooth toggling for the
3940    // same remote device.
3941    // For unpaired devices, it stays consistent within the same Bluetooth adapter
3942    // session for the same remote device.
3943    // Default: 0 if the device's metric id is unknown.
3944    optional int32 metric_id = 11;
3945}
3946
3947/**
3948 * Logs when A2DP failed to read from PCM source.
3949 * This typically happens when audio HAL cannot supply A2DP with data fast enough for encoding.
3950 *
3951 * Logged from:
3952 *     system/bt
3953 */
3954message BluetoothA2dpAudioUnderrunReported {
3955    // An identifier that can be used to match events for this device.
3956    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
3957    // Salt: Randomly generated 256 bit value
3958    // Hash algorithm: HMAC-SHA256
3959    // Size: 32 byte
3960    // Default: null or empty if the device identifier is not known
3961    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
3962    // Encoding interval in nanoseconds
3963    // Default: 0
3964    optional int64 encoding_interval_nanos = 2;
3965    // Number of bytes of PCM data that could not be read from the source
3966    // Default: 0
3967    optional int32 num_missing_pcm_bytes = 3;
3968    // An identifier that can be used to match events for this device.
3969    // The incremental identifier is locally generated and guaranteed not derived
3970    // from any globally unique hardware id.
3971    // For paired devices, it stays consistent between Bluetooth toggling for the
3972    // same remote device.
3973    // For unpaired devices, it stays consistent within the same Bluetooth adapter
3974    // session for the same remote device.
3975    // Default: 0 if the device's metric id is unknown.
3976    optional int32 metric_id = 4;
3977}
3978
3979/**
3980 * Logs when A2DP failed send encoded data to the remote device fast enough such that the transmit
3981 * buffer queue is full and we have to drop data
3982 *
3983 * Logged from:
3984 *     system/bt
3985 */
3986message BluetoothA2dpAudioOverrunReported {
3987    // An identifier that can be used to match events for this device.
3988    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
3989    // Salt: Randomly generated 256 bit value
3990    // Hash algorithm: HMAC-SHA256
3991    // Size: 32 byte
3992    // Default: null or empty if the device identifier is not known
3993    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
3994    // Encoding interval in nanoseconds
3995    // Default: 0
3996    optional int64 encoding_interval_nanos = 2;
3997    // Number of buffers dropped in this event
3998    // Each buffer is encoded in one encoding interval and consists of multiple encoded frames
3999    // Default: 0
4000    optional int32 num_dropped_buffers = 3;
4001    // Number of encoded buffers dropped in this event
4002    // Default 0
4003    optional int32 num_dropped_encoded_frames = 4;
4004    // Number of encoded bytes dropped in this event
4005    // Default: 0
4006    optional int32 num_dropped_encoded_bytes = 5;
4007    // An identifier that can be used to match events for this device.
4008    // The incremental identifier is locally generated and guaranteed not derived
4009    // from any globally unique hardware id.
4010    // For paired devices, it stays consistent between Bluetooth toggling for the
4011    // same remote device.
4012    // For unpaired devices, it stays consistent within the same Bluetooth adapter
4013    // session for the same remote device.
4014    // Default: 0 if the device's metric id is unknown.
4015    optional int32 metric_id = 6;
4016}
4017
4018/**
4019 * Logs when we receive reports regarding a device's RSSI value
4020 *
4021 * Logged from:
4022 *     system/bt
4023 */
4024message BluetoothDeviceRssiReported {
4025    // An identifier that can be used to match events for this device.
4026    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
4027    // Salt: Randomly generated 256 bit value
4028    // Hash algorithm: HMAC-SHA256
4029    // Size: 32 byte
4030    // Default: null or empty if the device identifier is not known
4031    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
4032    // Connection handle of this connection if available
4033    // Range: 0x0000 - 0x0EFF (12 bits)
4034    // Default: 0xFFFF if the handle is unknown
4035    optional int32 connection_handle = 2;
4036    // HCI command status code if this is triggerred by hci_cmd
4037    // Default: STATUS_UNKNOWN
4038    optional android.bluetooth.hci.StatusEnum hci_status = 3;
4039    // BR/EDR
4040    //   Range: -128 ≤ N ≤ 127 (signed integer)
4041    //   Units: dB
4042    // LE:
4043    //   Range: -127 to 20, 127 (signed integer)
4044    //   Units: dBm
4045    // Invalid when an out of range value is reported
4046    optional int32 rssi = 4;
4047    // An identifier that can be used to match events for this device.
4048    // The incremental identifier is locally generated and guaranteed not derived
4049    // from any globally unique hardware id.
4050    // For paired devices, it stays consistent between Bluetooth toggling for the
4051    // same remote device.
4052    // For unpaired devices, it stays consistent within the same Bluetooth adapter
4053    // session for the same remote device.
4054    // Default: 0 if the device's metric id is unknown.
4055    optional int32 metric_id = 5;
4056}
4057
4058/**
4059 * Logs when we receive reports regarding how many consecutive failed contacts for a connection
4060 *
4061 * Logged from:
4062 *     system/bt
4063 */
4064message BluetoothDeviceFailedContactCounterReported {
4065    // An identifier that can be used to match events for this device.
4066    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
4067    // Salt: Randomly generated 256 bit value
4068    // Hash algorithm: HMAC-SHA256
4069    // Size: 32 byte
4070    // Default: null or empty if the device identifier is not known
4071    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
4072    // Connection handle of this connection if available
4073    // Range: 0x0000 - 0x0EFF (12 bits)
4074    // Default: 0xFFFF if the handle is unknown
4075    optional int32 connection_handle = 2;
4076    // HCI command status code if this is triggerred by hci_cmd
4077    // Default: STATUS_UNKNOWN
4078    optional android.bluetooth.hci.StatusEnum cmd_status = 3;
4079    // Number of consecutive failed contacts for a connection corresponding to the Handle
4080    // Range: uint16_t, 0-0xFFFF
4081    // Default: 0xFFFFF
4082    optional int32 failed_contact_counter = 4;
4083    // An identifier that can be used to match events for this device.
4084    // The incremental identifier is locally generated and guaranteed not derived
4085    // from any globally unique hardware id.
4086    // For paired devices, it stays consistent between Bluetooth toggling for the
4087    // same remote device.
4088    // For unpaired devices, it stays consistent within the same Bluetooth adapter
4089    // session for the same remote device.
4090    // Default: 0 if the device's metric id is unknown.
4091    optional int32 metric_id = 5;
4092}
4093
4094/**
4095 * Logs when we receive reports regarding the tranmit power level used for a specific connection
4096 *
4097 * Logged from:
4098 *     system/bt
4099 */
4100message BluetoothDeviceTxPowerLevelReported {
4101    // An identifier that can be used to match events for this device.
4102    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
4103    // Salt: Randomly generated 256 bit value
4104    // Hash algorithm: HMAC-SHA256
4105    // Size: 32 byte
4106    // Default: null or empty if the device identifier is not known
4107    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
4108    // Connection handle of this connection if available
4109    // Range: 0x0000 - 0x0EFF (12 bits)
4110    // Default: 0xFFFF if the handle is unknown
4111    optional int32 connection_handle = 2;
4112    // HCI command status code if this is triggered by hci_cmd
4113    // Default: STATUS_UNKNOWN
4114    optional android.bluetooth.hci.StatusEnum hci_status = 3;
4115    // Range: -30 ≤ N ≤ 20
4116    // Units: dBm
4117    // Invalid when an out of range value is reported
4118    optional int32 transmit_power_level = 4;
4119    // An identifier that can be used to match events for this device.
4120    // The incremental identifier is locally generated and guaranteed not derived
4121    // from any globally unique hardware id.
4122    // For paired devices, it stays consistent between Bluetooth toggling for the
4123    // same remote device.
4124    // For unpaired devices, it stays consistent within the same Bluetooth adapter
4125    // session for the same remote device.
4126    // Default: 0 if the device's metric id is unknown.
4127    optional int32 metric_id = 5;
4128}
4129
4130/**
4131 * Logs when Bluetooth controller failed to reply with command status within a timeout period after
4132 * receiving an HCI command from the host
4133 *
4134 * Logged from: system/bt
4135 */
4136message BluetoothHciTimeoutReported {
4137    // HCI command associated with this event
4138    // Default: CMD_UNKNOWN
4139    optional android.bluetooth.hci.CommandEnum hci_command = 1;
4140}
4141
4142/**
4143 * Logs when we receive Bluetooth Link Quality Report event from the controller
4144 * See Android Bluetooth HCI specification for more details
4145 *
4146 * Note: all count and bytes field are counted since last event
4147 *
4148 * Logged from: system/bt
4149 */
4150message BluetoothQualityReportReported {
4151    // Quality report ID
4152    // Original type: uint8_t
4153    // Default: BQR_ID_UNKNOWN
4154    optional android.bluetooth.hci.BqrIdEnum quality_report_id = 1;
4155    // Packet type of the connection
4156    // Original type: uint8_t
4157    // Default: BQR_PACKET_TYPE_UNKNOWN
4158    optional android.bluetooth.hci.BqrPacketTypeEnum packet_types = 2;
4159    // Connection handle of the connection
4160    // Original type: uint16_t
4161    optional int32 connection_handle = 3;
4162    // Performing Role for the connection
4163    // Original type: uint8_t
4164    optional int32 connection_role = 4;
4165    // Current Transmit Power Level for the connection. This value is the same as the controller's
4166    // response to the HCI_Read_Transmit_Power_Level HCI command
4167    // Original type: uint8_t
4168    optional int32 tx_power_level = 5;
4169    // Received Signal Strength Indication (RSSI) value for the connection. This value is an
4170    // absolute receiver signal strength value
4171    // Original type: int8_t
4172    optional int32 rssi = 6;
4173    // Signal-to-Noise Ratio (SNR) value for the connection. It is the average SNR of all the
4174    // channels used by the link currently
4175    // Original type: uint8_t
4176    optional int32 snr = 7;
4177    // Indicates the number of unused channels in AFH_channel_map
4178    // Original type: uint8_t
4179    optional int32 unused_afh_channel_count = 8;
4180    // Indicates the number of the channels which are interfered and quality is bad but are still
4181    // selected for AFH
4182    // Original type: uint8_t
4183    optional int32 afh_select_unideal_channel_count = 9;
4184    // Current Link Supervision Timeout Setting
4185    // Unit: N * 0.3125 ms (1 Bluetooth Clock)
4186    // Original type: uint16_t
4187    optional int32 lsto = 10;
4188    // Piconet Clock for the specified Connection_Handle. This value is the same as the controller's
4189    // response to HCI_Read_Clock HCI command with the parameter "Which_Clock" of
4190    // 0x01 (Piconet Clock)
4191    // Unit: N * 0.3125 ms (1 Bluetooth Clock)
4192    // Original type: uint32_t
4193    optional int64 connection_piconet_clock = 11;
4194    // The count of retransmission
4195    // Original type: uint32_t
4196    optional int64 retransmission_count = 12;
4197    // The count of no RX
4198    // Original type: uint32_t
4199    optional int64 no_rx_count = 13;
4200    // The count of NAK (Negative Acknowledge)
4201    // Original type: uint32_t
4202    optional int64 nak_count = 14;
4203    // Controller timestamp of last TX ACK
4204    // Unit: N * 0.3125 ms (1 Bluetooth Clock)
4205    // Original type: uint32_t
4206    optional int64 last_tx_ack_timestamp = 15;
4207    // The count of Flow-off (STOP)
4208    // Original type: uint32_t
4209    optional int64 flow_off_count = 16;
4210    // Controller timestamp of last Flow-on (GO)
4211    // Unit: N * 0.3125 ms (1 Bluetooth Clock)
4212    // Original type: uint32_t
4213    optional int64 last_flow_on_timestamp = 17;
4214    // Buffer overflow count (how many bytes of TX data are dropped) since the last event
4215    // Original type: uint32_t
4216    optional int64 buffer_overflow_bytes = 18;
4217    // Buffer underflow count (in byte) since last event
4218    // Original type: uint32_t
4219    optional int64 buffer_underflow_bytes = 19;
4220}
4221
4222/**
4223 * Logs when a Bluetooth device's manufacturer information is learnt by the Bluetooth stack
4224 *
4225 * Notes:
4226 * - Each event can be partially filled as we might learn different pieces of device
4227 *   information at different time
4228 * - Multiple device info events can be combined to give more complete picture
4229 * - When multiple device info events tries to describe the same information, the
4230 *   later one wins
4231 *
4232 * Logged from:
4233 *     packages/apps/Bluetooth
4234 */
4235message BluetoothDeviceInfoReported {
4236    // An identifier that can be used to match events for this device.
4237    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
4238    // Salt: Randomly generated 256 bit value
4239    // Hash algorithm: HMAC-SHA256
4240    // Size: 32 byte
4241    // Default: null or empty if the device identifier is not known
4242    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
4243    // Where is this device info obtained from
4244    optional android.bluetooth.DeviceInfoSrcEnum source_type = 2;
4245    // Name of the data source
4246    // For EXTERNAL: package name of the data source
4247    // For INTERNAL: null for general case, component name otherwise
4248    optional string source_name = 3;
4249    // Name of the manufacturer of this device
4250    optional string manufacturer = 4;
4251    // Model of this device
4252    optional string model = 5;
4253    // Hardware version of this device
4254    optional string hardware_version = 6;
4255    // Software version of this device
4256    optional string software_version = 7;
4257    // An identifier that can be used to match events for this device.
4258    // The incremental identifier is locally generated and guaranteed not derived
4259    // from any globally unique hardware id.
4260    // For paired devices, it stays consistent between Bluetooth toggling for the
4261    // same remote device.
4262    // For unpaired devices, it stays consistent within the same Bluetooth adapter
4263    // session for the same remote device.
4264    // Default: 0 if the device's metric id is unknown.
4265    optional int32 metric_id = 8;
4266    // A flag indicating if the MAC address of the remote device is public or
4267    // random.
4268    optional android.bluetooth.AddressTypeEnum address_type = 9;
4269    // The first byte of MAC address
4270    optional int32 byte1 = 10;
4271    // The second byte of MAC address
4272    optional int32 byte2 = 11;
4273    // The third byte of MAC address
4274    optional int32 byte3 = 12;
4275
4276}
4277
4278/**
4279 * Logs when we receive Bluetooth Read Remote Version Information Complete Event from the remote
4280 * device, as documented by the Bluetooth Core HCI specification
4281 * Reference: https://www.bluetooth.com/specifications/bluetooth-core-specification
4282 * Vol 2, Part E, Page 1118
4283 *
4284 * Logged from:
4285 *     system/bt
4286 */
4287message BluetoothRemoteVersionInfoReported {
4288    // Connection handle of the connection
4289    // Original type: uint16_t
4290    optional int32 connection_handle = 1;
4291    // HCI command status code
4292    // Default: STATUS_UNKNOWN
4293    optional android.bluetooth.hci.StatusEnum hci_status = 2;
4294    // 1 byte Version of current LMP in the remote controller
4295    optional int32 lmp_version = 3;
4296    // 2 bytes LMP manufacturer code of the remote controller
4297    // https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers
4298    optional int32 lmp_manufacturer_code = 4;
4299    // 4 bytes subversion of the LMP in the remote controller
4300    optional int32 lmp_subversion = 5;
4301}
4302
4303/**
4304 * Logs when certain Bluetooth SDP attributes are discovered
4305 * Constant definitions are from:
4306 *     https://www.bluetooth.com/specifications/assigned-numbers/service-discovery
4307 *
4308 * Current logged attributes:
4309 * - BluetoothProfileDescriptorList
4310 * - Supported Features Bitmask
4311 *
4312 * Logged from:
4313 *     system/bt
4314 */
4315message BluetoothSdpAttributeReported {
4316    // An identifier that can be used to match events for this device.
4317    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
4318    // Salt: Randomly generated 256 bit value
4319    // Hash algorithm: HMAC-SHA256
4320    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
4321    // Short form UUIDs used to identify Bluetooth protocols, profiles, and service classes
4322    // Original type: uint16_t
4323    optional int32 protocol_uuid = 2;
4324    // Short form UUIDs used to identify Bluetooth SDP attribute types
4325    // Original type: uint16_t
4326    optional int32 attribute_id = 3;
4327    // Attribute value for the particular attribute
4328    optional bytes attribute_value = 4 [(android.os.statsd.log_mode) = MODE_BYTES];
4329    // An identifier that can be used to match events for this device.
4330    // The incremental identifier is locally generated and guaranteed not derived
4331    // from any globally unique hardware id.
4332    // For paired devices, it stays consistent between Bluetooth toggling for the
4333    // same remote device.
4334    // For unpaired devices, it stays consistent within the same Bluetooth adapter
4335    // session for the same remote device.
4336    // Default: 0 if the device's metric id is unknown.
4337    optional int32 metric_id = 5;
4338}
4339
4340/**
4341* Logs the user created Bluetooth device's name.
4342* It is pushed at Bluetooth pairing and connection.
4343*
4344* Logged from:
4345*     packages/modules/Bluetooth
4346*/
4347message BluetoothDeviceNameReported {
4348   // An identifier that can be used to match events for this device.
4349   // The incremental identifier is locally generated and guaranteed not derived
4350   // from any globally unique hardware id.
4351   // For paired devices, it stays consistent between Bluetooth toggling for the
4352   // same remote device.
4353   // For unpaired devices, it stays consistent within the same Bluetooth adapter
4354   // session for the same remote device.
4355   // Default: 0 if the device's metric id is unknown.
4356   optional int32 metric_id = 1;
4357
4358   // Name of the Bluetooth device. It is created by the user.
4359   optional string device_name = 2;
4360}
4361
4362/**
4363 * Logs when bond state of a Bluetooth device changes
4364 *
4365 * Logged from:
4366 *     frameworks/base/core/java/android/bluetooth/BluetoothDevice.java
4367 *     packages/apps/Bluetooth/src/com/android/bluetooth/btservice/BondStateMachine.java
4368 */
4369message BluetoothBondStateChanged {
4370    // An identifier that can be used to match events for this device.
4371    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
4372    // Salt: Randomly generated 256 bit value
4373    // Hash algorithm: HMAC-SHA256
4374    // Size: 32 byte
4375    // Default: null or empty if the device identifier is not known
4376    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
4377    // Preferred transport type to remote dual mode device
4378    // Default: TRANSPORT_AUTO means no preference
4379    optional android.bluetooth.TransportTypeEnum transport = 2;
4380    // The type of this Bluetooth device (Classic, LE, or Dual mode)
4381    // Default: UNKNOWN
4382    optional android.bluetooth.DeviceTypeEnum type = 3;
4383    // Current bond state (NONE, BONDING, BONDED)
4384    // Default: BOND_STATE_UNKNOWN
4385    optional android.bluetooth.BondStateEnum bond_state = 4;
4386    // Bonding sub state
4387    // Default: BOND_SUB_STATE_UNKNOWN
4388    optional android.bluetooth.BondSubStateEnum bonding_sub_state = 5;
4389    // Unbond Reason
4390    // Default: UNBOND_REASON_UNKNOWN
4391    optional android.bluetooth.UnbondReasonEnum unbond_reason = 6;
4392    // An identifier that can be used to match events for this device.
4393    // The incremental identifier is locally generated and guaranteed not derived
4394    // from any globally unique hardware id.
4395    // For paired devices, it stays consistent between Bluetooth toggling for the
4396    // same remote device.
4397    // For unpaired devices, it stays consistent within the same Bluetooth adapter
4398    // session for the same remote device.
4399    // Default: 0 if the device's metric id is unknown.
4400    optional int32 metric_id = 7;
4401}
4402
4403/**
4404 * Logs there is an event related Bluetooth classic pairing
4405 *
4406 * Logged from:
4407 *     system/bt
4408 */
4409message BluetoothClassicPairingEventReported {
4410    // An identifier that can be used to match events for this device.
4411    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
4412    // Salt: Randomly generated 256 bit value
4413    // Hash algorithm: HMAC-SHA256
4414    // Size: 32 byte
4415    // Default: null or empty if the device identifier is not known
4416    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
4417    // Connection handle of this connection if available
4418    // Range: 0x0000 - 0x0EFF (12 bits)
4419    // Default: 0xFFFF if the handle is unknown
4420    optional int32 connection_handle = 2;
4421    // HCI command associated with this event
4422    // Default: CMD_UNKNOWN
4423    optional android.bluetooth.hci.CommandEnum hci_cmd = 3;
4424    // HCI event associated with this event
4425    // Default: EVT_UNKNOWN
4426    optional android.bluetooth.hci.EventEnum hci_event = 4;
4427    // HCI command status code if this is triggerred by hci_cmd
4428    // Default: STATUS_UNKNOWN
4429    optional android.bluetooth.hci.StatusEnum cmd_status = 5;
4430    // HCI reason code associated with this event
4431    // Default: STATUS_UNKNOWN
4432    optional android.bluetooth.hci.StatusEnum reason_code = 6;
4433    // A status value related to this specific event
4434    // Default: 0
4435    optional int64 event_value = 7;
4436    // An identifier that can be used to match events for this device.
4437    // The incremental identifier is locally generated and guaranteed not derived
4438    // from any globally unique hardware id.
4439    // For paired devices, it stays consistent between Bluetooth toggling for the
4440    // same remote device.
4441    // For unpaired devices, it stays consistent within the same Bluetooth adapter
4442    // session for the same remote device.
4443    // Default: 0 if the device's metric id is unknown.
4444    optional int32 metric_id = 8;
4445}
4446
4447/**
4448 * Logs when there is an event related to Bluetooth Security Manager Protocol (SMP)
4449 *
4450 * Logged from:
4451 *     system/bt
4452 */
4453message BluetoothSmpPairingEventReported {
4454    // An identifier that can be used to match events for this device.
4455    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
4456    // Salt: Randomly generated 256 bit value
4457    // Hash algorithm: HMAC-SHA256
4458    // Size: 32 byte
4459    // Default: null or empty if the device identifier is not known
4460    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
4461    // SMP command sent or received over L2CAP
4462    // Default: CMD_UNKNOWN
4463    optional android.bluetooth.smp.CommandEnum smp_command = 2;
4464    // Whether this command is sent or received
4465    // Default: DIRECTION_UNKNOWN
4466    optional android.bluetooth.DirectionEnum direction = 3;
4467    // SMP failure reason code
4468    // Default: PAIRING_FAIL_REASON_DEFAULT
4469    optional android.bluetooth.smp.PairingFailReasonEnum smp_fail_reason = 4;
4470    // An identifier that can be used to match events for this device.
4471    // The incremental identifier is locally generated and guaranteed not derived
4472    // from any globally unique hardware id.
4473    // For paired devices, it stays consistent between Bluetooth toggling for the
4474    // same remote device.
4475    // For unpaired devices, it stays consistent within the same Bluetooth adapter
4476    // session for the same remote device.
4477    // Default: 0 if the device's metric id is unknown.
4478    optional int32 metric_id = 5;
4479}
4480
4481/**
4482 * Logs when a Bluetooth socket’s connection state changed
4483 *
4484 * Logged from:
4485 *   system/bt
4486 */
4487message BluetoothSocketConnectionStateChanged {
4488    // An identifier that can be used to match events for this device.
4489    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
4490    // Salt: Randomly generated 256 bit value
4491    // Hash algorithm: HMAC-SHA256
4492    // Size: 32 byte
4493    // Default: null or empty if this is a server listener socket
4494    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
4495    // Temporary port of this socket for the current connection or session only
4496    // Default 0 when unknown or don't care
4497    optional int32 port = 2;
4498    // Socket type as mentioned in
4499    // frameworks/base/core/java/android/bluetooth/BluetoothSocket.java
4500    // Default: SOCKET_TYPE_UNKNOWN
4501    optional android.bluetooth.SocketTypeEnum type = 3;
4502    // Socket connection state
4503    // Default: SOCKET_CONNECTION_STATE_UNKNOWN
4504    optional android.bluetooth.SocketConnectionstateEnum state = 4;
4505    // Number of bytes sent to remote device during this connection
4506    optional int64 tx_bytes = 5;
4507    // Number of bytes received from remote device during this connection
4508    optional int64 rx_bytes = 6;
4509    // Socket owner's UID
4510    optional int32 uid = 7 [(is_uid) = true];
4511    // Server port of this socket, if any. When both |server_port| and |port| fields are populated,
4512    // |port| must be spawned by |server_port|
4513    // Default 0 when unknown or don't care
4514    optional int32 server_port = 8;
4515    // Whether this is a server listener socket
4516    optional android.bluetooth.SocketRoleEnum is_server = 9;
4517    // An identifier that can be used to match events for this device.
4518    // The incremental identifier is locally generated and guaranteed not derived
4519    // from any globally unique hardware id.
4520    // For paired devices, it stays consistent between Bluetooth toggling for the
4521    // same remote device.
4522    // For unpaired devices, it stays consistent within the same Bluetooth adapter
4523    // session for the same remote device.
4524    // Default: 0 if the device's metric id is unknown.
4525    optional int32 metric_id = 10;
4526    // Duration of socket connection in milliseconds
4527    // Default 0, only logged when the state changes to SOCKET_CONNECTION_STATE_DISCONNECTED
4528    optional int64 connection_duration_ms = 11;
4529    // Error code of socket failures
4530    // Use SOCKET_ERROR_NONE if no error
4531    optional android.bluetooth.SocketErrorEnum error_code = 12;
4532    // Whether this is a offload socket
4533    // Offload socket utilizes offload stack running on a low-power processor for Bluetooth
4534    // communication, while non-offload socket uses the main Bluetooth stack running on the
4535    // application processor.
4536    optional bool is_hardware_offload = 13;
4537}
4538
4539/**
4540 * Logs when Class of Device (CoD) value is learnt for a device during pairing or connection
4541 *
4542 * Logged from:
4543 *   packages/apps/Bluetooth/src/com/android/bluetooth/btservice/BondStateMachine.java
4544 *   packages/apps/Bluetooth/src/com/android/bluetooth/btservice/RemoteDevices.java
4545 *
4546 */
4547message BluetoothClassOfDeviceReported {
4548    // An identifier that can be used to match events for this device.
4549    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
4550    // Salt: Randomly generated 256 bit value
4551    // Hash algorithm: HMAC-SHA256
4552    // Size: 32 byte
4553    // Default: null or empty if this is a server listener socket
4554    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
4555    // Class of Device (CoD) value including both Major, Minor device class and service class
4556    // Defined in: https://www.bluetooth.com/specifications/assigned-numbers/baseband
4557    // Also defined in: https://developer.android.com/reference/android/bluetooth/BluetoothClass
4558    // Default: 0
4559    optional int32 class_of_device = 2;
4560    // An identifier that can be used to match events for this device.
4561    // The incremental identifier is locally generated and guaranteed not derived
4562    // from any globally unique hardware id.
4563    // For paired devices, it stays consistent between Bluetooth toggling for the
4564    // same remote device.
4565    // For unpaired devices, it stays consistent within the same Bluetooth adapter
4566    // session for the same remote device.
4567    // Default: 0 if the device's metric id is unknown.
4568    optional int32 metric_id = 3;
4569}
4570
4571/**
4572 * Logs when there is a crash in hardware abstraction layer (HAL)
4573 *
4574 * Logged from:
4575 *   system/bt
4576 *
4577 */
4578message BluetoothHALCrashReasonReported {
4579    // An identifier that can be used to match events for this device.
4580    // The incremental identifier is locally generated and guaranteed not derived
4581    // from any globally unique hardware id.
4582    // For paired devices, it stays consistent between Bluetooth toggling for the
4583    // same remote device.
4584    // For unpaired devices, it stays consistent within the same Bluetooth adapter
4585    // session for the same remote device.
4586    // Default: 0 if the device's metric id is unknown.
4587    optional int32 metric_id = 1;
4588    // An identifier that can be used to match events for this device.
4589    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
4590    // Salt: Randomly generated 256 bit value
4591    // Hash algorithm: HMAC-SHA256
4592    // Size: 32 byte
4593    // Default: null or empty if the device identifier is not known
4594    optional bytes obfuscated_id = 2 [(android.os.statsd.log_mode) = MODE_BYTES];
4595    // Bluetooth HAL crash reason error code.
4596    // Original type: uint8_t
4597    // Default: 0x00 (DEFAULT)
4598    optional int32 error_code = 3;
4599    // Bluetooth HAL crash reason vendor error code.
4600    // Original type: uint8_t
4601    // Default: 0x00 (DEFAULT)
4602    optional int32 vendor_error_code = 4;
4603}
4604
4605/**
4606 * Logs when an LE Audio connection session ended
4607 *
4608 * Logged from:
4609 *   packages/modules/Bluetooth
4610 *
4611 */
4612message LeAudioConnectionSessionReported {
4613    // Size of this CSIS group
4614    optional int32 group_size = 1;
4615    // An identifier that can be used to match events for this CSIS group.
4616    // The incremental identifier is locally generated and guaranteed not derived
4617    // from any globally unique hardware id.
4618    // For paired groups, it stays consistent between Bluetooth toggling for the
4619    // same remote group.
4620    // For unpaired groups, it stays consistent within the same Bluetooth adapter
4621    // session for the same remote group.
4622    // Default: 0 if the group's metric id is unknown.
4623    optional int32 group_metric_id = 2;
4624    // Total duration of this LeAudioConnectionSession
4625    optional int64 duration_nanos = 3;
4626
4627    // Connecting timestamp offset to the beginning of this session of each device session
4628    repeated int64 device_connecting_offset_nanos = 4;
4629    // Connected timestamp offset to the beginning of this session of each device session
4630    repeated int64 device_connected_offset_nanos = 5;
4631    // Duration of each device session
4632    repeated int64 device_connection_duration_nanos = 6;
4633    // Connection status of each device session
4634    repeated android.bluetooth.leaudio.ConnectionStatus device_connection_status = 7;
4635    // Disconnection status of each device session
4636    repeated android.bluetooth.leaudio.ConnectionStatus device_disconnection_status = 8;
4637    // An identifier that can be used to match events for this device.
4638    // The incremental identifier is locally generated and guaranteed not derived
4639    // from any globally unique hardware id.
4640    // For paired devices, it stays consistent between Bluetooth toggling for the
4641    // same remote device.
4642    // For unpaired devices, it stays consistent within the same Bluetooth adapter
4643    // session for the same remote device.
4644    // Default: 0 if the device's metric id is unknown.
4645    repeated int32 device_metric_id = 9;
4646
4647    // Streaming beginning timestamp offset to the beginning of this session
4648    repeated int64 streaming_session_offset_nanos = 10;
4649    // Streaming ending timestamp offset to the beginning of this session
4650    repeated int64 streaming_session_duration_nanos = 11;
4651    // Streaming context type of each steaming session
4652    repeated android.bluetooth.leaudio.ContextType streaming_context_type = 12;
4653}
4654
4655/**
4656 * Logs when an LE Audio broadcast session ended
4657 *
4658 * Logged from:
4659 *   packages/modules/Bluetooth
4660 *
4661 */
4662message LeAudioBroadcastSessionReported {
4663    // Broadcast duration
4664    optional int64 duration_nanos = 1;
4665}
4666
4667/**
4668 * Logs when the counter is incremented
4669 *
4670 * Logged from:
4671 *   system/bt
4672 *   packages/apps/Bluetooth
4673 *
4674 */
4675message BluetoothCodePathCounter {
4676    // Keys of events with enum ranges to be defined
4677    optional android.bluetooth.CodePathCounterKeyEnum key = 1;
4678    // Number of frequency of events
4679    optional int64 number = 2;
4680}
4681
4682/**
4683 * Logs when an application attempts to start a Bluetooth Low Energy scan.
4684 * It only happens when the scan is initiated and does not repeatedly call
4685 * while the scan is running.
4686 *
4687 * Logged from:
4688 *   packages/apps/Bluetooth/src/com/android/bluetooth/gatt/GattService.java
4689 *
4690 */
4691message BluetoothLeBatchScanReportDelay {
4692    optional int32 application_uid = 1 [(is_uid) = true];
4693    optional int64 application_report_delay_millis = 2;
4694}
4695
4696message BluetoothLocalVersionsReported {
4697    // Chip Manufacturer name
4698    optional int32 lmp_manufacturer_name = 1;
4699    // LMP Version
4700    optional int32 lmp_version = 2;
4701    // LMP Subversion
4702    optional int32 lmp_subversion = 3;
4703    // HCI Version
4704    optional int32 hci_version = 4;
4705    // HCI Revision
4706    optional int32 hci_revision = 5;
4707}
4708
4709message BluetoothRemoteSupportedFeaturesReported {
4710    // An identifier that can be used to match events for this device.
4711    // The incremental identifier is locally generated and guaranteed not derived
4712    // from any globally unique hardware id.
4713    // For paired devices, it stays consistent between Bluetooth toggling for the
4714    // same remote device.
4715    // For unpaired devices, it stays consistent within the same Bluetooth adapter
4716    // session for the same remote device.
4717    // Default: 0 if the device's metric id is unknown.
4718    optional int32 metric_id = 1;
4719    // Page of the feature bit masks
4720    optional int32 page = 2;
4721    // Bit mask of features
4722    optional int64 features_page2 = 3;
4723    // Connection handle of this connection if available
4724    // Range: 0x0000 - 0x0EFF (12 bits)
4725    // Default: 0xFFFF if the handle is unknown
4726    optional int32 connection_handle = 4;
4727}
4728
4729message BluetoothLocalSupportedFeaturesReported {
4730    // Page of the feature bit masks
4731    optional int32 page_num = 1;
4732    // Bit mask of features
4733    optional int64 features_page = 2;
4734}
4735
4736message BluetoothDisconnectionReasonReported {
4737    // Disconnection reason
4738    optional int32 reason = 1;
4739    // An identifier that can be used to match events for this device.
4740    // The incremental identifier is locally generated and guaranteed not derived
4741    // from any globally unique hardware id.
4742    // For paired devices, it stays consistent between Bluetooth toggling for the
4743    // same remote device.
4744    // For unpaired devices, it stays consistent within the same Bluetooth adapter
4745    // session for the same remote device.
4746    // Default: 0 if the device's metric id is unknown.
4747    optional int32 metric_id = 2;
4748    // Connection handle of this connection if available
4749    // Range: 0x0000 - 0x0EFF (12 bits)
4750    // Default: 0xFFFF if the handle is unknown
4751    optional int32 connection_handle = 3;
4752}
4753
4754message BluetoothGattAppInfo {
4755    // An index to group connection events by session. It's a counter generated by
4756    // each profile. e.g. Gatt server generate such id to identify Gatt apps
4757    optional int32 session_index = 1;
4758    // An identifier that can be used to match events for this device.
4759    // The incremental identifier is locally generated and guaranteed not derived
4760    // from any globally unique hardware id.
4761    // For paired devices, it stays consistent between Bluetooth toggling for the
4762    // same remote device.
4763    // For unpaired devices, it stays consistent within the same Bluetooth adapter
4764    // session for the same remote device.
4765    // Default: 0 if the device's metric id is unknown.
4766    optional int32 metric_id = 2;
4767    // UID of the GATT app
4768    optional int32 uid = 3 [(is_uid) = true];
4769}
4770
4771/**
4772 * Logs when something is plugged into or removed from the USB-C connector.
4773 *
4774 * Logged from:
4775 *  UsbService
4776 */
4777message UsbConnectorStateChanged {
4778    enum State {
4779        STATE_DISCONNECTED = 0;
4780        STATE_CONNECTED = 1;
4781    }
4782    optional State state = 1
4783            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
4784    optional string id = 2 [(state_field_option).primary_field = true];
4785    // Last active session in ms.
4786    // 0 when the port is in connected state.
4787    optional int64 last_connect_duration_millis = 3;
4788}
4789
4790/**
4791 * Logs the reported speaker impedance.
4792 *
4793 * Logged from:
4794 *  Vendor audio implementation.
4795 */
4796message SpeakerImpedanceReported {
4797    optional int32 speaker_location = 1;
4798    optional int32 impedance = 2;
4799}
4800
4801/**
4802 * Logs the report of a failed hardware.
4803 *
4804 * Logged from:
4805 *  Vendor HALs.
4806 *
4807 */
4808message HardwareFailed {
4809    enum HardwareType {
4810        HARDWARE_FAILED_UNKNOWN = 0;
4811        HARDWARE_FAILED_MICROPHONE = 1;
4812        HARDWARE_FAILED_CODEC = 2;
4813        HARDWARE_FAILED_SPEAKER = 3;
4814        HARDWARE_FAILED_FINGERPRINT = 4;
4815    }
4816    optional HardwareType hardware_type = 1;
4817
4818   /**
4819    * hardware_location allows vendors to differentiate between multiple instances of
4820    * the same hardware_type.  The specific locations are vendor defined integers,
4821    * referring to board-specific numbering schemes.
4822    */
4823    optional int32 hardware_location = 2;
4824
4825    /**
4826     * failure_code is specific to the HardwareType of the failed hardware.
4827     * It should use one of the enum values defined below.
4828     */
4829    enum HardwareErrorCode {
4830        UNKNOWN = 0;
4831        COMPLETE = 1;
4832        SPEAKER_HIGH_Z = 2;
4833        SPEAKER_SHORT = 3;
4834        FINGERPRINT_SENSOR_BROKEN = 4;
4835        FINGERPRINT_TOO_MANY_DEAD_PIXELS = 5;
4836        DEGRADE = 6;
4837    }
4838    optional int32 failure_code = 3;
4839}
4840
4841/**
4842 * Log an event when the device has been physically dropped.
4843 * Reported from the /vendor partition.
4844 */
4845message PhysicalDropDetected {
4846    // Confidence that the event was actually a drop, 0 -> 100
4847    optional int32 confidence_pctg = 1;
4848    // Peak acceleration of the drop, in 1/1000s of a g.
4849    optional int32 accel_peak_thousandths_g = 2;
4850    // Duration of freefall in ms
4851    optional int32 freefall_time_millis = 3;
4852}
4853
4854/**
4855 * Log bucketed battery charge cycles.
4856 *
4857 * Each bucket represents cycles of the battery past
4858 * a given charge point.  For example, if 10 cycle buckets are
4859 * initialized, bucket 1 is the lowest 1/10th of the battery,
4860 * and bucket 10 is 100%.
4861 *
4862 * Logged from:
4863 * /sys/class/power_supply/bms/cycle_count, via Vendor.
4864 */
4865message ChargeCyclesReported {
4866    optional int32 cycle_bucket_1 = 1;
4867    optional int32 cycle_bucket_2 = 2;
4868    optional int32 cycle_bucket_3 = 3;
4869    optional int32 cycle_bucket_4 = 4;
4870    optional int32 cycle_bucket_5 = 5;
4871    optional int32 cycle_bucket_6 = 6;
4872    optional int32 cycle_bucket_7 = 7;
4873    optional int32 cycle_bucket_8 = 8;
4874    optional int32 cycle_bucket_9 = 9;
4875    optional int32 cycle_bucket_10 = 10;
4876}
4877
4878/**
4879 * Log battery health snapshot.
4880 *
4881 * Resistance, Voltage, Open Circuit Voltage, Temperature, and Charge Level
4882 * are snapshotted periodically over 24hrs.
4883 */
4884message BatteryHealthSnapshot {
4885    enum BatterySnapshotType {
4886        UNKNOWN = 0;
4887        MIN_TEMP = 1;         // Snapshot at min batt temp over 24hrs.
4888        MAX_TEMP = 2;         // Snapshot at max batt temp over 24hrs.
4889        MIN_RESISTANCE = 3;   // Snapshot at min batt resistance over 24hrs.
4890        MAX_RESISTANCE = 4;   // Snapshot at max batt resistance over 24hrs.
4891        MIN_VOLTAGE = 5;      // Snapshot at min batt voltage over 24hrs.
4892        MAX_VOLTAGE = 6;      // Snapshot at max batt voltage over 24hrs.
4893        MIN_CURRENT = 7;      // Snapshot at min batt current over 24hrs.
4894        MAX_CURRENT = 8;      // Snapshot at max batt current over 24hrs.
4895        MIN_BATT_LEVEL = 9;   // Snapshot at min battery level (SoC) over 24hrs.
4896        MAX_BATT_LEVEL = 10;  // Snapshot at max battery level (SoC) over 24hrs.
4897        AVG_RESISTANCE = 11;  // Snapshot at average battery resistance over 24hrs.
4898    }
4899    optional BatterySnapshotType type = 1;
4900    // Temperature, in 1/10ths of degree C.
4901    optional int32 temperature_deci_celsius = 2;
4902    // Voltage Battery Voltage, in microVolts.
4903    optional int32 voltage_micro_volt = 3;
4904    // Current Battery current, in microAmps.
4905    optional int32 current_micro_amps = 4;
4906    // OpenCircuitVoltage Battery Open Circuit Voltage, in microVolts.
4907    optional int32 open_circuit_micro_volt = 5;
4908    // Resistance Battery Resistance, in microOhms.
4909    optional int32 resistance_micro_ohm = 6;
4910    // Level Battery Level, as % of full.
4911    optional int32 level_percent = 7;
4912}
4913
4914/**
4915 * Log slow I/O operations on the primary storage.
4916 */
4917message SlowIo {
4918    // Classifications of IO Operations.
4919    enum IoOperation {
4920        UNKNOWN = 0;
4921        READ = 1;
4922        WRITE = 2;
4923        UNMAP = 3;
4924        SYNC = 4;
4925    }
4926    optional IoOperation operation = 1;
4927
4928    // The number of slow IO operations of this type over 24 hours.
4929    optional int32 count = 2;
4930}
4931
4932/**
4933 * Log battery caused shutdown with the last recorded voltage.
4934 */
4935message BatteryCausedShutdown {
4936    // The last recorded battery voltage prior to shutdown.
4937    optional int32 last_recorded_micro_volt = 1;
4938}
4939
4940/**
4941 * Logs when ThermalService receives throttling events.
4942 *
4943 * Logged from:
4944 *   frameworks/base/services/core/java/com/android/server/stats/StatsCompanionService.java
4945 */
4946message ThermalThrottlingSeverityStateChanged {
4947  // The type of temperature being reported (CPU, GPU, SKIN, etc)
4948  optional android.os.TemperatureTypeEnum sensor_type = 1
4949      [(state_field_option).primary_field = true];
4950
4951  // The name of the temperature source. Eg. CPU0
4952  optional string sensor_name = 2 [(state_field_option).primary_field = true];
4953
4954  // Temperature in tenths of a degree C.
4955  // For BCL, it is decimillivolt, decimilliamps, and percentage * 10.
4956  optional int32 temperature_deci_celsius = 3;
4957
4958  // Relative severity of the throttling, see enum definition.
4959  optional android.os.ThrottlingSeverityEnum severity = 4 [
4960    (state_field_option).exclusive_state = true,
4961    (state_field_option).nested = false
4962  ];
4963}
4964
4965/**
4966 * Logs phone signal strength changes.
4967 *
4968 * The atom doesn't tell which SIM had signal strength changed -- use with caution when there are
4969 * multiple SIMs present.
4970 *
4971 * Logged from:
4972 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
4973 */
4974message PhoneSignalStrengthChanged {
4975    // Signal strength, from frameworks/proto_logging/stats/enums/telephony/enums.proto.
4976    optional android.telephony.SignalStrengthEnum signal_strength = 1
4977            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
4978}
4979
4980
4981/**
4982 * Logs when the phone state, sim state or signal strength changes
4983 *
4984 * Logged from:
4985 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
4986 */
4987message PhoneServiceStateChanged {
4988    optional android.telephony.ServiceStateEnum state = 1;
4989    optional android.telephony.SimStateEnum sim_state = 2;
4990    optional android.telephony.SignalStrengthEnum signal_strength = 3;
4991}
4992
4993/**
4994 * Logs when the phone becomes on or off.
4995 *
4996 * Logged from:
4997 *   frameworks/base/core/java/com/android/internal/os/TelephonyRegistry.java
4998 */
4999message PhoneStateChanged {
5000    enum State {
5001        OFF = 0;
5002        ON = 1;
5003    }
5004    optional State state = 1;
5005}
5006
5007message ExclusionRectStateChanged {
5008    optional string component_name = 1;    // if not available, simply packageName
5009    optional int32 requested_height = 2;   // px
5010    optional int32 rejected_height = 3;    // px
5011
5012    enum WindowHorizontalLocation {
5013        DEFAULT_LOCATION = 0;
5014        LEFT = 1;
5015        RIGHT = 2;
5016    }
5017    optional WindowHorizontalLocation x_location = 4;
5018    optional bool landscape = 5;
5019    optional bool splitscreen = 6 [deprecated = true];
5020    optional int32 duration_millis = 7;
5021}
5022
5023/**
5024 * Logs when Wallpaper or ThemePicker UI has changed.
5025 *
5026 * Logged from:
5027 *   packages/apps/ThemePicker
5028 *   packages/apps/WallpaperPicker2
5029 */
5030message StyleUIChanged {
5031    optional android.stats.style.Action action = 1;
5032    optional int32 color_package_hash = 2;
5033    optional int32 font_package_hash  = 3;
5034    optional int32 shape_package_hash = 4;
5035    optional int32 clock_package_hash = 5;
5036    optional int32 launcher_grid = 6;
5037    optional int32 wallpaper_category_hash = 7;
5038    optional int32 wallpaper_id_hash = 8;
5039    optional int32 color_preference = 9;
5040    optional android.stats.style.LocationPreference location_preference = 10;
5041    optional android.stats.style.DatePreference date_preference = 11;
5042    optional android.stats.style.LaunchedPreference launched_preference = 12;
5043    optional android.stats.style.EffectPreference effect_preference = 13;
5044    optional int32 effect_id_hash = 14;
5045    optional int32 lock_wallpaper_category_hash = 15;
5046    optional int32 lock_wallpaper_id_hash = 16;
5047    optional int32 first_launch_date_since_setup = 17;
5048    optional int32 first_wallpaper_apply_date_since_setup = 18;
5049    optional int32 app_launch_count = 19;
5050    optional int32 color_variant = 20;
5051    optional int64 time_elapsed_millis = 21;
5052    optional int32 effect_status_code = 22;
5053    optional int32 app_session_id = 23;
5054    optional android.stats.style.SetWallpaperEntryPoint set_wallpaper_entry_point = 24;
5055    optional android.stats.style.WallpaperDestination wallpaper_destination = 25;
5056    optional android.stats.style.ColorSource color_source = 26;
5057    optional int32 seed_color = 27;
5058    optional android.stats.style.ClockSize clock_size = 28;
5059    optional bool toggle_on = 29;
5060    optional string shortcut = 30;
5061    optional string shortcut_slot_id = 31;
5062    optional int32 lock_effect_id_hash = 32;
5063}
5064
5065/**
5066 * Logs when Settings UI has changed.
5067 *
5068 * Logged from:
5069 *   packages/apps/Settings
5070 */
5071message SettingsUIChanged {
5072    /**
5073     * Where this SettingsUIChange event comes from. For example, if
5074     * it's a PAGE_VISIBLE event, where the page is opened from.
5075     */
5076    optional android.app.settings.PageId attribution = 1;
5077
5078    /**
5079     * What the UI action is.
5080     */
5081    optional android.app.settings.Action action = 2;
5082
5083    /**
5084     * Where the action is happening
5085     */
5086    optional android.app.settings.PageId page_id = 3;
5087
5088    /**
5089     * What preference changed in this event.
5090     */
5091    optional string changed_preference_key = 4;
5092
5093    /**
5094     * The new value of the changed preference.
5095     */
5096    optional int64 changed_preference_int_value = 5;
5097
5098    /**
5099     * Data about elapsed time since setup wizard finished.
5100     */
5101    optional int64 elapsed_time_millis = 6;
5102}
5103
5104/**
5105 * Logs that a setting was updated.
5106 * Logged from:
5107 *   frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
5108 * The tag and is_default allow resetting of settings to default values based on the specified
5109 * tag. See Settings#putString(ContentResolver, String, String, String, boolean) for more details.
5110 */
5111message SettingChanged {
5112    // The name of the setting.
5113    optional string setting = 1;
5114
5115    // The change being imposed on this setting. May represent a number, eg "3".
5116    optional string value = 2;
5117
5118    // The new value of this setting. For most settings, this is same as value. For some settings,
5119    // value is +X or -X where X represents an element in a set. For example, if the previous value
5120    // is A,B,C and value is -B, then new_value is A,C and prev_value is A,B,C.
5121    // The +/- feature is currently only used for location_providers_allowed.
5122    optional string new_value = 3;
5123
5124    // The previous value of this setting.
5125    optional string prev_value = 4;
5126
5127    // The tag used with the is_default for resetting sets of settings. This is generally null.
5128    optional string tag = 5;
5129
5130    // True if this setting with tag should be resettable.
5131    optional bool is_default = 6;
5132
5133    // The associated user (for multi-user feature). Defined in android/os/UserHandle.java
5134    optional int32 user = 7;
5135
5136    enum ChangeReason {
5137        UPDATED = 1; // Updated can be an insertion or an update.
5138        DELETED = 2;
5139    }
5140    optional ChangeReason reason = 8;
5141}
5142
5143/**
5144 * Logs activity going to foreground or background
5145 *
5146 * Logged from:
5147  *   frameworks/base/services/core/java/com/android/server/am/ActivityRecord.java
5148 */
5149message ActivityForegroundStateChanged {
5150    optional int32 uid = 1 [(is_uid) = true];
5151    optional string pkg_name = 2;
5152    optional string class_name = 3;
5153
5154    enum State {
5155        BACKGROUND = 0;
5156        FOREGROUND = 1;
5157    }
5158    optional State state = 4;
5159}
5160
5161/**
5162 * Logs when a volume entered low Storage state.
5163 * Logged from:
5164 *      frameworks/base/services/core/java/com/android/server/storage/DeviceStorageMonitorService.java
5165 */
5166message LowStorageStateChanged {
5167    // Volume that ran out of storage.
5168    optional string volume_description = 1;
5169
5170    enum State {
5171        UNKNOWN = 0;
5172        OFF = 1;
5173        ON = 2;
5174    }
5175    optional State state = 2;
5176}
5177
5178/**
5179 * Logs when an app is downgraded.
5180 * Logged from:
5181 *      frameworks/base/services/core/java/com/android/server/pm/BackgroundDexOptService.java
5182 */
5183message AppDowngraded {
5184    optional string package_name = 1;
5185    // Size of the package (all data) before being downgraded.
5186    optional int64 size_in_bytes_before = 2;
5187    // Size of the package (all data) after being downgraded.
5188    optional int64 size_in_bytes_after = 3;
5189
5190    optional bool aggressive = 4;
5191}
5192
5193/**
5194 * Logs when an app is optimized after being downgraded.
5195 * Logged from:
5196 *      frameworks/base/services/core/java/com/android/server/pm/BackgroundDexOptService.java
5197 */
5198message AppOptimizedAfterDowngraded {
5199    optional string package_name = 1;
5200}
5201
5202/**
5203 * Logs whenever an app is installed on external storage.
5204 * Logged from:
5205        frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java
5206 */
5207message AppInstallOnExternalStorageReported {
5208    // The type of external storage.
5209    optional android.stats.storage.ExternalStorageType storage_type = 1;
5210    // The name of the package that is installed on the sd card.
5211    optional string package_name = 2;
5212}
5213
5214/**
5215 * Logs when an app crashes.
5216 * Logged from:
5217 *      frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
5218 */
5219message AppCrashOccurred {
5220    optional int32 uid = 1 [(is_uid) = true];
5221
5222    optional string event_type = 2;
5223
5224    // The name of the process.
5225    // system_server if it is not by an app
5226    optional string process_name = 3;
5227
5228    // The pid if available. -1 means not available.
5229    optional int32 pid = 4;
5230
5231    optional string package_name = 5;
5232
5233    enum InstantApp {
5234        UNAVAILABLE = 0;
5235        FALSE = 1;
5236        TRUE = 2;
5237    }
5238    optional InstantApp is_instant_app = 6;
5239
5240    enum ForegroundState {
5241        UNKNOWN = 0;
5242        BACKGROUND = 1;
5243        FOREGROUND = 2;
5244    }
5245    optional ForegroundState foreground_state = 7;
5246
5247    optional android.server.ErrorSource error_source = 8;
5248
5249    optional bool is_incremental = 9;
5250
5251    optional float loading_progress = 10;
5252
5253    optional int64 millis_since_oldest_pending_read = 11;
5254
5255    // Status code to represent the health of the file system backing storage, as defined in
5256    // frameworks/base/core/java/android/os/incremental/IStorageHealthListener.aidl.
5257    // Value -1 if the app is not installed on Incremental
5258    optional int32 storage_health_code = 12;
5259
5260    // Status code to represent the status of data loader, as defined in
5261    // frameworks/base/core/java/android/content/pm/IDataLoaderStatusListener.aidl.
5262    // Value -1 if the app is not installed on Incremental
5263    optional int32 data_loader_status_code = 13;
5264
5265    // Whether read logs collection is enabled
5266    optional bool read_logs_enabled = 14;
5267
5268    // Duration since last attempt to bind data loader. 0 means did not attempt to bind.
5269    // -1 means the app is not installed on Incremental.
5270    optional int64 millis_since_last_data_loader_bind = 15;
5271
5272    // Delay for retrying to bind data loader. If not bound, it shows how soon it will be bound.
5273    optional int64 data_loader_bind_delay_millis = 16;
5274
5275    // Total count of delayed reads, as reported by Incremental File System.
5276    optional int32 total_delayed_reads = 17;
5277
5278    // Total count of failed reads (timeout or hash errors) as reported by Incremental File System.
5279    optional int32 total_failed_reads = 18;
5280
5281    // UID of the process that tried to read a page from the app but failed.
5282    // This shows whether the read was initiated by the system, the app itself, or some other apps.
5283    // -1 means there was no read error or the app is not installed on Incremental.
5284    optional int32 last_read_error_uid = 19 [(is_uid) = true];
5285
5286    // Duration since that last read failure.
5287    // -1 means there was no read error or the app is not installed on Incremental.
5288    optional int64 last_read_error_millis_since = 20;
5289
5290    // Error code of last read failure. ETIME (value=62) for timeout, EBADMSG (value=74) for hash
5291    // and other positive values for other errors. -1 means app is not installed on Incremental.
5292    optional int32 last_read_error_code = 21;
5293
5294    // Total duration of delayed reads in milliseconds
5295    optional int64 total_delayed_reads_duration_millis = 22;
5296}
5297
5298/**
5299 * Logs when a WTF (What a Terrible Failure) happened.
5300 * Logged from:
5301 *      frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
5302 */
5303message WTFOccurred {
5304    optional int32 uid = 1 [(is_uid) = true];
5305
5306    optional string tag = 2;
5307
5308    // The name of the process.
5309    // system_server if it is not by an app
5310    optional string process_name = 3;
5311
5312    // The pid if available. -1 means not available.
5313    optional int32 pid = 4;
5314
5315    optional android.server.ErrorSource error_source = 5;
5316}
5317
5318/**
5319 * Logs when system server reports low memory.
5320 * Logged from:
5321 *      frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
5322 */
5323message LowMemReported {
5324}
5325
5326/**
5327 * Logs when an app ANR (App Not Responding) occurs.
5328 * Logged from:
5329 *      frameworks/base/services/core/java/com/android/server/am/AppErrors.java
5330 */
5331message ANROccurred {
5332    optional int32 uid = 1 [(is_uid) = true];
5333
5334    optional string process_name = 2;
5335
5336    optional string short_component_name = 3;
5337
5338    optional string reason = 4;
5339
5340    enum InstantApp {
5341        UNAVAILABLE = 0;
5342        FALSE = 1;
5343        TRUE = 2;
5344    }
5345    optional InstantApp is_instant_app = 5;
5346
5347    enum ForegroundState {
5348        UNKNOWN = 0;
5349        BACKGROUND = 1;
5350        FOREGROUND = 2;
5351    }
5352    optional ForegroundState foreground_state = 6;
5353
5354    optional android.server.ErrorSource error_source = 7;
5355
5356    optional string package_name = 8;
5357
5358    optional bool is_incremental = 9;
5359
5360    optional float loading_progress = 10;
5361
5362    optional int64 millis_since_oldest_pending_read = 11;
5363
5364    // Status code to represent the health of the file system backing storage, as defined in
5365    // frameworks/base/core/java/android/os/incremental/IStorageHealthListener.aidl.
5366    // Value -1 if the app is not installed on Incremental
5367    optional int32 storage_health_code = 12;
5368
5369    // Status code to represent the status of data loader, as defined in
5370    // frameworks/base/core/java/android/content/pm/IDataLoaderStatusListener.aidl.
5371    // Value -1 if the app is not installed on Incremental
5372    optional int32 data_loader_status_code = 13;
5373
5374    // Whether read logs collection is enabled
5375    optional bool read_logs_enabled = 14;
5376
5377    // Duration since last attempt to bind data loader. 0 means did not attempt to bind.
5378    // -1 means the app is not installed on Incremental.
5379    optional int64 millis_since_last_data_loader_bind = 15;
5380
5381    // Delay for retrying to bind data loader. If not bound, it shows how soon it will be bound.
5382    optional int64 data_loader_bind_delay_millis = 16;
5383
5384    // Total count of delayed reads, as reported by Incremental File System.
5385    optional int32 total_delayed_reads = 17;
5386
5387    // Total count of failed reads (timeout or hash errors) as reported by Incremental File System.
5388    optional int32 total_failed_reads = 18;
5389
5390    // UID of the process that tried to read a page from the app but failed.
5391    // This shows whether the read was initiated by the system, the app itself, or some other apps.
5392    // -1 means there was no read error or the app is not installed on Incremental.
5393    optional int32 last_read_error_uid = 19 [(is_uid) = true];
5394
5395    // Duration since that last read failure.
5396    // -1 means there was no read error or the app is not installed on Incremental.
5397    optional int64 last_read_error_millis_since = 20;
5398
5399    // Error code of last read failure. ETIME (value=62) for timeout, EBADMSG (value=74) for hash
5400    // and other positive values for other errors. -1 means app is not installed on Incremental.
5401    optional int32 last_read_error_code = 21;
5402
5403    // Total duration of delayed reads in milliseconds
5404    optional int64 total_delayed_reads_duration_millis = 22;
5405}
5406
5407/**
5408 * Logs immediately after an app ANR (App Not Responding) occurs. In contrast, ANROccurred (the
5409 * atom above) logs some time (not necessarily immediately) after the ANR is detected.
5410 * Logged from:
5411 *      frameworks/base/services/core/java/com/android/server/am/AppErrors.java
5412 */
5413message ANROccurredProcessingStarted {
5414  optional string process_name = 1;
5415}
5416
5417/**
5418 * Logs when the vibrator state changes.
5419 * Logged from:
5420 *      frameworks/base/services/core/java/com/android/vibrator/VibratorManagerService.java
5421 */
5422message VibratorStateChanged {
5423    repeated AttributionNode attribution_node = 1;
5424
5425    enum State {
5426        OFF = 0;
5427        ON = 1;
5428    }
5429    optional State state = 2;
5430
5431    // Duration (in milliseconds) requested to keep the vibrator on.
5432    // Only applicable for State == ON.
5433    optional int64 duration_millis = 3;
5434}
5435
5436/**
5437 * Logs vibration request.
5438 * Logged from:
5439 *      frameworks/base/services/core/java/com/android/server/vibrator/VibratorManagerService.java
5440 */
5441// Next tag: 28
5442message VibrationReported {
5443  repeated AttributionNode attribution_node = 1;
5444
5445  enum VibrationType {
5446
5447    // Unknown vibration type.
5448    UNKNOWN = 0;
5449
5450    // One-off vibration effect/pattern.
5451    SINGLE = 1;
5452
5453    // Infinitely repeating vibration pattern.
5454    REPEATED = 2;
5455
5456    // Vibration defined in the platform outside the vibrator service
5457    // (e.g. from audio-coupled haptics or haptic generator).
5458    EXTERNAL = 3;
5459
5460    // Vibration defined by vendor apps/services.
5461    VENDOR = 4;
5462  }
5463
5464  // Vibration identifiers for aggregation.
5465  optional VibrationType vibration_type = 2;
5466  // One of VibrationAttributes.USAGE_* constant values.
5467  optional int32 vibration_usage = 3;
5468  optional int32 vibration_status = 4;
5469
5470  // Vibration parameters.
5471  // Adaptive scale value applied to this vibration, 0 if unset.
5472  optional float adaptive_scale = 26;
5473
5474  // Vibration completion causes.
5475  // Flag indicating if the vibration was canceled by the same process
5476  // or superseded/canceled by another vibration from the same process.
5477  optional bool ended_by_same_uid = 5;
5478  // Usage value of the vibration that superseded/canceled this one.
5479  optional int32 ended_by_usage = 6;
5480  // Usage value of the vibration that was superseded/canceled by this one.
5481  optional int32 interrupted_usage = 7;
5482
5483  // Vibration execution counters.
5484  optional int32 repeat_count = 8;
5485  // Total duration of this vibration at the service, including setup and cleanup.
5486  optional int64 vibration_duration_millis = 9;
5487  // Total duration the vibrator motor was active with non-zero amplitude.
5488  optional int64 vibrator_on_duration_millis = 10;
5489  // Delta between the incoming binder call to vibrate and the first step in the
5490  // vibration conductor (closest measure of starting HAL interactions).
5491  optional int64 start_latency_millis = 11;
5492  // Delta between the HAL reporting the last vibrate operation has completed and
5493  // vibrator service has finished the vibration and become idle.
5494  optional int64 end_latency_millis = 12;
5495
5496  // Vibrator hardware HAL API interaction counters.
5497  // The majority of vibrations will populate only a couple of the fields below.
5498  optional int32 hal_compose_count = 13;
5499  optional int32 hal_compose_pwle_count = 14;
5500  optional int32 hal_on_count = 15;
5501  optional int32 hal_off_count = 16;
5502  optional int32 hal_perform_count = 17;
5503  optional int32 hal_set_amplitude_count = 18;
5504  optional int32 hal_set_external_control_count = 19;
5505  optional int32 hal_perform_vendor_count = 27;
5506
5507  // Vibrator hardware HAL API constants used (deduped).
5508  // Values from CompositionPrimitive.aidl successfully triggered by this vibration at least once.
5509  repeated int32 hal_supported_composition_primitives_used = 20;
5510  // Values from Effect.aidl triggered by this vibration at least once.
5511  repeated int32 hal_supported_effects_used = 21;
5512  // Values from CompositionPrimitive.aidl triggered but not supported by the device.
5513  repeated int32 hal_unsupported_composition_primitives_used = 22;
5514  // Values from Effect.aidl triggered but not supported by the device.
5515  repeated int32 hal_unsupported_effects_used = 23;
5516  // Vibrator hardware HAL argument sizes (total).
5517  optional int32 hal_composition_size = 24;
5518  optional int32 hal_pwle_size = 25;
5519}
5520
5521/*
5522 * Allows other apps to push events into statsd.
5523 * Logged from:
5524 *      frameworks/base/core/java/android/util/StatsLog.java
5525 */
5526message AppBreadcrumbReported {
5527    // The uid of the application that sent this custom atom.
5528    optional int32 uid = 1 [(is_uid) = true];
5529
5530    // An arbitrary label chosen by the developer. For Android P, the label should be in [0, 16).
5531    optional int32 label = 2;
5532
5533    // Allows applications to easily use a custom event as start/stop boundaries (ie, define custom
5534    // predicates for the metrics).
5535    enum State {
5536        UNKNOWN = 0;
5537        UNSPECIFIED = 1;  // For events that are known to not represent START/STOP.
5538        STOP = 2;
5539        START = 3;
5540    }
5541    optional State state = 3;
5542}
5543
5544/**
5545 * Logs the wall-clock time when a significant wall-clock time shift occurs.
5546 * For example, this could be due to the user manually changing the time.
5547 *
5548 * Logged from:
5549 *   frameworks/base/services/core/java/com/android/server/AlarmManagerService.java
5550 */
5551message WallClockTimeShifted {
5552    // New wall-clock time in milliseconds, according to System.currentTimeMillis().
5553    optional int64 wall_clock_timestamp_millis = 1;
5554}
5555
5556/**
5557 * Logs when statsd detects an anomaly.
5558 *
5559 * Logged from:
5560 *   frameworks/base/cmds/statsd/src/anomaly/AnomalyTracker.cpp
5561 */
5562message AnomalyDetected {
5563    // Uid that owns the config whose anomaly detection alert fired.
5564    optional int32 config_uid = 1 [(is_uid) = true];
5565
5566    // Id of the config whose anomaly detection alert fired.
5567    optional int64 config_id = 2;
5568
5569    // Id of the alert (i.e. name of the anomaly that was detected).
5570    optional int64 alert_id = 3;
5571}
5572
5573message AppStartOccurred {
5574    // The uid if available. -1 means not available.
5575    optional int32 uid = 1 [(is_uid) = true];
5576
5577    // The app package name.
5578    optional string pkg_name = 2;
5579
5580    enum TransitionType {
5581        UNKNOWN = 0;
5582        WARM = 1;
5583        HOT = 2;
5584        COLD = 3;
5585        RELAUNCH = 4;
5586    }
5587    // The transition type.
5588    optional TransitionType type = 3;
5589
5590    // The activity name.
5591    optional string activity_name = 4;
5592
5593    // The name of the calling app. Empty if not set.
5594    optional string calling_pkg_name = 5;
5595
5596    // Whether the app is an instant app.
5597    optional bool is_instant_app = 6;
5598
5599    // Device uptime when activity started. Deprecated: use activity_start_timestamp_millis instead.
5600    optional int64 activity_start_millis = 7 [deprecated = true];
5601
5602    optional android.app.AppTransitionReasonEnum reason = 8;
5603
5604    optional int32 transition_delay_millis = 9;
5605    // -1 if not set.
5606    optional int32 starting_window_delay_millis = 10;
5607    // -1 if not set.
5608    optional int32 bind_application_delay_millis = 11;
5609    optional int32 windows_drawn_delay_millis = 12;
5610
5611    // Empty if not set.
5612    optional string launch_token = 13;
5613
5614    // The reason why the package was optimized.
5615    optional int32 package_optimization_compilation_reason = 14;
5616
5617    // The compiler filter used when when the package was optimized.
5618    optional int32 package_optimization_compilation_filter = 15;
5619
5620    enum SourceType {
5621        UNAVAILABLE = 0;
5622        LAUNCHER = 1;
5623        NOTIFICATION = 2;
5624        LOCKSCREEN = 3;
5625        RECENTS_ANIMATION = 4;
5626    }
5627    // The type of the startup source.
5628    optional SourceType source_type = 16;
5629
5630    // The time from the startup source to the beginning of handling the startup event.
5631    // -1 means not available.
5632    optional int32 source_event_delay_millis = 17;
5633
5634    // Whether the app is hibernating when it started
5635    optional bool is_hibernating = 18;
5636
5637    // Whether the app is installed on Incremental File System.
5638    optional bool is_incremental = 19;
5639
5640    // Whether the app is still being streamed.
5641    optional bool is_loading = 20;
5642
5643    // The hash value of the activity name.
5644    optional int32 activity_name_hash = 21;
5645
5646    // The timestamp(SystemClock#elapsedRealtime()) when starting activity.
5647    optional int64 activity_start_timestamp_millis = 22;
5648
5649    /**
5650     * The process state of apps, keep in sync with
5651     * frameworks/base/core/java/android/app/ActivityManager.java
5652     */
5653    enum AppProcessState {
5654        PROCESS_STATE_UNKNOWN = -1;
5655        PROCESS_STATE_PERSISTENT = 0;
5656        PROCESS_STATE_PERSISTENT_UI = 1;
5657        PROCESS_STATE_TOP = 2;
5658        PROCESS_STATE_BOUND_TOP = 3;
5659        PROCESS_STATE_FOREGROUND_SERVICE = 4;
5660        PROCESS_STATE_BOUND_FOREGROUND_SERVICE = 5;
5661        PROCESS_STATE_IMPORTANT_FOREGROUND = 6;
5662        PROCESS_STATE_IMPORTANT_BACKGROUND = 7;
5663        PROCESS_STATE_TRANSIENT_BACKGROUND = 8;
5664        PROCESS_STATE_BACKUP = 9;
5665        PROCESS_STATE_SERVICE = 10;
5666        PROCESS_STATE_RECEIVER = 11;
5667        PROCESS_STATE_TOP_SLEEPING = 12;
5668        PROCESS_STATE_HEAVY_WEIGHT = 13;
5669        PROCESS_STATE_HOME = 14;
5670        PROCESS_STATE_LAST_ACTIVITY = 15;
5671        PROCESS_STATE_CACHED_ACTIVITY = 16;
5672        PROCESS_STATE_CACHED_ACTIVITY_CLIENT = 17;
5673        PROCESS_STATE_CACHED_RECENT = 18;
5674        PROCESS_STATE_CACHED_EMPTY = 19;
5675        PROCESS_STATE_NONEXISTENT = 20;
5676    }
5677
5678    // The process state of the launching activity prior to the launch.
5679    optional AppProcessState process_state = 23;
5680
5681    // The oom adj score of the launching activity prior to the launch.
5682    optional int32 process_oom_adj = 24;
5683
5684    // The stopped state (if any) the package was in before the launch
5685    optional PackageStoppedState package_stopped_state = 25;
5686
5687    // Reserved for b/281564325.
5688    optional bool is_xr_activity = 26;
5689
5690    // Whether this is the first launch of the app since install
5691    optional bool first_launch = 27;
5692
5693    // How long since this package was stopped, if it was in
5694    // package_stopped_state == PACKAGE_STATE_STOPPED
5695    optional int64 millis_since_stopped = 28;
5696
5697    /**
5698     * The type of multi-window launch.
5699     * This should match the constants declared in ActivityMetricsLogger.
5700     */
5701    enum MultiWindowLaunchType {
5702        LAUNCH_TYPE_UNSPECIFIED = 0;
5703        LAUNCH_TYPE_APP_PAIR = 1;
5704    }
5705
5706    // The multi-indow launch type
5707    optional MultiWindowLaunchType multi_window_launch_type = 29;
5708}
5709
5710message AppStartCanceled {
5711    // The uid if available. -1 means not available.
5712    optional int32 uid = 1 [(is_uid) = true];
5713
5714    // The app package name.
5715    optional string pkg_name = 2;
5716
5717    enum TransitionType {
5718        UNKNOWN = 0;
5719        WARM = 1;
5720        HOT = 2;
5721        COLD = 3;
5722        RELAUNCH = 4;
5723    }
5724    // The transition type.
5725    optional TransitionType type = 3;
5726
5727    // The activity name.
5728    optional string activity_name = 4;
5729}
5730
5731message AppStartFullyDrawn {
5732    // The uid if available. -1 means not available.
5733    optional int32 uid = 1 [(is_uid) = true];
5734
5735    // The app package name.
5736    optional string pkg_name = 2;
5737
5738    enum TransitionType {
5739        UNKNOWN = 0;
5740        WITH_BUNDLE = 1;
5741        WITHOUT_BUNDLE = 2;
5742    }
5743    // The transition type.
5744    optional TransitionType type = 3;
5745
5746    // The activity name.
5747    optional string activity_name = 4;
5748
5749    optional bool transition_process_running = 5;
5750
5751    // App startup time (until call to Activity#reportFullyDrawn()).
5752    optional int64 app_startup_time_millis = 6;
5753
5754    // The reason why the package was optimized.
5755    optional int32 package_optimization_compilation_reason = 7;
5756
5757    // The compiler filter used when when the package was optimized.
5758    optional int32 package_optimization_compilation_filter = 8;
5759
5760    enum SourceType {
5761        UNAVAILABLE = 0;
5762        LAUNCHER = 1;
5763        NOTIFICATION = 2;
5764        LOCKSCREEN = 3;
5765    }
5766    // The type of the startup source.
5767    optional SourceType source_type = 9;
5768
5769    // The time from the startup source to the beginning of handling the startup event.
5770    // -1 means not available.
5771    optional int32 source_event_delay_millis = 10;
5772
5773    // Whether the app is installed on Incremental File System.
5774    optional bool is_incremental = 11;
5775
5776    // Whether the app is still being streamed.
5777    optional bool is_loading = 12;
5778
5779    // The hash value of the activity name.
5780    optional int32 activity_name_hash = 13;
5781
5782    // The timestamp(SystemClock#elapsedRealtime()) when starting activity.
5783    optional int64 activity_start_timestamp_millis = 14;
5784}
5785
5786/**
5787 * Logs when an app enters a different App Compat state.
5788 *
5789 * Logged from:
5790 *   frameworks/base/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
5791 */
5792message AppCompatStateChanged {
5793    // UID of the package whose state changed.
5794    optional int32 uid = 1 [(state_field_option).primary_field = true, (is_uid) = true];
5795
5796    enum State {
5797        UNKNOWN = 0;
5798        // The app is not visible or has been closed.
5799        NOT_VISIBLE = 1;
5800        // The app’s bounds aren’t letterboxed.
5801        NOT_LETTERBOXED = 2;
5802        // The app’s bounds are letterboxed because of size-compat-mode.
5803        LETTERBOXED_FOR_SIZE_COMPAT_MODE = 3;
5804        // The app’s bounds are letterboxed because of fixed orientation.
5805        LETTERBOXED_FOR_FIXED_ORIENTATION = 4;
5806        // The app’s bounds are letterboxed because of aspect ratio restrictions.
5807        LETTERBOXED_FOR_ASPECT_RATIO = 5;
5808    }
5809
5810    // Position of the letterbox
5811    enum Position {
5812        UNKNOWN_POSITION = 0;
5813        NOT_LETTERBOXED_POSITION = 1;
5814        CENTER = 2;
5815        LEFT = 3;
5816        RIGHT = 4;
5817        TOP = 5;
5818        BOTTOM = 6;
5819    }
5820
5821    // The state that was entered.
5822    optional State state = 2 [
5823      (state_field_option).exclusive_state = true,
5824      (state_field_option).nested = false];
5825
5826    optional Position letterbox_position = 3;
5827}
5828
5829/**
5830 * Logs when an app that is letterboxed changes position.
5831 *
5832 * Logged from:
5833 *   frameworks/base/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
5834 */
5835
5836message LetterboxPositionChanged {
5837    // UID of the package that is letterboxed.
5838    optional int32 uid = 1 [(is_uid) = true];
5839
5840    // The new position of the letterbox
5841    enum PositionChange {
5842        UNKNOWN = 0;
5843        CENTER_TO_LEFT = 1;
5844        LEFT_TO_CENTER = 2;
5845        CENTER_TO_RIGHT= 3;
5846        RIGHT_TO_CENTER = 4;
5847        CENTER_TO_TOP = 5;
5848        TOP_TO_CENTER = 6;
5849        CENTER_TO_BOTTOM = 7;
5850        BOTTOM_TO_CENTER = 8;
5851    }
5852
5853    optional PositionChange position_change = 2;
5854
5855}
5856
5857/**
5858 * Logs events reported for the Size Compat restart button of an app.
5859 *
5860 * Logged from:
5861 *   frameworks/base/libs/WindowManager/Shell/src/com/android/wm/shell/ShellTaskOrganizer.java
5862 */
5863message SizeCompatRestartButtonEventReported {
5864    // UID of the package that has the button.
5865    optional int32 uid = 1 [(is_uid) = true];
5866
5867    enum Event {
5868        UNKNOWN = 0;
5869        APPEARED = 1;
5870        CLICKED = 2;
5871    }
5872
5873    // The event that was reported.
5874    optional Event event = 2;
5875}
5876
5877/**
5878 * Logs a picture-in-picture action
5879 * Logged from:
5880 *      frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
5881 *      frameworks/base/services/core/java/com/android/server/am/ActivityStackSupervisor.java
5882 *      frameworks/base/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
5883 */
5884message PictureInPictureStateChanged {
5885    // -1 if it is not available
5886    optional int32 uid = 1 [(is_uid) = true];
5887
5888    optional string short_name = 2;
5889
5890    enum State {
5891        ENTERED = 1;
5892        EXPANDED_TO_FULL_SCREEN = 2;
5893        MINIMIZED = 3;
5894        DISMISSED = 4;
5895    }
5896    optional State state = 3;
5897}
5898
5899/**
5900 * Logs overlay action
5901 * Logged from:
5902 *     services/core/java/com/android/server/wm/Session.java
5903 */
5904message OverlayStateChanged {
5905    optional int32 uid = 1 [(state_field_option).primary_field = true, (is_uid) = true];
5906
5907    optional string package_name = 2 [(state_field_option).primary_field = true];
5908
5909    optional bool using_alert_window = 3;
5910
5911    enum State {
5912        ENTERED = 1;
5913        EXITED = 2;
5914    }
5915    optional State state = 4
5916            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
5917}
5918
5919/**
5920 * Logs foreground service starts and stops.
5921 * Note that this is not when a service starts or stops, but when it is
5922 * considered foreground.
5923 * Logged from
5924 *     frameworks/base/services/core/java/com/android/server/am/ActiveServices.java
5925 */
5926message ForegroundServiceStateChanged {
5927    optional int32 uid = 1 [(is_uid) = true];
5928    // package_name + "/" + class_name
5929    optional string short_name = 2;
5930
5931    enum State {
5932        UNKNOWN_STATE = 0;
5933        ENTER = 1;
5934        EXIT = 2;
5935        DENIED = 3;
5936        API_CALL = 4; // this event is to annotate API call.
5937        TIMED_OUT = 5; // time-restricted fgs type timed out.
5938    }
5939    optional State state = 3;
5940
5941    // Whether the fgs is allowed while-in-use permissions, i.e. is considered 'in-use' to the user.
5942    // (If the fgs was started while the app wasn't TOP it usually will be denied these permissions)
5943    optional bool allow_while_in_use_permission = 4;
5944    // the reason why FGS is allowed or denied to start. The reason code is defined as
5945    // PowerExemptionManager#ReasonCode.
5946    optional int32 fgs_start_reason_code = 5;
5947    // FGS service's targetSdkVersion.
5948    optional int32 target_sdk_version = 6;
5949    // uid of the app that start/bind this service.
5950    optional int32 calling_uid = 7 [(is_uid) = true];
5951    // targetSdkVersion of the app that start/bind this service.
5952    optional int32 caller_target_sdk_version = 8;
5953    // uid of the app that set the temp-allowlist, INVALID_UID (-1) if not in any
5954    // temp-allowlist.
5955    optional int32 temp_allow_list_calling_uid = 9 [(is_uid) = true];
5956    // FGS notification was deferred.
5957    optional bool fgs_notification_deferred = 10;
5958    // FGS notification was shown before the FGS finishes, or it wasn't deferred in the first place.
5959    optional bool fgs_notification_shown = 11;
5960    // The duration from state ENTER to state EXIT. Only meaningful when the state is EXIT.
5961    optional int32 fgs_duration_ms = 12;
5962    // Number of times startForeground() is called on this service.
5963    optional int32 fgs_start_count = 13;
5964    // SHA-1 hashed short_name combined with ANDROID_ID.
5965    optional int32 short_name_hash = 14;
5966    // Whether this FGS package had permission to notify the user.
5967    optional bool fgs_has_notification_permission = 15;
5968
5969    // Keep in sync with frameworks/base/core/java/android/content/pm/ServiceInfo.java
5970    enum ForegroundServiceType {
5971        FOREGROUND_SERVICE_TYPE_NONE = 0;
5972        FOREGROUND_SERVICE_TYPE_DATA_SYNC = 0x0001; // 1 << 0
5973        FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK = 0x0002; // 1 << 1
5974        FOREGROUND_SERVICE_TYPE_PHONE_CALL = 0x0004; //1 << 2
5975        FOREGROUND_SERVICE_TYPE_LOCATION = 0x0008; // 1 << 3
5976        FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE = 0x0010; // 1 << 4
5977        FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION = 0x0020; // 1 << 5
5978        FOREGROUND_SERVICE_TYPE_CAMERA = 0x0040; // 1 << 6
5979        FOREGROUND_SERVICE_TYPE_MICROPHONE = 0x0080; // 1 << 7
5980        FOREGROUND_SERVICE_TYPE_HEALTH = 0x0100; // 1 << 8
5981        FOREGROUND_SERVICE_TYPE_REMOTE_MESSAGING = 0x0200; // 1 << 9
5982        FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED = 0x0400; // 1 << 10
5983        FOREGROUND_SERVICE_TYPE_SHORT_SERVICE = 0x0800; // 1 << 11
5984        // 1 << 12 is being skipping since it was temporarily reserved for FILE_MANAGEMENT
5985        FOREGROUND_SERVICE_TYPE_MEDIA_PROCESSING = 0x2000; // 1 << 13
5986        FOREGROUND_SERVICE_TYPE_SPECIAL_USE = 0x40000000; // 1 << 30
5987    }
5988
5989    // The foreground service types, must be one or a combination of the types
5990    // in the ForegroundServiceType above.
5991    optional int32 fgs_types = 16;
5992    // The result check code for the fgs type enforcement.
5993    optional android.app.FgsTypePolicyCheckEnum fgs_type_check_code = 17;
5994    // If true, this FGS service is a delegate (instead of real FGS).
5995    optional bool is_delegate = 18;
5996    // The actual client app's uid.
5997    optional int32 delegate_client_uid = 19 [(is_uid) = true];
5998    // The service module that start/stop the delegate, could be
5999    // MediaSessionService, VOIP, Camera, Audio, Location etc.
6000    // The enum is defined in interface
6001    // ForegroundServiceDelegationOptions.DelegationService
6002    optional int32 delegation_service = 20;
6003
6004    enum ApiJourneyState {
6005    	  UNKNOWN_JOURNEY_STATE = 0;
6006        ENTER_WITH_FGS = 1;
6007        EXIT_WITH_FGS = 2;
6008        EXIT_WITHOUT_FGS = 3;
6009        PAUSE = 4;
6010        RESUME = 5;
6011    }
6012
6013    optional ApiJourneyState api_state = 21;
6014
6015    enum ApiType {
6016    	  UNKNOWN_API_TYPE = 0;
6017        CAMERA = 1;
6018        BLUETOOTH = 2;
6019        LOCATION = 3;
6020        MEDIA_PLAYBACK = 4;
6021        AUDIO = 5;
6022        MICROPHONE = 6;
6023        PHONE_CALL = 7;
6024        USB = 8;
6025        CDM = 9;
6026    }
6027
6028    repeated ApiType api_type = 22;
6029
6030    repeated int64 api_timestamp = 23;
6031
6032    optional int64 api_before_fgs_start_duration_millis = 28;
6033
6034    optional int64 api_after_fgs_end_duration_millis = 29;
6035
6036    // Keep it in sync with ActivityManager.ProcessCapability.
6037    enum ProcessCapability {
6038        PROCESS_CAPABILITY_NONE = 0;
6039        PROCESS_CAPABILITY_FOREGROUND_LOCATION = 1;
6040        PROCESS_CAPABILITY_FOREGROUND_CAMERA = 2;
6041        PROCESS_CAPABILITY_FOREGROUND_MICROPHONE = 4;
6042        PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK = 8;
6043        PROCESS_CAPABILITY_BFSL = 16;
6044        PROCESS_CAPABILITY_USER_RESTRICTED_NETWORK = 32;
6045    }
6046
6047    optional android.app.ProcessStateEnum service_uid_state = 24 [default = PROCESS_STATE_UNKNOWN];
6048    optional ProcessCapability service_uid_capabilities = 25;
6049
6050    optional android.app.ProcessStateEnum calling_uid_state = 26 [default = PROCESS_STATE_UNKNOWN];
6051    optional ProcessCapability calling_uid_capabilities = 27;
6052
6053    optional int32 while_in_use_reason_code_no_binding = 30;
6054    optional int32 while_in_use_reason_code_in_bind_service = 31;
6055    optional int32 while_in_use_reason_code_by_bindings = 32;
6056    optional int32 fgs_start_reason_code_no_binding = 33;
6057    optional int32 fgs_start_reason_code_in_bind_service = 34;
6058    optional int32 fgs_start_reason_code_by_bindings = 35;
6059
6060    enum FgsStartApi {
6061        // Not available -- used in atoms that are unrelated to this selection.
6062        FGSSTARTAPI_NA = 0;
6063        // The FGS was not started. (likely it's bound.)
6064        FGSSTARTAPI_NONE = 1;
6065        // The FGS was started with Context.startService().
6066        FGSSTARTAPI_START_SERVICE = 2;
6067        // The FGS was started with Context.startForegroundService().
6068        FGSSTARTAPI_START_FOREGROUND_SERVICE = 3;
6069        // It's a delegate FGS.
6070        FGSSTARTAPI_DELEGATE = 4;
6071
6072    }
6073    optional FgsStartApi fgs_start_api = 36;
6074
6075    // Whether setFgsRestrictionLocked() was called in Service.startForeground().
6076    optional bool fgs_restriction_recalculated = 37;
6077}
6078
6079/**
6080 * Logs the number of times a uid accesses a sensitive AppOp during a foreground service session.
6081 * A foreground service session is any continuous period during which the uid holds at least one
6082 * foreground service; the atom will be pushed when the uid no longer holds any foreground services.
6083 * Accesses initiated while the uid is in the TOP state are ignored.
6084 * Sessions with no attempted accesses are not logged.
6085 * Logged from
6086 *     frameworks/base/services/core/java/com/android/server/am/ActiveServices.java
6087 */
6088message ForegroundServiceAppOpSessionEnded {
6089    optional int32 uid = 1 [(is_uid) = true];
6090
6091    // The operation's name.
6092    // Only following four ops are logged
6093    // COARSE_LOCATION = 0
6094    // FINE_LOCATION = 1
6095    // CAMERA = 26
6096    // RECORD_AUDIO = 27
6097    optional android.app.AppOpEnum app_op_name = 2 [default = APP_OP_NONE];
6098
6099    // The uid's permission mode for accessing the AppOp during this fgs session.
6100    enum Mode {
6101        MODE_UNKNOWN = 0;
6102        MODE_ALLOWED = 1; // Always allowed
6103        MODE_IGNORED = 2; // Denied
6104        MODE_FOREGROUND = 3; // Allow-while-in-use (or allowed-one-time)
6105    }
6106    optional Mode app_op_mode = 3;
6107
6108    // Number of times this AppOp was requested and allowed.
6109    optional int32 count_ops_accepted = 4;
6110    // Number of times this AppOp was requested but denied.
6111    optional int32 count_ops_rejected = 5;
6112}
6113
6114/**
6115 * Logs creation or removal of an isolated uid. Isolated uid's are temporary uid's to sandbox risky
6116 * behavior in its own uid. However, the metrics of these isolated uid's almost always should be
6117 * attributed back to the parent (host) uid. One example is Chrome.
6118 *
6119 * Logged from:
6120 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
6121 */
6122message IsolatedUidChanged {
6123    // The host UID. Generally, we should attribute metrics from the isolated uid to the host uid.
6124    // This field is ignored when event == REMOVED.
6125    optional int32 parent_uid = 1 [(is_uid) = true];
6126
6127    optional int32 isolated_uid = 2 [(is_uid) = true];
6128
6129    // We expect an isolated uid to be removed before if it's used for another parent uid.
6130    enum Event {
6131        REMOVED = 0;
6132        CREATED = 1;
6133    }
6134    optional Event event = 3;
6135}
6136
6137/*
6138 * Logs the reception of an incoming network packet causing the main system to wake up for
6139 * processing that packet. These events are notified by the kernel via Netlink NFLOG to Netd
6140 * and processed by WakeupController.cpp.
6141 */
6142message PacketWakeupOccurred {
6143    // The uid owning the socket into which the packet was delivered, or -1 if the packet was
6144    // delivered nowhere.
6145    optional int32 uid = 1 [(is_uid) = true];
6146    // The interface name on which the packet was received.
6147    optional string iface = 2;
6148    // The ethertype value of the packet.
6149    optional int32 ethertype = 3;
6150    // String representation of the destination MAC address of the packet.
6151    optional string destination_hardware_address = 4;
6152    // String representation of the source address of the packet if this was an IP packet.
6153    optional string source_ip = 5;
6154    // String representation of the destination address of the packet if this was an IP packet.
6155    optional string destination_ip = 6;
6156    // The value of the protocol field if this was an IPv4 packet or the value of the Next Header
6157    // field if this was an IPv6 packet. The range of possible values is the same for both IP
6158    // families.
6159    optional int32 ip_next_header = 7;
6160    // The source port if this was a TCP or UDP packet.
6161    optional int32 source_port = 8;
6162    // The destination port if this was a TCP or UDP packet.
6163    optional int32 destination_port = 9;
6164}
6165
6166/*
6167 * Logs the memory stats for an app on startup.
6168 * Logged from:
6169 *     frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
6170 */
6171message AppStartMemoryStateCaptured {
6172    // The uid if available. -1 means not available.
6173    optional int32 uid = 1 [(is_uid) = true];
6174
6175    // The process name.
6176    optional string process_name = 2;
6177
6178    // The activity name.
6179    optional string activity_name = 3;
6180
6181    // # of page-faults
6182    optional int64 page_fault = 4;
6183
6184    // # of major page-faults
6185    optional int64 page_major_fault = 5;
6186
6187    // RSS
6188    optional int64 rss_in_bytes = 6;
6189
6190    // CACHE
6191    optional int64 cache_in_bytes = 7;
6192
6193    // SWAP
6194    optional int64 swap_in_bytes = 8;
6195}
6196
6197/*
6198 * Logs the event when Low Memory Killer Daemon (LMKD) kills a process to reduce memory pressure.
6199 * Logged from:
6200 *      system/core/lmkd/lmkd.c
6201 */
6202message LmkKillOccurred {
6203    enum Reason {
6204        UNKNOWN = 0;
6205        PRESSURE_AFTER_KILL = 1;
6206        NOT_RESPONDING = 2;
6207        LOW_SWAP_AND_THRASHING = 3;
6208        LOW_MEM_AND_SWAP = 4;
6209        LOW_MEM_AND_THRASHING = 5;
6210        DIRECT_RECL_AND_THRASHING = 6;
6211        LOW_MEM_AND_SWAP_UTIL = 7;
6212        LOW_FILECACHE_AFTER_THRASHING = 8;
6213        LOW_MEM = 9;
6214        DIRECT_RECL_STUCK = 10;
6215    }
6216
6217    // The uid if available. -1 means not available.
6218    optional int32 uid = 1 [(is_uid) = true];
6219
6220    // The process name.
6221    optional string process_name = 2;
6222
6223    // oom adj score.
6224    optional int32 oom_adj_score = 3;
6225
6226    // # of page-faults
6227    optional int64 page_fault = 4;
6228
6229    // # of major page-faults
6230    optional int64 page_major_fault = 5;
6231
6232    // RSS
6233    optional int64 rss_in_bytes = 6;
6234
6235    // CACHE
6236    optional int64 cache_in_bytes = 7;
6237
6238    // SWAP
6239    optional int64 swap_in_bytes = 8;
6240
6241    // The elapsed real time of start of the process.
6242    optional int64 process_start_time_nanos = 9;
6243
6244    // Min oom adj score considered by lmkd.
6245    optional int32 min_oom_score = 10;
6246
6247    // Free physical memory on device at LMK time.
6248    optional int32 free_mem_kb = 11;
6249
6250    // Free swap on device at LMK time.
6251    optional int32 free_swap_kb = 12;
6252
6253    // What triggered the LMK event.
6254    optional Reason reason = 13;
6255
6256    // Current thrashing levels (workingset_refaults/filecache in %).
6257    optional int32 thrashing = 14;
6258
6259    // Max thrashing levels (workingset_refaults/filecache in %).
6260    optional int32 max_thrashing = 15;
6261
6262    // How many active foreground services across the system
6263    optional int32 total_foreground_services = 16;
6264
6265    // How many processes hosting foreground services
6266    optional int32 procs_with_foreground_services = 17;
6267}
6268
6269/*
6270 * Logs when the ActivityManagerService detects that an app died.
6271 *
6272 * Logged from:
6273 *   frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
6274 */
6275message AppDied {
6276    // timestamp(elapsedRealtime) of record creation
6277    optional uint64 timestamp_millis = 1;
6278}
6279
6280/**
6281 * An atom for generic metrics logging. Available from Android Q.
6282 */
6283message GenericAtom {
6284    // The uid of the application that sent this custom atom.
6285    optional int32 uid = 1 [(is_uid) = true];
6286
6287    // An event_id indicates the type of event.
6288    optional android.stats.EventType event_id = 2;
6289}
6290
6291/**
6292 * Atom for simple logging of user interaction and impression events, such as "the user touched
6293 * this button" or "this dialog was displayed".
6294 * Keep the UI event stream clean: don't use for system or background events.
6295 * Log using the UiEventLogger wrapper - don't write with the StatsLog API directly.
6296 *
6297 * Logged from:
6298 *   frameworks/base/services/core/java/com/android/server/
6299 *   frameworks/base/packages/SystemUI/src/com/android/systemui/
6300 */
6301message UiEventReported {
6302    // The event_id.
6303    optional int32 event_id = 1;
6304    // The event's source or target uid and package, if applicable.
6305    // For example, the package posting a notification, or the destination package of a share.
6306    optional int32 uid = 2 [(is_uid) = true];
6307    optional string package_name = 3;
6308    // An identifier used to disambiguate which logs refer to a particular instance of some
6309    // UI element. Useful when there might be multiple instances simultaneously active.
6310    optional int32 instance_id = 4;
6311}
6312
6313/**
6314 * Atom for logging Dream user interaction and impression events.
6315 *
6316 * Logged from:
6317 *   frameworks/base/services/core/java/com/android/server/
6318 */
6319message DreamUiEventReported {
6320    // The event's source or target uid, if applicable.
6321    optional int32 uid = 1 [(is_uid) = true];
6322    // The event_id (as for UiEventReported).
6323    optional int32 event_id = 2;
6324    // An identifier used to disambiguate which logs refer to a particular instance of some
6325    // UI element. Useful when there might be multiple instances simultaneously active.
6326    optional int32 instance_id = 3;
6327
6328    // The name of the dream component, which identifies the type of the dream.
6329    optional string dream_component_name = 4;
6330}
6331
6332/**
6333 * Reports a notification was created or updated.
6334 *
6335 * Logged from:
6336 *   frameworks/base/services/core/java/com/android/server/notification/
6337 */
6338message NotificationReported {
6339    // The event_id (as for UiEventReported).
6340    optional int32 event_id = 1;
6341    // The notifying app's uid and package.
6342    optional int32 uid = 2 [(is_uid) = true];
6343    optional string package_name = 3;
6344    // A small system-assigned identifier for the notification.
6345    // Locally probably-unique, but expect collisions across users and/or days.
6346    optional int32 instance_id = 4;
6347    optional int32 notification_id_hash = 5;  // Small hash of the app-assigned notif ID + tag
6348    optional int32 channel_id_hash = 6;  // Small hash of app-assigned channel ID
6349
6350    // Grouping information
6351    optional int32 group_id_hash = 7;  // Small hash of the group ID of the notification
6352    optional int32 group_instance_id = 8;  // Instance_id of the group-summary notification
6353    optional bool is_group_summary = 9;  // Tags the group-summary notification
6354
6355    // Attributes
6356    optional string category = 10;   // App-assigned notification category (API-defined strings)
6357    optional int32 style = 11;       // App-assigned notification style
6358    optional int32 num_people = 12;  // Number of Person records attached to the notification
6359
6360    // Ordering, importance and interruptiveness
6361
6362    optional int32 position = 13;    // Position in NotificationManager's list
6363
6364    optional android.stats.sysui.NotificationImportance importance = 14;
6365    optional int32 alerting = 15;    // Bitfield, 1=buzz 2=beep 4=blink
6366
6367    enum NotificationImportanceExplanation {
6368        IMPORTANCE_EXPLANATION_UNKNOWN = 0;
6369        IMPORTANCE_EXPLANATION_APP = 1;     // App-specified channel importance.
6370        IMPORTANCE_EXPLANATION_USER = 2;    // User-specified channel importance.
6371        IMPORTANCE_EXPLANATION_ASST = 3;    // Notification Assistant override.
6372        IMPORTANCE_EXPLANATION_SYSTEM = 4;  // System override.
6373        // Like _APP, but based on pre-channels priority signal.
6374        IMPORTANCE_EXPLANATION_APP_PRE_CHANNELS = 5;
6375    }
6376
6377    optional NotificationImportanceExplanation importance_source = 16;
6378    optional android.stats.sysui.NotificationImportance importance_initial = 17;
6379    optional NotificationImportanceExplanation importance_initial_source = 18;
6380    optional android.stats.sysui.NotificationImportance importance_asst = 19;
6381    optional int32 assistant_hash = 20;
6382    optional float assistant_ranking_score = 21;
6383
6384    // Fields for tracking ongoing and foreground service notifications
6385    optional bool is_ongoing = 22;
6386    optional bool is_foreground_service = 23;
6387    // Fields to know about the timeout for notifications.
6388    optional int64 timeout_millis = 24;
6389
6390    // Field for tracking whether the notification is non-dismissible
6391    optional bool is_non_dismissible = 25;
6392
6393    // Time elapsed between the notify() API call and the NLSes being told about the notification.
6394    // Will be 0 for NotificationReported protos that do not correspond to a notify() call.
6395    optional int64 post_duration_millis = 26;
6396
6397    // State of the full screen intent posted with this notification.
6398    enum FsiState {
6399        // This notification was not posted with a full screen intent.
6400        NO_FSI = 0;
6401        // This notification was posted with a full screen intent and the FSI permission is granted.
6402        FSI_ALLOWED = 1;
6403        // This notification was posted with a full screen intent but the FSI permission is denied.
6404        FSI_DENIED = 2;
6405    }
6406    optional FsiState fsi_state = 27;
6407
6408    // True if the device was locked or showing unlocked AOD.
6409    optional bool is_locked = 28;
6410
6411    // Age of the notification in minutes.
6412    optional int32 age_in_minutes = 29;
6413
6414    // Whether the notification was promoted and whether it was promotable.
6415    optional bool is_promoted_ongoing = 30;
6416    optional bool has_promotable_characteristics = 31;
6417}
6418
6419/**
6420 * Reports a notification channel, or channel group, was created, updated, or deleted.
6421 *
6422 * Logged from:
6423 *   frameworks/base/services/core/java/com/android/server/notification/
6424 */
6425message NotificationChannelModified {
6426    // The event_id (as for UiEventReported).
6427    optional int32 event_id = 1;
6428    // The notifying app's uid and package.
6429    optional int32 uid = 2 [(is_uid) = true];
6430    optional string package_name = 3;
6431    // Hash of app-assigned notification channel ID or channel-group ID
6432    optional int32 channel_id_hash = 4;
6433    // Previous importance setting, if applicable
6434    optional android.stats.sysui.NotificationImportance old_importance = 5;
6435    // New importance setting
6436    optional android.stats.sysui.NotificationImportance importance = 6;
6437    // whether or not this channel represents a conversation
6438    optional bool is_conversation = 7;
6439    // Hash of app-assigned notification conversation id
6440    optional int32 conversation_id_hash = 8;
6441    // whether or not the user demoted this channel out of the conversation space
6442    optional bool is_conversation_demoted = 9;
6443    // whether this conversation is marked as being a priority
6444    optional bool is_conversation_priority = 10;
6445}
6446
6447/**
6448 * Logged when notification are dismissed. If multiple notifications are dismissed together,
6449 * this is only logged once per style per UID.
6450 * Logged from
6451 *    frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging
6452 */
6453message NotificationDismissed {
6454    // UID if the application (can be mapped to package and version)
6455    optional int32 uid = 1 [(is_uid) = true];
6456    // Integer enum value showing aggregated notification style.
6457    optional android.stats.sysui.NotificationStyle style = 2;
6458    // Reason for dismissal, based on REASON_ constants in
6459    // frameworks/base/core/java/android/service/notification/NotificationListenerService.java
6460    optional int32 reason = 3;
6461    // Number of notifications dismissed.
6462    optional int32 count = 4;
6463    // Memory use of Notification object being dismissed, in KB.
6464    optional int32 notificationObjectMemoryUse = 5;
6465    // Memory use of Notification views being dismissed, in KB.
6466    optional int32 notificationViewMemoryUse = 6;
6467    // Current memory use of SystemUI, RSS Anon in KB.
6468    optional int32 systemUiMemoryUse = 7;
6469}
6470
6471/**
6472 * Logs when a biometric acquire event occurs.
6473 *
6474 * Logged from:
6475 *   frameworks/base/services/core/java/com/android/server/biometrics
6476 */
6477message BiometricAcquired {
6478    // Biometric modality that was acquired.
6479    optional android.hardware.biometrics.ModalityEnum modality = 1;
6480    // The associated user. Eg: 0 for owners, 10+ for others. Defined in android/os/UserHandle.java.
6481    optional int32 user = 2;
6482    // If this acquire is for a crypto operation. e.g. Secure purchases, unlock password storage.
6483    optional bool is_crypto = 3;
6484    // Action that the device is performing. Acquired messages are only expected for enroll and
6485    // authenticate. Other actions may indicate an error.
6486    optional android.hardware.biometrics.ActionEnum action = 4;
6487    // The client that this acquisition was received for.
6488    optional android.hardware.biometrics.ClientEnum client = 5;
6489    // Acquired constants, e.g. ACQUIRED_GOOD. See constants defined by <Biometric>Manager.
6490    optional int32 acquire_info = 6;
6491    // Vendor-specific acquire info. Valid only if acquire_info == ACQUIRED_VENDOR.
6492    optional int32 acquire_info_vendor = 7;
6493    // Dictates if this message should trigger additional debugging.
6494    optional bool debug = 8;
6495    // The ID of the biometric sensor associated with this action.
6496    optional int32 sensor_id = 9;
6497    // The ID of the session this event occurred in (if any)
6498    optional int32 session_id = 10;
6499    // The type of session (i.e. CUJ)
6500    optional android.hardware.biometrics.SessionTypeEnum session_type = 11;
6501    // If the AoD was on when this event occurred.
6502    optional bool is_aod = 12;
6503    // If the display is on when this event occurred.
6504    optional bool is_display_on = 13;
6505    // The dock state when this event occurred.
6506    optional android.server.DockStateEnum dock_state = 14;
6507    // The orientation of the device when this event occurred
6508    optional android.hardware.biometrics.OrientationEnum orientation = 15;
6509    // The fold state of the device when this event occurred
6510    optional android.hardware.biometrics.FoldStateEnum fold_state = 16;
6511    // The order this event was processed by the framework, if part of a session
6512    optional int32 session_order = 17;
6513    // An associated device wake up reason for this event, or UNKNOWN if the event was not triggered due to a wake up event.
6514    optional android.hardware.biometrics.WakeReasonEnum wake_reason = 18;
6515}
6516
6517/**
6518 * Logs when a biometric authentication event occurs.
6519 *
6520 * Logged from:
6521 *   frameworks/base/services/core/java/com/android/server/biometrics
6522 */
6523message BiometricAuthenticated {
6524    // Biometric modality that was used.
6525    optional android.hardware.biometrics.ModalityEnum modality = 1;
6526    // The associated user. Eg: 0 for owners, 10+ for others. Defined in android/os/UserHandle.java
6527    optional int32 user = 2;
6528    // If this authentication is for a crypto operation. e.g. Secure purchases, unlock password
6529    // storage.
6530    optional bool is_crypto = 3;
6531    // The client that this acquisition was received for.
6532    optional android.hardware.biometrics.ClientEnum client = 4;
6533    // If authentication requires user confirmation. See BiometricPrompt's
6534    // setRequireConfirmation(bool) method.
6535    optional bool require_confirmation = 5;
6536
6537    enum State {
6538        UNKNOWN = 0;
6539        REJECTED = 1;
6540        PENDING_CONFIRMATION = 2;
6541        CONFIRMED = 3;
6542    }
6543
6544    // State of the current auth attempt.
6545    optional State state = 6;
6546    // Time it took to authenticate. For BiometricPrompt where setRequireConfirmation(false) is
6547    // specified and supported by the biometric modality, this is from the first ACQUIRED_GOOD to
6548    // AUTHENTICATED. for setRequireConfirmation(true), this is from PENDING_CONFIRMATION to
6549    // CONFIRMED.
6550    optional int64 latency_millis = 7;
6551    // Dictates if this message should trigger additional debugging.
6552    optional bool debug = 8;
6553    // The ID of the biometric sensor associated with this action.
6554    optional int32 sensor_id = 9;
6555    // The ambient light lux when authenticated.
6556    optional float ambient_light_lux = 10;
6557    // The ID of the session this event occurred in (if any)
6558    optional int32 session_id = 11;
6559    // The type of session (i.e. CUJ)
6560    optional android.hardware.biometrics.SessionTypeEnum session_type = 12;
6561    // If the AoD was on when this event occurred.
6562    optional bool is_aod = 13;
6563    // If the display is on when this event occurred.
6564    optional bool is_display_on = 14;
6565    // The dock state when this event occurred.
6566    optional android.server.DockStateEnum dock_state = 15;
6567    // The orientation of the device when this event occurred
6568    optional android.hardware.biometrics.OrientationEnum orientation = 16;
6569    // The fold state of the device when this event occurred
6570    optional android.hardware.biometrics.FoldStateEnum fold_state = 17;
6571    // The order this event was processed by the framework, if part of a session
6572    optional int32 session_order = 18;
6573    // An associated device wake up reason for this event, or UNKNOWN if the event was not triggered due to a wake up event.
6574    optional android.hardware.biometrics.WakeReasonEnum wake_reason = 19;
6575    // Additional modality-specific details that caused a biometric to be activated (often associated with a device wake_reason).
6576    repeated android.hardware.biometrics.WakeReasonDetailsEnum wake_reason_details = 20;
6577    // If the authentication is due to identity check being enabled
6578    optional bool identity_check = 21;
6579}
6580
6581/**
6582 * Logs when a biometric error occurs.
6583 *
6584 * Logged from:
6585 *   frameworks/base/services/core/java/com/android/server/biometrics
6586 */
6587message BiometricErrorOccurred {
6588    // Biometric modality that was used.
6589    optional android.hardware.biometrics.ModalityEnum modality = 1;
6590    // The associated user. Eg: 0 for owners, 10+ for others. Defined in android/os/UserHandle.java
6591    optional int32 user = 2;
6592    // If this error is for a crypto operation. e.g. Secure purchases, unlock password storage.
6593    optional bool is_crypto = 3;
6594    // Action that the device is performing.
6595    optional android.hardware.biometrics.ActionEnum action = 4;
6596    // The client that this acquisition was received for.
6597    optional android.hardware.biometrics.ClientEnum client = 5;
6598    // Error constants. See constants defined by <Biometric>Manager. Enums won't work since errors
6599    // are unique to modality.
6600    optional int32 error_info = 6;
6601    // Vendor-specific error info. Valid only if acquire_info == ACQUIRED_VENDOR. These are defined
6602    // by the vendor and not specified by the HIDL interface.
6603    optional int32 error_info_vendor = 7;
6604    // Dictates if this message should trigger additional debugging.
6605    optional bool debug = 8;
6606    // Time spent during the authentication attempt.
6607    optional int64 latency_millis = 9;
6608    // The ID of the biometric sensor associated with this action.
6609    optional int32 sensor_id = 10;
6610    // The ID of the session this event occurred in (if any)
6611    optional int32 session_id = 11;
6612    // The type of session (i.e. CUJ)
6613    optional android.hardware.biometrics.SessionTypeEnum session_type = 12;
6614    // If the AoD was on when this event occurred.
6615    optional bool is_aod = 13;
6616    // If the display is on when this event occurred.
6617    optional bool is_display_on = 14;
6618    // The dock state when this event occurred.
6619    optional android.server.DockStateEnum dock_state = 15;
6620    // The orientation of the device when this event occurred
6621    optional android.hardware.biometrics.OrientationEnum orientation = 16;
6622    // The fold state of the device when this event occurred
6623    optional android.hardware.biometrics.FoldStateEnum fold_state = 17;
6624    // The order this event was processed by the framework, if part of a session
6625    optional int32 session_order = 18;
6626    // An associated device wake up reason for this event, or UNKNOWN if the event was not triggered due to a wake up event.
6627    optional android.hardware.biometrics.WakeReasonEnum wake_reason = 19;
6628    // Additional modality-specific details that caused a biometric to be activated (often associated with a device wake_reason).
6629    repeated android.hardware.biometrics.WakeReasonDetailsEnum wake_reason_details = 20;
6630    // If the authentication is due to identity check being enabled
6631    optional bool identity_check = 21;
6632}
6633
6634/**
6635 * Logs when a system health issue is detected.
6636 * Logged from:
6637 *   frameworks/base/services/core/java/com/android/server/biometrics
6638 */
6639message BiometricSystemHealthIssueDetected {
6640    // Biometric modality.
6641    optional android.hardware.biometrics.ModalityEnum modality = 1;
6642    // Type of issue detected.
6643    optional android.hardware.biometrics.IssueEnum issue = 2;
6644    // Dictates if this message should trigger additional debugging.
6645    optional bool debug = 3;
6646    // The ID of the biometric sensor associated with this action.
6647    optional int32 sensor_id = 4;
6648}
6649
6650/**
6651 * Logs when a biometric enrollment occurs.
6652 *
6653 * Logged from:
6654 *   frameworks/base/services/core/java/com/android/server/biometrics
6655 */
6656message BiometricEnrolled {
6657    // Biometric modality that was used.
6658    optional android.hardware.biometrics.ModalityEnum modality = 1;
6659    // The associated user. Eg: 0 for owners, 10+ for others. Defined in android/os/UserHandle.java
6660    optional int32 user = 2;
6661    // The amount of time the enrollment took in milliseconds.
6662    optional int64 latency_millis = 3;
6663    // Whether or not the enrollment was successful.
6664    optional bool success = 4;
6665    // The ID of the biometric sensor associated with this action.
6666    optional int32 sensor_id = 5;
6667    // The ambient light lux when the user enrolled.
6668    optional float ambient_light_lux = 6;
6669    // The source for where this enrollment came frame
6670    optional android.hardware.biometrics.EnrollmentSourceEnum enroll_source = 7;
6671    // Numerical ID for enrolled template that increments with every new enrollment. Eg: 1, 2...
6672    optional int32 template_id = 8;
6673}
6674
6675
6676/*
6677 * Logs when one of the BiometricPrompt#authenticate() method variants is called.
6678 *
6679 * Logged from:
6680 *   frameworks/base/services/core/java/com/android/server/biometrics
6681 *
6682 */
6683 message AuthPromptAuthenticateInvoked {
6684    // Whether an explicit CryptoObject was passed to the biometric prompt.
6685    optional bool is_crypto = 1;
6686    // The value passed to setConfirmationRequired(boolean), or true if not set.
6687    optional bool is_confirmation_required = 2;
6688    // The value passed to setDeviceCredentialAllowed(boolean), or false if not set.
6689    optional bool is_credential_allowed = 3;
6690    // Whether a value was passed to setAllowedAuthenticators(int).
6691    optional bool is_allowed_authenticators_set = 4;
6692    // The value passed to setAllowedAuthenticators(int), if any.
6693    optional int32 allowed_authenticators = 5;
6694}
6695
6696/*
6697 * Logs when one of the BiometricPrompt#canAuthenticate() method variants is called.
6698 *
6699 * Logged from:
6700 *   frameworks/base/services/core/java/com/android/server/biometrics
6701 *
6702 */
6703message AuthManagerCanAuthenticateInvoked {
6704    // Whether a bit field of allowed authenticator types was provided as an argument.
6705    optional bool is_allowed_authenticators_set = 1;
6706    // The bit field of allowed authenticator types provided, if any.
6707    optional int32 allowed_authenticators = 2;
6708    // The authentication status code that was returned.
6709    optional int32 result_code = 3;
6710}
6711
6712/*
6713 * Logs when Biometric enrollment is requested via the ACTION_BIOMETRIC_ENROLL intent action.
6714 *
6715 * Logged from:
6716 *   frameworks/base/services/core/java/com/android/server/biometrics
6717 *
6718 */
6719message AuthEnrollActionInvoked {
6720    // Whether a Class 3 (strong) biometric was previously enrolled on this device.
6721    optional bool is_strong_biometric_enrolled = 1;
6722    // Whether a Class 2 (weak) biometric was previously enrolled on this device.
6723    optional bool is_weak_biometric_enrolled = 2;
6724    // Whether a PIN/pattern/password was previously enrolled on this device.
6725    optional bool is_device_credential_enrolled = 3;
6726    // Whether a bit field of allowed authenticator types was provided as an extra.
6727    optional bool is_allowed_authenticators_set = 4;
6728    // The bit field of allowed authenticator types provided, if any.
6729    optional int32 allowed_authenticators = 5;
6730}
6731
6732/*
6733 * Logs when an application uses a deprecated biometric or authentication API feature.
6734 *
6735 * Logged from:
6736 *   frameworks/base/services/core/java/com/android/server/biometrics
6737 */
6738 message AuthDeprecatedAPIUsed {
6739    enum APIEnum {
6740        API_UNKNOWN = 0;
6741        // android.hardware.fingerprint.FingerprintManager#authenticate(CryptoObject,
6742        // CancellationSignal, int, AuthenticationCallback, Handler)
6743        API_FINGERPRINT_MANAGER_AUTHENTICATE = 1;
6744        // android.hardware.fingerprint.FingerprintManager#hasEnrolledFingerprints()
6745        API_FINGERPRINT_MANAGER_HAS_ENROLLED_FINGERPRINTS = 2;
6746        // android.hardware.fingerprint.FingerprintManager#isHardwareDetected()
6747        API_FINGERPRINT_MANAGER_IS_HARDWARE_DETECTED = 3;
6748        // android.hardware.biometrics.BiometricManager#canAuthenticate()
6749        API_BIOMETRIC_MANAGER_CAN_AUTHENTICATE = 4;
6750    }
6751
6752     // The deprecated API feature that was used.
6753     optional APIEnum deprecated_api = 1;
6754     // The UID of the application that used the deprecated API.
6755     optional int32 app_uid = 2 [(is_uid) = true];
6756     // The target SDK version (API level) of the application that used the deprecated API.
6757     optional int32 target_sdk = 3;
6758 }
6759
6760/*
6761 * Logs when a flag flip update occurrs. Used for mainline modules that update via flag flips.
6762 */
6763message FlagFlipUpdateOccurred {
6764    // If the event is from a flag config package, specify the package name.
6765    optional string flag_flip_package_name = 1;
6766
6767    // The order id of the package
6768    optional int64 order_id = 2;
6769}
6770
6771/**
6772 * Potential experiment ids that goes with a train install.
6773 * Should be kept in sync with experiment_ids.proto.
6774 */
6775message TrainExperimentIds {
6776    repeated int64 experiment_id = 1;
6777}
6778
6779/*
6780 * Logs when a binary push state changes.
6781 * Logged by the installer via public api.
6782 */
6783message BinaryPushStateChanged {
6784    // Name of the train.
6785    optional string train_name = 1;
6786    // Version code for a "train" of packages that need to be installed atomically
6787    optional int64 train_version_code = 2;
6788    // After installation of this package, device requires a restart.
6789    optional bool requires_staging = 3;
6790    // Rollback should be enabled for this install.
6791    optional bool rollback_enabled = 4;
6792    // Requires low latency monitoring if possible.
6793    optional bool requires_low_latency_monitor = 5;
6794
6795    enum State {
6796        UNKNOWN = 0;
6797        INSTALL_REQUESTED = 1;
6798        INSTALL_STARTED = 2;
6799        INSTALL_STAGED_NOT_READY = 3;
6800        INSTALL_STAGED_READY = 4;
6801        INSTALL_SUCCESS = 5;
6802        // Replaced by INSTALL_FAILURE_DOWNLOAD, INSTALL_FAILURE_STATE_MISMATCH,
6803        // and INSTALL_FAILURE_COMMIT.
6804        INSTALL_FAILURE = 6  [deprecated = true];
6805        // This enum is for installs that are manually cancelled via the Manual Update UI.
6806        INSTALL_CANCELLED = 7;
6807        INSTALLER_ROLLBACK_REQUESTED = 8;
6808        INSTALLER_ROLLBACK_INITIATED = 9;
6809        INSTALLER_ROLLBACK_INITIATED_FAILURE = 10;
6810        INSTALLER_ROLLBACK_STAGED = 11;
6811        INSTALLER_ROLLBACK_STAGED_FAILURE = 12;
6812        INSTALLER_ROLLBACK_BOOT_TRIGGERED = 13;
6813        INSTALLER_ROLLBACK_BOOT_TRIGGERED_FAILURE = 14;
6814        INSTALLER_ROLLBACK_SUCCESS = 15;
6815        INSTALLER_ROLLBACK_FAILURE = 16;
6816        INSTALLER_ROLLBACK_STAGED_CANCEL_REQUESTED = 17;
6817        INSTALLER_ROLLBACK_STAGED_CANCEL_SUCCESS = 18;
6818        INSTALLER_ROLLBACK_STAGED_CANCEL_FAILURE = 19;
6819        INSTALL_STAGED_CANCEL_REQUESTED = 20;
6820        INSTALL_STAGED_CANCEL_SUCCESS = 21;
6821        INSTALL_STAGED_CANCEL_FAILURE = 22;
6822        INSTALL_FAILURE_DOWNLOAD = 23;
6823        INSTALL_FAILURE_STATE_MISMATCH = 24;
6824        INSTALL_FAILURE_COMMIT = 25;
6825        REBOOT_TRIGGERED = 26;
6826        // Logged after INSTALL_REQUESTED for devices installing a train that
6827        // contains no module requiring reboot.
6828        REBOOT_NOT_REQUIRED = 27;
6829        // Logged after INSTALL_REQUESTED for devices that are installing a train
6830        // which requires reboot and eligible for soft restart.
6831        SOFT_RESTART_ELIGIBLE = 28;
6832        // Logged after INSTALL_REQUESTED for devices that are installing a train
6833        // which requires reboot and eligible for notification restart.
6834        NOTIFICATION_RESTART_ELIGIBLE = 29;
6835        // Logged after INSTALL_REQUESTED for devices that are installing a train
6836        // which requires reboot and not eligible for any reboot promotion strategy
6837        // (e.g. soft restart, notification restart).
6838        NO_REBOOT_PROMOTION_STRATEGY_ELIGIBLE = 30;
6839        REBOOT_TRIGGER_FAILURE = 31;
6840        // Logged after INSTALL_REQUESTED for devices installing a train which
6841        // requires reboot and eligible for unattended reboot.
6842        UNATTENDED_REBOOT_ELIGIBLE = 32;
6843        // Logged when Phonesky trys to prepare LSKF.
6844        LSKF_PREPARATION_INITITATED = 33;
6845        // Logged when LSKF preparation succeeded.
6846        LSKF_PREPARATION_SUCCESS = 34;
6847        // Logged when LSKF preparation failed.
6848        LSKF_PREPARATION_FAILURE = 35;
6849        // Logged when Phonesky cannot schedule reboot job on a unattended reboot
6850        // eligible device.
6851        UNATTENDED_REBOOT_NOT_TRIGGERED = 36;
6852        // Logged when SIM PIN recovery preparation succeeded.
6853        SIM_PIN_PREPARATION_SUCCESS = 37;
6854        // Logged when SIM PIN recovery preparation failed.
6855        SIM_PIN_PREPARATION_FAILURE = 38 [deprecated = true];
6856        // Logged when unattended reboot is aborted and falls back to organic
6857        // reboot.
6858        UNATTENDED_REBOOT_ABORT = 39;
6859        // Logged when Phonesky re-prepares LSKF.
6860        LSKF_PREPARATION_RETRY = 40;
6861        // Logged when the device doesn’t support checkpoint and cannot stage
6862        // multiple sessions.
6863        CHECKPOINT_NOT_SUPPORTED = 41;
6864        // Logged when Phonesky instructs Android platform to monitor reboot
6865        // readiness signal.
6866        PENDING_REBOOT_MARKED = 42;
6867        // Logged when Phonesky instructs Android platform to stop monitoring reboot
6868        // readiness signal.
6869        PENDING_REBOOT_CANCELLED = 43 [deprecated = true];
6870        // Logged when Phonesky receives reboot readiness broadcast and the device
6871        // is ready to reboot.
6872        SIGNAL_READY_TO_REBOOT_RECEIVED = 44;
6873        // Logged when Phonesky receives reboot readiness broadcast and the device
6874        // is not ready to reboot.
6875        SIGNAL_NOT_READY_TO_REBOOT_RECEIVED = 45;
6876        // Logged when Phonesky cancels an untracked train.
6877        UNTRACKED_TRAIN_CANCELLED = 46;
6878    }
6879    optional State state = 6;
6880    // Possible experiment ids for monitoring this push.
6881    optional TrainExperimentIds experiment_ids = 7 [(log_mode) = MODE_BYTES];
6882    // Index of the Android User. E.g. 0 for primary profile, 10, 11, 12
6883    // for guest and secondary profiles. Not PII.
6884    optional int32 user_id = 8;
6885    // Log additional info for a state when needed.
6886    // When state = REBOOT_TRIGGERED, this field logs the reboot type:
6887    //  USERSPACE_REBOOT = 1.
6888    //  FORCED_REBOOT = 2.
6889    //  NOTIFICATION_RESTART_REBOOT = 3.
6890    //  UNATTENDED_REBOOT_SECURED_AND_SIM_PIN = 4.
6891    //  UNATTENDED_REBOOT_SECURED_NO_SIM_PIN = 5.
6892    //  UNATTENDED_REBOOT_UNSECURED_AND_SIM_PIN = 6.
6893    //  UNATTENDED_REBOOT_UNSECURED_NO_SIM_PIN = 7.
6894    // When state = INSTALL_FAILURE, this field logs the Install errors related
6895    // statusCode
6896    // When state = UNATTENDED_REBOOT_ABORT, this field logs the cancellation
6897    // reason:
6898    //  LSKF_RETRY_EXCEED_MAXIMUM = 1.
6899    //  SIM_PIN_NOT_PREPARED = 2.
6900    // When state = UNATTENDED_REBOOT_ELIGIBLE, this field logs the cancellation
6901    // reason:
6902    //  UNATTENDED_REBOOT_SECURED_AND_SIM_PIN = 1.
6903    //  UNATTENDED_REBOOT_SECURED_NO_SIM_PIN = 2.
6904    //  UNATTENDED_REBOOT_UNSECURED_AND_SIM_PIN = 3.
6905    //  UNATTENDED_REBOOT_UNSECURED_NO_SIM_PIN = 4.
6906    // When state = UNATTENDED_REBOOT_NOT_TRIGGERED, this field logs the
6907    // cancellation reason:
6908    //  LSKF_NOT_PREPARED = 1.
6909    //  REBOOT_NOT_READY = 2.
6910    // When state = PENDING_REBOOT_CANCELLED, this field logs the cancellation
6911    // reason:
6912    //  LSKF_NOT_PREPARED = 1.
6913    //  NO_STAGED_TRAIN = 2.
6914    //  HAS_SIM_PIN_AND_SIM_PIN_STORAGE_DISABLED = 3.
6915    optional int32 reason = 9;
6916    // Whether or not this is a rollback event.
6917    optional bool is_rollback = 10;
6918}
6919
6920/* Test atom, is not logged anywhere */
6921message TestAtomReported {
6922    repeated AttributionNode attribution_node = 1;
6923    optional int32 int_field = 2;
6924    optional int64 long_field = 3;
6925    optional float float_field = 4;
6926    optional string string_field = 5;
6927    optional bool boolean_field = 6;
6928    enum State {
6929        UNKNOWN = 0;
6930        OFF = 1;
6931        ON = 2;
6932    }
6933    optional State state = 7;
6934    optional TrainExperimentIds bytes_field = 8 [(android.os.statsd.log_mode) = MODE_BYTES];
6935    repeated int32 repeated_int_field = 9;
6936    repeated int64 repeated_long_field = 10;
6937    repeated float repeated_float_field = 11;
6938    repeated string repeated_string_field = 12;
6939    repeated bool repeated_boolean_field = 13;
6940    repeated State repeated_enum_field = 14;
6941}
6942
6943/** Represents USB port overheat event. */
6944message UsbPortOverheatEvent {
6945    /* Temperature of USB port at USB plug event, in 1/10ths of degree C. */
6946    optional int32 plug_temperature_deci_c = 1;
6947
6948    /* Maximum temperature of USB port during overheat event, in 1/10ths of degree C. */
6949    optional int32 max_temperature_deci_c = 2;
6950
6951    /* Time between USB plug event and overheat threshold trip, in seconds. */
6952    optional int32 time_to_overheat_secs = 3;
6953
6954    /* Time between overheat threshold trip and hysteresis, in seconds. */
6955    optional int32 time_to_hysteresis_secs = 4;
6956
6957    /* Time between hysteresis and active mitigation ending, in seconds. */
6958    optional int32 time_to_inactive_secs = 5;
6959};
6960
6961/**
6962 * Logs total effective full charge and discharge cycles on a battery.
6963 * Here are some examples of one effective cycle:
6964 *   1) the battery charges from 0% to 100% and drains back to 0%,
6965 *   2) charging from 50% to 100% and draining back to 50% twice.
6966 * Pulled from:
6967 *   frameworks/base/cmds/statsd/src/external/ResourceHealthManagerPuller.cpp
6968 */
6969message BatteryCycleCount {
6970    /* Number of total charge and discharge cycles on the system battery. */
6971    optional int32 cycle_count = 1;
6972}
6973
6974/**
6975 * Logs that external storage is mounted and information about it, the storage type (sd card/usb/
6976 * others), its type (public or private) and the size in bytes.
6977 * Pulled from:
6978 *   StatsCompanionService
6979 */
6980
6981message ExternalStorageInfo {
6982
6983    enum VolumeType {
6984        UNKNOWN = 0;
6985        PUBLIC = 1;
6986        PRIVATE = 2;
6987        OTHER = 3;
6988    }
6989
6990    // The type of external storage.
6991    optional android.stats.storage.ExternalStorageType storage_type = 1;
6992    // Type of the volume: TYPE_PUBLIC if portable and TYPE_PRIVATE if internal.
6993    optional VolumeType volume_type = 2;
6994    // Total size of the sd card in bytes.
6995    optional int64 size_bytes = 3;
6996}
6997
6998/*
6999 * Logs when a connection becomes available and lost.
7000 * Logged in StatsCompanionService.java
7001 */
7002message ConnectivityStateChanged {
7003  // Id of the network.
7004  optional int32 net_id = 1;
7005
7006  enum State {
7007    UNKNOWN = 0;
7008    CONNECTED = 1;
7009    DISCONNECTED = 2;
7010  }
7011  // Connected state of a network.
7012  optional State state = 2;
7013}
7014
7015/**
7016 * Logs when a service starts and stops.
7017 * Logged from:
7018 *   services/core/java/com/android/server/am/ActiveServices.java
7019 */
7020message ServiceStateChanged {
7021
7022    optional int32 uid = 1 [(is_uid) = true];
7023
7024    optional string package_name = 2;
7025
7026    optional string service_name = 3;
7027
7028    enum State {
7029        START = 1;
7030        STOP = 2;
7031    }
7032
7033    optional State state = 4;
7034}
7035
7036/**
7037 * Logs when a service is launched.
7038 * Logged from:
7039 *   services/core/java/com/android/server/am/ActiveServices.java
7040 */
7041message ServiceLaunchReported {
7042
7043    optional int32 uid = 1 [(is_uid) = true];
7044
7045    optional string package_name = 2;
7046
7047    optional string service_name = 3;
7048}
7049
7050/**
7051 * The type of process start. It's the same as ProcessStartTime.StartType but we
7052 * can't re-type that for background compatibility.
7053 */
7054enum ProcessStartType {
7055    PROCESS_START_TYPE_UNKNOWN = 0;
7056    PROCESS_START_TYPE_WARM = 1;
7057    PROCESS_START_TYPE_HOT = 2;
7058    PROCESS_START_TYPE_COLD = 3;
7059}
7060
7061/**
7062 * The stopped state of a package.
7063 */
7064enum PackageStoppedState {
7065    PACKAGE_STATE_UNKNOWN = 0;
7066    PACKAGE_STATE_NORMAL = 1; // The package is not in any stopped state
7067    PACKAGE_STATE_STOPPED = 2; // ApplicationInfo.FLAG_STOPPED
7068}
7069
7070/**
7071 * Logs when a service request is made.
7072 * Logged from:
7073 *   services/core/java/com/android/server/am/ActiveServices.java
7074 */
7075message ServiceRequestEventReported {
7076    /** The package uid of the service host. */
7077    optional int32 uid = 1 [(is_uid) = true];
7078
7079    /** The package uid of the service launch request. */
7080    optional int32 requester_uid = 2 [(is_uid) = true];
7081
7082    /** The action name of the service request. */
7083    optional string action_name = 3;
7084
7085    /**
7086     * The types of the requests to the service.
7087     */
7088    enum RequestType {
7089        UNKNOWN = 0;
7090        START = 1;
7091        BIND = 2;
7092    }
7093
7094    /** The type of the current request to the service.*/
7095    optional RequestType request_type = 4;
7096
7097    /** Whether or not it's requested to start as a foreground service. */
7098    optional bool fg_required = 5;
7099
7100    /** The start type of the host process. */
7101    optional ProcessStartType proc_start_type = 6;
7102
7103    /** The process name who requests the service launch */
7104    optional string request_process_name = 7;
7105
7106    /** The service component name, here consists of the class name part only */
7107    optional string service_component_name = 8;
7108
7109    /** The state the package was in when the service was requested */
7110    optional PackageStoppedState package_stopped_state = 9;
7111
7112    /** The package name of the service host */
7113    optional string package_name = 10;
7114
7115    /** The package name of the service lunch request */
7116    optional string requester_package_name = 11;
7117
7118    /** The process state of the requester */
7119    optional android.app.ProcessStateEnum requester_process_state = 12;
7120
7121    /** The process state of the service host before this service request */
7122    optional android.app.ProcessStateEnum service_process_state = 13;
7123
7124    /** Whether this is the first launch of the app since install */
7125    optional bool first_launch = 14;
7126
7127    // How long since this package was stopped, if it was in
7128    // package_stopped_state == PACKAGE_STATE_STOPPED
7129    optional int64 millis_since_stopped = 15;
7130}
7131
7132/**
7133 * Logs indicating a broadcast is being delivered to a receiver.
7134 *
7135 * Logged from:
7136 *     frameworks/base/services/core/java/com/android/server/am/BroadcastQueue.java
7137 */
7138message BroadcastDeliveryEventReported {
7139    /** The package uid of the broadcast receiver. */
7140    optional int32 uid = 1 [(is_uid) = true];
7141
7142    /** The package uid of the broadcast sender. */
7143    optional int32 sender_uid = 2 [(is_uid) = true];
7144
7145    /** The action name of the broadcast. */
7146    optional string action_name = 3;
7147
7148    /**
7149     * The types of the broadcast receivers.
7150     */
7151    enum ReceiverType {
7152        UNKNOWN = 0;
7153        RUNTIME = 1;
7154        MANIFEST = 2;
7155    }
7156
7157    /** The type of the current broadcast receiver. */
7158    optional ReceiverType receiver_type = 4;
7159
7160    /** The start type of the host process. */
7161    optional ProcessStartType proc_start_type = 5;
7162
7163    /** The delay in ms from enqueue to dispatch of this intent to the set of receivers. */
7164    optional int64 dispatch_delay = 6;
7165
7166    /** The delay in ms from beginning of dispatch to this specific receiver. */
7167    optional int64 receive_delay = 7;
7168
7169    /** The delay in ms from dispatch to finish the handling of this intent. */
7170    optional int64 finish_delay = 8;
7171
7172    /** The stopped state (if any) the package was in before the broadcast was delivered */
7173    optional PackageStoppedState package_stopped_state = 9;
7174
7175    /** The package name of the broadcast receiver */
7176    optional string package_name = 10;
7177
7178    /** The package name of the broadcast sender */
7179    optional string sender_package_name = 11;
7180
7181    /** The type of the broadcast */
7182    optional int32 broadcast_type = 12;
7183
7184    /** Delivery group policy set for the broadcast */
7185    optional android.app.BroadcastDeliveryGroupPolicy delivery_group_policy = 13;
7186
7187    /** Flags set in the broadcast intent */
7188    optional int32 intent_flags = 14;
7189
7190    /** The intent filter priority of the broadcast receiver */
7191    optional int32 filter_priority = 15;
7192
7193    /** The procstate of the broadcast sender */
7194    optional android.app.ProcessStateEnum sender_proc_state = 16;
7195
7196    /** The procstate of the broadcast receiver before receiving this broadcast */
7197    optional android.app.ProcessStateEnum receiver_process_state = 17;
7198
7199    /** Whether this is the first launch of the app since install */
7200    optional bool first_launch = 18;
7201
7202    // How long since this package was stopped, if it was in
7203    // package_stopped_state == PACKAGE_STATE_STOPPED
7204    optional int64 millis_since_stopped = 19;
7205}
7206
7207/**
7208 * Logs indicating a client is requesting to acquire a provider,
7209 * this doesn't include the case where the provider has been installed in the
7210 * client's process space and it's just increasing a ref count.
7211 *
7212 * Logged from:
7213 *      frameworks/base/services/core/java/com/android/server/am/ContentProviderHelper.java
7214 */
7215message ProviderAcquisitionEventReported {
7216    /** The package uid of the content provider host. */
7217    optional int32 uid = 1 [(is_uid) = true];
7218
7219    /** The package uid of the content provider client who makes the request. */
7220    optional int32 client_uid = 2 [(is_uid) = true];
7221
7222    /** The start type of the host process. */
7223    optional ProcessStartType proc_start_type = 3;
7224
7225    /** The stopped state (if any) the package was in when acquiring the provider */
7226    optional PackageStoppedState package_stopped_state = 4;
7227
7228    /** The package name of the content provider host. */
7229    optional string package_name = 5;
7230
7231    /** The package name of the content provider client who makes the request. */
7232    optional string client_package_name = 6;
7233
7234    /** The process state of the client */
7235    optional android.app.ProcessStateEnum client_process_state = 7;
7236
7237    /** The process state of the content provider host before being acquired */
7238    optional android.app.ProcessStateEnum provider_process_state = 8;
7239
7240    /** Whether this is the first launch of the app since install */
7241    optional bool first_launch = 9;
7242
7243    // How long since this package was stopped, if it was in
7244    // package_stopped_state == PACKAGE_STATE_STOPPED
7245    optional int64 millis_since_stopped = 10;
7246}
7247
7248/**
7249 * Logs when a hidden API is used.
7250 *
7251 * Logged from:
7252 *     libcore/libart/src/main/java/dalvik/system/VMRuntime.java
7253 */
7254message HiddenApiUsed {
7255    // The uid of the app making the hidden access.
7256    optional int32 uid = 1 [(is_uid) = true];
7257
7258    // Signature of the method or field accessed.
7259    optional string signature = 2;
7260
7261    enum AccessMethod {
7262        NONE = 0;
7263        REFLECTION = 1;
7264        JNI = 2;
7265        LINKING = 3;
7266    }
7267
7268    // Type of access.
7269    optional AccessMethod access_method = 3;
7270
7271    // Whether the access was prevented or not.
7272    optional bool access_denied = 4;
7273}
7274
7275/**
7276 * Logs user interaction with the Privacy Indicators added in Q. In particular:
7277 * - When user sees privacy chip
7278 * - When user clicks privacy chip
7279 * - How does the user exit the Privacy Dialog
7280 * Logged from:
7281 *   packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
7282 */
7283message PrivacyIndicatorsInteracted {
7284
7285    enum Type {
7286        UNKNOWN = 0;
7287        CHIP_VIEWED = 1;
7288        CHIP_CLICKED = 2;
7289        reserved 3; // Used only in beta builds, never shipped
7290        DIALOG_DISMISS = 4;
7291        DIALOG_LINE_ITEM = 5;
7292    }
7293
7294    optional Type type = 1 [
7295        (state_field_option).exclusive_state = true,
7296        (state_field_option).nested = false
7297    ];
7298}
7299
7300/**
7301 * Logs information about a package that is moved from the internal to external storage and vice
7302 * versa.
7303 * It logs the package name, the type of the external storage where the package is installed
7304 * (if moved to external storage, or UNKNOWN if moved to internal storage),
7305 * and the move type: if it's from internal to external or the other way around.
7306 *
7307 * Logged from:
7308        frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java
7309 */
7310message AppMovedStorageReported {
7311    enum MoveType {
7312        UNKNOWN = 0;
7313        TO_EXTERNAL = 1;
7314        TO_INTERNAL = 2;
7315    }
7316    // The type of the external storage.
7317    optional android.stats.storage.ExternalStorageType external_storage_type = 1;
7318    // The type of move.
7319    optional MoveType move_type = 2;
7320    // The name of the package that was moved.
7321    optional string package_name = 3;
7322}
7323
7324/**
7325 * Logs when system server watchdog occurs.
7326 * Logged from:
7327 *      frameworks/base/services/core/java/com/android/server/Watchdog.java
7328 */
7329message SystemServerWatchdogOccurred {
7330    optional string subject = 1;
7331}
7332
7333/**
7334 * Logs when system server pre-watchdog occurs.
7335 * Logged from:
7336 *      frameworks/base/services/core/java/com/android/server/Watchdog.java
7337 */
7338message SystemServerPreWatchdogOccurred {
7339}
7340
7341/**
7342 * Logs when new file added to tombstones.
7343 * Logged from:
7344 *      frameworks/base/core/java/com/android/server/BootReceiver.java
7345 */
7346message TombStoneOccurred {
7347}
7348
7349/*
7350 * Information about a role request
7351 *
7352 * Logged from:
7353 *   packages/apps/PermissionController/src/com/android/packageinstaller/role/ui/RequestRoleFragment.java
7354 */
7355message RoleRequestResultReported {
7356    // UID of application requesting the role
7357    optional int32 requesting_uid = 1 [(is_uid) = true];
7358
7359    // Package name of application requesting the role
7360    optional string requesting_package_name = 2;
7361
7362    // The role to be granted
7363    optional string role_name = 3;
7364
7365    // The count of applications qualifying for the role
7366    optional int32 qualifying_count = 4;
7367
7368    // UID of application current granted the role
7369    optional int32 current_uid = 5 [(is_uid) = true];
7370
7371    // Package name of application current granted the role
7372    optional string current_package_name = 6;
7373
7374    // UID of another application that user chose to grant the role to, instead of the requesting
7375    // application
7376    optional int32 granted_another_uid = 7 [(is_uid) = true];
7377
7378    // Package name of another application that user chose to grant the role to, instead of the
7379    // requesting application
7380    optional string granted_another_package_name = 8;
7381
7382    enum Result {
7383        UNDEFINED = 0;
7384        // role request was ignored
7385        IGNORED = 1;
7386        // role request was ignored because it's already granted
7387        IGNORED_ALREADY_GRANTED = 2;
7388        // role request was ignored because the application isn't qualified
7389        IGNORED_NOT_QUALIFIED = 3;
7390        // role request was ignored because user said it should be always denied
7391        IGNORED_USER_ALWAYS_DENIED = 4;
7392        // role was granted by user action
7393        USER_GRANTED = 5;
7394        // role was denied by user action
7395        USER_DENIED = 6;
7396        // role was denied by user granting another application the role
7397        USER_DENIED_GRANTED_ANOTHER = 7;
7398        // role was denied and set to be always denied by the user
7399        USER_DENIED_WITH_ALWAYS = 8;
7400        // role request was ignored because the user is blocked from changing
7401        // roles via DISALLOW_CONFIG_DEFAULT_APPS user restriction
7402        IGNORED_USER_RESTRICTION = 9;
7403        // role request was ignored when the package is enhanced confiramtion
7404        // restricted
7405        IGNORED_ENHANCED_CONFIRMATION_RESTRICTION = 10;
7406    }
7407    // The result of the role request
7408    optional Result result = 9;
7409}
7410
7411/**
7412 * Logs when a Vehicle Maps Service client's connection state has changed
7413 *
7414 * Logged from:
7415 *   packages/services/Car/service/src/com/android/car/stats/VmsClientLog.java
7416 */
7417message VmsClientConnectionStateChanged {
7418    // The UID of the VMS client app
7419    optional int32 uid = 1 [(is_uid) = true];
7420
7421    enum State {
7422        UNKNOWN = 0;
7423        // Attempting to connect to the client
7424        CONNECTING = 1;
7425        // Client connection established
7426        CONNECTED = 2;
7427        // Client connection closed unexpectedly
7428        DISCONNECTED = 3;
7429        // Client connection closed by VMS
7430        TERMINATED = 4;
7431        // Error establishing the client connection
7432        CONNECTION_ERROR = 5;
7433    }
7434
7435    optional State state  = 2;
7436}
7437
7438message MimeTypes {
7439    repeated string mime_types = 1;
7440}
7441
7442/**
7443 * Logs statistics regarding accesses to external storage.
7444 * All stats are normalized for one day period.
7445 *
7446 * Logged from:
7447 *   packages/providers/MediaProvider/src/com/android/providers/media/MediaProvider.java
7448 */
7449message GeneralExternalStorageAccessStats {
7450    optional int32 uid = 1 [(is_uid) = true];
7451    // Total number of accesses like creation, open, delete and rename/update.
7452    // Includes file path and ContentResolver accesses
7453    optional uint32 total_accesses = 2;
7454    // Number of file path accesses, as opposed to file path and ContentResolver.
7455    optional uint32 file_path_accesses = 3;
7456    // Number of accesses on secondary volumes like SD cards.
7457    // Includes file path and ContentResolver accesses
7458    optional uint32 secondary_storage_accesses = 4;
7459    // Comma-separated list of mime types that were accessed.
7460    optional MimeTypes mime_types_accessed = 5 [(log_mode) = MODE_BYTES];
7461}
7462
7463/**
7464 * Logs when MediaProvider has successfully finished scanning a storage volume.
7465 *
7466 * Logged from:
7467 *   packages/providers/MediaProvider/src/com/android/providers/media/scan/ModernMediaScanner.java
7468 */
7469message MediaProviderScanOccurred {
7470    enum Reason {
7471        // Scan triggered due to unknown reason
7472        UNKNOWN = 0;
7473        // Scan triggered due to storage volume being mounted
7474        MOUNTED = 1;
7475        // Scan triggered due to explicit user action or app request
7476        DEMAND = 2;
7477        // Scan triggered due to idle maintenance
7478        IDLE = 3;
7479    }
7480
7481    // Volume type that this event pertains to
7482    optional android.stats.mediaprovider.VolumeType volume_type = 1;
7483    // Reason why this scan was triggered
7484    optional Reason reason = 2;
7485    // Total number of files scanned
7486    optional int64 item_count = 3;
7487    // Duration of scan, normalized per file
7488    optional float normalized_duration_millis = 4;
7489    // Number of database inserts, normalized per file
7490    optional float normalized_insert_count = 5;
7491    // Number of database updates, normalized per file
7492    optional float normalized_update_count = 6;
7493    // Number of database deletes, normalized per file
7494    optional float normalized_delete_count = 7;
7495}
7496
7497/**
7498 * Logs when an app has asked MediaProvider to delete media belonging to the user.
7499 *
7500 * Logged from:
7501 *   packages/providers/MediaProvider/src/com/android/providers/media/MediaProvider.java
7502 */
7503message MediaContentDeleted {
7504    // Volume type that this event pertains to
7505    optional android.stats.mediaprovider.VolumeType volume_type = 1;
7506    // UID of app that requested deletion
7507    optional int32 uid = 2 [(is_uid) = true];
7508    // Number of items that were deleted
7509    optional int32 item_count = 3;
7510}
7511
7512/**
7513 * Logs when an app has asked MediaProvider to grant them access to media belonging to the user.
7514 *
7515 * Logged from:
7516 *   packages/providers/MediaProvider/src/com/android/providers/media/PermissionActivity.java
7517 */
7518message MediaProviderPermissionRequested {
7519    enum Result {
7520        UNKNOWN = 0;
7521        USER_GRANTED = 1;
7522        AUTO_GRANTED = 2;
7523        USER_DENIED = 3;
7524        USER_DENIED_WITH_PREJUDICE = 4;
7525        AUTO_DENIED = 5;
7526    }
7527
7528    // Volume type that this event pertains to
7529    optional android.stats.mediaprovider.VolumeType volume_type = 1;
7530    // UID of app that requested permission
7531    optional int32 uid = 2 [(is_uid) = true];
7532    // Number of items that were requested
7533    optional int32 item_count = 3;
7534    // Result of this request
7535    optional Result result = 4;
7536}
7537
7538/**
7539 * Logs when MediaProvider has finished upgrading or downgrading its database schema.
7540 *
7541 * Logged from:
7542 *   packages/providers/MediaProvider/src/com/android/providers/media/DatabaseHelper.java
7543 */
7544message MediaProviderSchemaChanged {
7545    // Volume type that this event pertains to
7546    optional android.stats.mediaprovider.VolumeType volume_type = 1;
7547    // Old database version code
7548    optional int32 version_from = 2;
7549    // New database version code
7550    optional int32 version_to = 3;
7551    // Total number of files in database
7552    optional int64 item_count = 4;
7553    // Duration of schema change, normalized per file
7554    optional float normalized_duration_millis = 5;
7555}
7556
7557/**
7558 * Logs when MediaProvider has finished an idle maintenance job.
7559 *
7560 * Logged from:
7561 *   packages/providers/MediaProvider/src/com/android/providers/media/MediaProvider.java
7562 */
7563message MediaProviderIdleMaintenanceFinished {
7564    // Volume type that this event pertains to
7565    optional android.stats.mediaprovider.VolumeType volume_type = 1;
7566
7567    // Total number of files in database
7568    optional int64 item_count = 2;
7569    // Duration of idle maintenance, normalized per file
7570    optional float normalized_duration_millis = 3;
7571    // Number of thumbnails found to be stale, normalized per file
7572    optional float normalized_stale_thumbnails = 4;
7573    // Number of items found to be expired, normalized per file
7574    optional float normalized_expired_media = 5;
7575}
7576
7577/**
7578 * Represents boot time event with duration in ms.
7579 *
7580 * Logged from: bootstat and various system server components. Check each enums for details.
7581 */
7582message BootTimeEventDuration {
7583    enum DurationEvent {
7584        UNKNOWN = 0;
7585        // Bootloader time excluding BOOTLOADER_UI_WAIT + boot complete time. Logged from bootstat.
7586        ABSOLUTE_BOOT_TIME = 1;
7587        // Bootloader's 1st stage execution time.
7588        // Logged from bootstat.
7589        BOOTLOADER_FIRST_STAGE_EXEC = 2;
7590        // Bootloader's 1st stage loading time.
7591        // Logged from bootstat.
7592        BOOTLOADER_FIRST_STAGE_LOAD = 3;
7593        // Bootloader's kernel loading time.
7594        // Logged from bootstat.
7595        BOOTLOADER_KERNEL_LOAD = 4;
7596        // Bootloader's 2nd stage execution time.
7597        // Logged from bootstat.
7598        BOOTLOADER_SECOND_STAGE_EXEC = 5;
7599        // Bootloader's 2nd stage loading time.
7600        // Logged from bootstat.
7601        BOOTLOADER_SECOND_STAGE_LOAD = 6;
7602        // Duration for Bootloader to show unlocked device's warning UI. This should not happen
7603        // for locked device.
7604        // Logged from bootstat.
7605        BOOTLOADER_UI_WAIT = 7;
7606        // Total time spend in bootloader. This is the sum of all BOOTLOADER_* listed above.
7607        // Logged from bootstat.
7608        BOOTLOADER_TOTAL = 8;
7609        // Shutdown duration inside init for the reboot before the current boot up.
7610        // Logged from f/b/services/.../BootReceiver.java.
7611        SHUTDOWN_DURATION = 9;
7612        // Total time for mounting of disk devices during bootup.
7613        // Logged from f/b/services/.../BootReceiver.java.
7614        MOUNT_DEFAULT_DURATION = 10;
7615        // Total time for early stage mounting of disk devices during bootup.
7616        // Logged from f/b/services/.../BootReceiver.java.
7617        MOUNT_EARLY_DURATION = 11;
7618        // Total time for late stage mounting of disk devices during bootup.
7619        // Logged from f/b/services/.../BootReceiver.java.
7620        MOUNT_LATE_DURATION = 12;
7621        // Average time to scan non-system app after OTA
7622        // Logged from f/b/services/.../PackageManagerService.java
7623        OTA_PACKAGE_MANAGER_INIT_TIME = 13;
7624        // Time to initialize Package manager after OTA
7625        // Logged from f/b/services/.../PackageManagerService.java
7626        OTA_PACKAGE_MANAGER_DATA_APP_AVG_SCAN_TIME = 14;
7627        // Time to scan all system app from Package manager after OTA
7628        // Logged from f/b/services/.../PackageManagerService.java
7629        OTA_PACKAGE_MANAGER_SYSTEM_APP_AVG_SCAN_TIME = 15;
7630        // Init's total time for cold boot stage.
7631        // Logged from bootstat.
7632        COLDBOOT_WAIT = 16;
7633        // Init's total time for initializing selinux.
7634        // Logged from bootstat.
7635        SELINUX_INIT = 17;
7636        // Time since last factory reset.
7637        // Logged from bootstat.
7638        FACTORY_RESET_TIME_SINCE_RESET = 18;
7639        // Init's total time spent for completing the 1st stage.
7640        // Logged from bootstat.
7641        ANDROID_INIT_STAGE_1 = 19;
7642    }
7643
7644    // Type of the event.
7645    optional DurationEvent event = 1;
7646    // Duration of the event in ms.
7647    optional int64 duration_millis = 2;
7648}
7649
7650/**
7651 * Represents the start of specific boot time event during bootup in ms. This is usually a time
7652 * since boot-up.
7653 *
7654 * Logged from: bootstat and various system server components. Check each enums for details.
7655 */
7656message BootTimeEventElapsedTime {
7657    enum ElapsedTimeEvent {
7658        UNKNOWN = 0;
7659        // Time when init starts 1st stage. Logged from bootstat.
7660        ANDROID_INIT_STAGE_1 = 1;
7661        // Time when sys.boot_completed prop is set.
7662        // Logged from bootstat.
7663        BOOT_COMPLETE = 2;
7664        // BOOT_COMPLETE for a device that uses full-disk encryption.  Note that
7665        // no devices running Android 13 or later use full-disk encryption, as
7666        // it has been replaced by file-based encryption.
7667        BOOT_COMPLETE_ENCRYPTION = 3;
7668        // BOOT_COMPLETE for a device that doesn't use full-disk encryption.
7669        BOOT_COMPLETE_NO_ENCRYPTION = 4;
7670        // Adjusted BOOT_COMPLETE for a device that uses full-disk encryption,
7671        // omitting the decryption time.
7672        BOOT_COMPLETE_POST_DECRYPT = 5;
7673        // BOOT_COMPLETE after factory reset.
7674        FACTORY_RESET_BOOT_COMPLETE = 6;
7675        // BOOT_COMPLETE_NO_ENCRYPTION after factory reset.
7676        FACTORY_RESET_BOOT_COMPLETE_NO_ENCRYPTION = 7;
7677        // BOOT_COMPLETE_POST_DECRYPT after factory reset.
7678        FACTORY_RESET_BOOT_COMPLETE_POST_DECRYPT = 8;
7679        // BOOT_COMPLETE after OTA.
7680        OTA_BOOT_COMPLETE = 9;
7681        // BOOT_COMPLETE_NO_ENCRYPTION after OTA.
7682        OTA_BOOT_COMPLETE_NO_ENCRYPTION = 10;
7683        // BOOT_COMPLETE_POST_DECRYPT after OTA.
7684        OTA_BOOT_COMPLETE_POST_DECRYPT = 11;
7685        // Time when the system starts sending LOCKED_BOOT_COMPLETED broadcast.
7686        // Logged from  f/b/services/.../UserController.java
7687        FRAMEWORK_LOCKED_BOOT_COMPLETED = 12;
7688        // Time when the system starts sending BOOT_COMPLETED broadcast.
7689        // Logged from  f/b/services/.../UserController.java
7690        FRAMEWORK_BOOT_COMPLETED = 13;
7691        // Time when the package manager starts init.
7692        // Logged from f/b/services/.../SystemServer.java
7693        PACKAGE_MANAGER_INIT_START = 14;
7694        // Time when package manager is ready
7695        // Logged from f/b/services/.../SystemServer.java
7696        PACKAGE_MANAGER_INIT_READY = 15;
7697        // Represents the time when user has entered unlock credential for system with user pin.
7698        // Logged from bootstat.
7699        POST_DECRYPT = 16;
7700        // Represents the start of zygote's init.
7701        // Logged from zygote itself.
7702        ZYGOTE_INIT_START = 17;
7703        // Represents the start of secondary zygote's init.
7704        // TODO: add logging to zygote
7705        SECONDARY_ZYGOTE_INIT_START = 18;
7706        // Represents the start of system server's init.
7707        // Logged from f/b/services/.../SystemServer.java
7708        SYSTEM_SERVER_INIT_START = 19;
7709        // Represents the completion of system server's init.
7710        // Logged from f/b/services/.../SystemServer.java
7711        SYSTEM_SERVER_READY = 20;
7712        // Represents the start of launcher during boot-up.
7713        // TODO: add logging
7714        LAUNCHER_START = 21;
7715        // Represents the completion of launcher's initial rendering. User can use other apps from
7716        // launcher from this point.
7717        // TODO: add logging
7718        LAUNCHER_SHOWN = 22;
7719    }
7720
7721    // Type of the event.
7722    optional ElapsedTimeEvent event = 1;
7723    // Time since bootup for the event.
7724    // It should be acquired from SystemClock elapsedRealtime() call or equivalent.
7725    optional int64 time_millis = 2;
7726}
7727
7728/**
7729 * Boot time events with UTC time.
7730 *
7731 * Logged from: bootstat and various system server components. Check each enums for details.
7732 */
7733message BootTimeEventUtcTime {
7734    enum UtcTimeEvent {
7735        UNKNOWN = 0;
7736        // Time of the bootstat's marking of 1st boot after the last factory reset.
7737        // Logged from bootstat.
7738        FACTORY_RESET_RESET_TIME = 1;
7739        // The time when bootstat records FACTORY_RESET_* events. This is close to
7740        // BOOT_COMPLETE time for the current bootup.
7741        // Logged from bootstat.
7742        FACTORY_RESET_CURRENT_TIME = 2;
7743        // DUplicate of FACTORY_RESET_RESET_TIME added for debugging purpose.
7744        // Logged from bootstat.
7745        FACTORY_RESET_RECORD_VALUE = 3;
7746    }
7747
7748    // Type of the event.
7749    optional UtcTimeEvent event = 1;
7750    // UTC time for the event.
7751    optional int64 utc_time_secs = 2;
7752}
7753
7754/**
7755 * Boot time events representing specific error code during bootup.
7756 * Meaning of error code can be different per each event type.
7757 *
7758 * Logged from: bootstat and various system server components. Check each enums for details.
7759 */
7760message BootTimeEventErrorCode {
7761    enum ErrorCodeEvent {
7762        UNKNOWN = 0;
7763        // Linux error code for time() call to get the current UTC time.
7764        // Logged from bootstat.
7765        FACTORY_RESET_CURRENT_TIME_FAILURE = 1;
7766        // Represents UmountStat before the reboot for the current boot up. Error codes defined
7767        // as UMOUNT_STAT_* from init/reboot.cpp.
7768        // Logged from f/b/services/.../BootReceiver.java.
7769        SHUTDOWN_UMOUNT_STAT = 2;
7770        // Reprepsents fie system mounting error code of /data partition for the current boot.
7771        // Error codes defined as combination of FsStatFlags from system/core/fs_mgr/fs_mgr.cpp.
7772        // Logged from f/b/services/.../BootReceiver.java.
7773        FS_MGR_FS_STAT_DATA_PARTITION = 3;
7774    }
7775
7776    // Type of the event.
7777    optional ErrorCodeEvent event = 1;
7778    // error code defined per each event type.
7779    // For example, this can have a value of FsStatFlags.FS_STAT_FULL_MOUNT_FAILED for the event of
7780    // FS_MGR_FS_STAT.
7781    optional int32 error_code = 2;
7782}
7783
7784/**
7785 * Collects Virtual A/B statistics related to the use of dm-snapshot performed
7786 * after an OTA.
7787 *
7788 * Logged from:
7789 *  - system/update_engine/cleanup_previous_update_action.cc
7790 */
7791message SnapshotMergeReported {
7792    // Keep in sync with
7793    // system/core/fs_mgr/libsnapshot/android/snapshot/snapshot.proto
7794    enum UpdateState {
7795        // No update or merge is in progress.
7796        NONE = 0;
7797        // An update is applying; snapshots may already exist.
7798        INITIATED = 1;
7799        // An update is pending, but has not been successfully booted yet.
7800        UNVERIFIED = 2;
7801        // The kernel is merging in the background.
7802        MERGING = 3;
7803        // Post-merge cleanup steps could not be completed due to a transient
7804        // error, but the next reboot will finish any pending operations.
7805        MERGE_NEEDS_REBOOT = 4;
7806        // Merging is complete, and needs to be acknowledged.
7807        MERGE_COMPLETED = 5;
7808        // Merging failed due to an unrecoverable error.
7809        MERGE_FAILED = 6;
7810        // The update was implicitly cancelled, either by a rollback or a flash
7811        // operation via fastboot. This state can only be returned by WaitForMerge.
7812        CANCELLED = 7;
7813    };
7814
7815    // Status codes correspond to specific failure conditions in
7816    // system/core/fs_mgr/libsnapshot/android/snapshot/snapshot.cpp
7817    //
7818    // Keep in sync with
7819    // system/core/fs_mgr/libsnapshot/android/snapshot/snapshot.proto
7820    enum MergeFailureCode {
7821        OK = 0;
7822        READ_STATUS = 1;
7823        GET_TABLE_INFO = 2;
7824        UNKNOWN_TABLE = 3;
7825        GET_TABLE_PARAMS = 4;
7826        ACTIVATE_NEW_TABLE = 5;
7827        ACQUIRE_LOCK = 6;
7828        LIST_SNAPSHOTS = 7;
7829        WRITE_STATUS = 8;
7830        UNKNOWN_TARGET_TYPE = 9;
7831        QUERY_SNAPSHOT_STATUS = 10;
7832        EXPECTED_MERGE_TARGET = 11;
7833        UNMERGED_SECTORS_AFTER_COMPLETION = 12;
7834        UNEXPECTED_MERGE_STATE = 13;
7835        GET_COW_PATH_CONSISTENCY_CHECK = 14;
7836        OPEN_COW_CONSISTENCY_CHECK = 15;
7837        PARSE_COW_CONSISTENCY_CHECK = 16;
7838        OPEN_COW_DIRECT_CONSISTENCY_CHECK = 17;
7839        MEM_ALIGN_CONSISTENCY_CHECK = 18;
7840        DIRECT_READ_CONSISTENCY_CHECK = 19;
7841        WRONG_MERGE_COUNT_CONSISTENCY_CHECK = 20;
7842    };
7843
7844    // Status of the update after the merge attempts.
7845    optional UpdateState final_state = 1;
7846
7847    // Time to complete a merge operation in milliseconds.
7848    // A negative value corresponds to the case in which the merge operation
7849    // was interrupted and resumed (e.g. in case of a system reboot during the
7850    // merge).
7851    optional int64 duration_millis = 2;
7852
7853    // Number of reboots that occurred after issuing and before completing the
7854    // merge of all the snapshot devices.
7855    optional int32 intermediate_reboots = 3;
7856
7857    // The device has been upgraded to Virtual A/B.
7858    optional bool is_vab_retrofit = 4;
7859
7860    // Space that has been temporarily allocated in the /data partition
7861    // containing the dm-snapshot's copy-on-write data generated during a
7862    // Virtual A/B update.
7863    optional int64 cow_file_size_bytes = 5;
7864
7865    // Whether the device enables Virtual A/B compression.
7866    optional bool vab_compression_enabled = 6;
7867
7868    // Whether this update attempt uses Virtual A/B compression.
7869    optional bool vab_compression_used = 7;
7870
7871    // Total size used by COWs, including /data and the super partition.
7872    optional int64 total_cow_size_bytes = 8;
7873
7874    // Sum of the estimated COW fields in the OTA manifest.
7875    optional int64 estimated_cow_size_bytes = 9;
7876
7877    // Time from boot to sys.boot_completed, in milliseconds.
7878    optional int32 boot_complete_time_millis = 10;
7879
7880    // Time from sys.boot_completed to merge start, in milliseconds.
7881    optional int32 boot_complete_to_merge_start_time_millis = 11;
7882
7883    optional MergeFailureCode merge_failure_code = 12;
7884
7885    // Build fingerprint at the time the OTA was downloaded.
7886    optional string source_build_fingerprint = 13;
7887
7888    // Build fingerprint at the time the merge was initiated.
7889    optional string target_build_fingerprint = 14;
7890
7891    // Whether the device enabled userspace snapshots.
7892    optional bool userspace_snapshots_enabled = 15;
7893
7894    // Whether this update attempt used userspace snapshots.
7895    optional bool userspace_snapshots_used = 16;
7896
7897    // Whether the device enabled XOR compression.
7898    optional bool xor_compression_enabled = 17;
7899
7900    // Whether this update attempt used XOR compression.
7901    optional bool xor_compression_used = 18;
7902
7903    // Whether this update attempt used io_uring.
7904    optional bool iouring_used = 19;
7905}
7906
7907/**
7908 * Event representing when BlobStoreManager.Session#commit() is called
7909 *
7910 * Logged from:
7911 *  frameworks/base/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java
7912 */
7913message BlobCommitted {
7914    // Uid of the Blob committer
7915    optional int32 uid = 1 [(is_uid) = true];
7916
7917    // Id of the Blob committed
7918    optional int64 blob_id = 2;
7919
7920    // Size of the Blob
7921    optional int64 size = 3;
7922
7923    enum Result {
7924        UNKNOWN = 0;
7925        // Commit Succeeded
7926        SUCCESS = 1;
7927        // Commit Failed: Error occurred during commit
7928        ERROR_DURING_COMMIT = 2;
7929        // Commit Failed: Digest of the data did not match Blob digest
7930        DIGEST_MISMATCH = 3;
7931        // Commit Failed: Allowed count limit exceeded
7932        COUNT_LIMIT_EXCEEDED = 4;
7933    }
7934    optional Result result = 4;
7935}
7936
7937/**
7938 * Event representing when BlobStoreManager#acquireLease() is called
7939 *
7940 * Logged from:
7941 *  frameworks/base/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java
7942 */
7943message BlobLeased{
7944    // Uid of the Blob leasee
7945    optional int32 uid = 1 [(is_uid) = true];
7946
7947    // Id of the Blob leased or 0 if the Blob does not exist
7948    optional int64 blob_id = 2;
7949
7950    // Size of the Blob or 0 if the Blob does not exist
7951    optional int64 size = 3;
7952
7953    enum Result {
7954        UNKNOWN = 0;
7955        // Lease Succeeded
7956        SUCCESS = 1;
7957        // Lease Failed: Blob does not exist
7958        BLOB_DNE = 2;
7959        // Lease Failed: Leasee does not have access to the Blob
7960        ACCESS_NOT_ALLOWED = 3;
7961        // Lease Failed: Leasee requested an invalid expiry duration
7962        LEASE_EXPIRY_INVALID = 4;
7963        // Lease Failed: Leasee has exceeded the total data lease limit
7964        DATA_SIZE_LIMIT_EXCEEDED = 5;
7965        // Leasee Failed: Allowed count limit exceeded
7966        COUNT_LIMIT_EXCEEDED = 6;
7967    }
7968    optional Result result = 4;
7969}
7970
7971/**
7972 * Event representing when BlobStoreManager#openBlob() is called
7973 *
7974 * Logged from:
7975 *  frameworks/base/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java
7976 */
7977message BlobOpened{
7978    // Uid of the Blob opener
7979    optional int32 uid = 1 [(is_uid) = true];
7980
7981    // Id of the Blob opened or 0 if the Blob does not exist
7982    optional int64 blob_id = 2;
7983
7984    // Size of the Blob or 0 if the Blob does not exist
7985    optional int64 size = 3;
7986
7987    enum Result {
7988        UNKNOWN = 0;
7989        // Open Succeeded
7990        SUCCESS = 1;
7991        // Open Failed: Blob does not exist
7992        BLOB_DNE = 2;
7993        // Open Failed: Opener does not have access to the Blob
7994        ACCESS_NOT_ALLOWED = 3;
7995    }
7996    optional Result result = 4;
7997}
7998
7999/**
8000 * Event to track Jank for various system interactions.
8001 *
8002 * Logged from:
8003 *  frameworks/base/core/java/com/android/internal/jank/FrameTracker.java
8004 *
8005 * Next Tag: 10
8006 */
8007message UIInteractionFrameInfoReported {
8008    optional android.jank.InteractionType interaction_type = 1;
8009
8010    optional android.jank.DisplayResolution display_resolution = 8;
8011
8012    optional android.jank.DisplayRefreshRate display_refresh_rate = 9;
8013
8014    // Number of frames rendered during the interaction.
8015    optional int64 total_frames = 2;
8016
8017    // Number of frames that were skipped in rendering during the interaction.
8018    optional int64 missed_frames = 3;
8019
8020    // Number of frames that were missed in Surface Flinger during the interaction.
8021    optional int64 sf_missed_frames = 5;
8022
8023    // Number of frames that were missed in the app during the interaction.
8024    optional int64 app_missed_frames = 6;
8025
8026    // Maximum time it took to render a single frame during the interaction.
8027    optional int64 max_frame_time_nanos = 4;
8028
8029    // Maximum number of successive frames missed.
8030    optional int64 max_successive_missed_frames = 7;
8031}
8032
8033/**
8034 * Event to track various latencies in SystemUI.
8035 *
8036 * Logged from:
8037 *  frameworks/base/core/java/com/android/internal/util/LatencyTracker.java
8038 */
8039message UIActionLatencyReported {
8040    optional android.jank.ActionType action = 1;
8041
8042    optional int64 latency_millis = 2;
8043}
8044
8045//////////////////////////////////////////////////////////////////////
8046// Pulled atoms below this line //
8047//////////////////////////////////////////////////////////////////////
8048
8049/**
8050 * Pulls bytes transferred via wifi (Sum of foreground and background usage).
8051 *
8052 * Pulled from:
8053 *   StatsCompanionService (using BatteryStats to get which interfaces are wifi)
8054 */
8055message WifiBytesTransfer {
8056    optional int32 uid = 1 [(is_uid) = true];
8057
8058    optional int64 rx_bytes = 2;
8059
8060    optional int64 rx_packets = 3;
8061
8062    optional int64 tx_bytes = 4;
8063
8064    optional int64 tx_packets = 5;
8065}
8066
8067/**
8068 * Pulls bytes transferred via wifi (separated by foreground and background usage).
8069 *
8070 * Pulled from:
8071 *   StatsCompanionService (using BatteryStats to get which interfaces are wifi)
8072 */
8073message WifiBytesTransferByFgBg {
8074    optional int32 uid = 1 [(is_uid) = true];
8075
8076    // 1 denotes foreground and 0 denotes background. This is called Set in NetworkStats.
8077    optional bool is_foreground = 2;
8078
8079    optional int64 rx_bytes = 3;
8080
8081    optional int64 rx_packets = 4;
8082
8083    optional int64 tx_bytes = 5;
8084
8085    optional int64 tx_packets = 6;
8086}
8087
8088/**
8089 * Pulls bytes transferred via mobile networks (Sum of foreground and background usage).
8090 *
8091 * Pulled from:
8092 *   StatsCompanionService (using BatteryStats to get which interfaces are mobile data)
8093 */
8094message MobileBytesTransfer {
8095    optional int32 uid = 1 [(is_uid) = true];
8096
8097    optional int64 rx_bytes = 2;
8098
8099    optional int64 rx_packets = 3;
8100
8101    optional int64 tx_bytes = 4;
8102
8103    optional int64 tx_packets = 5;
8104}
8105
8106/**
8107 * Pulls bytes transferred via mobile networks (separated by foreground and background usage).
8108 *
8109 * Pulled from:
8110 *   StatsCompanionService (using BatteryStats to get which interfaces are mobile data)
8111 */
8112message MobileBytesTransferByFgBg {
8113    optional int32 uid = 1 [(is_uid) = true];
8114
8115    // 1 denotes foreground and 0 denotes background. This is called Set in
8116    // NetworkStats.
8117    optional bool is_foreground = 2;
8118
8119    optional int64 rx_bytes = 3;
8120
8121    optional int64 rx_packets = 4;
8122
8123    optional int64 tx_bytes = 5;
8124
8125    optional int64 tx_packets = 6;
8126}
8127
8128/**
8129 * Used for pull network statistics via mobile|wifi networks, and sliced by interesting dimensions.
8130 * Note that the data is expected to be sliced into more dimensions in future. In other words,
8131 * the caller must not assume any row of data is one full report when filtering with a set of
8132 * matching conditions, because future data may represent with multiple rows what is currently
8133 * represented by one.
8134 * To avoid being broken by future slicing, callers must take care to aggregate rows even if they
8135 * query all the existing columns.
8136 *
8137 * Pulled from:
8138 *   StatsPullAtomService (using NetworkStatsService to get NetworkStats)
8139 */
8140message DataUsageBytesTransfer {
8141    // State of this record. Should be NetworkStats#SET_DEFAULT or NetworkStats#SET_FOREGROUND to
8142    // indicate the foreground state, or NetworkStats#SET_ALL to indicate the record is for all
8143    // states combined, not including debug states. See NetworkStats#SET_*.
8144    optional int32 state = 1;
8145
8146    optional int64 rx_bytes = 2;
8147
8148    optional int64 rx_packets = 3;
8149
8150    optional int64 tx_bytes = 4;
8151
8152    optional int64 tx_packets = 5;
8153
8154    // Radio Access Technology (RAT) type of this record, should be one of
8155    // TelephonyManager#NETWORK_TYPE_* constants, or NetworkTemplate#NETWORK_TYPE_ALL to indicate
8156    // the record is for all rat types combined.
8157    optional int32 rat_type = 6;
8158
8159    // Mcc/Mnc read from sim if the record is for a specific subscription, null indicates the
8160    // record is combined across subscriptions.
8161    optional string sim_mcc = 7;
8162    optional string sim_mnc = 8;
8163
8164    // Allows mobile virtual network operators (MVNOs) to be identified with individual IDs.
8165    // See TelephonyManager#getSimCarrierId.
8166    optional int32 carrier_id = 9;
8167
8168    // Enumeration of opportunistic states with an additional ALL state indicates the record is
8169    // combined regardless of the boolean value in its field.
8170    enum DataSubscriptionState {
8171        UNKNOWN = 0; // For server side backward compatibility.
8172        ALL = 1;
8173        OPPORTUNISTIC = 2;
8174        NOT_OPPORTUNISTIC = 3;
8175    }
8176    // Mark whether the subscription is an opportunistic data subscription, and ALL indicates the
8177    // record is combined across opportunistic data subscriptions.
8178    // See {@link SubscriptionManager#setOpportunistic}.
8179    optional DataSubscriptionState opportunistic_data_sub = 10;
8180
8181    // Indicate whether NR is connected, server side could use this with RAT type to determine if
8182    // the record is for 5G NSA (Non Stand Alone) mode, where the primary cell is still LTE and
8183    // network allocates a secondary 5G cell so telephony reports RAT = LTE along with NR state as
8184    // connected.
8185    optional bool is_nr_connected = 11;
8186}
8187
8188/**
8189 * Note: This is a copy from DataUsageBytesTransfer and add a metered field.
8190 * TODO: DataUsageBytesTransfer should be eventually replaced with DataUsageBytesTransferV2.
8191 *
8192 * Used for pull network statistics via mobile|wifi networks, and sliced by interesting dimensions.
8193 * Note that the data is expected to be sliced into more dimensions in future. In other words,
8194 * the caller must not assume any row of data is one full report when filtering with a set of
8195 * matching conditions, because future data may represent with multiple rows what is currently
8196 * represented by one.
8197 * To avoid being broken by future slicing, callers must take care to aggregate rows even if they
8198 * query all the existing columns.
8199 *
8200 * Pulled from:
8201 *   StatsPullAtomService (using NetworkStatsService to get NetworkStats)
8202 */
8203message DataUsageBytesTransferV2 {
8204    // State of this record. Should be NetworkStats#SET_DEFAULT or NetworkStats#SET_FOREGROUND to
8205    // indicate the foreground state, or NetworkStats#SET_ALL to indicate the record is for all
8206    // states combined, not including debug states. See NetworkStats#SET_*.
8207    optional int32 state = 1;
8208
8209    optional int64 rx_bytes = 2;
8210
8211    optional int64 rx_packets = 3;
8212
8213    optional int64 tx_bytes = 4;
8214
8215    optional int64 tx_packets = 5;
8216
8217    // Radio Access Technology (RAT) type of this record, should be one of
8218    // TelephonyManager#NETWORK_TYPE_* constants, or NetworkTemplate#NETWORK_TYPE_ALL to indicate
8219    // the record is for all rat types combined.
8220    optional int32 rat_type = 6;
8221
8222    // Mcc/Mnc read from sim if the record is for a specific subscription, null indicates the
8223    // record is combined across subscriptions.
8224    optional string sim_mcc = 7;
8225    optional string sim_mnc = 8;
8226
8227    // Allows mobile virtual network operators (MVNOs) to be identified with individual IDs.
8228    // See TelephonyManager#getSimCarrierId.
8229    optional int32 carrier_id = 9;
8230
8231    // Enumeration of opportunistic states with an additional DSS_ALL state indicates the record is
8232    // combined regardless of the boolean value in its field.
8233    enum DataSubscriptionState {
8234        DSS_UNKNOWN = 0; // For server side backward compatibility.
8235        DSS_ALL = 1;
8236        DSS_OPPORTUNISTIC = 2;
8237        DSS_NOT_OPPORTUNISTIC = 3;
8238    }
8239    // Mark whether the subscription is an opportunistic data subscription, and ALL indicates the
8240    // record is combined across opportunistic data subscriptions.
8241    // See {@link SubscriptionManager#setOpportunistic}.
8242    optional DataSubscriptionState opportunistic_data_sub = 10;
8243
8244    // Indicate whether NR is connected, server side could use this with RAT type to determine if
8245    // the record is for 5G NSA (Non Stand Alone) mode, where the primary cell is still LTE and
8246    // network allocates a secondary 5G cell so telephony reports RAT = LTE along with NR state as
8247    // connected.
8248    optional bool is_nr_connected = 11;
8249
8250    // Enumeration of metered states.
8251    enum MeteredState {
8252        METERED_UNKNOWN = 0;
8253        METERED_ALL = 1;
8254        METERED_NO = 2;
8255        METERED_YES = 3;
8256    }
8257    // Mark the reported data is metered or non-metered, and METERED_ALL indicates the record is
8258    // combined across metered data.
8259    optional MeteredState metered = 12;
8260}
8261
8262/**
8263 * Pulls bytes transferred via OEM managed networks. Data is split up by which
8264 * type of OEM managed network it is, what transport it went over, and if it was
8265 * in the foreground or background.
8266 *
8267 * Pulled from:
8268 *   StatsPullAtomService
8269 */
8270 message OemManagedBytesTransfer {
8271    optional int32 uid = 1 [(is_uid) = true];
8272
8273    // 1 denotes foreground and 0 denotes background. This is called Set in
8274    // NetworkStats.
8275    optional bool is_foreground = 2;
8276
8277    // Corresponds to the type of OEM managed network, see
8278    // {@link NetworkTemplate#OEM_MANAGED_ANY} and {@code NetworkIdentity#OEM_*}.
8279    optional int32 oem_managed_type = 3;
8280
8281    // Corresponds to the type of transport the bytes were transferred over, see
8282    // {@link NetworkTemplate#transportToMatchRule} and
8283    // {@code NetworkCapabilities#TRANSPORT_*}
8284    optional int32 transport_type = 4;
8285
8286    optional int64 rx_bytes = 5;
8287
8288    optional int64 rx_packets = 6;
8289
8290    optional int64 tx_bytes = 7;
8291
8292    optional int64 tx_packets = 8;
8293  }
8294
8295/**
8296 * Pulls bytes transferred via bluetooth. It is pulled from Bluetooth controller.
8297 *
8298 * Pulled from:
8299 *   StatsCompanionService
8300 */
8301message BluetoothBytesTransfer {
8302    optional int32 uid = 1 [(is_uid) = true];
8303
8304    optional int64 rx_bytes = 2;
8305
8306    optional int64 tx_bytes = 3;
8307}
8308
8309/**
8310 * Pulls the kernel wakelock durations. This atom is adapted from
8311 * android/internal/os/KernelWakelockStats.java
8312 *
8313 * Pulled from:
8314 *   StatsCompanionService using KernelWakelockReader.
8315 */
8316message KernelWakelock {
8317    optional string name = 1;
8318
8319    optional int32 count = 2;
8320
8321    optional int32 version = 3;
8322
8323    optional int64 time_micros = 4;
8324}
8325
8326/**
8327 * Pulls power state information.
8328 * Pulled from:
8329 *   frameworks/base/services/core/java/com/android/server/powerstats/StatsPullAtomCallbackImpl.java
8330 */
8331message SubsystemSleepState {
8332    // Subsystem name
8333    optional string subsystem_name = 1;
8334    // For PlatformLowPowerStats (hal 1.0), this is the voter name, which could be empty.
8335    // For SubsystemLowPowerStats (hal 1.1), this is the sleep state name.
8336    // For PowerEntityStateResidencyResult (hal power/stats/1.0) this is the
8337    //    powerEntityStateName from the corresponding PowerEntityStateInfo.
8338    optional string subname = 2;
8339    // The number of times it entered, or voted for entering the sleep state
8340    optional uint64 count = 3;
8341    // The length of time spent in, or spent voting for, the sleep state
8342    optional uint64 time_millis = 4;
8343}
8344
8345/**
8346 * Pulls on-device power measurement information.
8347 * Pulled from:
8348 *   frameworks/base/services/core/java/com/android/server/powerstats/StatsPullAtomCallbackImpl.java
8349 */
8350message OnDevicePowerMeasurement {
8351    // Name of the subsystem (to which the rail belongs).
8352    optional string subsystem_name = 1;
8353
8354    // Rail name. The rail lies within the subsystem.
8355    optional string rail_name = 2;
8356
8357    // Time (in ms since boot) at which the rail energy value was measured.
8358    // This may differ slightly from the time that statsd logs this information.
8359    optional uint64 measurement_timestamp_millis = 3;
8360
8361    // Accumulated energy used via the rail since device boot in uWs.
8362    optional uint64 energy_microwatt_secs = 4;
8363}
8364
8365/**
8366 * Pulls Cpu time per cluster per frequency.
8367 * This is tracked by the timeInState eBPF program.
8368 */
8369message CpuTimePerClusterFreq {
8370    optional uint32 cluster = 1;
8371    optional uint32 freq_khz = 2;
8372    // Time spent at this frequency excluding sleep since tracking started.
8373    optional uint64 time_millis = 3;
8374}
8375
8376/**
8377 * Pulls Cpu Time Per Uid.
8378 * Note that isolated process uid time should be attributed to host uids.
8379 */
8380message CpuTimePerUid {
8381    optional int32 uid = 1 [(is_uid) = true];
8382    optional uint64 user_time_micros = 2;
8383    optional uint64 sys_time_micros = 3;
8384}
8385
8386/**
8387 * Pulls Cpu Cycles Per Uid Per Cluster.
8388 * Note that uids are transformed to reduce the number of uploaded entries. Shared GIDs are
8389 * combined under single uid LAST_SHARED_APPLICATION_GID. Individual isolated uids are excluded
8390 * because they are recycled and removed from the underlying data source. All uids are normalized
8391 * to their base uids.
8392 */
8393message CpuCyclesPerUidCluster {
8394    optional int32 uid = 1 [(is_uid) = true];
8395    optional int32 cluster = 2;
8396    // Megacycles, i.e. millions of cycles.
8397    optional int64 mcycles = 3;
8398    // Time excluding sleep since tracking started.
8399    optional int64 time_millis = 4;
8400    // Power estimate: time * average power for frequency / 1000.
8401    optional int64 power_profile_estimate = 5;
8402}
8403
8404/**
8405 * Pulls Cpu Time Per Uid per frequency.
8406 * Note that uids are transformed to reduce the number of uploaded entries. Shared GIDs are
8407 * combined under single uid LAST_SHARED_APPLICATION_GID. Individual isolated uids are excluded
8408 * because they are recycled and removed from the underlying data source. All uids are normalized
8409 * to their base uids.
8410 */
8411message CpuTimePerUidFreq {
8412    optional int32 uid = 1 [(is_uid) = true];
8413    optional uint32 freq_index = 2;
8414    optional uint64 time_millis = 3;
8415}
8416
8417/**
8418  * Pulls Cpu Cycles Per ThreadGroup Per Cluster.
8419  * This is tracked by the timeInState eBPF program.
8420  */
8421message CpuCyclesPerThreadGroupCluster {
8422    enum ThreadGroup {
8423        UNKNOWN_THREAD_GROUP = 0;
8424
8425        // System server threads serving Binder calls.
8426        SYSTEM_SERVER_BINDER = 1;
8427
8428        // All system server threads.
8429        SYSTEM_SERVER = 2;
8430
8431        // All surface flinger threads.
8432        SURFACE_FLINGER = 3;
8433    }
8434    optional ThreadGroup thread_group = 1;
8435
8436    optional int32 cluster = 2;
8437
8438    // Megacycles, i.e. millions of cycles.
8439    optional int64 mcycles = 3;
8440    // Time excluding sleep since tracking started.
8441    optional int64 time_millis = 4;
8442}
8443
8444/**
8445 * Pulls Wifi Controller Activity Energy Info
8446 */
8447message WifiActivityInfo {
8448    // timestamp(wall clock) of record creation
8449    optional uint64 timestamp_millis = 1;
8450    // stack reported state
8451    // TODO: replace this with proto enum
8452    optional int32 stack_state = 2;
8453    // tx time in millis
8454    optional uint64 controller_tx_time_millis = 3;
8455    // rx time in millis
8456    optional uint64 controller_rx_time_millis = 4;
8457    // idle time in millis
8458    optional uint64 controller_idle_time_millis = 5;
8459    // product of current(mA), voltage(V) and time(ms)
8460    optional uint64 controller_energy_used = 6;
8461}
8462
8463/**
8464 * Pulls Modem Activity Energy Info
8465 */
8466message ModemActivityInfo {
8467    // timestamp(wall clock) of record creation
8468    optional uint64 timestamp_millis = 1;
8469    // sleep time in millis.
8470    optional uint64 sleep_time_millis = 2;
8471    // idle time in millis
8472    optional uint64 controller_idle_time_millis = 3;
8473    /**
8474     * Tx power index
8475     * index 0 = tx_power < 0dBm
8476     * index 1 = 0dBm < tx_power < 5dBm
8477     * index 2 = 5dBm < tx_power < 15dBm
8478     * index 3 = 15dBm < tx_power < 20dBm
8479     * index 4 = tx_power > 20dBm
8480     */
8481    // tx time in ms at power level 0
8482    optional uint64 controller_tx_time_pl0_millis = 4;
8483    // tx time in ms at power level 1
8484    optional uint64 controller_tx_time_pl1_millis = 5;
8485    // tx time in ms at power level 2
8486    optional uint64 controller_tx_time_pl2_millis = 6;
8487    // tx time in ms at power level 3
8488    optional uint64 controller_tx_time_pl3_millis = 7;
8489    // tx time in ms at power level 4
8490    optional uint64 controller_tx_time_pl4_millis = 8;
8491    // rx time in ms at power level 5
8492    optional uint64 controller_rx_time_millis = 9;
8493    // product of current(mA), voltage(V) and time(ms)
8494    optional uint64 energy_used = 10 [deprecated=true];
8495}
8496
8497/**
8498 * Pulls Bluetooth Activity Energy Info
8499 * Note: BluetoothBytesTransfer is pulled at the same time from the controller.
8500 */
8501message BluetoothActivityInfo {
8502    // timestamp(wall clock) of record creation
8503    optional uint64 timestamp_millis = 1;
8504    // bluetooth stack state
8505    optional int32 bluetooth_stack_state = 2;
8506    // tx time in millis
8507    optional uint64 controller_tx_time_millis = 3;
8508    // rx time in millis
8509    optional uint64 controller_rx_time_millis = 4;
8510    // idle time in millis
8511    optional uint64 controller_idle_time_millis = 5;
8512    // product of current(mA), voltage(V) and time(ms)
8513    optional uint64 energy_used = 6;
8514}
8515
8516/*
8517 * Logs the memory stats for a process.
8518 *
8519 * Pulled from StatsCompanionService for all managed processes (from ActivityManagerService).
8520 */
8521message ProcessMemoryState {
8522    // The uid if available. -1 means not available.
8523    optional int32 uid = 1 [(is_uid) = true];
8524
8525    // The process name.
8526    // Usually package name, "system" for system server.
8527    // Provided by ActivityManagerService.
8528    optional string process_name = 2;
8529
8530    // Current OOM score adjustment. Value read from ProcessRecord.
8531    optional int32 oom_adj_score = 3;
8532
8533    // # of page-faults
8534    optional int64 page_fault = 4;
8535
8536    // # of major page-faults
8537    optional int64 page_major_fault = 5;
8538
8539    // RSS
8540    // Value is read from memory.stat, field total_rss if per-app memory
8541    // cgroups are enabled. Otherwise, value from /proc/pid/stat.
8542    optional int64 rss_in_bytes = 6;
8543
8544    // CACHE
8545    // Value is read from memory.stat, field total_cache if per-app memory
8546    // cgroups are enabled. Otherwise, 0.
8547    optional int64 cache_in_bytes = 7;
8548
8549    // SWAP
8550    // Value is read from memory.stat, field total_swap if per-app memory
8551    // cgroups are enabled. Otherwise, 0.
8552    optional int64 swap_in_bytes = 8;
8553
8554    // Deprecated: use ProcessMemoryHighWaterMark atom instead. Always -1.
8555    optional int64 rss_high_watermark_in_bytes = 9 [deprecated = true];
8556
8557    // Deprecated: use ProcessMemorySnapshot atom instead. Always -1.
8558    optional int64 start_time_nanos = 10 [deprecated = true];
8559
8560    // Deprecated: use ProcessMemorySnapshot atom instead. Always -1.
8561    optional int32 anon_rss_and_swap_in_kilobytes = 11 [deprecated = true];
8562}
8563
8564/*
8565 * Logs the memory high-water mark for a process.
8566 *
8567 * Pulled from StatsCompanionService for all managed processes (from ActivityManagerServie)
8568 * and for selected native processes.
8569 *
8570 * Pulling this atom resets high-water mark counters for all processes.
8571 */
8572message ProcessMemoryHighWaterMark {
8573    // The uid if available. -1 means not available.
8574    optional int32 uid = 1 [(is_uid) = true];
8575
8576    // The process name.
8577    // Usually package name or process cmdline.
8578    // Provided by ActivityManagerService or read from /proc/PID/cmdline.
8579    optional string process_name = 2;
8580
8581    // Deprecated: use rss_high_water_mark_in_kilobytes instead. This field is
8582    // computed by converting kilobytes to bytes.
8583    optional int64 rss_high_water_mark_in_bytes = 3 [deprecated = true];
8584
8585    // RSS high-water mark. Peak RSS usage of the process. Read from the VmHWM field in
8586    // /proc/PID/status.
8587    optional int32 rss_high_water_mark_in_kilobytes = 4;
8588}
8589
8590/*
8591 * Logs the memory stats for a process.
8592 *
8593 * Pulled from StatsCompanionService for all managed processes (from ActivityManagerService)
8594 * and for selected native processes.
8595 */
8596message ProcessMemorySnapshot {
8597    // The uid if available. -1 means not available.
8598    optional int32 uid = 1 [(is_uid) = true];
8599
8600    // The process name.
8601    // Usually package name or process cmdline.
8602    // Provided by ActivityManagerService or read from /proc/PID/cmdline.
8603    optional string process_name = 2;
8604
8605    // The pid of the process.
8606    // Allows to disambiguate instances of the process.
8607    optional int32 pid = 3;
8608
8609    // The current OOM score adjustment value.
8610    // Read from ProcessRecord for managed processes.
8611    // Placeholder -1001 (OOM_SCORE_ADJ_MIN - 1, outside of allowed range) for native ones.
8612    optional int32 oom_score_adj = 4;
8613
8614    // The current RSS of the process.
8615    // VmRSS from /proc/pid/status.
8616    optional int32 rss_in_kilobytes = 5;
8617
8618    // The current anon RSS of the process.
8619    // RssAnon from /proc/pid/status.
8620    optional int32 anon_rss_in_kilobytes = 6;
8621
8622    // The current swap size of the process.
8623    // VmSwap from /proc/pid/status.
8624    optional int32 swap_in_kilobytes = 7;
8625
8626    // The sum of rss_in_kilobytes and swap_in_kilobytes.
8627    optional int32 anon_rss_and_swap_in_kilobytes = 8;
8628
8629    // GPU memory usage as measured by the kernel tracepoints
8630    // Equivalent to dumpsys gpu --gpumem
8631    optional int32 gpu_memory_kb = 9;
8632
8633    // Whether or not this process is hosting one or more foregound services.
8634    optional bool has_foreground_services = 10;
8635
8636    // The current rss memory in shared space.
8637    optional int32 shmem_kb = 11;
8638
8639    // The types of the components this process is hosting at the moment this
8640    // snapshot is taken.
8641    // See the available types in HostingComponentType in AppProtoEnums.
8642    optional int32 current_hosting_component_types = 12;
8643
8644    // The historical types of the components this process is or was hosting
8645    // since it's born.
8646    // See the available types in HostingComponentType in AppProtoEnums.
8647    optional int32 historical_hosting_component_types = 13;
8648}
8649
8650/*
8651 * Elapsed real time from SystemClock.
8652 */
8653message SystemElapsedRealtime {
8654    optional uint64 time_millis = 1;
8655}
8656
8657/*
8658 * Up time from SystemClock.
8659 */
8660message SystemUptime {
8661    // Milliseconds since the system was booted.
8662    // This clock stops when the system enters deep sleep (CPU off, display dark, device waiting
8663    // for external input).
8664    // It is not affected by clock scaling, idle, or other power saving mechanisms.
8665    optional uint64 uptime_millis = 1;
8666}
8667
8668/*
8669 * Reads from /proc/uid_concurrent_active_time which has the format:
8670 * active: X (X is # cores)
8671 * [uid0]: [time-0] [time-1] [time-2] ... (# entries = # cores)
8672 * [uid1]: [time-0] [time-1] [time-2] ... ...
8673 * ...
8674 * Time-N means the CPU time a UID spent running concurrently with N other processes.
8675 * The file contains a monotonically increasing count of time for a single boot.
8676 */
8677message CpuActiveTime {
8678    optional int32 uid = 1 [(is_uid) = true];
8679    optional uint64 time_millis = 2;
8680}
8681
8682/**
8683 * Reads from /proc/uid_concurrent_policy_time which has the format:
8684 * policy0: X policy4: Y (there are X cores on policy0, Y cores on policy4)
8685 * [uid0]: [time-0-0] [time-0-1] ... [time-1-0] [time-1-1] ...
8686 * [uid1]: [time-0-0] [time-0-1] ... [time-1-0] [time-1-1] ...
8687 * ...
8688 * Time-X-Y means the time a UID spent on clusterX running concurrently with Y other processes.
8689 * The file contains a monotonically increasing count of time for a single boot.
8690 */
8691message CpuClusterTime {
8692    optional int32 uid = 1 [(is_uid) = true];
8693    optional int32 cluster_index = 2;
8694    optional uint64 time_millis = 3;
8695}
8696
8697/*
8698 * Pulls free disk space, for data, system partition and temporary directory.
8699 */
8700message DiskSpace {
8701    // available bytes in data partition
8702    optional uint64 data_available_bytes = 1;
8703    // available bytes in system partition
8704    optional uint64 system_available_bytes = 2;
8705    // available bytes in download cache or temp directories
8706    optional uint64 temp_available_bytes = 3;
8707}
8708
8709/**
8710 * Pulls battery coulomb counter, which is the remaining battery charge in uAh.
8711 *
8712 * Pulled from StatsCompanionService.java
8713 */
8714message RemainingBatteryCapacity {
8715    optional int32 charge_micro_ampere_hour = 1;
8716}
8717
8718/**
8719 * Pulls battery capacity, which is the battery capacity when full in uAh.
8720 * Pulled from:
8721 *   frameworks/base/cmds/statsd/src/external/ResourceHealthManagerPuller.cpp
8722 */
8723message FullBatteryCapacity {
8724    optional int32 capacity_micro_ampere_hour = 1;
8725}
8726
8727/**
8728 * Pulls battery voltage.
8729 * Pulled from:
8730 *   frameworks/base/cmds/statsd/src/external/ResourceHealthManagerPuller.cpp
8731 */
8732message BatteryVoltage {
8733    // The voltage of the battery, in millivolts.
8734    optional int32 voltage_millivolt = 1;
8735}
8736
8737/**
8738 * Pulls battery level (percent full, from 0 to 100).
8739 *
8740 * Pulled from:
8741 *   frameworks/base/cmds/statsd/src/external/ResourceHealthManagerPuller.cpp
8742 */
8743message BatteryLevel {
8744    // Battery level. Should be in [0, 100].
8745    optional int32 battery_level = 1;
8746}
8747
8748/**
8749 * Pulls the temperature of various parts of the device.
8750 * The units are tenths of a degree Celsius. Eg: 30.3C is reported as 303.
8751 *
8752 * Pulled from StatsCompanionService.java
8753 */
8754message Temperature {
8755    // The type of temperature being reported. Eg. CPU, GPU, SKIN, BATTERY, BCL_.
8756    optional android.os.TemperatureTypeEnum sensor_location = 1;
8757
8758    // The name of the temperature source. Eg. CPU0
8759    optional string sensor_name = 2;
8760
8761    // Temperature in tenths of a degree C.
8762    // For BCL, it is decimillivolt, decimilliamps, and percentage * 10.
8763    optional int32 temperature_deci_celsius = 3;
8764
8765    // Relative severity of the throttling, see enum definition.
8766    optional android.os.ThrottlingSeverityEnum severity = 4;
8767}
8768
8769/**
8770 * Pulls the statistics of calls to Binder.
8771 *
8772 * Binder stats will be reset every time the data is pulled. It means it can only be pulled by one
8773 * config on the device.
8774 *
8775 * Next tag: 15
8776 */
8777message BinderCalls {
8778    // UID of the process responsible for the binder transaction. It will be set if the process
8779    // executing the binder transaction attribute the transaction to another uid using
8780    // Binder.setThreadWorkSource().
8781    //
8782    // If not set, the value will be -1.
8783    optional int32 uid = 1 [(is_uid) = true];
8784    // UID of the process executing the binder transaction.
8785    optional int32 direct_caller_uid = 14 [(is_uid) = true];
8786    // Fully qualified class name of the API call.
8787    //
8788    // This is a system server class name.
8789    //
8790    // TODO(gaillard): figure out if binder call stats includes data from isolated uids, if a uid
8791    // gets recycled and we have isolated uids, we might attribute the data incorrectly.
8792    // TODO(gaillard): there is a high dimensions cardinality, figure out if we should drop the less
8793    // commonly used APIs.
8794    optional string service_class_name = 2;
8795    // Method name of the API call. It can also be a transaction code if we cannot
8796    // resolve it to a name. See Binder#getTransactionName.
8797    //
8798    // This is a system server method name.
8799    optional string service_method_name = 3;
8800    // Total number of API calls.
8801    optional int64 call_count = 4;
8802    // True if the screen was interactive PowerManager#isInteractive at the end of the call.
8803    optional bool screen_interactive = 13;
8804    // Total number of API calls we have data recorded for. If we collected data for all the calls,
8805    // call_count will be equal to recorded_call_count.
8806    //
8807    // If recorded_call_count is different than call_count, it means data collection has been
8808    // sampled. All the fields below will be sampled in this case.
8809    optional int64 recorded_call_count = 12;
8810    // Number of exceptions thrown by the API.
8811    optional int64 recorded_exception_count = 5;
8812    // Total latency of all API calls.
8813    // Average can be computed using total_latency_micros / recorded_call_count.
8814    optional int64 recorded_total_latency_micros = 6;
8815    // Maximum latency of one API call.
8816    optional int64 recorded_max_latency_micros = 7;
8817    // Total CPU usage of all API calls.
8818    // Average can be computed using total_cpu_micros / recorded_call_count.
8819    // Total can be computed using total_cpu_micros / recorded_call_count * call_count.
8820    optional int64 recorded_total_cpu_micros = 8;
8821    // Maximum CPU usage of one API call.
8822    optional int64 recorded_max_cpu_micros = 9;
8823    // Maximum parcel reply size of one API call.
8824    optional int64 recorded_max_reply_size_bytes = 10;
8825    // Maximum parcel request size of one API call.
8826    optional int64 recorded_max_request_size_bytes = 11;
8827}
8828
8829/**
8830 * Pulls the statistics of exceptions during calls to Binder.
8831 *
8832 * Binder stats are cumulative from boot unless somebody reset the data using
8833 * > adb shell dumpsys binder_calls_stats --reset
8834 */
8835message BinderCallsExceptions {
8836    // Exception class name, e.g. java.lang.IllegalArgumentException.
8837    //
8838    // This is an exception class name thrown by the system server.
8839    optional string exception_class_name = 1;
8840    // Total number of exceptions.
8841    optional int64 exception_count = 2;
8842}
8843
8844/**
8845 * Pulls the statistics of message dispatching on HandlerThreads.
8846 *
8847 * Looper stats will be reset every time the data is pulled. It means it can only be pulled by one
8848 * config on the device.
8849 *
8850 * Next tag: 11
8851 */
8852message LooperStats {
8853    // The uid that made a call to the System Server and caused the message to be enqueued.
8854    optional int32 uid = 1 [(is_uid) = true];
8855
8856    // Fully qualified class name of the handler target class.
8857    //
8858    // This field does not contain PII. This is a system server class name.
8859    optional string handler_class_name = 2;
8860
8861    // The name of the thread that runs the Looper.
8862    //
8863    // This field does not contain PII. This is a system server thread name.
8864    optional string looper_thread_name = 3;
8865
8866    // The name of the dispatched message.
8867    //
8868    // This field does not contain PII. This is a system server constant or class
8869    // name.
8870    optional string message_name = 4;
8871
8872    // Total number of successfully dispatched messages.
8873    optional int64 message_count = 5;
8874
8875    // Total number of messages that failed dispatching.
8876    optional int64 exception_count = 6;
8877
8878    // Total number of processed messages we have data recorded for. If we
8879    // collected data for all the messages, message_count will be equal to
8880    // recorded_message_count.
8881    //
8882    // If recorded_message_count is different than message_count, it means data
8883    // collection has been sampled. The fields below will be sampled in this case.
8884    optional int64 recorded_message_count = 7;
8885
8886    // Total latency of all processed messages.
8887    // Average can be computed using recorded_total_latency_micros /
8888    // recorded_message_count.
8889    optional int64 recorded_total_latency_micros = 8;
8890
8891    // Total CPU usage of all processed message.
8892    // Average can be computed using recorded_total_cpu_micros /
8893    // recorded_message_count. Total can be computed using
8894    // recorded_total_cpu_micros / recorded_message_count * message_count.
8895    optional int64 recorded_total_cpu_micros = 9;
8896
8897    // True if the screen was interactive PowerManager#isInteractive at the end of the call.
8898    optional bool screen_interactive = 10;
8899
8900    // Max recorded CPU usage of all processed messages.
8901    optional int64 recorded_max_cpu_micros = 11;
8902
8903    // Max recorded latency of all processed messages.
8904    optional int64 recorded_max_latency_micros = 12;
8905
8906    // Total number of messages we tracked the dispatching delay for. If we
8907    // collected data for all the messages, message_count will be equal to
8908    // recorded_delay_message_count.
8909    //
8910    // If recorded_delay_message_count is different than message_count, it means data
8911    // collection has been sampled or/and not all messages specified the target dispatch time.
8912    // The fields below will be sampled in this case.
8913    optional int64 recorded_delay_message_count = 13;
8914
8915    // Total dispatching delay of all processed messages.
8916    // Calculated as a difference between the target dispatching time (Message.when)
8917    // and the actual dispatching time.
8918    // Average can be computed using recorded_total_delay_millis / recorded_delay_message_count.
8919    optional int64 recorded_total_delay_millis = 14;
8920
8921    // Max dispatching delay of all processed messages.
8922    // Calculated as a difference between the target dispatching time (Message.when)
8923    // and the actual dispatching time.
8924    optional int64 recorded_max_delay_millis = 15;
8925}
8926
8927/**
8928 * Pulls disk information, such as write speed and latency.
8929 */
8930message DiskStats {
8931    // Time taken to open, write 512B to, and close a file.
8932    // -1 if error performing the check.
8933    optional int64 data_write_latency_millis = 1;
8934
8935    optional bool file_based_encryption = 2;
8936
8937    // Recent disk write speed in kB/s.
8938    // -1 if error querying storageed.
8939    // 0 if data is unavailable.
8940    optional int32 recent_disk_write_speed = 3;
8941}
8942
8943
8944/**
8945 * Free and total bytes of the Data, Cache, System, and Metadata partitions.
8946 */
8947message DirectoryUsage {
8948    enum Directory {
8949        UNKNOWN = 0;
8950        DATA = 1;
8951        CACHE = 2;
8952        SYSTEM = 3;
8953        METADATA = 4;
8954    }
8955    optional Directory directory = 1;
8956    optional int64 free_bytes = 2;
8957    optional int64 total_bytes = 3;
8958}
8959
8960
8961/**
8962 * Size of an application: apk size, data size, and cache size.
8963 * Reads from a cached file produced daily by DiskStatsLoggingService.java.
8964 * Information is only reported for apps with the primary user (user 0).
8965 * Sizes are aggregated by package name.
8966 */
8967message AppSize {
8968    // Including uids will involve modifying diskstats logic.
8969    optional string package_name = 1;
8970    // App size in bytes. -1 if unavailable.
8971    optional int64 app_size_bytes = 2;
8972    // App data size in bytes. -1 if unavailable.
8973    optional int64 app_data_size_bytes = 3;
8974    // App cache size in bytes. -1 if unavailable.
8975    optional int64 app_cache_size_bytes = 4;
8976    // Time that the cache file was produced.
8977    // Uses System.currentTimeMillis(), which is wall clock time.
8978    optional int64 cache_time_millis = 5;
8979}
8980
8981
8982/**
8983 * Size of a particular category. Eg: photos, videos.
8984 * Reads from a cached file produced daily by DiskStatsLoggingService.java.
8985 */
8986message CategorySize {
8987    enum Category {
8988        UNKNOWN = 0;
8989        APP_SIZE = 1;
8990        APP_DATA_SIZE = 2;
8991        APP_CACHE_SIZE = 3;
8992        PHOTOS = 4;
8993        VIDEOS = 5;
8994        AUDIO = 6;
8995        DOWNLOADS = 7;
8996        SYSTEM = 8;
8997        OTHER = 9;
8998    }
8999    optional Category category = 1;
9000    // Category size in bytes.
9001    optional int64 size_bytes = 2;
9002    // Time that the cache file was produced.
9003    // Uses System.currentTimeMillis(), which is wall clock time.
9004    optional int64 cache_time_millis = 3;
9005}
9006
9007/**
9008 * Pulls per uid I/O stats. The stats are cumulative since boot.
9009 *
9010 * Read/write bytes are I/O events from a storage device
9011 * Read/write chars are data requested by read/write syscalls, and can be
9012 *   satisfied by caching.
9013 *
9014 * Pulled from StatsCompanionService, which reads proc/uid_io/stats.
9015 */
9016message DiskIo {
9017    optional int32 uid = 1 [(is_uid) = true];
9018    optional int64 fg_chars_read = 2;
9019    optional int64 fg_chars_write = 3;
9020    optional int64 fg_bytes_read = 4;
9021    optional int64 fg_bytes_write = 5;
9022    optional int64 bg_chars_read = 6;
9023    optional int64 bg_chars_write = 7;
9024    optional int64 bg_bytes_read = 8;
9025    optional int64 bg_bytes_write = 9;
9026    optional int64 fg_fsync = 10;
9027    optional int64 bg_fsync= 11;
9028}
9029
9030
9031/**
9032 * Pulls the number of fingerprints for each user.
9033 *
9034 * Pulled from StatsCompanionService, which queries <Biometric>Manager.
9035 */
9036message NumFingerprintsEnrolled {
9037    // The associated user. Eg: 0 for owners, 10+ for others.
9038    // Defined in android/os/UserHandle.java
9039    optional int32 user = 1;
9040    // Number of fingerprints registered to that user.
9041    optional int32 num_fingerprints_enrolled = 2;
9042}
9043
9044/**
9045 * Pulls the number of faces for each user.
9046 *
9047 * Pulled from StatsCompanionService, which queries <Biometric>Manager.
9048 */
9049message NumFacesEnrolled {
9050    // The associated user. Eg: 0 for owners, 10+ for others.
9051    // Defined in android/os/UserHandle.java
9052    optional int32 user = 1;
9053    // Number of faces registered to that user.
9054    optional int32 num_faces_enrolled = 2;
9055}
9056/**
9057 * A mapping of role holder -> role
9058 */
9059message RoleHolder {
9060    // uid of the role holder
9061    optional int32 uid = 1 [(is_uid) = true];
9062
9063    // package name of the role holder
9064    optional string package_name = 2;
9065
9066    // the role held
9067    optional string role = 3;
9068}
9069
9070message AggStats {
9071    // These are all in byte resolution.
9072    optional int64 min = 1 [deprecated = true];
9073    optional int64 average = 2 [deprecated = true];
9074    optional int64 max = 3 [deprecated = true];
9075
9076    // These are all in kilobyte resolution. Can fit in int32, so smaller on the wire than the above
9077    // int64 fields.
9078    optional int32 mean_kb = 4;
9079    optional int32 max_kb = 5;
9080}
9081
9082// A reduced subset of process states; reducing the number of possible states allows more
9083// aggressive device-side aggregation of statistics and hence reduces metric upload size.
9084enum ProcessStateAggregated {
9085    PROCESS_STATE_UNKNOWN = 0;
9086    // Persistent system process.
9087    PROCESS_STATE_PERSISTENT = 1;
9088    // Top activity; actually any visible activity.
9089    PROCESS_STATE_TOP = 2;
9090    // Process binding to top or a foreground service.
9091    PROCESS_STATE_BOUND_TOP_OR_FGS = 3;
9092    // Processing running a foreground service.
9093    PROCESS_STATE_FGS = 4;
9094    // Important foreground process (ime, wallpaper, etc).
9095    PROCESS_STATE_IMPORTANT_FOREGROUND = 5;
9096    // Important background process.
9097    PROCESS_STATE_BACKGROUND = 6;
9098    // Process running a receiver.
9099    PROCESS_STATE_RECEIVER = 7;
9100    // All kinds of cached processes.
9101    PROCESS_STATE_CACHED = 8;
9102}
9103
9104// Next tag: 13
9105message ProcessStatsStateProto {
9106    optional android.service.procstats.ScreenState screen_state = 1;
9107
9108    optional android.service.procstats.MemoryState memory_state = 2 [deprecated = true];
9109
9110    // this enum list is from frameworks/base/core/java/com/android/internal/app/procstats/ProcessStats.java
9111    // and not frameworks/base/core/java/android/app/ActivityManager.java
9112    optional android.service.procstats.ProcessState process_state = 3 [deprecated = true];
9113
9114    optional ProcessStateAggregated process_state_aggregated = 10;
9115
9116    // Millisecond uptime duration spent in this state
9117    optional int64 duration_millis = 4 [deprecated = true];
9118    // Same as above, but with minute resolution so it fits into an int32.
9119    optional int32 duration_minutes = 11;
9120
9121    // Millisecond elapsed realtime duration spent in this state
9122    optional int64 realtime_duration_millis = 9 [deprecated = true];
9123    // Same as above, but with minute resolution so it fits into an int32.
9124    optional int32 realtime_duration_minutes = 12;
9125
9126    // # of samples taken
9127    optional int32 sample_size = 5;
9128
9129    // PSS is memory reserved for this process
9130    optional AggStats pss = 6 [deprecated = true];
9131
9132    // USS is memory shared between processes, divided evenly for accounting
9133    optional AggStats uss = 7 [deprecated = true];
9134
9135    // RSS is memory resident for this process
9136    optional AggStats rss = 8;
9137}
9138
9139// Next Tag: 8
9140message ProcessStatsProto {
9141    // Name of process.
9142    optional string process = 1;
9143
9144    // Uid of the process.
9145    optional int32 uid = 2 [(is_uid) = true];
9146
9147    // Information about how often kills occurred
9148    message Kill {
9149        // Count of excessive CPU kills
9150        optional int32 cpu = 1;
9151
9152        // Count of kills when cached
9153        optional int32 cached = 2;
9154
9155        // PSS stats during cached kill
9156        optional AggStats cached_pss = 3;
9157    }
9158    optional Kill kill = 3 [deprecated = true];
9159
9160    // Time and memory spent in various states.
9161    repeated ProcessStatsStateProto states = 5;
9162
9163    // Total time process has been running...  screen_state, memory_state, and process_state
9164    // will not be set.
9165    optional ProcessStatsStateProto total_running_state = 6;
9166
9167    // Association data for this process in this state;
9168    // each entry here is one association.
9169    repeated ProcessStatsAssociationProto assocs = 7;
9170}
9171
9172// Next Tag: 6
9173message ProcessStatsAssociationProto {
9174    // Procss Name of the associated process (client process of service binding)
9175    optional string assoc_process_name = 1;
9176
9177    // Package Name of the associated package (client package of service binding)
9178    optional string assoc_package_name = 2 [deprecated = true];
9179
9180    // UID of the associated process/package (client package of service binding)
9181    optional int32 assoc_uid = 5 [(is_uid) = true];
9182
9183    // Total count of the times this association (service binding) appeared.
9184    optional int32 total_count = 3;
9185
9186    // Uptime total duration in seconds this association (service binding) was around.
9187    optional int32 total_duration_secs = 4;
9188}
9189
9190message PackageServiceOperationStatsProto {
9191    // Operate enum: Started, Foreground, Bound, Executing
9192    optional android.service.procstats.ServiceOperationState operation = 1;
9193
9194    // Number of times the service was in this operation.
9195    optional int32 count = 2;
9196
9197    // Information about a state the service can be in.
9198    message StateStats {
9199        // Screen state enum.
9200        optional android.service.procstats.ScreenState screen_state = 1;
9201        // Memory state enum.
9202        optional android.service.procstats.MemoryState memory_state = 2;
9203
9204        // duration in milliseconds.
9205        optional int64 duration_millis = 3;
9206        // Millisecond elapsed realtime duration spent in this state
9207        optional int64 realtime_duration_millis = 4;
9208    }
9209    repeated StateStats state_stats = 3;
9210}
9211
9212message PackageServiceStatsProto {
9213    // Name of service component.
9214    optional string service_name = 1;
9215
9216    // The operation stats.
9217    // The package_name, package_uid, package_version, service_name will not be set to save space.
9218    repeated PackageServiceOperationStatsProto operation_stats = 2;
9219}
9220
9221message PackageAssociationSourceProcessStatsProto {
9222    // Uid of the process.
9223    optional int32 process_uid = 1;
9224    // Process name.
9225    optional string process_name = 2;
9226    // Package name.
9227    optional string package_name = 7;
9228    // Total count of the times this association appeared.
9229    optional int32 total_count = 3;
9230
9231    // Millisecond uptime total duration this association was around.
9232    optional int64 total_duration_millis = 4;
9233
9234    // Total count of the times this association became actively impacting its target process.
9235    optional int32 active_count = 5;
9236
9237    // Information on one source in this association.
9238    message StateStats {
9239        // Process state enum.
9240        optional android.service.procstats.ProcessState process_state = 1;
9241        // Millisecond uptime duration spent in this state
9242        optional int64 duration_millis = 2;
9243        // Millisecond elapsed realtime duration spent in this state
9244        optional int64 realtime_duration_mmillis = 3;
9245    }
9246    repeated StateStats active_state_stats = 6;
9247}
9248
9249message PackageAssociationProcessStatsProto {
9250    // Name of the target component.
9251    optional string component_name = 1;
9252    // Information on one source in this association.
9253    repeated PackageAssociationSourceProcessStatsProto sources = 2;
9254}
9255
9256
9257message ProcessStatsPackageProto {
9258    // Name of package.
9259    optional string package = 1;
9260
9261    // Uid of the package.
9262    optional int32 uid = 2;
9263
9264    // Version of the package.
9265    optional int64 version = 3;
9266
9267    // Stats for each process running with the package loaded in to it.
9268    repeated ProcessStatsProto process_stats = 4;
9269
9270    // Stats for each of the package's services.
9271    repeated PackageServiceStatsProto service_stats = 5;
9272
9273    // Stats for each association with the package.
9274    repeated PackageAssociationProcessStatsProto association_stats = 6;
9275}
9276
9277message ProcessStatsSectionProto {
9278    // Elapsed realtime at start of report.
9279    optional int64 start_realtime_millis = 1;
9280
9281    // Elapsed realtime at end of report.
9282    optional int64 end_realtime_millis = 2;
9283
9284    // CPU uptime at start of report.
9285    optional int64 start_uptime_millis = 3;
9286
9287    // CPU uptime at end of report.
9288    optional int64 end_uptime_millis = 4;
9289
9290    // System runtime library. e.g. "libdvm.so", "libart.so".
9291    optional string runtime = 5;
9292
9293    // whether kernel reports swapped pss.
9294    optional bool has_swapped_pss = 6;
9295
9296    // Data completeness. e.g. "complete", "partial", shutdown", or "sysprops".
9297    enum Status {
9298        STATUS_UNKNOWN = 0;
9299        STATUS_COMPLETE = 1;
9300        STATUS_PARTIAL = 2;
9301        STATUS_SHUTDOWN = 3;
9302        STATUS_SYSPROPS = 4;
9303    }
9304    repeated Status status = 7;
9305
9306    // Number of pages available of various types and sizes, representation fragmentation.
9307    repeated ProcessStatsAvailablePagesProto available_pages = 10;
9308
9309    // Stats for each process.
9310    repeated ProcessStatsProto process_stats = 8;
9311
9312    // Stats for each package.
9313    repeated ProcessStatsPackageProto package_stats = 9;
9314}
9315
9316message ProcessStatsAvailablePagesProto {
9317    // Node these pages are in (as per /proc/pagetypeinfo)
9318    optional int32 node = 1;
9319
9320    // Zone these pages are in (as per /proc/pagetypeinfo)
9321    optional string zone = 2;
9322
9323    // Label for the type of these pages (as per /proc/pagetypeinfo)
9324    optional string label = 3;
9325
9326    // Distribution of number of pages available by order size.  First entry in array is
9327    // order 0, second is order 1, etc.  Each order increase is a doubling of page size.
9328    repeated int32 pages_per_order = 4;
9329}
9330
9331/**
9332 * Pulled from ProcessStatsService.java
9333 */
9334message ProcStats {
9335    optional ProcessStatsSectionProto proc_stats_section = 1 [(log_mode) = MODE_BYTES];
9336    // Data pulled from device into this is sometimes sharded across multiple atoms to work around
9337    // a size limit. When this happens, this shard ID will contain an increasing 1-indexed integer
9338    // with the number of this shard.
9339    optional int32 shard_id = 2;
9340}
9341
9342/**
9343 * Pulled from ProcessStatsService.java
9344 */
9345message ProcStatsPkgProc {
9346    optional ProcessStatsSectionProto proc_stats_section = 1 [(log_mode) = MODE_BYTES];
9347}
9348
9349// Next Tag: 2
9350message PackageRemoteViewInfoProto {
9351    optional string package_name = 1;
9352    // add per-package additional info here (like channels)
9353}
9354
9355// Next Tag: 2
9356message NotificationRemoteViewsProto {
9357    repeated PackageRemoteViewInfoProto package_remote_view_info = 1;
9358}
9359
9360/**
9361 * Pulled from NotificationManagerService.java
9362 */
9363message NotificationRemoteViews {
9364    optional NotificationRemoteViewsProto notification_remote_views = 1 [(log_mode) = MODE_BYTES];
9365}
9366
9367/**
9368 * Atom that contains a list of a package's preferences, pulled from NotificationManagerService.java
9369 */
9370message PackageNotificationPreferences {
9371    // Uid under which the package is installed.
9372    optional int32 uid = 1 [(is_uid) = true];
9373    // Notification importance, which specifies when and how a notification is displayed.
9374    // Specified under core/java/android/app/NotificationManager.java.
9375    optional int32 importance = 2;
9376    // Lockscreen visibility as set by the user.
9377    optional int32 visibility = 3;
9378    // Bitfield mask indicating what fields were locked by the user (see LockableAppfields in
9379    // PreferencesHelper.java)
9380    optional int32 user_locked_fields = 4;
9381    // Indicates if the package importance was set by the user (rather than system default).
9382    optional bool user_set_importance = 5;
9383    // State of the full screen intent permission for this package.
9384    enum FsiState {
9385        // This package did not declare the full screen intent permission in its manifest.
9386        NOT_REQUESTED = 0;
9387        // This package has the full screen intent permission.
9388        GRANTED = 1;
9389        // This package does not have the full screen intent permission.
9390        DENIED = 2;
9391    }
9392    optional FsiState fsi_state = 6;
9393    // True if the current full screen intent permission state for this package was set by the user.
9394    // This is only set when the FSI permission is requested by the app.
9395    optional bool is_fsi_permission_user_set = 7;
9396    // Which types of bundles (groupings by category) are allowed for this package. Bundle types are
9397    // a limited set, so this repeated field will never be larger than the total number of bundle
9398    // types.
9399    repeated android.stats.notification.BundleTypes allowed_bundle_types = 8;
9400}
9401
9402/**
9403 * Atom that contains a list of a package's channel preferences, pulled from
9404 * NotificationManagerService.java.
9405 */
9406message PackageNotificationChannelPreferences {
9407    // Uid under which the package is installed.
9408    optional int32 uid = 1 [(is_uid) = true];
9409    // Channel's ID. Should always be available.
9410    optional string channel_id = 2;
9411    // Channel's name. Should always be available.
9412    optional string channel_name = 3;
9413    // Channel's description. Optionally set by the channel creator.
9414    optional string description = 4;
9415    // Notification importance, which specifies when and how a notification is displayed. Specified
9416    // under core/java/android/app/NotificationManager.java.
9417    optional int32 importance = 5;
9418    // Bitmask representing which fields have been set by the user. See field bitmask descriptions
9419    // at core/java/android/app/NotificationChannel.java
9420    optional int32 user_locked_fields = 6;
9421    // Indicates if the channel was deleted by the app.
9422    optional bool is_deleted = 7;
9423    // Indicates if the channel was marked as a conversation by the app.
9424    optional bool is_conversation = 8;
9425    // Indicates if the channel is a conversation that was demoted by the user.
9426    optional bool is_demoted_conversation = 9;
9427    // Indicates if the channel is a conversation that was marked as important by the user.
9428    optional bool is_important_conversation = 10;
9429}
9430
9431/**
9432 * Atom that contains a list of a package's channel group preferences, pulled from
9433 * NotificationManagerService.java.
9434 */
9435message PackageNotificationChannelGroupPreferences {
9436    // Uid under which the package is installed.
9437    optional int32 uid = 1 [(is_uid) = true];
9438    // Channel Group's ID. Should always be available.
9439    optional string group_id = 2;
9440    // Channel Group's name. Should always be available.
9441    optional string group_name = 3;
9442    // Channel Group's description. Optionally set by group creator.
9443    optional string description = 4;
9444    // Indicates if notifications from this channel group are blocked.
9445    optional bool is_blocked = 5;
9446    // Bitmask representing which fields have been set by the user. See field bitmask descriptions
9447    // at core/java/android/app/NotificationChannelGroup.java
9448    optional int32 user_locked_fields = 6;
9449}
9450
9451message PowerProfileProto {
9452    optional double cpu_suspend = 1;
9453
9454    optional double cpu_idle = 2;
9455
9456    optional double cpu_active = 3;
9457
9458    message CpuCluster {
9459        optional int32 id = 1;
9460        optional double cluster_power = 2;
9461        optional int32 cores = 3;
9462        repeated int64 speed = 4;
9463        repeated double core_power = 5;
9464    }
9465
9466    repeated CpuCluster cpu_cluster = 40;
9467
9468    optional double wifi_scan = 4;
9469
9470    optional double wifi_on = 5;
9471
9472    optional double wifi_active = 6;
9473
9474    optional double wifi_controller_idle = 7;
9475
9476    optional double wifi_controller_rx = 8;
9477
9478    optional double wifi_controller_tx = 9;
9479
9480    repeated double wifi_controller_tx_levels = 10;
9481
9482    optional double wifi_controller_operating_voltage = 11;
9483
9484    optional double bluetooth_controller_idle = 12;
9485
9486    optional double bluetooth_controller_rx = 13;
9487
9488    optional double bluetooth_controller_tx = 14;
9489
9490    optional double bluetooth_controller_operating_voltage = 15;
9491
9492    optional double modem_controller_sleep = 16;
9493
9494    optional double modem_controller_idle = 17;
9495
9496    optional double modem_controller_rx = 18;
9497
9498    repeated double modem_controller_tx = 19;
9499
9500    optional double modem_controller_operating_voltage = 20;
9501
9502    optional double gps_on = 21;
9503
9504    repeated double gps_signal_quality_based = 22;
9505
9506    optional double gps_operating_voltage = 23;
9507
9508    optional double bluetooth_on = 24;
9509
9510    optional double bluetooth_active = 25;
9511
9512    optional double bluetooth_at_cmd = 26;
9513
9514    optional double ambient_display = 27;
9515
9516    optional double screen_on = 28;
9517
9518    optional double radio_on = 29;
9519
9520    optional double radio_scanning = 30;
9521
9522    optional double radio_active = 31;
9523
9524    optional double screen_full = 32;
9525
9526    optional double audio = 33;
9527
9528    optional double video = 34;
9529
9530    optional double flashlight = 35;
9531
9532    optional double memory = 36;
9533
9534    optional double camera = 37;
9535
9536    optional double wifi_batched_scan = 38;
9537
9538    optional double battery_capacity = 39;
9539}
9540
9541/**
9542 * power_profile.xml and other constants for power model calculations.
9543 * Pulled from PowerProfile.java
9544 */
9545message PowerProfile {
9546    optional PowerProfileProto power_profile = 1 [(log_mode) = MODE_BYTES];
9547}
9548
9549/**
9550 * Logs when a user restriction was added or removed.
9551 *
9552 * Logged from:
9553 *   frameworks/base/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
9554 */
9555message UserRestrictionChanged {
9556    // The raw string of the user restriction as defined in UserManager.
9557    // Allowed values are defined in UserRestrictionsUtils#USER_RESTRICTIONS.
9558    optional string restriction = 1;
9559    // Whether the restriction is enabled or disabled.
9560    optional bool enabled = 2;
9561}
9562
9563/**
9564 * Pulls process user time and system time. Puller takes a snapshot of all pids
9565 * in the system and returns cpu stats for those that are working at the time.
9566 * Dead pids will be dropped. Kernel processes are excluded.
9567 * Min cool-down is 5 sec.
9568 */
9569message ProcessCpuTime {
9570    optional int32 uid = 1 [(is_uid) = true];
9571
9572    optional string process_name = 2;
9573    // Process cpu time in user space, cumulative from boot/process start
9574    optional int64 user_time_millis = 3;
9575    // Process cpu time in system space, cumulative from boot/process start
9576    optional int64 system_time_millis = 4;
9577}
9578
9579/**
9580 * Pulls the CPU usage for each thread.
9581 *
9582 * Read from /proc/$PID/task/$TID/time_in_state files.
9583 *
9584 * TODO(mishaw): This is an experimental atom. Issues with big/little CPU frequencies, and
9585 * time_in_state files not being present on some phones, have not been addressed. These should be
9586 * considered before a public release.
9587 */
9588message CpuTimePerThreadFreq {
9589    // UID that owns the process.
9590    optional int32 uid = 1 [(is_uid) = true];
9591    // ID of the process.
9592    optional int32 process_id = 2;
9593    // ID of the thread.
9594    optional int32 thread_id = 3;
9595    // Name of the process taken from `/proc/$PID/cmdline`.
9596    optional string process_name = 4;
9597    // Name of the thread taken from `/proc/$PID/task/$TID/comm`
9598    optional string thread_name = 5;
9599
9600    // Report eight different frequencies, and how much time is spent in each frequency. Frequencies
9601    // are given in KHz, and time is given in milliseconds since the thread started. All eight
9602    // frequencies are given here as the alternative is sending eight separate atoms. This method
9603    // significantly reduces the amount of data created
9604    optional int32 frequency1_khz = 6;
9605    optional int32 time1_millis = 7;
9606    optional int32 frequency2_khz = 8;
9607    optional int32 time2_millis = 9;
9608    optional int32 frequency3_khz = 10;
9609    optional int32 time3_millis = 11;
9610    optional int32 frequency4_khz = 12;
9611    optional int32 time4_millis = 13;
9612    optional int32 frequency5_khz = 14;
9613    optional int32 time5_millis = 15;
9614    optional int32 frequency6_khz = 16;
9615    optional int32 time6_millis = 17;
9616    optional int32 frequency7_khz = 18;
9617    optional int32 time7_millis = 19;
9618    optional int32 frequency8_khz = 20;
9619    optional int32 time8_millis = 21;
9620}
9621
9622/**
9623 * Pulls information about the device's build.
9624 */
9625message BuildInformation {
9626    // Build.FINGERPRINT. A string that uniquely identifies this build. Do not parse.
9627    // E.g. may be composed of the brand, product, device, release, id, incremental, type, and tags.
9628    optional string fingerprint = 1;
9629
9630    // Build.BRAND. The consumer-visible brand with which the product/hardware will be associated.
9631    optional string brand = 2;
9632
9633    // Build.PRODUCT. The name of the overall product.
9634    optional string product = 3;
9635
9636    // Build.DEVICE. The name of the industrial design.
9637    optional string device = 4;
9638
9639    // Build.VERSION.RELEASE. The user-visible version string.  E.g., "1.0" or "3.4b5" or "bananas".
9640    optional string version_release = 5;
9641
9642    // Build.ID. E.g. a label like "M4-rc20".
9643    optional string id = 6;
9644
9645    // Build.VERSION.INCREMENTAL. The internal value used by the underlying source control to
9646    // represent this build.
9647    optional string version_incremental = 7;
9648
9649    // Build.TYPE. The type of build, like "user" or "eng".
9650    optional string type = 8;
9651
9652    // Build.TAGS. Comma-separated tags describing the build, like "unsigned,debug".
9653    optional string tags = 9;
9654}
9655
9656/**
9657 * Logs information about mismatched caller for content capture.
9658 *
9659 * Logged from:
9660 *   frameworks/base/core/java/android/service/contentcapture/ContentCaptureService.java
9661 */
9662message ContentCaptureCallerMismatchReported {
9663    optional string intended_package = 1;
9664    optional string calling_package = 2;
9665}
9666
9667/**
9668 * Logs information about content capture service events.
9669 *
9670 * Logged from:
9671 *   frameworks/base/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureMetricsLogger.java
9672 */
9673message ContentCaptureServiceEvents {
9674    // The type of event.
9675    enum Event {
9676        UNKNOWN = 0;
9677        ON_CONNECTED = 1;
9678        ON_DISCONNECTED = 2;
9679        SET_WHITELIST = 3;
9680        SET_DISABLED = 4;
9681        ON_USER_DATA_REMOVED = 5;
9682        ON_DATA_SHARE_REQUEST = 6;
9683        ACCEPT_DATA_SHARE_REQUEST = 7;
9684        REJECT_DATA_SHARE_REQUEST = 8;
9685        DATA_SHARE_WRITE_FINISHED = 9;
9686        DATA_SHARE_ERROR_IOEXCEPTION = 10;
9687        DATA_SHARE_ERROR_EMPTY_DATA = 11;
9688        DATA_SHARE_ERROR_CLIENT_PIPE_FAIL = 12;
9689        DATA_SHARE_ERROR_SERVICE_PIPE_FAIL = 13;
9690        DATA_SHARE_ERROR_CONCURRENT_REQUEST = 14;
9691        DATA_SHARE_ERROR_TIMEOUT_INTERRUPTED = 15;
9692        ON_REMOTE_SERVICE_DIED = 16;
9693    }
9694    optional Event event = 1;
9695    // component/package of content capture service.
9696    optional string service_info = 2;
9697    // component/package of target.
9698    // it's a concatenated list of component/package for SET_WHITELIST event
9699    // separated by " ".
9700    // Deprecated: should not log app package
9701    optional string target_info = 3 [deprecated = true];
9702    // The number of packages in the allow list
9703    optional int32 set_allowlist_package_count = 4;
9704    // The number of activities in the allow list
9705    optional int32 set_allowlist_activity_count = 5;
9706}
9707
9708/**
9709 * Logs information about content capture session events.
9710 *
9711 * Logged from:
9712 *   frameworks/base/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureMetricsLogger.java
9713 */
9714message ContentCaptureSessionEvents {
9715    // The type of event.
9716    enum Event {
9717        UNKNOWN = 0;
9718        ON_SESSION_STARTED = 1;
9719        ON_SESSION_FINISHED = 2;
9720        SESSION_NOT_CREATED = 3;
9721    }
9722    optional int32 session_id = 1;
9723    optional Event event = 2;
9724    // (n/a on session finished)
9725    optional int32 state_flags = 3;
9726    // component/package of content capture service.
9727    optional string service_info = 4;
9728    // component/package of app.
9729    // (n/a on session finished)
9730    // Deprecated: should not log app package
9731    optional string app_info = 5 [deprecated = true];
9732    optional bool is_child_session = 6;
9733}
9734
9735/**
9736 * Logs information about session being flushed.
9737 *
9738 * Logged from:
9739 *   frameworks/base/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureMetricsLogger.java
9740 */
9741message ContentCaptureFlushed {
9742    optional int32 session_id = 1;
9743    // component/package of content capture service.
9744    optional string service_info = 2;
9745    // component/package of app.
9746    // Deprecated: should not log app package
9747    optional string app_info = 3 [deprecated = true];
9748    // session start/finish events
9749    optional int32 child_session_started = 4;
9750    optional int32 child_session_finished = 5;
9751    // count of view events.
9752    optional int32 view_appeared_count = 6;
9753    optional int32 view_disappeared_count = 7;
9754    optional int32 view_text_changed_count = 8;
9755
9756    // Flush stats.
9757    optional int32 max_events = 9;
9758    optional int32 idle_flush_freq = 10;
9759    optional int32 text_flush_freq = 11;
9760    optional int32 flush_reason = 12;
9761}
9762
9763/**
9764 * Pulls on-device BatteryStats power use calculations for the overall device.
9765 */
9766message DeviceCalculatedPowerUse {
9767    // Power used by the device in nAs (i.e. nanocoulombs (nC)), as computed by BatteryStats, since
9768    // BatteryStats last reset (i.e. roughly since device was last significantly charged).
9769    // Currently, this is from BatteryStatsHelper.getComputedPower() (not getTotalPower()).
9770    optional int64 computed_power_nano_amp_secs = 1;
9771}
9772
9773// Keep in sync with frameworks/base/core/proto/android/os/batteryusagestats.proto
9774/**
9775 * Represents a device's BatteryUsageStats, with power usage information about the device
9776 * and each app.
9777 */
9778message BatteryUsageStatsAtomsProto {
9779
9780    // The session start timestamp in UTC milliseconds since January 1, 1970, per Date#getTime().
9781    // All data is no older than this time.
9782    optional int64 session_start_millis = 1;
9783
9784    // The session end timestamp in UTC milliseconds since January 1, 1970, per Date#getTime().
9785    // All data is no more recent than this time.
9786    optional int64 session_end_millis = 2;
9787
9788    // Length that the reported data covered. This usually will be equal to the entire session,
9789    // session_end_millis - session_start_millis, but may not be if some data during this time frame
9790    // is missing.
9791    optional int64 session_duration_millis = 3;
9792
9793    // Represents usage of a consumer, storing all of its power component usage.
9794    message BatteryConsumerData {
9795        // Total power consumed by this BatteryConsumer (including all of its PowerComponents).
9796        // May not equal the sum of the PowerComponentUsage due to under- or over-estimations.
9797        // Multiply by 1/36 to obtain mAh.
9798        optional int64 total_consumed_power_deci_coulombs = 1;
9799
9800        // Represents power and time usage of a particular power component.
9801        message PowerComponentUsage {
9802            // Holds android.os.PowerComponentEnum, or custom component value between 1000 and 9999.
9803            // Evidently, if one attempts to write an int to an enum field that is out of range, it
9804            // is treated as 0, so we must make this an int32.
9805            optional int32 component = 1;
9806
9807            // Power consumed by this component. Multiply by 1/36 to obtain mAh.
9808            optional int64 power_deci_coulombs = 2;
9809
9810            optional int64 duration_millis = 3;
9811        }
9812        repeated PowerComponentUsage power_components = 2;
9813
9814        // Represents a slice of power attribution, e.g. "cpu while in the background"
9815        // or "wifi when running a background service".  Queries that care about
9816        // PowerComponentUsage slices need to be aware of all supported dimensions.
9817        // There are no roll-ups included in the slices - it is up to the clients
9818        // of this data to aggregate values as needed.
9819        message PowerComponentUsageSlice {
9820            optional PowerComponentUsage power_component = 1;
9821
9822            enum ProcessState {
9823                UNSPECIFIED = 0;
9824                FOREGROUND = 1;
9825                BACKGROUND = 2;
9826                FOREGROUND_SERVICE = 3;
9827                // Keep in sync with BatteryUsageStatsPerUid.ProcessState.
9828            }
9829
9830            optional ProcessState process_state = 2;
9831        }
9832
9833        repeated PowerComponentUsageSlice slices = 3;
9834    }
9835
9836    // Total power usage for the device during this session.
9837    optional BatteryConsumerData device_battery_consumer = 4;
9838
9839    // Power usage by a uid during this session.
9840    message UidBatteryConsumer {
9841        optional int32 uid = 1 [(is_uid) = true];
9842        optional BatteryConsumerData battery_consumer_data = 2;
9843        // DEPRECATED Use time_in_state instead.
9844        optional int64 time_in_foreground_millis = 3 [deprecated = true];
9845        // DEPRECATED Use time_in_state instead.
9846        optional int64 time_in_background_millis = 4 [deprecated = true];
9847
9848        message TimeInState {
9849            enum ProcessState {
9850                UNSPECIFIED = 0;
9851                FOREGROUND = 1;
9852                BACKGROUND = 2;
9853                FOREGROUND_SERVICE = 3;
9854                // Keep in sync with BatteryUsageStatsPerUid.ProcessState.
9855            }
9856
9857            optional ProcessState process_state = 1;
9858            optional int64 time_in_state_millis = 2;
9859        }
9860
9861        repeated TimeInState time_in_state = 5;
9862    }
9863    repeated UidBatteryConsumer uid_battery_consumers = 5;
9864
9865    // Sum of all discharge percentage point drops during the reported session.
9866    optional int32 session_discharge_percentage = 6;
9867
9868    // Total amount of time battery was discharging during the reported session
9869    optional int64 discharge_duration_millis = 7;
9870
9871    // Notes the power model used for a power component.
9872    message PowerComponentModel {
9873        // Holds android.os.PowerComponentEnum, or custom component value between 1000 and 9999.
9874        optional int32 component = 1;
9875
9876        enum PowerModel {
9877            UNDEFINED = 0;
9878            POWER_PROFILE = 1;
9879            MEASURED_ENERGY = 2;
9880        }
9881
9882        optional PowerModel power_model = 2;
9883    }
9884
9885    // The power model used for each power component.
9886    repeated PowerComponentModel component_models = 8;
9887}
9888
9889/**
9890 * Pulls on-device BatteryStats on-battery power use calculations, in the form of BatteryUsageStats,
9891 * using the best data available.
9892 *
9893 * Includes the data since the last time statsd pulled this atom (i.e. since the
9894 * last-BatteryStats-reset-prior-to-last-statsd-pull) until the most recent BatteryStats reset.
9895 *
9896 * Does NOT include data after the most recent reset (use BatteryUsageStatsSinceReset too for that).
9897 *
9898 * Pulled from BatteryManager.getBatteryUsageStats().
9899 */
9900message BatteryUsageStatsBeforeReset {
9901    optional BatteryUsageStatsAtomsProto battery_usage_stats = 1 [(log_mode) = MODE_BYTES];
9902}
9903
9904/**
9905 * Pulls on-device BatteryStats on-battery power use calculations, in the form of BatteryUsageStats,
9906 * using the best data available.
9907 *
9908 * Includes all data since the most recent BatteryStats reset event, but none prior to it.
9909 *
9910 * Pulled from BatteryManager.getBatteryUsageStats().
9911 */
9912message BatteryUsageStatsSinceReset {
9913    optional BatteryUsageStatsAtomsProto battery_usage_stats = 1 [(log_mode) = MODE_BYTES];
9914}
9915
9916/**
9917 * Pulls on-device BatteryStats on-battery power use calculations, in the form of BatteryUsageStats,
9918 * using only PowerProfile Model data (even if better data is available).
9919 *
9920 * Includes all data since the most recent BatteryStats reset event, but none prior to it.
9921 *
9922 * @see android.os.BatteryUsageStatsQuery#FLAG_BATTERY_USAGE_STATS_POWER_PROFILE_MODEL
9923 * Pulled from BatteryManager.getBatteryUsageStats().
9924 */
9925message BatteryUsageStatsSinceResetUsingPowerProfileModel {
9926    optional BatteryUsageStatsAtomsProto battery_usage_stats = 1 [(log_mode) = MODE_BYTES];
9927}
9928
9929/**
9930 * Logs device policy features.
9931 *
9932 * Logged from:
9933 *   frameworks/base/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
9934 *   packages/apps/ManagedProvisioning/src/com/android/managedprovisioning/
9935 */
9936message DevicePolicyEvent {
9937    // The event id - unique for each event.
9938    optional android.stats.devicepolicy.EventId event_id = 1;
9939    // The admin package name.
9940    optional string admin_package_name = 2;
9941    // A generic integer parameter.
9942    optional int32 integer_value = 3;
9943    // A generic boolean parameter.
9944    optional bool boolean_value = 4;
9945    // A parameter specifying a time period in milliseconds.
9946    optional uint64 time_period_millis = 5;
9947    // A parameter specifying a list of package names, bundle extras or string parameters.
9948    optional android.stats.devicepolicy.StringList string_list_value = 6 [(log_mode) = MODE_BYTES];
9949}
9950
9951/**
9952 * Logs when DocumentsUI is started, and how. Call this when DocumentsUI first starts up.
9953 *
9954 * Logged from:
9955 *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
9956 */
9957message DocsUILaunchReported {
9958    optional android.stats.docsui.LaunchAction launch_action = 1;
9959    optional bool has_initial_uri = 2;
9960    optional android.stats.docsui.MimeType mime_type = 3;
9961    optional android.stats.docsui.Root initial_root = 4;
9962}
9963
9964/**
9965 * Logs root/app visited event in file managers/picker. Call this when the user
9966 * taps on root/app in hamburger menu.
9967 *
9968 * Logged from:
9969 *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
9970 */
9971message DocsUIRootVisitedReported {
9972    optional android.stats.docsui.ContextScope scope = 1;
9973    optional android.stats.docsui.Root root = 2;
9974}
9975
9976/**
9977 * Logs file operation stats. Call this when a file operation has completed.
9978 *
9979 * Logged from:
9980 *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
9981 */
9982message DocsUIFileOperationReported {
9983    optional android.stats.docsui.Provider provider = 1;
9984    optional android.stats.docsui.FileOperation file_op = 2;
9985}
9986
9987/**
9988 * Logs file operation stats. Call this when a copy/move operation has completed with a specific
9989 * mode.
9990 *
9991 * Logged from:
9992 *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
9993 */
9994message DocsUIFileOperationCopyMoveModeReported {
9995    optional android.stats.docsui.FileOperation file_op = 1;
9996    optional android.stats.docsui.CopyMoveOpMode mode = 2;
9997}
9998
9999
10000/**
10001 * Logs file sub operation stats. Call this when a file operation has failed.
10002 *
10003 * Logged from:
10004 *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
10005 */
10006message DocsUIFileOperationFailureReported {
10007    optional android.stats.docsui.Authority authority = 1;
10008    optional android.stats.docsui.SubFileOperation sub_op = 2;
10009}
10010
10011/**
10012* Logs the cancellation of a file operation. Call this when a job is canceled
10013*
10014* Logged from:
10015*     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
10016*/
10017message DocsUIFileOperationCanceledReported {
10018    optional android.stats.docsui.FileOperation file_op = 1;
10019}
10020
10021/**
10022 * Logs startup time in milliseconds.
10023 *
10024 * Logged from:
10025 *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
10026 */
10027message DocsUIStartupMsReported {
10028    optional int32 startup_millis = 1;
10029}
10030
10031/**
10032 * Logs the action that was started by user.
10033 *
10034 * Logged from:
10035 *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
10036 */
10037message DocsUIUserActionReported {
10038    optional android.stats.docsui.UserAction action = 1;
10039}
10040
10041/**
10042 * Logs the invalid type when invalid scoped access is requested.
10043 *
10044 * Logged from:
10045 *     package/app/DocumentsUI/src/com/android/documentsui/ScopedAccessMetrics.java
10046 */
10047message DocsUIInvalidScopedAccessRequestReported {
10048    optional android.stats.docsui.InvalidScopedAccess type = 1;
10049}
10050
10051/**
10052 * Logs the package name that launches docsui picker mode.
10053 *
10054 * Logged from:
10055 *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
10056 */
10057message DocsUIPickerLaunchedFromReported {
10058    optional string package_name = 1;
10059}
10060
10061/**
10062 * Logs the search type.
10063 *
10064 * Logged from:
10065 *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
10066 */
10067message DocsUISearchTypeReported {
10068    optional android.stats.docsui.SearchType search_type = 1;
10069}
10070
10071/**
10072 * Logs the search mode.
10073 *
10074 * Logged from:
10075 *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
10076 */
10077message DocsUISearchModeReported {
10078    optional android.stats.docsui.SearchMode search_mode = 1;
10079}
10080
10081/**
10082 * Logs the pick result information.
10083 *
10084 * Logged from:
10085 *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
10086 */
10087message DocsUIPickResultReported {
10088    optional int32 total_action_count = 1;
10089    optional int64 duration_millis = 2;
10090    optional int32 file_count= 3;
10091    optional bool is_searching = 4;
10092    optional android.stats.docsui.Root picked_from = 5;
10093    optional android.stats.docsui.MimeType mime_type = 6;
10094    optional int32 repeatedly_pick_times = 7;
10095}
10096
10097/** Logs the drag and drop of files.
10098
10099 * Logged from:
10100 *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
10101 */
10102message DocsUIDragAndDropReported {
10103    optional bool drag_initiated_from_docsui = 1;
10104}
10105
10106/**
10107 * Logs when an app's memory is compacted.
10108 *
10109 * Logged from:
10110 *   frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
10111 */
10112message AppCompacted {
10113  // The pid of the process being compacted.
10114  optional int32 pid = 1;
10115
10116  // The name of the process being compacted.
10117  optional string process_name = 2;
10118
10119  // The type of compaction.
10120  enum Action {
10121    UNKNOWN = 0;
10122    SOME = 1;
10123    FULL = 2;
10124    PERSISTENT = 3;
10125    BFGS = 4;
10126  }
10127  optional Action action = 3;
10128
10129  // Total RSS in kilobytes consumed by the process prior to compaction.
10130  optional int64 before_rss_total_kilobytes = 4;
10131
10132  // File RSS in kilobytes consumed by the process prior to compaction.
10133  optional int64 before_rss_file_kilobytes = 5;
10134
10135  // Anonymous RSS in kilobytes consumed by the process prior to compaction.
10136  optional int64 before_rss_anon_kilobytes = 6;
10137
10138  // Swap in kilobytes consumed by the process prior to compaction.
10139  optional int64 before_swap_kilobytes = 7;
10140
10141  // Total RSS in kilobytes consumed by the process after compaction.
10142  optional int64 after_rss_total_kilobytes = 8;
10143
10144  // File RSS in kilobytes consumed by the process after compaction.
10145  optional int64 after_rss_file_kilobytes = 9;
10146
10147  // Anonymous RSS in kilobytes consumed by the process after compaction.
10148  optional int64 after_rss_anon_kilobytes = 10;
10149
10150  // Swap in kilobytes consumed by the process after compaction.
10151  optional int64 after_swap_kilobytes = 11;
10152
10153  // The time taken to perform compaction in milliseconds.
10154  optional int64 time_to_compact_millis = 12;
10155
10156  // The last compaction action performed for this app.
10157  optional Action last_action = 13;
10158
10159  // The last time that compaction was attempted on this process in milliseconds
10160  // since boot, not including sleep (see SystemClock.uptimeMillis()).
10161  optional int64 last_compact_timestamp_ms_since_boot = 14;
10162
10163  // The "setAdj" (i.e. previous) oom_score_adj at the time of compaction.
10164  optional int32 oom_score_adj = 15;
10165
10166  // The process state at the time of compaction.
10167  optional android.app.ProcessStateEnum process_state = 16 [default = PROCESS_STATE_UNKNOWN];
10168
10169  // Free ZRAM in kilobytes before compaction.
10170  optional int64 before_zram_free_kilobytes = 17;
10171
10172  // Free ZRAM in kilobytes after compaction.
10173  optional int64 after_zram_free_kilobytes = 18;
10174}
10175
10176message AppCompactedV2 {
10177  // UID of the process being compacted
10178  optional int32 uid = 1 [(is_uid) = true];
10179
10180  // Process state for compacted process
10181  optional int32 proc_state = 2;
10182
10183  // Current OOM Adjust at the time of compaction, this would correspond to any newly set oom adj.
10184  optional int32 current_oom_adj = 3;
10185
10186  // Delta Anon RSS reduced with compaction computed as RSS Before - RSS After.
10187  optional int64 delta_anon_rss = 4;
10188
10189  // Physical ZRAM Consumed during compaction
10190  optional int64 zram_consumed = 5;
10191
10192  // CPU time spent compacting
10193  optional float compact_cpu_time = 6;
10194
10195  // Anon RSS of the process prior to being compacted
10196  optional int64 original_anon_rss = 7;
10197
10198  // Reason for the OOM adj change
10199  optional android.app.OomChangeReasonEnum oom_change_reason = 8;
10200}
10201
10202/**
10203 * Represents an event that logs information about a successful switch to an upstream network.
10204 */
10205message UpstreamEvent {
10206  // Indicates the transport type of network.
10207  optional android.stats.connectivity.UpstreamType upstream_type = 1;
10208
10209  // The duration of network usage.
10210  optional int64 duration_millis = 2;
10211
10212  // The amount of data received from tethered clients.
10213  optional int64 tx_bytes = 3;
10214
10215  // The amount of data received from remote.
10216  optional int64 rx_bytes = 4;
10217}
10218
10219message UpstreamEvents {
10220  repeated UpstreamEvent upstream_event = 1;
10221}
10222
10223/**
10224 * Logs when a Tethering event occurs.
10225 *
10226 */
10227message NetworkTetheringReported {
10228  // Tethering error code
10229  optional android.stats.connectivity.ErrorCode error_code = 1;
10230
10231  // Tethering downstream type
10232  optional android.stats.connectivity.DownstreamType downstream_type = 2;
10233
10234  // Transport type of upstream network
10235  optional android.stats.connectivity.UpstreamType upstream_type = 3 [deprecated = true];
10236
10237  // The user type of switching tethering
10238  optional android.stats.connectivity.UserType user_type= 4;
10239
10240  // Log each transport type of upstream network event
10241  optional UpstreamEvents upstream_events = 5  [(log_mode) = MODE_BYTES];
10242
10243  // A time period that a downstreams exists
10244  optional int64 duration_millis = 6;
10245}
10246
10247/**
10248 * Logs NSD(Network service discovery) client session
10249 *
10250 * Log from:
10251 *     packages/modules/Connectivity/service-t/src/com/android/server/NsdService
10252 */
10253message NetworkNsdReported {
10254  // Indicate if the device is using the legacy or the new implementation
10255  optional bool is_legacy = 1;
10256
10257  // It is a random number to represent different clients. Each client is an app on the device.
10258  optional int32 client_id = 2;
10259
10260  // It is a increment_number to represent different transactions.
10261  // Each transaction is a request from an app client.
10262  optional int32 transaction_id = 3;
10263
10264  // Indicate the service in resolution is a known service in the discovered services cache
10265  optional bool is_known_service = 4;
10266
10267  // Record each NSD session type
10268  optional android.stats.connectivity.NsdEventType type = 5;
10269
10270  // The process duration of the event in milli-second
10271  optional int64 event_duration_millisec = 6;
10272
10273  // Record each mdns query result
10274  optional android.stats.connectivity.MdnsQueryResult query_result = 7;
10275
10276  // Count of services in cache at the end of discovery
10277  optional int32 found_service_count = 8;
10278
10279  // Count of found callback when discovery is stopped
10280  optional int32 found_callback_count = 9;
10281
10282  // Count of lost callback when discovery is stopped
10283  optional int32 lost_callback_count = 10;
10284
10285  // Record query service count before unregistered service
10286  optional int32 replied_requests_count = 11;
10287
10288  // Record sent query count before stopped discovery
10289  optional int32 sent_query_count = 12;
10290
10291  // Record sent packet count before unregistered service
10292  optional int32 sent_packet_count = 13;
10293
10294  // Record number of conflict during probing
10295  optional int32 conflict_during_probing_count = 14;
10296
10297  // Record number of conflict after probing
10298  optional int32 conflict_after_probing_count = 15;
10299
10300  // The random number between 0 ~ 999 for sampling
10301  optional int32 random_number = 16;
10302}
10303
10304/**
10305 * Logs a DNS lookup operation initiated by the system resolver on behalf of an application
10306 * invoking native APIs such as getaddrinfo() or Java APIs such as Network#getAllByName().
10307 *
10308 * The NetworkDnsEventReported message represents the entire lookup operation, which may
10309 * result one or more queries to the recursive DNS resolvers. Those are individually logged
10310 * in DnsQueryEvents to enable computing error rates and network latency and timeouts
10311 * broken up by query type, transport, network interface, etc.
10312 */
10313message NetworkDnsEventReported {
10314    optional android.stats.dnsresolver.EventType event_type = 1;
10315
10316    optional android.stats.dnsresolver.ReturnCode return_code = 2;
10317
10318    // The latency in microseconds of the entire DNS lookup operation.
10319    optional int32 latency_micros = 3;
10320
10321    // Only valid for event_type = EVENT_GETADDRINFO.
10322    optional int32 hints_ai_flags = 4;
10323
10324    // Flags passed to android_res_nsend() defined in multinetwork.h
10325    // Only valid for event_type = EVENT_RESNSEND.
10326    optional int32 res_nsend_flags = 5;
10327
10328    optional android.stats.dnsresolver.NetworkType network_type = 6;
10329
10330    // The DNS over TLS mode on a specific netId.
10331    optional android.stats.dnsresolver.PrivateDnsModes private_dns_modes = 7;
10332
10333    // Additional pass-through fields opaque to statsd.
10334    // The DNS resolver Mainline module can add new fields here without requiring an OS update.
10335    optional android.stats.dnsresolver.DnsQueryEvents dns_query_events = 8 [(log_mode) = MODE_BYTES];
10336
10337    // The sample rate of DNS stats (to statsd) is 1/sampling_rate_denom.
10338    optional int32 sampling_rate_denom = 9;
10339
10340    // UID sends the DNS query.
10341    optional int32 uid = 10 [(is_uid) = true];
10342}
10343
10344/**
10345 * logs the number of DNS servers supported by the protocol
10346 */
10347message NetworkDnsServerSupportReported {
10348    // The network type of the network
10349    optional android.stats.dnsresolver.NetworkType network_type = 1;
10350
10351    // The private DNS mode of the network
10352    optional android.stats.dnsresolver.PrivateDnsModes private_dns_modes = 2;
10353
10354    // Stores the state of all DNS servers for this network
10355    optional android.stats.dnsresolver.Servers servers = 3 [(log_mode) = MODE_BYTES];
10356}
10357
10358/**
10359 * The NetworkDnsHandshakeReported message describes a DoT or DoH handshake operation along with
10360 * its result, cause, network latency, TLS version, etc.
10361 *
10362 */
10363message NetworkDnsHandshakeReported {
10364  optional android.stats.dnsresolver.Protocol protocol = 1;
10365
10366  optional android.stats.dnsresolver.HandshakeResult result = 2;
10367
10368  optional android.stats.dnsresolver.HandshakeCause cause = 3;
10369
10370  optional android.stats.dnsresolver.NetworkType network_type = 4;
10371
10372  optional android.stats.dnsresolver.PrivateDnsModes private_dns_mode = 5;
10373
10374  // The latency in microseconds of the entire handshake operation.
10375  optional int32 latency_micros = 6;
10376
10377  // Number of bytes sent in a handshake.
10378  optional int32 bytes_sent = 7;
10379
10380  // Number of bytes received in a handshake.
10381  optional int32 bytes_received = 8;
10382
10383  // Number of round-trips.
10384  optional int32 round_trips = 9;
10385
10386  // True if TLS session cache hit.
10387  optional bool tls_session_cache_hit = 10;
10388
10389  // 2 = TLS 1.2, 3 = TLS 1.3
10390  optional int32 tls_version = 11;
10391
10392  // True if the handshake requires verifying the private DNS provider hostname.
10393  optional bool hostname_verification = 12;
10394
10395  // Only present when protocol = PROTO_DOH.
10396  optional int32 quic_version = 13;
10397
10398  optional int32 server_index = 14;
10399
10400  // The sampling-rate of this event is 1/sampling_rate_denom.
10401  optional int32 sampling_rate_denom = 15;
10402}
10403
10404/**
10405 * logs the CapportApiData info
10406 * Logged from:
10407 * packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
10408 */
10409message CapportApiData {
10410    // The TTL of the network connection provided by captive portal
10411    optional int32 remaining_ttl_secs = 1;
10412
10413    // The limit traffic data of the network connection provided by captive portal
10414    optional int32 remaining_bytes = 2;
10415
10416    // Is portal url option included in the DHCP packet (Yes, No)
10417    optional bool has_portal_url = 3;
10418
10419    // Is venue info (e.g. store info, maps, flight status) included (Yes, No)
10420    optional bool has_venue_info = 4;
10421}
10422
10423/**
10424 * logs a network Probe Event
10425 * Logged from:
10426 * packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
10427 */
10428message ProbeEvent {
10429    // The probe type (http or https, or captive portal API...)
10430    optional android.stats.connectivity.ProbeType probe_type = 1;
10431
10432    // The latency in microseconds of the probe event
10433    optional int32 latency_micros = 2;
10434
10435    // The result of the probe event
10436    optional android.stats.connectivity.ProbeResult probe_result = 3;
10437
10438    // The CaptivePortal API info
10439    optional CapportApiData capport_api_data = 4;
10440}
10441
10442/**
10443 * log each ProbeEvent in ProbeEvents
10444 * Logged from:
10445 * packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
10446 */
10447message ProbeEvents {
10448    // Record probe event during the validation
10449    repeated ProbeEvent probe_event = 1;
10450}
10451
10452/**
10453 * The DHCP (Dynamic Host Configuration Protocol) session info
10454 * Logged from:
10455 * packages/modules/NetworkStack/src/android/net/dhcp/DhcpClient.java
10456 */
10457message DhcpSession {
10458    // The DHCP Feature(s) enabled in this session
10459    repeated android.stats.connectivity.DhcpFeature used_features = 1;
10460
10461    // The discover packet (re)transmit count
10462    optional int32 discover_count = 2;
10463
10464    // The request packet (re)transmit count
10465    optional int32 request_count = 3;
10466
10467    // The IPv4 address conflict count
10468    // (only be meaningful when duplicate address detection is enabled)
10469    optional int32 conflict_count = 4;
10470
10471    // The DHCP packet parsing error code in this session
10472    // (defined in android.net.metrics.DhcpErrorEvent)
10473    repeated android.stats.connectivity.DhcpErrorCode error_code = 5;
10474
10475    // The result of DHCP hostname transliteration
10476    optional android.stats.connectivity.HostnameTransResult ht_result = 6;
10477}
10478
10479/**
10480 * Logs Network IP provisioning event
10481 * Logged from:
10482 * packages/modules/NetworkStack/src/com/android/networkstack/metrics/NetworkIpProvisioningMetrics.java
10483 */
10484message NetworkIpProvisioningReported {
10485    // Transport type (WIFI, CELLULAR, BLUETOOTH, ..)
10486    optional android.stats.connectivity.TransportType transport_type = 1;
10487
10488    // The latency in microseconds of IP Provisioning over IPV4
10489    optional int32 ipv4_latency_micros = 2;
10490
10491    // The latency in microseconds of IP Provisioning over IPV6
10492    optional int32 ipv6_latency_micros = 3;
10493
10494    // The time duration between provisioning start and end (success or failure)
10495    optional int64 provisioning_duration_micros = 4;
10496
10497    // The specific disconnect reason for this IP provisioning
10498    optional android.stats.connectivity.DisconnectCode disconnect_code = 5;
10499
10500    // Log DHCP session info (Only valid for IPv4)
10501    optional DhcpSession dhcp_session = 6 [(log_mode) = MODE_BYTES];
10502
10503    // The random number between 0 ~ 999 for sampling
10504    optional int32 random_number = 7;
10505
10506    // Check which IPv6 provisioning mode is used for current connection
10507    optional android.stats.connectivity.Ipv6ProvisioningMode ipv6_provisioning_mode = 8;
10508}
10509
10510/**
10511 * Logs Network DHCP Renew event
10512 * Logged from:
10513 * packages/modules/NetworkStack/src/android/net/dhcp/DhcpClient.java
10514 */
10515message NetworkDhcpRenewReported {
10516    // Transport type (WIFI, CELLULAR, BLUETOOTH, ..)
10517    optional android.stats.connectivity.TransportType transport_type = 1;
10518
10519    // The request packet (re)transmit count
10520    optional int32 request_count = 2;
10521
10522    // The latency in microseconds of DHCP Renew
10523    optional int32 latency_micros = 3;
10524
10525    // The DHCP error code is defined in android.net.metrics.DhcpErrorEvent
10526    optional android.stats.connectivity.DhcpErrorCode error_code = 4;
10527
10528    // The result of DHCP renew
10529    optional android.stats.connectivity.DhcpRenewResult renew_result = 5;
10530
10531    // The random number between 0 ~ 999 for sampling
10532    optional int32 random_number = 6;
10533}
10534
10535/**
10536 * Logs Network Validation event
10537 * Logged from:
10538 * packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
10539 */
10540message NetworkValidationReported {
10541    // Transport type (WIFI, CELLULAR, BLUETOOTH, ..)
10542    optional android.stats.connectivity.TransportType transport_type = 1;
10543
10544    // Record each probe event
10545    optional ProbeEvents probe_events = 2 [(log_mode) = MODE_BYTES];
10546
10547    // The result of the network validation
10548    optional android.stats.connectivity.ValidationResult validation_result = 3;
10549
10550    // The latency in microseconds of network validation
10551    optional int32 latency_micros = 4;
10552
10553    // The validation index (the first validation attempt or second, third...)
10554    optional int32 validation_index = 5;
10555
10556    // The random number between 0 ~ 999 for sampling
10557    optional int32 random_number = 6;
10558}
10559
10560/**
10561 * Logs NetworkStack Quirk event
10562 * Logged from:
10563 * packages/modules/NetworkStack/src/com/android/networkstack/
10564 */
10565message NetworkStackQuirkReported {
10566    // Transport type (WIFI, CELLULAR, BLUETOOTH, ..)
10567    optional android.stats.connectivity.TransportType transport_type = 1;
10568
10569    // Record each Quirk event
10570    optional android.stats.connectivity.NetworkQuirkEvent event = 2;
10571}
10572
10573/**
10574 * Logs Neighbor Unreachability Detection event
10575 * Logged from:
10576 * packages/modules/NetworkStack/src/com/android/networkstack/metrics/NetworkIpReachabilityMonitorMetrics.java
10577 */
10578message NetworkIpReachabilityMonitorReported {
10579    // Neighbor Unreachability Detection event.
10580    optional android.stats.connectivity.NudEventType event_type = 1;
10581
10582    // NUD probe based on IPv4 ARP or IPv6 ND packet.
10583    optional android.stats.connectivity.IpType ip_type = 2;
10584
10585    // NUD neighbor type, default gateway, DNS server or both.
10586    optional android.stats.connectivity.NudNeighborType neighbor_type = 3;
10587}
10588
10589/**
10590 * Logs when system default network changes.
10591 */
10592message SystemDefaultNetworkChanged {
10593    // Active transport types encoded as a 32 bit integer.
10594    // The integer will have n-th bit set if there was an active transport type of value n.
10595    // See packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
10596    optional int32 transport_types = 1 [
10597        (state_field_option).exclusive_state = true,
10598        (state_field_option).nested = false
10599    ];
10600}
10601
10602/**
10603 * Logs when a data stall event occurs.
10604 *
10605 * Log from:
10606 *     packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
10607 */
10608message DataStallEvent {
10609    // Data stall evaluation type.
10610    // See packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
10611    // Refer to the definition of DATA_STALL_EVALUATION_TYPE_*.
10612    optional int32 evaluation_type = 1;
10613    // See definition in data_stall_event.proto.
10614    optional com.android.server.connectivity.ProbeResult validation_result = 2;
10615    // See definition in data_stall_event.proto.
10616    optional android.net.Transport network_type = 3;
10617    // See definition in data_stall_event.proto.
10618    optional com.android.server.connectivity.WifiData wifi_info = 4 [(log_mode) = MODE_BYTES];
10619    // See definition in data_stall_event.proto.
10620    optional com.android.server.connectivity.CellularData cell_info = 5 [(log_mode) = MODE_BYTES];
10621    // See definition in data_stall_event.proto.
10622    optional com.android.server.connectivity.DnsEvent dns_event = 6 [(log_mode) = MODE_BYTES];
10623    // The tcp packets fail rate from the latest tcp polling.
10624    optional int32 tcp_fail_rate = 7;
10625    // Number of packets sent since the last received packet.
10626    optional int32 tcp_sent_since_last_recv = 8;
10627}
10628
10629/*
10630 * Logs when RescueParty resets some set of experiment flags.
10631 *
10632 * Logged from:
10633 *     frameworks/base/services/core/java/com/android/server/RescueParty.java
10634 */
10635message RescuePartyResetReported {
10636    // The rescue level of this reset. A value of 0 indicates missing or unknown level information.
10637    optional int32 rescue_level = 1;
10638    optional string rescue_level_string = 2;
10639}
10640
10641/**
10642 * Logs when signed config is received from an APK, and if that config was applied successfully.
10643 * Logged from:
10644 *   frameworks/base/services/core/java/com/android/server/signedconfig/SignedConfigService.java
10645 */
10646message SignedConfigReported {
10647    enum Type {
10648        UNKNOWN_TYPE = 0;
10649        GLOBAL_SETTINGS = 1;
10650    }
10651    optional Type type = 1;
10652
10653    // The final status of the signed config received.
10654    enum Status {
10655        UNKNOWN_STATUS = 0;
10656        APPLIED = 1;
10657        BASE64_FAILURE_CONFIG = 2;
10658        BASE64_FAILURE_SIGNATURE = 3;
10659        SECURITY_EXCEPTION = 4;
10660        INVALID_CONFIG = 5;
10661        OLD_CONFIG = 6;
10662        SIGNATURE_CHECK_FAILED = 7;
10663        NOT_APPLICABLE = 8;
10664        SIGNATURE_CHECK_FAILED_PROD_KEY_ABSENT = 9;
10665    }
10666    optional Status status = 2;
10667
10668    // The version of the signed config processed.
10669    optional int32 version = 3;
10670
10671    // The package name that the config was extracted from.
10672    optional string from_package = 4;
10673
10674    enum Key {
10675        NO_KEY = 0;
10676        DEBUG = 1;
10677        PRODUCTION = 2;
10678    }
10679    // Which key was used to verify the config.
10680    optional Key verified_with = 5;
10681}
10682
10683/*
10684 * Logs GNSS Network-Initiated (NI) location events.
10685 *
10686 * Logged from:
10687 *   frameworks/base/services/core/java/com/android/server/location/GnssLocationProvider.java
10688 */
10689message GnssNiEventReported {
10690    // The type of GnssNiEvent.
10691    enum EventType {
10692        UNKNOWN = 0;
10693        NI_REQUEST = 1;
10694        NI_RESPONSE = 2;
10695    }
10696    optional EventType event_type = 1;
10697
10698    // An ID generated by HAL to associate NI notifications and UI responses.
10699    optional int32 notification_id = 2;
10700
10701    // A type which distinguishes different categories of NI request, such as VOICE, UMTS_SUPL etc.
10702    optional android.server.location.GnssNiType ni_type = 3;
10703
10704    // NI requires notification.
10705    optional bool need_notify = 4;
10706
10707    // NI requires verification.
10708    optional bool need_verify = 5;
10709
10710    // NI requires privacy override, no notification/minimal trace.
10711    optional bool privacy_override = 6;
10712
10713    // Timeout period to wait for user response. Set to 0 for no timeout limit. Specified in
10714    // seconds.
10715    optional int32 timeout = 7;
10716
10717    // Default response when timeout.
10718    optional android.server.location.GnssUserResponseType default_response = 8;
10719
10720    // String representing the requester of the network inititated location request.
10721    optional string requestor_id = 9;
10722
10723    // Notification message text string representing the service(for eg. SUPL-service) who sent the
10724    // network initiated location request.
10725    optional string text = 10;
10726
10727    // requestorId decoding scheme.
10728    optional android.server.location.GnssNiEncodingType requestor_id_encoding = 11;
10729
10730    // Notification message text decoding scheme.
10731    optional android.server.location.GnssNiEncodingType text_encoding = 12;
10732
10733    // True if SUPL ES is enabled.
10734    optional bool is_supl_es_enabled = 13;
10735
10736    // True if GNSS location is enabled.
10737    optional bool is_location_enabled = 14;
10738
10739    // GNSS NI responses which define the response in NI structures.
10740    optional android.server.location.GnssUserResponseType user_response = 15;
10741}
10742
10743/**
10744 * Logs GNSS non-framework (NFW) location notification.
10745 *
10746 * Logged from:
10747 *   frameworks/base/services/core/java/com/android/server/location/GnssLocationProvider.java
10748 */
10749message GnssNfwNotificationReported {
10750    // Package name of the Android proxy application representing the non-framework entity that
10751    // requested location. Set to empty string if unknown.
10752    optional string proxy_app_package_name = 1;
10753
10754    // Protocol stack that initiated the non-framework location request.
10755    optional android.server.location.NfwProtocolStack protocol_stack = 2;
10756
10757    // Name of the protocol stack if protocol_stack field is set to OTHER_PROTOCOL_STACK. Otherwise,
10758    // set to empty string. This field is opaque to the framework and used for logging purposes.
10759    optional string other_protocol_stack_name = 3;
10760
10761    // Source initiating/receiving the location information.
10762    optional android.server.location.NfwRequestor requestor = 4;
10763
10764    // Identity of the endpoint receiving the location information. For example, carrier name, OEM
10765    // name, SUPL SLP/E-SLP FQDN, chipset vendor name, etc. This field is opaque to the framework
10766    // and used for logging purposes.
10767    optional string requestor_id = 5;
10768
10769    // Indicates whether location information was provided for this request.
10770    optional android.server.location.NfwResponseType response_type = 6;
10771
10772    // True if the device is in user initiated emergency session.
10773    optional bool in_emergency_mode = 7;
10774
10775    // True if cached location is provided.
10776    optional bool is_cached_location = 8;
10777
10778    // True if proxy app permission mismatch between framework and GNSS HAL.
10779    optional bool is_permission_mismatched = 9;
10780}
10781
10782/**
10783 * Logs GNSS configuration as defined in IGnssConfiguration.hal.
10784 *
10785 * Logged from:
10786 *   frameworks/base/services/core/java/com/android/server/location/GnssConfiguration.java
10787 */
10788message GnssConfigurationReported {
10789    // SUPL host name.
10790    optional string supl_host = 1;
10791
10792    // SUPL port number.
10793    optional int32 supl_port = 2;
10794
10795    // C2K host name.
10796    optional string c2k_host = 3;
10797
10798    // C2K port number.
10799    optional int32 c2k_port = 4;
10800
10801    // The SUPL version requested by Carrier.
10802    optional int32 supl_ver = 5;
10803
10804    // The SUPL mode.
10805    optional android.server.location.SuplMode supl_mode = 6;
10806
10807    // True if NI emergency SUPL restrictions is enabled.
10808    optional bool supl_es = 7;
10809
10810    // LTE Positioning Profile settings
10811    optional android.server.location.LppProfile lpp_profile = 8;
10812
10813    // Positioning protocol on A-Glonass system.
10814    optional android.server.location.GlonassPosProtocol a_glonass_pos_protocol_select = 9;
10815
10816    // True if emergency PDN is used. Otherwise, regular PDN is used.
10817    optional bool use_emergency_pdn_for_emergency_supl= 10;
10818
10819    // Configurations of how GPS functionalities should be locked when user turns off GPS On setting.
10820    optional android.server.location.GpsLock gps_lock = 11;
10821
10822    // Number of seconds to extend the emergency session duration post emergency call.
10823    optional int32 es_extension_sec = 12;
10824
10825    // The full list of package names of proxy Android applications representing the non-framework
10826    // location access entities (on/off the device) for which the framework user has granted
10827    // non-framework location access permission. The package names are concatenated in one string
10828    // with spaces as separators.
10829    optional string enabled_proxy_app_package_name_list = 13;
10830}
10831
10832/**
10833 * Logs GNSS PSDS downloads as defined in IGnssPsds.aidl.
10834 *
10835 * Logged from:
10836 *   frameworks/base/services/core/java/com/android/server/location/gnss/GnssPsdsDownloader.java
10837 */
10838message GnssPsdsDownloadReported {
10839    // PSDS type as defined in PsdsType.aidl
10840    optional int32 psds_type = 1;
10841}
10842
10843/**
10844 * Logs when a NFC device's error occurred.
10845 * Logged from:
10846 *     packages/modules/Nfc/libnfc-nci/src/nfc/nfc/nfc_ncif.cc
10847 *     packages/modules/Nfc/NfcNci/src/com/android/nfc/cardemulation/AidRoutingManager.java
10848 */
10849message NfcErrorOccurred {
10850    enum Type {
10851        UNKNOWN = 0;
10852        CMD_TIMEOUT = 1;
10853        ERROR_NOTIFICATION = 2;
10854        AID_OVERFLOW = 3;
10855        // HCE stands for Host Card Emulation
10856        HCE_LATE_BINDING = 4;
10857        NFC_ACCESS_CHECK_ERROR = 5;
10858        SE_INCORRECT_FORMAT = 6;
10859    }
10860    optional Type type = 1;
10861    // If it's nci cmd timeout, log the timeout command.
10862    optional uint32 nci_cmd = 2;
10863
10864    optional uint32 error_ntf_status_code = 3;
10865}
10866
10867/**
10868 * Logs when a NFC device's state changed event
10869 * Logged from:
10870 *     packages/modules/Nfc/NfcNci/src/com/android/nfc/NfcService.java
10871 */
10872message NfcStateChanged {
10873    enum State {
10874        UNKNOWN = 0;
10875        OFF = 1;
10876        ON = 2;
10877        ON_LOCKED = 3; // Secure Nfc enabled.
10878        CRASH_RESTART = 4; // NfcService watchdog timeout restart.
10879    }
10880    optional State state = 1 [
10881        (state_field_option).exclusive_state = true,
10882        (state_field_option).nested = false
10883    ];
10884}
10885
10886/**
10887 * Logs when a NFC Beam Transaction occurred.
10888 * Logged from:
10889 *     packages/modules/Nfc/NfcNci/src/com/android/nfc/P2pLinkManager.java
10890 */
10891message NfcBeamOccurred {
10892    enum Operation {
10893        UNKNOWN = 0;
10894        SEND = 1;
10895        RECEIVE = 2;
10896    }
10897    optional Operation operation = 1;
10898}
10899
10900/**
10901 * Logs when a NFC Card Emulation Transaction occurred.
10902 * Logged from:
10903 *     packages/modules/Nfc/NfcNci/src/com/android/nfc/cardemulation/HostEmulationManager.java
10904 *     packages/modules/Nfc/NfcNci/src/com/android/nfc/cardemulation/HostNfcFEmulationManager.java
10905 */
10906message NfcCardemulationOccurred {
10907    enum Category {
10908        UNKNOWN = 0;
10909        // HCE stands for Host Card Emulation
10910        HCE_PAYMENT = 1;
10911        HCE_OTHER = 2;
10912        OFFHOST = 3;
10913        OFFHOST_PAYMENT = 4;
10914        OFFHOST_OTHER = 5;
10915        FAILED_NO_ROUTING = 6;
10916        FAILED_HCE_PAYMENT_WRONG_SETTING = 7;
10917        FAILED_HCE_OTHER_WRONG_SETTING = 8;
10918        FAILED_HCE_PAYMENT_DISCONNECTED_BEFORE_BOUND = 9;
10919        FAILED_HCE_OTHER_DISCONNECTED_BEFORE_BOUND = 10;
10920        FAILED_HCE_PAYMENT_DISCONNECTED_BEFORE_RESPONSE = 11;
10921        FAILED_HCE_OTHER_DISCONNECTED_BEFORE_RESPONSE = 12;
10922    }
10923    // Transaction belongs to HCE payment or HCE other category, or offhost.
10924    optional Category category = 1;
10925    // SeName from transaction: SIMx, eSEx, HCE, HCEF.
10926    optional string se_name = 2;
10927
10928    optional int32 uid = 3 [(is_uid) = true];
10929}
10930
10931/**
10932 * Logs when a NFC Tag event occurred.
10933 * Logged from:
10934 *     packages/modules/Nfc/NfcNci/src/com/android/nfc/NfcDispatcher.java
10935 */
10936message NfcTagOccurred {
10937    enum Type {
10938        UNKNOWN = 0;
10939        URL = 1;
10940        BT_PAIRING = 2;
10941        PROVISION = 3;
10942        WIFI_CONNECT = 4;
10943        // Successful App Launch
10944        APP_LAUNCH = 5;
10945        // No suitable action found
10946        OTHERS = 6;
10947        // Dispatch event when service is in foreground
10948        FOREGROUND_DISPATCH = 7;
10949        // App Launch mute from android.nfc.action.NDEF_DISCOVERED
10950        APP_LAUNCH_NDEF_MUTE = 8;
10951        // App Launch mute from android.nfc.action.TECH_DISCOVERED
10952        APP_LAUNCH_TECH_MUTE = 9;
10953        // App Launch mute from android.nfc.action.TAG_DISCOVERED
10954        APP_LAUNCH_TAG_MUTE = 10;
10955    }
10956    optional Type type = 1;
10957
10958    optional int32 uid = 2 [(is_uid) = true];
10959    // Supported RF Technologies of the Tag
10960    repeated android.nfc.RFTechnologyType rf_types = 3;
10961    // Use for BT_PAIRING Type
10962    optional android.bluetooth.MajorClassEnum bt_device_type = 4;
10963    // Use for BT_PAIRING Type
10964    // Should be empty for HEALTH and UNKNOWN MajorClassEnum
10965    optional string bt_device_info = 5;
10966}
10967
10968/**
10969 * Logs NFC tag type when tag occurred
10970 * Logged from:
10971 *     packages/modules/Nfc/NfcNci/nci/jni/NfcTag.cpp
10972 */
10973message NfcTagTypeOccurred {
10974    optional android.nfc.NfcTagType type = 1;
10975}
10976
10977/**
10978 * Logs when Hce transaction triggered
10979 * Logged from:
10980 *     packages/modules/Nfc/libnfc-nci/src/nfc/nfc/nfc_ncif.cc
10981 */
10982message NfcHceTransactionOccurred {
10983    // The latency period(in microseconds) it took for the first HCE data
10984    // exchange.
10985    optional uint32 latency_micros = 1;
10986}
10987
10988/**
10989 * Logs when AID conflict occurred
10990 * Logged from:
10991 * packages/modules/Nfc/NfcNci/src/com/android/nfc/cardemulation/HostEmulationManager.java
10992*/
10993message NfcAIDConflictOccurred {
10994    optional string conflicting_aid = 1;
10995}
10996
10997/**
10998 * Logs when reader app conflict occurred
10999 * Logged from:
11000 *     packages/modules/Nfc/NfcNci/src/com/android/nfc/NfcDispatcher.java
11001*/
11002message NfcReaderConflictOccurred {
11003}
11004
11005/**
11006 * Logs when user changed screen resolution
11007 * Logged from:
11008 *     packages/apps/Settings/src/com/android/settings/display/ScreenResolutionFragment.java
11009*/
11010message UserSelectedResolution {
11011    optional int32 display_id = 1;
11012    // display resolution
11013    optional int32 width = 2;
11014    optional int32 height = 3;
11015}
11016
11017/**
11018 * Logs when SecureElement state event changed
11019 * Logged from:
11020 *     packages/apps/SecureElement/src/com/android/se/Terminal.java
11021 */
11022message SeStateChanged {
11023    enum State {
11024        UNKNOWN = 0;
11025        INITIALIZED = 1;
11026        DISCONNECTED = 2;
11027        CONNECTED = 3;
11028        HALCRASH = 4;
11029    }
11030    optional State state = 1;
11031
11032    optional string state_change_reason = 2;
11033    // SIMx or eSEx.
11034    optional string terminal = 3;
11035}
11036
11037/**
11038 * Information about a permission grant request
11039 */
11040message PermissionGrantRequestResultReported {
11041    // unique value identifying an API call. A API call might result in multiple of these atoms
11042    optional int64 request_id = 1;
11043
11044    // UID of package requesting the permission grant
11045    optional int32 uid = 2 [(is_uid) = true];
11046
11047    // Name of package requesting the permission grant
11048    optional string package_name = 3;
11049
11050    // The permission to be granted
11051    optional string permission_name = 4;
11052
11053    // If the permission was explicitly requested via the API or added by the system
11054    optional bool is_implicit = 5;
11055
11056    enum Result {
11057        UNDEFINED = 0;
11058        // permission request was ignored
11059        IGNORED = 1;
11060        // permission request was ignored because it was user fixed
11061        IGNORED_USER_FIXED = 2;
11062        // permission request was ignored because it was policy fixed
11063        IGNORED_POLICY_FIXED = 3;
11064        // permission was granted by user action
11065        USER_GRANTED = 4;
11066        // permission was automatically granted
11067        AUTO_GRANTED = 5;
11068        // permission was denied by user action
11069        USER_DENIED = 6;
11070        // permission was denied with prejudice by the user
11071        USER_DENIED_WITH_PREJUDICE = 7;
11072        // permission was automatically denied
11073        AUTO_DENIED = 8;
11074        // permission request was ignored because permission is restricted
11075        IGNORED_RESTRICTED_PERMISSION = 9;
11076        // one time permission was granted by user action
11077        USER_GRANTED_ONE_TIME = 10;
11078        // user ignored request by leaving the request screen without choosing any option
11079        USER_IGNORED = 11;
11080        // user granted the permission after being linked to settings
11081        USER_GRANTED_IN_SETTINGS = 12;
11082        // user denied the permission after being linked to settings
11083        USER_DENIED_IN_SETTINGS = 13;
11084        // user denied the permission with prejudice after being linked to settings
11085        USER_DENIED_WITH_PREJUDICE_IN_SETTINGS = 14;
11086        // permission was automatically revoked after one-time permission expired
11087        AUTO_ONE_TIME_PERMISSION_REVOKED = 15;
11088        // permission was automatically revoked for unused app
11089        AUTO_UNUSED_APP_PERMISSION_REVOKED = 16;
11090        // the user selected media with the photo picker
11091        PHOTOS_SELECTED = 17;
11092    }
11093    // The result of the permission grant
11094    optional Result result = 6;
11095
11096    // Whether Permission Rationale was shown on grant dialog
11097    optional bool permission_rationale_shown = 7;
11098
11099    // Whether the package was restricted by ECM
11100    optional bool is_package_restricted_by_enhanced_confirmation = 8;
11101}
11102
11103/**
11104 * Logs when Omapi API used
11105 * Logged from:
11106 *     packages/apps/SecureElement/src/com/android/se/Terminal.java
11107 */
11108message SeOmapiReported {
11109    enum Operation {
11110        UNKNOWN = 0;
11111        OPEN_CHANNEL = 1;
11112    }
11113    optional Operation operation = 1;
11114    // SIMx or eSEx.
11115    optional string terminal = 2;
11116
11117    optional string package_name = 3;
11118}
11119
11120/**
11121  * Logs the dispatch latency of a broadcast during processing of BOOT_COMPLETED.
11122  * The dispatch latency is the dispatchClockTime - enqueueClockTime.
11123  * Logged from:
11124  *   frameworks/base/services/core/java/com/android/server/am/BroadcastQueue.java
11125  */
11126message BroadcastDispatchLatencyReported {
11127    optional int64 dispatch_latency_millis = 1;
11128}
11129
11130/**
11131   * Logs AttentionManagerService attention check result.
11132   *
11133   * Logged from:
11134   *   frameworks/base/services/core/java/com/android/server/attention/AttentionManagerService.java
11135   */
11136message AttentionManagerServiceResultReported {
11137    // See core/java/android/service/attention/AttentionService.java
11138    enum AttentionCheckResult {
11139        UNKNOWN = 20;
11140        ATTENTION_SUCCESS_ABSENT = 0;
11141        ATTENTION_SUCCESS_PRESENT = 1;
11142        ATTENTION_FAILURE_UNKNOWN = 2;
11143        ATTENTION_FAILURE_CANCELLED = 3;
11144        ATTENTION_FAILURE_PREEMPTED = 4;
11145        ATTENTION_FAILURE_TIMED_OUT = 5;
11146        ATTENTION_FAILURE_CAMERA_PERMISSION_ABSENT = 6;
11147    }
11148    optional AttentionCheckResult attention_check_result = 1 [default = UNKNOWN];
11149}
11150
11151/**
11152 * Logs when an adb connection changes state.
11153 *
11154 * Logged from:
11155 *     frameworks/base/services/core/java/com/android/server/adb/AdbDebuggingManager.java
11156 */
11157message AdbConnectionChanged {
11158    // The last time this system connected via adb, or 0 if the 'always allow' option was not
11159    // previously selected for this system.
11160    optional int64 last_connection_time_millis = 1;
11161
11162    // The time in ms within which a subsequent connection from an 'always allow' system is allowed
11163    // to reconnect via adb without user interaction.
11164    optional int64 auth_window_millis = 2;
11165
11166    // The state of the adb connection from frameworks/proto_logging/stats/enums/debug/enums.proto.
11167    optional android.debug.AdbConnectionStateEnum state = 3;
11168
11169    // True if the 'always allow' option was selected for this system.
11170    optional bool always_allow = 4;
11171}
11172
11173/*
11174 * Logs the reported speech DSP status.
11175 *
11176 * Logged from:
11177 *  Vendor audio implementation.
11178 */
11179message SpeechDspStatReported {
11180    // The total Speech DSP uptime in milliseconds.
11181    optional int32 total_uptime_millis = 1;
11182    // The total Speech DSP downtime in milliseconds.
11183    optional int32 total_downtime_millis = 2;
11184    optional int32 total_crash_count = 3;
11185    optional int32 total_recover_count = 4;
11186}
11187
11188/**
11189 * Logs USB connector contaminant status.
11190 *
11191 * Logged from: USB Service.
11192 */
11193message UsbContaminantReported {
11194    optional string id = 1;
11195    optional android.service.ContaminantPresenceStatus status = 2;
11196}
11197
11198/**
11199 * This atom is for debugging purpose.
11200 */
11201message DebugElapsedClock {
11202    // Monotically increasing value for each pull.
11203    optional int64 pull_count = 1;
11204    // Time from System.elapsedRealtime.
11205    optional int64 elapsed_clock_millis = 2;
11206    // Time from System.elapsedRealtime.
11207    optional int64 same_elapsed_clock_millis = 3;
11208    // Diff between current elapsed time and elapsed time from previous pull.
11209    optional int64 elapsed_clock_diff_millis = 4;
11210
11211    enum Type {
11212      TYPE_UNKNOWN = 0;
11213      ALWAYS_PRESENT = 1;
11214      PRESENT_ON_ODD_PULLS = 2;
11215    }
11216    // Type of behavior for the pulled data.
11217    optional Type type = 5;
11218}
11219
11220/**
11221 * This atom is for debugging purpose.
11222 */
11223message DebugFailingElapsedClock {
11224    // Monotically increasing value for each pull.
11225    optional int64 pull_count = 1;
11226    // Time from System.elapsedRealtime.
11227    optional int64 elapsed_clock_millis = 2;
11228    // Time from System.elapsedRealtime.
11229    optional int64 same_elapsed_clock_millis = 3;
11230    // Diff between current elapsed time and elapsed time from previous pull.
11231    optional int64 elapsed_clock_diff_millis = 4;
11232}
11233
11234/** Logs System UI bubbles event changed.
11235 *
11236 * Logged from:
11237 *     frameworks/base/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen
11238 */
11239message SplitscreenUIChanged {
11240    // User interactions with splitscreen
11241    enum Action {
11242        UNKNOWN_ACTION = 0;
11243        ENTER = 1;
11244        EXIT = 2;
11245        APP_CHANGE = 3;
11246        RESIZE = 4;
11247        SWAP = 5;
11248    }
11249
11250    // The physical side on the device of the split
11251    enum Position {
11252        UNKNOWN_POSITION = 0;
11253        LEFT = 1;
11254        RIGHT = 2;
11255        TOP = 3;
11256        BOTTOM = 4;
11257    }
11258
11259    // The reason for entering splitscreen
11260    enum EnterReason {
11261        UNKNOWN_ENTER = 0;
11262        OVERVIEW = 1; // Deprecated, use LAUNCHER
11263        DRAG_LEFT = 2;
11264        DRAG_TOP = 3;
11265        DRAG_RIGHT = 4;
11266        DRAG_BOTTOM = 5;
11267        LAUNCHER = 6;
11268        MULTI_INSTANCE = 7;
11269        NOTIFICATIONS = 8;
11270    }
11271
11272    // The reason for exiting splitscreen
11273    enum ExitReason {
11274        UNKNOWN_EXIT = 0;
11275        DRAG_DIVIDER = 1;
11276        RETURN_HOME = 2;
11277        SCREEN_LOCKED = 3;
11278        SCREEN_LOCKED_SHOW_ON_TOP = 4;
11279        DEVICE_FOLDED = 5;
11280        ROOT_TASK_VANISHED = 6;
11281        APP_FINISHED = 7;
11282        APP_DOES_NOT_SUPPORT_MULTIWINDOW = 8;
11283        CHILD_TASK_ENTER_PIP = 9;
11284        RECREATE_SPLIT = 10;
11285        FULLSCREEN_SHORTCUT = 11;
11286        DESKTOP_MODE = 12;
11287        FULLSCREEN_REQUEST = 13;
11288    }
11289
11290    // The event action
11291    optional Action action = 1;
11292    // What triggered splitscreen (if the action is ENTER)
11293    optional EnterReason enter_reason = 2;
11294    // What triggered leaving splitscreen (if the action is EXIT)
11295    optional ExitReason exit_reason = 3;
11296    // The ratio of split between the main/side stages
11297    optional float split_ratio = 4;
11298    // Data about the main stage in split
11299    optional Position main_stage_position = 5;
11300    optional int32 main_stage_uid = 6 [(is_uid) = true];
11301    // Data about the side stage in split
11302    optional Position side_stage_position = 7;
11303    optional int32 side_stage_uid = 8 [(is_uid) = true];
11304    // The drag session id (if the enter_trigger was DRAG)
11305    optional int32 drag_instance_id = 9;
11306    // An identifier used to identify a splitscreen session
11307    optional int32 instance_id = 10;
11308}
11309
11310/** Logs System UI bubbles event changed.
11311 *
11312 * Logged from:
11313 *     frameworks/base/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles
11314 */
11315message BubbleUIChanged {
11316
11317    // The app package that is posting the bubble.
11318    optional string package_name = 1;
11319
11320    // The notification channel that is posting the bubble.
11321    optional string notification_channel = 2;
11322
11323    // The notification id associated with the posted bubble.
11324    optional int32 notification_id = 3;
11325
11326    // The position of the bubble within the bubble stack.
11327    optional int32 position = 4;
11328
11329    // The total number of bubbles within the bubble stack.
11330    optional int32 total_number = 5;
11331
11332    // User interactions with the bubble.
11333    enum Action {
11334        UNKNOWN = 0;
11335        POSTED = 1;
11336        UPDATED = 2;
11337        EXPANDED = 3;
11338        COLLAPSED = 4;
11339        DISMISSED = 5;
11340        STACK_DISMISSED = 6;
11341        STACK_MOVED = 7;
11342        HEADER_GO_TO_APP = 8;
11343        HEADER_GO_TO_SETTINGS = 9;
11344        PERMISSION_OPT_IN = 10;
11345        PERMISSION_OPT_OUT = 11;
11346        PERMISSION_DIALOG_SHOWN = 12;
11347        SWIPE_LEFT = 13;
11348        SWIPE_RIGHT = 14;
11349        STACK_EXPANDED = 15;
11350        FLYOUT = 16;
11351    }
11352    optional Action action = 6;
11353
11354    // Normalized screen position of the bubble stack. The range is between 0 and 1.
11355    optional float normalized_x_position = 7;
11356    optional float normalized_y_position = 8;
11357
11358    // Whether the bubble is unread. If it is unread, a dot is shown in the bubble stack icon.
11359    optional bool is_unread = 9;
11360
11361    // Whether the bubble is an on-going one.
11362    optional bool is_ongoing = 10;
11363
11364    // Whether the bubble is produced by an app running in foreground.
11365    // This is deprecated and the value should be ignored.
11366    optional bool is_foreground = 11 [deprecated = true];
11367}
11368
11369/**
11370  * Logs System UI bubbles developer errors.
11371  *
11372  * Logged from:
11373  *   frameworks/base/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
11374  */
11375message BubbleDeveloperErrorReported {
11376
11377    // The app package that is posting the bubble.
11378    optional string package_name = 1;
11379
11380    // Bubble developer error type enums.
11381    enum Error {
11382        UNKNOWN = 0;
11383        ACTIVITY_INFO_MISSING = 1;
11384        ACTIVITY_INFO_NOT_RESIZABLE = 2;
11385        DOCUMENT_LAUNCH_NOT_ALWAYS = 3;
11386    }
11387    optional Error error = 2 [default = UNKNOWN];
11388}
11389
11390/**
11391 * Logs that a job-specific constraint for a scheduled job has changed.
11392 * DeviceWideJobConstraintChanged will cover constraints that are normally the same for all jobs.
11393 *
11394 * Logged from:
11395 *     frameworks/base/services/core/java/com/android/server/job/controllers/JobStatus.java
11396 */
11397message ScheduledJobConstraintChanged {
11398    repeated AttributionNode attribution_node = 1;
11399
11400    // Name of the job.
11401    optional string job_name = 2;
11402
11403    optional com.android.server.job.ConstraintEnum constraint = 3;
11404
11405    enum State {
11406        UNKNOWN = 0;
11407        UNSATISFIED = 1;
11408        SATISFIED = 2;
11409    }
11410    optional State state = 4;
11411}
11412
11413/**
11414 * Logs that a device-state-level JobScheduler constraint has changed. This doesn't take individual
11415 * job or app characteristics into account. Individual jobs may have a different satisfaction value
11416 * based on special policies. Individual job constraints (eg. connectivity or prefetch) are not
11417 * logged in this atom.
11418 *
11419 * Logged from:
11420 *     frameworks/base/services/core/java/com/android/server/job/controllers/<*>.java
11421 */
11422message DeviceWideJobConstraintChanged {
11423    optional com.android.server.job.ConstraintEnum constraint = 1 [
11424        (state_field_option).primary_field = true,
11425        (is_uid) = false
11426    ];
11427
11428    enum State {
11429        UNKNOWN = 0;
11430        UNSATISFIED = 1;
11431        SATISFIED = 2;
11432    }
11433    optional State state = 2 [
11434        (state_field_option).exclusive_state = true,
11435        (state_field_option).nested = false
11436    ];
11437}
11438
11439/**
11440 * Logs PowerManagerService screen timeout resets (extensions) that happen when an attention check
11441 * returns true.
11442 *
11443 * Logged from:
11444 *   frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
11445 */
11446message ScreenTimeoutExtensionReported {
11447    // Describes how many times in a row did the power manager reset the screen off timeout.
11448    optional uint32 consecutive_timeout_extended_count = 1;
11449}
11450
11451/*
11452* Logs number of milliseconds it takes to start a process.
11453* The definition of app process start time is from the app launch time to
11454* the time that Zygote finished forking the app process and loaded the
11455* application package's java classes.
11456
11457* This metric is different from AppStartOccurred which is for foreground
11458* activity only.
11459
11460* ProcessStartTime can report all processes (both foreground and background)
11461* start time.
11462*
11463* Logged from:
11464*   frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
11465*/
11466message ProcessStartTime {
11467    // The uid of the ProcessRecord.
11468    optional int32 uid = 1 [(is_uid) = true];
11469
11470    // The process pid.
11471    optional int32 pid = 2;
11472
11473    // The process name.
11474    // Usually package name, "system" for system server.
11475    // Provided by ActivityManagerService.
11476    // Do not fetch this field from device to save storage space, use uid field induced
11477    // package name as process name.
11478    optional string process_name = 3;
11479
11480    enum StartType {
11481        UNKNOWN = 0;
11482        WARM = 1;
11483        HOT = 2;
11484        COLD = 3;
11485    }
11486
11487    // The start type.
11488    optional StartType type = 4;
11489
11490    // The elapsed realtime at the start of the process.
11491    optional int64 process_start_time_millis = 5;
11492
11493    // Number of milliseconds it takes to reach bind application.
11494    optional int32 bind_application_delay_millis = 6;
11495
11496    // Number of milliseconds it takes to finish start of the process.
11497    optional int32 process_start_delay_millis = 7;
11498
11499    // hostingType field in ProcessRecord, the component type such as "activity",
11500    // "service", "content provider", "broadcast" or other strings.
11501    // deprecatd by enum type field hosting_type_id to reduce storage space usage by
11502    // string type.
11503    // Do not fetch this field from device to save storage space.
11504    optional string hosting_type = 8 [deprecated = true];
11505
11506    // hostingNameStr field in ProcessRecord. The component class name that runs
11507    // in this process.
11508    // Do not fetch this field from device to save storage space.
11509    optional string hosting_name = 9;
11510
11511    // Broadcast action name.
11512    optional string broadcast_action_name = 10;
11513
11514    enum HostingTypeId {
11515        HOSTING_TYPE_UNKNOWN = 0;
11516        HOSTING_TYPE_ACTIVITY = 1;
11517        HOSTING_TYPE_ADDED_APPLICATION = 2;
11518        HOSTING_TYPE_BACKUP = 3;
11519        HOSTING_TYPE_BROADCAST = 4;
11520        HOSTING_TYPE_CONTENT_PROVIDER = 5;
11521        HOSTING_TYPE_LINK_FAIL = 6;
11522        HOSTING_TYPE_ON_HOLD = 7;
11523        HOSTING_TYPE_NEXT_ACTIVITY = 8;
11524        HOSTING_TYPE_NEXT_TOP_ACTIVITY = 9;
11525        HOSTING_TYPE_RESTART = 10;
11526        HOSTING_TYPE_SERVICE = 11;
11527        HOSTING_TYPE_SYSTEM = 12;
11528        HOSTING_TYPE_TOP_ACTIVITY = 13;
11529        HOSTING_TYPE_EMPTY = 14;
11530    }
11531
11532    optional HostingTypeId hosting_type_id = 11;
11533
11534    enum TriggerType {
11535        TRIGGER_TYPE_UNKNOWN = 0;
11536        TRIGGER_TYPE_ALARM = 1;
11537        TRIGGER_TYPE_PUSH_MESSAGE = 2;
11538        TRIGGER_TYPE_PUSH_MESSAGE_OVER_QUOTA = 3;
11539        TRIGGER_TYPE_JOB = 4;
11540    }
11541
11542    optional TriggerType trigger_type = 12;
11543}
11544
11545/**
11546 * Track Media Codec usage (nested proto version)
11547 *   This atom is being deprecated in favor of MediaCodecReported which has a
11548 *   flattened CodecData to enable field filtering. The data is identical
11549 *   except MediaCodecReported also has the playback_duration field.
11550 * Logged from:
11551 *   frameworks/av/media/libstagefright/MediaCodec.cpp
11552 *   frameworks/av/services/mediaanalytics/statsd_codec.cpp
11553 */
11554message MediametricsCodecReported {
11555    optional int64 timestamp_nanos = 1;
11556    optional string package_name = 2;
11557    optional int64 package_version_code = 3;
11558    optional int64 media_apex_version = 4;
11559
11560    optional android.stats.mediametrics_message.CodecData codec_data = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
11561}
11562
11563/**
11564 * Track Media Codec usage
11565 *   This atom is the new version of MediametricsCodecReported and has a
11566 *   flattened CodecData to enable field filtering. The data is identical
11567 *   except for the addition of the playback_duration field.
11568 * Logged from:
11569 *   frameworks/av/media/libstagefright/MediaCodec.cpp
11570 *   frameworks/av/services/mediaanalytics/statsd_codec.cpp
11571 *
11572 * Next Tag: 79
11573 */
11574message MediaCodecReported {
11575    optional int64 timestamp_nanos = 1;
11576    // The inclusion of package name in a metric should be carefully analyzed to
11577    // determine if it is absolutely necessary for system health. It is strongly
11578    // discouraged to collect the package name along with other metrics (e.g.
11579    // playback duration).
11580    optional string package_name = 2;
11581    optional int64 package_version_code = 3;
11582    optional int64 media_apex_version = 4;
11583    // The name of the codec.
11584    // eg. `OMX.google.aac.decoder`
11585    optional string codec = 5;
11586    // The mime type. e.g. "audio/vorbis"
11587    optional string mime = 6;
11588    // The codec mode. i.e. video or audio.
11589    optional string mode = 7;
11590    // 1 if this is an encoder, 0 if this is a decoder.
11591    optional int32 encoder = 8;
11592    // 0, 1
11593    optional int32 secure = 9;
11594    // The video width in pixels.
11595    optional int32 width = 10;
11596    // The video height in pixels.
11597    optional int32 height = 11;
11598    // The rotation of the video in degrees
11599    // 0, 90, 180, 270
11600    optional int32 rotation = 12;
11601    // 1 if the codec uses crypto/drm, 0 otherwise.
11602    optional int32 crypto = 13;
11603    // The codec profile. The values are dependent on the codec type.
11604    // 0..n
11605    optional int32 profile = 14;
11606    // The coding level. The values are dependent on the codec type.
11607    // 0..n
11608    optional int32 level = 15;
11609    // The maximum allowed width during a particular codec session.
11610    // 0..n
11611    optional int32 max_width = 16;
11612    // The maximum allowed height during a particular codec session.
11613    // 0..n
11614    optional int32 max_height = 17;
11615    // Indicating which error condition caused the codec to reset to an
11616    // uninitialized state.
11617    optional int32 error_code = 18;
11618    // The error state.
11619    // The emitted values are descriptive:  UNINITIALIZED, INITIALIZING,
11620    // INITIALIZED, CONFIGURING, CONFIGURED, STARTING, STARTED, FLUSHING, FLUSHED,
11621    // STOPPING, and RELEASING.
11622    // In the event of an internal codec error setting the state outside of these
11623    // values, the invalid value will be encoded as a string (e.g., “17”).
11624    optional string error_state = 19;
11625    // The max latency in us.
11626    // The latency is from the time when the MediaCodec sends the ‘raw’ frame to
11627    // the media codec service to when the decoded frame arrives back in
11628    // MediaCodec’s possession.
11629    optional int64 latency_max = 20;
11630    // The min latency in us.
11631    optional int64 latency_min = 21;
11632    // The average latency in us.
11633    optional int64 latency_avg = 22;
11634    // The number of buffers included in the avg/min/max calculation above.
11635    optional int64 latency_count = 23;
11636    // The number of packets received back from the code where a latency could not
11637    // be determined, and therefore they aren't included in the avg/min/max
11638    // calculations above.
11639    optional int64 latency_unknown = 24;
11640    // Error returned by queueInputBuffer.
11641    optional int32 queue_input_buffer_error = 25;
11642    // Error returned by queueSecureInputBuffer.
11643    optional int32 queue_secure_input_buffer_error = 26;
11644    // These modes are primarily for videos.
11645    // CQ = constant quality
11646    // CBR = constant bit rate
11647    // VBR = variable bitrate
11648    optional string bitrate_mode = 27;
11649    // The bitrate presented to the underlying codec, after any modifications by
11650    // the framework to ensure a minimum quality.
11651    // If the framework changed this, the app-requested bitrate is in
11652    // original_bitrate.
11653    optional int32 bitrate = 28;
11654    // 0..n
11655    optional int64 lifetime_millis = 29;
11656    optional int64 playback_duration_seconds = 30;
11657    optional string log_session_id = 31;
11658    optional int32 channel_count = 32;
11659    optional int32 sample_rate = 33;
11660    // Total bytes produced by an encoder. When divided by video_encode_duration_us
11661    // this yields the encoding's realized bitrate.
11662    optional int64 video_encode_bytes = 34;
11663    optional int64 video_encode_frames = 35;
11664    optional int64 video_input_bytes = 36;
11665    optional int64 video_input_frames = 37;
11666    // The duration of the encoded video; NOT the encoding process duration
11667    optional int64 video_encode_duration_us = 38;
11668    optional int32 color_format = 39;
11669    optional float frame_rate = 40;
11670    optional float capture_rate = 41;
11671    optional float operating_rate = 42;
11672    optional int32 priority = 43;
11673    optional int32 video_qp_i_min = 44;
11674    optional int32 video_qp_i_max = 45;
11675    optional int32 video_qp_p_min = 46;
11676    optional int32 video_qp_p_max = 47;
11677    optional int32 video_qp_b_min = 48;
11678    optional int32 video_qp_b_max = 49;
11679    // The app-requested bitrate, present only if the framework modified the
11680    // bitrate before passing it to the underlying codec.
11681    optional int32 original_bitrate = 50;
11682    optional int32 shaping_enhanced = 51;
11683    optional int32 original_video_qp_i_min = 52;
11684    optional int32 original_video_qp_i_max = 53;
11685    optional int32 original_video_qp_p_min = 54;
11686    optional int32 original_video_qp_p_max = 55;
11687    optional int32 original_video_qp_b_min = 56;
11688    optional int32 original_video_qp_b_max = 57;
11689    optional int32 config_color_standard = 58;
11690    optional int32 config_color_range = 59;
11691    optional int32 config_color_transfer = 60;
11692    optional int32 parsed_color_standard = 61;
11693    optional int32 parsed_color_range = 62;
11694    optional int32 parsed_color_transfer = 63;
11695    optional int32 hdr_static_info = 64;
11696    optional int32 hdr10_plus_info = 65;
11697    optional int32 hdr_format = 66;
11698    // Randomly generated Codec ID for:
11699    // - correlating MediaCodecStarted and MediaCodecStopped for
11700    // more codec configuration parameters.
11701    // @since U
11702    optional int64 codec_id = 67;
11703    optional int32 array_mode = 68;
11704    optional int32 operation_mode = 69;
11705    optional int32 output_surface = 70;
11706    optional int32 app_max_input_size = 71;
11707    optional int32 used_max_input_size = 72;
11708    optional int32 codec_max_input_size = 73;
11709    optional int32 flush_count = 74;
11710    optional int32 set_surface_count = 75;
11711    optional int32 resolution_change_count = 76;
11712    optional int32 component_color_format = 77;
11713    // caller_uid replaces packagename
11714    // @Since U-QPR2
11715    optional int32 caller_uid = 78 [(is_uid) = true];
11716    optional int64 pixel_format = 79;
11717    // !!! WARNING
11718    // Keep synchronized with MediametricsCodecReported.CodecData in
11719    // mediametrics_message.proto.
11720    // Also keep AStatsEvent serialization synchronized in statsd_codec.cpp
11721    // !!! WARNING
11722}
11723
11724/**
11725 * Track Media Extractor (pulling video/audio streams out of containers) usage
11726 * Logged from:
11727 *   frameworks/av/media/libstagefright/RemoteMediaExtractor.cpp
11728 *   frameworks/av/services/mediaanalytics/statsd_extractor.cpp
11729 */
11730message MediametricsExtractorReported {
11731    optional int64 timestamp_nanos = 1;
11732    optional string package_name = 2;
11733    optional int64 package_version_code = 3;
11734    optional int64 media_apex_version = 4;
11735
11736    optional android.stats.mediametrics_message.ExtractorData extractor_data = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
11737}
11738
11739/**
11740 * Track MediaParser (parsing video/audio streams from containers) usage
11741 * Logged from:
11742 *
11743 *   frameworks/av/services/mediametrics/statsd_mediaparser.cpp
11744 *   frameworks/base/apex/media/framework/jni/android_media_MediaParserJNI.cpp
11745 */
11746message MediametricsMediaParserReported {
11747    optional int64 timestamp_nanos = 1;
11748    optional string package_name = 2;
11749    optional int64 package_version_code = 3;
11750
11751    // MediaParser specific data.
11752    /**
11753     * The name of the parser selected for parsing the media, or an empty string
11754     * if no parser was selected.
11755     */
11756    optional string parser_name = 4;
11757    /**
11758     * Whether the parser was created by name. 1 represents true, and 0
11759     * represents false.
11760     */
11761    optional int32 created_by_name = 5;
11762    /**
11763     * The parser names in the sniffing pool separated by "|".
11764     */
11765    optional string parser_pool = 6;
11766    /**
11767     * The fully qualified name of the last encountered exception, or an empty
11768     * string if no exception was encountered.
11769     */
11770    optional string last_exception = 7;
11771    /**
11772     * The size of the parsed media in bytes, or -1 if unknown. Note this value
11773     * contains intentional random error to prevent media content
11774     * identification.
11775     */
11776    optional int64 resource_byte_count = 8;
11777    /**
11778     * The duration of the media in milliseconds, or -1 if unknown. Note this
11779     * value contains intentional random error to prevent media content
11780     * identification.
11781     */
11782    optional int64 duration_millis = 9;
11783    /**
11784     * The MIME types of the tracks separated by "|".
11785     */
11786    optional string track_mime_types = 10;
11787    /**
11788     * The tracks' RFC 6381 codec strings separated by "|".
11789     */
11790    optional string track_codecs = 11;
11791    /**
11792     * Concatenation of the parameters altered by the client, separated by "|".
11793     */
11794    optional string altered_parameters = 12;
11795    /**
11796     * The video width in pixels, or -1 if unknown or not applicable.
11797     */
11798    optional int32 video_width = 13;
11799    /**
11800     * The video height in pixels, or -1 if unknown or not applicable.
11801     */
11802    optional int32 video_height = 14;
11803    /**
11804     * Session id for correlating playback metrics.
11805     */
11806    optional string log_session_id = 15;
11807}
11808
11809/**
11810 * Track how we arbitrate between microphone/input requests.
11811 * Logged from
11812 *   frameworks/av/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
11813 *   frameworks/av/services/mediaanalytics/statsd_audiopolicy.cpp
11814 */
11815message MediametricsAudiopolicyReported {
11816    optional int64 timestamp_nanos = 1;
11817    optional string package_name = 2;
11818    optional int64 package_version_code = 3;
11819    optional int64 media_apex_version = 4;
11820
11821    optional android.stats.mediametrics_message.AudioPolicyData audiopolicy_data = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
11822}
11823
11824/**
11825 * Track how we arbitrate between microphone requests.
11826 * Logged from
11827 *   frameworks/av/media/libaudioclient/AudioRecord.cpp
11828 *   frameworks/av/services/mediaanalytics/statsd_audiorecord.cpp
11829 */
11830message MediametricsAudiorecordReported {
11831    optional int64 timestamp_nanos = 1;
11832    optional string package_name = 2;
11833    optional int64 package_version_code = 3;
11834    optional int64 media_apex_version = 4;
11835
11836    optional android.stats.mediametrics_message.AudioRecordData audiorecord_data = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
11837
11838    // Android S
11839    // Metric log session id, a Base64Url encoded string of a randomly generated 128-bit integer.
11840    // An empty string means no session id is set.
11841    optional string log_session_id = 6;
11842}
11843
11844/**
11845 * Track how we arbitrate between microphone/input requests.
11846 * Logged from
11847 *   frameworks/av/media/libnblog/ReportPerformance.cpp
11848 *   frameworks/av/services/mediaanalytics/statsd_audiothread.cpp
11849 */
11850message MediametricsAudiothreadReported {
11851    optional int64 timestamp_nanos = 1;
11852    optional string package_name = 2;
11853    optional int64 package_version_code = 3;
11854    optional int64 media_apex_version = 4;
11855
11856    optional android.stats.mediametrics_message.AudioThreadData audiothread_data = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
11857}
11858
11859/**
11860 * Track how we arbitrate between microphone/input requests.
11861 * Logged from
11862 *   frameworks/av/media/libaudioclient/AudioTrack.cpp
11863 *   frameworks/av/services/mediaanalytics/statsd_audiotrack.cpp
11864 */
11865message MediametricsAudiotrackReported {
11866    optional int64 timestamp_nanos = 1;
11867    optional string package_name = 2;
11868    optional int64 package_version_code = 3;
11869    optional int64 media_apex_version = 4;
11870
11871    optional android.stats.mediametrics_message.AudioTrackData audiotrack_data = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
11872
11873    // Android S
11874    // Metric log session id, a Base64Url encoded string of a randomly generated 128-bit integer.
11875    // An empty string means no session id is set.
11876    optional string log_session_id = 6;
11877}
11878
11879/**
11880 * Track information about a MIDI Device.
11881 * This is logged when device connections close or devices are disconnected.
11882 * This is used to evaluate MIDI activity.
11883 *
11884 * Logged from
11885 *   frameworks/av/services/mediametrics/AudioAnalytics.cpp
11886 */
11887message MediametricsMidiDeviceCloseReported {
11888    // The UID of the app or service that disconnects the device
11889    optional int32 uid = 1 [(is_uid) = true];
11890    // Device Id from MidiDeviceInfo. After a restart, this starts at 1 for the first device.
11891    // This increments each time a new MIDI device is added.
11892    // See Id in frameworks/base/media/java/android/media/midi/MidiDeviceInfo.java
11893    optional int32 midi_device_id = 2;
11894    // Input port count as defined in MidiDeviceInfo.java
11895    optional int32 input_port_count = 3;
11896    // Output port count as defined in MidiDeviceInfo.java
11897    optional int32 output_port_count = 4;
11898    // Type of device (USB, Virtual, Bluetooth)
11899    optional android.media.midi.MidiDeviceInfoType device_type = 5;
11900    // Whether the device is shared to other apps. Uses MidiDeviceInfo.isPrivate().
11901    optional bool is_shared = 6;
11902    // Whether Universal MIDI Packets are used for this device by default.
11903    // Uses MidiDeviceInfo.getDefaultProtocol()
11904    optional bool supports_ump = 7;
11905    // Whether ALSA is used by this device.
11906    // Checks whether MidiDeviceInfo.getProperties() contains PROPERTY_ALSA_CARD.
11907    optional bool using_alsa = 8;
11908    // Duration in nanoseconds in which there was an open device connection.
11909    optional int64 duration_ns = 9;
11910    // Number of times this device had an add device connection attempt.
11911    optional int32 opened_count = 10;
11912    // Number of times this device had a remove device connection attempt.
11913    optional int32 closed_count = 11;
11914    // Whether the device has disconnected.
11915    optional bool device_disconnected = 12;
11916    // Number of bytes passed from the input ports of the device.
11917    optional int32 total_input_bytes = 13;
11918    // Number of bytes passed from the output ports of the device.
11919    optional int32 total_output_bytes = 14;
11920}
11921
11922/**
11923 * Track information about DRM framework performance
11924 * Logged from
11925 *   frameworks/av/drm/libmediadrm/DrmHal.cpp
11926 *   frameworks/av/services/mediaanalytics/statsd_drm.cpp
11927 */
11928message MediametricsMediadrmReported {
11929    optional int64 timestamp_nanos = 1;
11930    optional string package_name = 2;
11931    optional int64 package_version_code = 3;
11932    optional int64 media_apex_version = 4;
11933
11934    // vendor+description tell about which DRM plugin is in use on this device
11935    optional string vendor = 5;
11936    optional string description = 6;
11937    // from frameworks/av/drm/libmediadrm/protos/metrics.proto
11938    optional bytes framework_stats = 7 [(android.os.statsd.log_mode) = MODE_BYTES];
11939}
11940
11941/**
11942 * Track information about the widevine DRM plugin performance
11943 * Logged from
11944 *   vendor/widevine/libwvdrmengine/cdm/metrics
11945 *   frameworks/av/services/mediaanalytics/statsd_drm.cpp
11946 *
11947 * TODO b/182382094 -remove after migrated mediadrm metrics
11948 * reporting to statsd.
11949 */
11950message MediametricsDrmWidevineReported {
11951    optional int64 timestamp_nanos = 1;
11952    optional string package_name = 2;
11953    optional int64 package_version_code = 3;
11954    optional int64 media_apex_version = 4;
11955
11956    optional bytes vendor_specific_stats = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
11957}
11958
11959/**
11960 * Track information about recordings (e.g. camcorder)
11961 * Logged from
11962 *   frameworks/av/media/libmediaplayerservice/StagefrightRecorder.cpp
11963 *   frameworks/av/services/mediaanalytics/statsd_recorder.cpp
11964 */
11965message MediametricsRecorderReported {
11966    optional int64 timestamp_nanos = 1;
11967    optional string package_name = 2;
11968    optional int64 package_version_code = 3;
11969    optional int64 media_apex_version = 4;
11970
11971    optional android.stats.mediametrics_message.RecorderData recorder_data = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
11972}
11973
11974/**
11975 * Track Media Player usage
11976 * Logged from:
11977 *   frameworks/av/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp
11978 *   frameworks/av/services/mediaanalytics/statsd_nuplayer.cpp
11979 */
11980message MediametricsNuPlayerReported {
11981    optional int64 timestamp_nanos = 1;
11982    optional string package_name = 2;
11983    optional int64 package_version_code = 3;
11984    optional int64 media_apex_version = 4;
11985
11986    optional android.stats.mediametrics_message.NuPlayerData nuplayer_data = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
11987}
11988
11989/**
11990 * Track Legacy DRM usage
11991 * Logged from
11992 *   frameworks/av/drm/drmserver/DrmManager.cpp
11993 */
11994message MediametricsDrmManagerReported {
11995    optional int64 timestamp_nanos = 1;
11996    optional string package_name = 2;
11997    optional int64 package_version_code = 3;
11998    optional int64 media_apex_version = 4;
11999
12000    enum Method {
12001        METHOD_NOT_FOUND       = -1;
12002        GET_CONSTRAINTS        =  0;
12003        GET_METADATA           =  1;
12004        CAN_HANDLE             =  2;
12005        PROCESS_DRM_INFO       =  3;
12006        ACQUIRE_DRM_INFO       =  4;
12007        SAVE_RIGHTS            =  5;
12008        GET_ORIGINAL_MIME_TYPE =  6;
12009        GET_DRM_OBJECT_TYPE    =  7;
12010        CHECK_RIGHTS_STATUS    =  8;
12011        REMOVE_RIGHTS          =  9;
12012        REMOVE_ALL_RIGHTS      = 10;
12013        OPEN_CONVERT_SESSION   = 11;
12014        OPEN_DECRYPT_SESSION   = 12;
12015    }
12016
12017    // plugin_id+description inform which Legacy DRM plugins are still in use on device
12018    optional string plugin_id = 5;
12019    optional string description = 6;
12020    optional Method method = 7;
12021    optional string mime_types = 8;
12022
12023    optional int64 get_constraints_count =  9;
12024    optional int64 get_metadata_count = 10;
12025    optional int64 can_handle_count = 11;
12026    optional int64 process_drm_info_count = 12;
12027    optional int64 acquire_drm_info_count = 13;
12028    optional int64 save_rights_count = 14;
12029    optional int64 get_original_mime_type_count = 15;
12030    optional int64 get_drm_object_type_count = 16;
12031    optional int64 check_rights_status_count = 17;
12032    optional int64 remove_rights_count = 18;
12033    optional int64 remove_all_rights_count = 19;
12034    optional int64 open_convert_session_count = 20;
12035    optional int64 open_decrypt_session_count = 21;
12036}
12037
12038/**
12039 * State of a all permission requested by a all package
12040 * Pulled from: StatsCompanionService
12041*/
12042message DangerousPermissionState {
12043    // Name of the permission
12044    optional string permission_name = 1;
12045
12046    // Uid of the package
12047    optional int32 uid = 2 [(is_uid) = true];
12048
12049    // Package requesting the permission
12050    optional string package_name = 3;
12051
12052    // If the permission is granted to the uid
12053    optional bool is_granted = 4;
12054
12055    // Permission flags as per android.content.pm.PermissionFlags
12056    optional int32 permission_flags = 5;
12057
12058    // Permission protection flags as per android.content.pm.PermissionInfo.ProtectionFlags
12059    optional int32 protection_flags = 6;
12060}
12061
12062/**
12063 * Logs when a package is denied access to a device identifier based on the new access requirements.
12064 *
12065 * Logged from:
12066 *     frameworks/base/telephony/java/com/android/internal/telephony/TelephonyPermissions.java
12067 */
12068message DeviceIdentifierAccessDenied {
12069    // The name of the package denied access to the requested device identifier.
12070    optional string package_name = 1;
12071
12072    // The name of the device identifier method the package attempted to invoke.
12073    optional string method_name = 2;
12074
12075    // True if the package is preinstalled.
12076    // Starting from Android 11, this boolean is not set and will always be false.
12077    optional bool is_preinstalled = 3 [deprecated = true];
12078
12079    // True if the package is privileged.
12080    // Starting from Android 11, this boolean is not set and will always be false.
12081    optional bool is_priv_app = 4 [deprecated = true];
12082}
12083
12084/**
12085 * Pulls the ongoing mainline install train version code.
12086 * Pulled from StatsCompanionService
12087 */
12088message TrainInfo {
12089    optional int64 train_version_code = 1;
12090
12091    optional TrainExperimentIds train_experiment_id = 2 [(log_mode) = MODE_BYTES];
12092
12093    optional string train_name = 3;
12094
12095    enum Status {
12096        UNKNOWN = 0;
12097        INSTALL_REQUESTED = 1;
12098        INSTALL_STARTED = 2;
12099        INSTALL_STAGED_NOT_READY = 3;
12100        INSTALL_STAGED_READY = 4;
12101        INSTALL_SUCCESS = 5;
12102        // Replaced by INSTALL_FAILURE_DOWNLOAD, INSTALL_FAILURE_STATE_MISMATCH,
12103        // and INSTALL_FAILURE_COMMIT.
12104        INSTALL_FAILURE = 6  [deprecated = true];
12105        // This enum is for installs that are manually cancelled via the Manual Update UI.
12106        INSTALL_CANCELLED = 7;
12107        INSTALLER_ROLLBACK_REQUESTED = 8;
12108        INSTALLER_ROLLBACK_INITIATED = 9;
12109        INSTALLER_ROLLBACK_INITIATED_FAILURE = 10;
12110        INSTALLER_ROLLBACK_STAGED = 11;
12111        INSTALLER_ROLLBACK_STAGED_FAILURE = 12;
12112        INSTALLER_ROLLBACK_BOOT_TRIGGERED = 13;
12113        INSTALLER_ROLLBACK_BOOT_TRIGGERED_FAILURE = 14;
12114        INSTALLER_ROLLBACK_SUCCESS = 15;
12115        INSTALLER_ROLLBACK_FAILURE = 16;
12116        INSTALLER_ROLLBACK_STAGED_CANCEL_REQUESTED = 17;
12117        INSTALLER_ROLLBACK_STAGED_CANCEL_SUCCESS = 18;
12118        INSTALLER_ROLLBACK_STAGED_CANCEL_FAILURE = 19;
12119        INSTALL_STAGED_CANCEL_REQUESTED = 20;
12120        INSTALL_STAGED_CANCEL_SUCCESS = 21;
12121        INSTALL_STAGED_CANCEL_FAILURE = 22;
12122        INSTALL_FAILURE_DOWNLOAD = 23;
12123        INSTALL_FAILURE_STATE_MISMATCH = 24;
12124        INSTALL_FAILURE_COMMIT = 25;
12125        REBOOT_TRIGGERED = 26;
12126    }
12127    optional Status status = 4;
12128}
12129
12130/*
12131 * Information about the time zone data on a device.
12132 */
12133message TimeZoneDataInfo {
12134    // A version identifier for the data set on device. e.g. "2018i"
12135    optional string tzdb_version = 1;
12136}
12137
12138/**
12139 * Logs the GPU stats global health information.
12140 *
12141 * Logged from:
12142 *   frameworks/native/services/gpuservice/gpustats/
12143 */
12144message GpuStatsGlobalInfo {
12145    // Package name of the gpu driver.
12146    optional string driver_package_name = 1;
12147
12148    // Version name of the gpu driver.
12149    optional string driver_version_name = 2;
12150
12151    // Version code of the gpu driver.
12152    optional int64 driver_version_code = 3;
12153
12154    // Build time of the gpu driver in UTC as seconds since January 1, 1970.
12155    optional int64 driver_build_time = 4;
12156
12157    // Total count of the gl driver gets loaded.
12158    optional int64 gl_loading_count = 5;
12159
12160    // Total count of the gl driver fails to be loaded.
12161    optional int64 gl_loading_failure_count = 6;
12162
12163    // Total count of the Vulkan driver gets loaded.
12164    optional int64 vk_loading_count = 7;
12165
12166    // Total count of the Vulkan driver fails to be loaded.
12167    optional int64 vk_loading_failure_count = 8;
12168
12169    // Api version of the system Vulkan driver.
12170    optional int32 vulkan_version = 9;
12171
12172    // Api version of the system CPU Vulkan driver.
12173    optional int32 cpu_vulkan_version = 10;
12174
12175    // Api version of the system GLES driver.
12176    optional int32 gles_version = 11;
12177
12178    // Total count of the angle driver gets loaded.
12179    optional int64 angle_loading_count = 12;
12180
12181    // Total count of the angle driver fails to be loaded.
12182    optional int64 angle_loading_failure_count = 13;
12183}
12184
12185/**
12186 * GPU driver loading time info.
12187 */
12188message GpuDriverLoadingTime {
12189    // List of all the driver loading times for this app. The list size is
12190    // capped at 16 (GpuStats::MAX_NUM_LOADING_TIMES).
12191    repeated int64 driver_loading_time = 1;
12192}
12193
12194/**
12195 * Logs the GPU stats per app health information.
12196 *
12197 * Logged from:
12198 *   frameworks/native/services/gpuservice/gpustats/
12199 */
12200message GpuStatsAppInfo {
12201    // Package name of the application that loads the gpu driver. Total number
12202    // of different packages is capped at 100.
12203    optional string app_package_name = 1;
12204
12205    // Version code of the gpu driver this app loads.
12206    optional int64 driver_version_code = 2;
12207
12208    // gl driver loading time info.
12209    optional GpuDriverLoadingTime gl_driver_loading_time = 3
12210            [(android.os.statsd.log_mode) = MODE_BYTES];
12211
12212    // Vulkan driver loading time info.
12213    optional GpuDriverLoadingTime vk_driver_loading_time = 4
12214            [(android.os.statsd.log_mode) = MODE_BYTES];
12215
12216    // Angle driver loading time info.
12217    optional GpuDriverLoadingTime angle_driver_loading_time = 5
12218            [(android.os.statsd.log_mode) = MODE_BYTES];
12219
12220    // CPU Vulkan implementation is in use.
12221    optional bool cpu_vulkan_in_use = 6;
12222
12223    // App is not doing pre-rotation correctly.
12224    optional bool false_prerotation = 7;
12225
12226    // App creates GLESv1 context.
12227    optional bool gles_1_in_use = 8;
12228
12229    // ANGLE in use for the app.
12230    optional bool angle_in_use = 9;
12231
12232    // App created a GLES context.
12233    // Introduced in Android 14.
12234    optional bool created_gles_context = 10;
12235
12236    // App created a Vulkan device.
12237    // Introduced in Android 14.
12238    optional bool created_vulkan_device = 11;
12239
12240    // App created a Vulkan swapchain.
12241    // Introduced in Android 14.
12242    optional bool created_vulkan_swapchain = 12;
12243
12244    // Vulkan API version information from applicationInfo.
12245    // Introduced in Android 14.
12246    optional int32 vulkan_api_version = 13;
12247
12248    // Bitmask of enabled features when creating Vulkan devices.
12249    // Introduced in Android 14.
12250    optional int64 vulkan_device_features_enabled = 14;
12251
12252    // Hash values of enabled Vulkan instance extensions.
12253    // The list size is capped at 100 (GpuStatsAppInfo::MAX_NUM_EXTENSIONS).
12254    // Introduced in Android 14.
12255    repeated int32 vulkan_instance_extensions_enabled = 15;
12256
12257    // Hash values of enabled Vulkan device extensions.
12258    // The list size is capped at 100 (GpuStatsAppInfo::MAX_NUM_EXTENSIONS).
12259    // Introduced in Android 14.
12260    repeated int32 vulkan_device_extensions_enabled = 16;
12261
12262    // Hash values of engine name from VkApplicationInfo
12263    repeated string vulkan_engine_names = 17;
12264}
12265
12266/*
12267 * Logs the size of the system ion heap.
12268 *
12269 * Pulled from StatsCompanionService.
12270 */
12271message SystemIonHeapSize {
12272    // Deprecated due to limited support of ion stats in debugfs.
12273    // Use `IonHeapSize` instead.
12274    option deprecated = true;
12275
12276    // Size of the system ion heap in bytes.
12277    // Read from debugfs.
12278    optional int64 size_in_bytes = 1;
12279}
12280
12281/*
12282 * Logs the total size of the ion heap.
12283 *
12284 * Pulled from StatsCompanionService.
12285 */
12286message IonHeapSize {
12287    // Total size of all ion heaps in kilobytes.
12288    // Read from: /sys/kernel/ion/total_heaps_kb.
12289    optional int32 total_size_kb = 1;
12290}
12291
12292/*
12293 * Logs the per-process size of the system ion heap.
12294 *
12295 * Pulled from StatsCompanionService.
12296 */
12297message ProcessSystemIonHeapSize {
12298    // The uid if available. -1 means not available.
12299    optional int32 uid = 1 [(is_uid) = true];
12300
12301    // The process name (from /proc/PID/cmdline).
12302    optional string process_name = 2;
12303
12304    // Sum of sizes of all allocations.
12305    optional int32 total_size_in_kilobytes = 3;
12306
12307    // Number of allocations.
12308    optional int32 allocation_count = 4;
12309
12310    // Size of the largest allocation.
12311    optional int32 max_size_in_kilobytes = 5;
12312}
12313
12314/*
12315 * Logs system-wide (primarily kernel) memory stats. Sourced from
12316 * /proc/meminfo unless explicitly stated otherwise.
12317 *
12318 * Pulled from StatsCompanionService.
12319 */
12320message SystemMemory {
12321    // /proc/meminfo SUnreclaim
12322    optional int32 unreclaimable_slab_kb = 1;
12323
12324    // /proc/meminfo VmallocUsed
12325    optional int32 vmalloc_used_kb = 2;
12326
12327    // /proc/meminfo PageTables
12328    optional int32 page_tables_kb = 3;
12329
12330    // /proc/meminfo KernelStack
12331    optional int32 kernel_stack_kb = 4;
12332
12333    // Total unreclaimable ion.
12334    // Reported from os.Debug.getIonHeapsSizeKb (R+)
12335    optional int32 total_ion_kb = 5;
12336
12337    // Measures for the amount of memory we could not account for.
12338    // Essentially points to kernel allocations (as all userspace allocs are
12339    // already tracked).
12340    // Device-specific.
12341    optional int32 unaccounted_kb = 6;
12342
12343    // GPU kernel driver allocations.
12344    // Can overlap with ion memory.
12345    // Reported from os.Debug.getGpuTotalUsageKb (S+)
12346    optional int32 gpu_total_usage_kb = 7;
12347
12348    // GPU kernel driver private allocations.
12349    // Does not overlap with ion memory
12350    // Computed as total usage - Debug.getGpuDmaBufUsageKb()
12351    // Only available on supported kernel versions (5.4+)
12352    optional int32 gpu_private_usage_kb = 8;
12353
12354    // Total DMABUF memory allocations
12355    // Reported from os.Debug.getDmabufTotalExportedKb (S+)
12356    optional int32 dmabuf_total_exported_kb = 9;
12357
12358    // Total shmem allocations
12359    optional int32 shmem_kb = 10;
12360
12361    // Total usable memory
12362    optional int32 total_kb = 11;
12363
12364    // Memory not in use
12365    optional int32 free_kb = 12;
12366
12367    // Memory available for starting new applications without swapping
12368    optional int32 available_kb = 13;
12369
12370    // Memory in active use
12371    optional int32 active_kb = 14;
12372
12373    // Memory not in active use (swappable/reclaimable)
12374    optional int32 inactive_kb = 15;
12375
12376    // Anonymous memory in active use
12377    optional int32 active_anon_kb = 16;
12378
12379    // Anonymous memory not in active use
12380    optional int32 inactive_anon_kb = 17;
12381
12382    // Page cache memory in active use
12383    optional int32 active_file_kb = 18;
12384
12385    // Page cache memory not in active use
12386    optional int32 inactive_file_kb = 19;
12387
12388    // Total swap
12389    optional int32 swap_total_kb = 20;
12390
12391    // Free swap
12392    optional int32 swap_free_kb = 21;
12393
12394    // Total amount of CMA reserved for the kernel
12395    optional int32 cma_total_kb = 22;
12396
12397    // CMA free for the kernel to use
12398    optional int32 cma_free_kb = 23;
12399}
12400
12401/*
12402 * Log dmabuf memory retained by userspace processes.
12403 * Pulled from StatsPullAtomService.
12404 */
12405 message ProcessDmabufMemory {
12406  // The uid if available. -1 means not available.
12407  optional int32 uid = 1 [(is_uid) = true];
12408
12409  // The process name (from ActivityManager).
12410  optional string process_name = 2;
12411
12412  // OOM adj score.
12413  optional int32 oom_adj_score = 3;
12414
12415  // Size of dmabufs retained by the process. The buffers are either mapped,
12416  // retained via an fd, or both.
12417  // Only available on supported kernel versions (5.4+). When unavailable, set
12418  // to -1.
12419  optional int32 retained_dmabuf_kb = 4;
12420
12421  // Number of buffers retained by the process (mapped / fd).
12422  // Only available on supported kernel versions (5.4+). When unavailable, set
12423  // to -1.
12424  optional int32 retained_dmabuf_count = 5;
12425
12426  // Size of dmabufs mapped to the process address space.
12427  optional int32 mapped_dmabuf_kb = 6 [deprecated = true];
12428
12429  // Number of dmabufs mapped to the process address space.
12430  optional int32 mapped_dmabuf_count = 7 [deprecated = true];
12431
12432  // Size of dmabufs mapped to the process address space that are also
12433  // mapped to the SurfaceFlinger address space. This indicates memory
12434  // being used by graphics compositing layers. If this data row pertains
12435  // to SurfaceFlinger itself, then the below field holds the size of all
12436  // dmabuifs that are shared with any other process. The delta between
12437  // this field and retained_dmabuf_kb, above, is private dmabufs that
12438  // SurfaceFlinger is holding but are not shared with other processes.
12439  optional int32 surfaceflinger_shared_dmabuf_kb = 8;
12440  // As above, but total number of all dmabufs shared with SurfaceFlinger.
12441  optional int32 surfaceflinger_shared_dmabuf_count = 9;
12442}
12443
12444/**
12445 * Push network stack events.
12446 *
12447 * Log from:
12448 *     frameworks/base/packages/NetworkStack/
12449 */
12450message NetworkStackReported {
12451    // The id that indicates the event reported from NetworkStack.
12452    optional int32 event_id = 1;
12453    // The data for the reported events.
12454    optional android.stats.connectivity.NetworkStackEventData network_stack_event = 2 [(log_mode) = MODE_BYTES];
12455}
12456
12457/**
12458 * Logs the apps that are installed on the external storage.
12459 * Pulled from:
12460 *   StatsCompanionService
12461 */
12462message AppsOnExternalStorageInfo {
12463    // The type of the external storage.
12464    optional android.stats.storage.ExternalStorageType external_storage_type = 1;
12465    // The name of the package that is installed on the external storage.
12466    optional string package_name = 2;
12467}
12468
12469/**
12470 * Logs the settings related to Face.
12471 * Logged from:
12472 *   frameworks/base/services/core/java/com/android/server/stats
12473 */
12474message FaceSettings {
12475    // Whether or not face unlock is allowed on Keyguard.
12476    optional bool unlock_keyguard_enabled = 1;
12477    // Whether or not face unlock dismisses the Keyguard.
12478    optional bool unlock_dismisses_keyguard = 2;
12479    // Whether or not face unlock requires attention.
12480    optional bool unlock_attention_required = 3;
12481    // Whether or not face unlock is allowed for apps (through BiometricPrompt).
12482    optional bool unlock_app_enabled = 4;
12483    // Whether or not face unlock always requires user confirmation.
12484    optional bool unlock_always_require_confirmation = 5;
12485    // Whether or not a diverse set of poses are required during enrollment.
12486    optional bool unlock_diversity_required = 6;
12487}
12488
12489/**
12490 * Logs cooling devices maintained by the kernel.
12491 *
12492 * Pulled from StatsCompanionService.java
12493 */
12494message CoolingDevice {
12495    // The type of cooling device being reported. Eg. CPU, GPU...
12496    optional android.os.CoolingTypeEnum device_location = 1;
12497    // The name of the cooling device source. Eg. CPU0
12498    optional string device_name = 2;
12499    // Current throttle state of the cooling device. The value can any unsigned
12500    // integer between 0 and max_state defined in its driver. 0 means device is
12501    // not in throttling, higher value means deeper throttling.
12502    optional int32 state = 3;
12503}
12504
12505/**
12506 * Intelligence has several counter-type events that don't warrant a
12507 * full separate atom. These are primarily API call counters but also include
12508 * counters for feature usage and specific failure modes.
12509 *
12510 * Logged from the Intelligence mainline module.
12511 */
12512message IntelligenceEventReported {
12513  // The event type.
12514  optional android.stats.intelligence.EventType event_id = 1;
12515  // Success, failure.
12516  optional android.stats.intelligence.Status status = 2;
12517  // How many times the event occured (to report a batch of high frequency events).
12518  optional int32 count = 3;
12519  // How long the event took (sum of durations if count > 1)
12520  optional int64 duration_millis = 4;
12521}
12522
12523/**
12524 * Logs when Car Power state changed.
12525 *
12526 * Logged from:
12527 *   packages/services/Car/service/src/com/android/car/CarStatsLog.java
12528 */
12529message CarPowerStateChanged {
12530    // States come from CpmsState in CarPowerManagementService.java.
12531    enum State {
12532       WAIT_FOR_VHAL = 0;
12533       ON = 1;
12534       SHUTDOWN_PREPARE = 2;
12535       WAIT_FOR_FINISH = 3;
12536       SUSPEND = 4;
12537       SIMULATE_SLEEP = 5;
12538       SIMULATE_HIBERNATION = 6;
12539    }
12540    optional State state = 1;
12541}
12542
12543/**
12544 * Logs when Car User Hal is requested to switch/create/remove user.
12545 *
12546 * Logged from:
12547 *   packages/services/Car/service/src/com/android/car/hal/UserHalService.java
12548 */
12549message CarUserHalModifyUserRequestReported {
12550    // Request id for the request.
12551    optional int32 request_id = 1;
12552    // Request type.
12553    enum RequestType {
12554        UNKNOWN = 0;
12555        // Car user manager requested user switch.
12556        SWITCH_REQUEST_ANDROID = 1;
12557        // OEM requested User switch.
12558        SWITCH_REQUEST_OEM = 2;
12559        // Hal switch requested after android switch using activity manager.
12560        SWITCH_REQUEST_LEGACY = 3;
12561        // Create User
12562        CREATE_REQUEST = 4;
12563        // Remove User
12564        REMOVE_REQUEST = 5;
12565    }
12566    optional RequestType request_type = 2;
12567    // Android User id of the current user which can only be 0, 10, 11 and so on.
12568    // -1 if not available.
12569    optional int32 user_id = 3;
12570    // VHAL flags of the current user. (-1 if not available)
12571    optional int32 user_flags = 4;
12572    // Android User id of the target user for switch/create/remove. It can only
12573    // be 0, 10, 11 and so on. -1 if not available.
12574    optional int32 target_user_id = 5;
12575    // VHAL flags of the target user for switch/create/remove. (-1 if not available)
12576    optional int32 target_user_flags = 6;
12577    // Request timeout Milliseconds (-1 if not available)
12578    optional int32 timeout_millis = 7;
12579}
12580
12581/**
12582 * Logs when Car User Hal responds to switch/create user request.
12583 *
12584 * Logged from:
12585 *   packages/services/Car/service/src/com/android/car/hal/UserHalService.java
12586 */
12587message CarUserHalModifyUserResponseReported {
12588    // Request id of the request associated with the response.
12589    optional int32 request_id = 1;
12590    // Car user hal callback status.
12591    enum CallbackStatus {
12592        UNKNOWN = 0;
12593        // Hal response was invalid.
12594        INVALID = 1;
12595        // Hal response was ok.
12596        OK = 2;
12597        // Hal timeout during set call.
12598        HAL_SET_TIMEOUT = 3;
12599        // Hal response timeout.
12600        HAL_RESPONSE_TIMEOUT = 4;
12601        // Hal responded with wrong info.
12602        WRONG_HAL_RESPONSE = 5;
12603        // Hal is processing multiple requests simultaneously.
12604        CONCURRENT_OPERATION = 6;
12605    }
12606    optional CallbackStatus callback_status = 2;
12607
12608    // Hal request status for user switch/create/remove.
12609    enum HalRequestStatus {
12610        UNSPECIFIED = 0;
12611        // Hal request for user switch/create is successful.
12612        SUCCESS = 1;
12613        // Hal request for user switch/create failed.
12614        FAILURE = 2;
12615    }
12616    optional HalRequestStatus request_status = 3;
12617}
12618
12619/**
12620 * Logs when post switch response is posted to Car User Hal.
12621 *
12622 * Logged from:
12623 *   packages/services/Car/service/src/com/android/car/hal/UserHalService.java
12624 */
12625message CarUserHalPostSwitchResponseReported {
12626    // Request id.
12627    optional int32 request_id = 1;
12628
12629    // Android user switch status.
12630    enum UserSwitchStatus {
12631        UNKNOWN = 0;
12632        // Android user switch is successful.
12633        SUCCESS = 1;
12634        // Android user switch failed.
12635        FAILURE = 2;
12636    }
12637    optional UserSwitchStatus switch_status = 2;
12638}
12639
12640/**
12641 * Logs when initial user information is requested from Car User Hal.
12642 *
12643 * Logged from:
12644 *   packages/services/Car/service/src/com/android/car/hal/UserHalService.java
12645 */
12646message CarUserHalInitialUserInfoRequestReported {
12647    // Request id for the request.
12648    optional int32 request_id = 1;
12649
12650    // Request type for initial user information.
12651    enum InitialUserInfoRequestType {
12652        UNKNOWN = 0;
12653        // At the first time Android was booted (or after a factory reset).
12654        FIRST_BOOT = 1;
12655        // At the first time Android was booted after the system was updated.
12656        FIRST_BOOT_AFTER_OTA = 2;
12657        // When Android was booted "from scratch".
12658        COLD_BOOT = 3;
12659        // When Android was resumed after the system was suspended to memory.
12660        RESUME = 4;
12661    }
12662    optional InitialUserInfoRequestType request_type = 2;
12663    // Request timeout Milliseconds (-1 if not available)
12664    optional int32 timeout_millis = 3;
12665}
12666
12667/**
12668 * Logs when Car User Hal responds to initial user information requests.
12669 *
12670 * Logged from:
12671 *   packages/services/Car/service/src/com/android/car/hal/UserHalService.java
12672 */
12673message CarUserHalInitialUserInfoResponseReported {
12674    // Request id of the request associated with the response.
12675    optional int32 request_id = 1;
12676    // Car user hal callback status.
12677    enum CallbackStatus {
12678        UNKNOWN = 0;
12679        // Hal response was invalid.
12680        INVALID = 1;
12681        // Hal response was ok.
12682        OK = 2;
12683        // Hal timeout during set call.
12684        HAL_SET_TIMEOUT = 3;
12685        // Hal response timeout.
12686        HAL_RESPONSE_TIMEOUT = 4;
12687        // Hal responded with wrong info.
12688        WRONG_HAL_RESPONSE = 5;
12689        // Hal is processing multiple requests simultaneously.
12690        CONCURRENT_OPERATION = 6;
12691    }
12692    optional CallbackStatus callback_status = 2;
12693    // Response for initial user information request.
12694    enum InitialUserInfoResponseAction {
12695        UNSPECIFIED = 0;
12696        // Let the Android System decide what to do.
12697        DEFAULT = 1;
12698        // Switch to an existing Android user.
12699        SWITCH = 2;
12700        // Create a new Android user (and switch to it).
12701        CREATE = 3;
12702    }
12703    optional InitialUserInfoResponseAction response_action = 3;
12704    // Android User id of the target user which can only be 0, 10, 11 and so on.
12705    // -1 if not available.
12706    optional int32 target_user = 4;
12707    // VHAL flags of the current user. (-1 if not available)
12708    optional int32 target_user_flags = 5;
12709    // User locales
12710    optional string user_locales = 6;
12711}
12712
12713/**
12714 * Logs when set user association is requested from Car User Hal.
12715 *
12716 * Logged from:
12717 *   packages/services/Car/service/src/com/android/car/hal/UserHalService.java
12718 */
12719message CarUserHalUserAssociationRequestReported {
12720    // Request id for the request.
12721    optional int32 request_id = 1;
12722    // Request type.
12723    enum RequestType {
12724        UNKNOWN = 0;
12725        // For setting user association information.
12726        SET = 1;
12727        // For getting user association information.
12728        GET = 2;
12729    }
12730    optional RequestType request_type = 2;
12731    // Android User id of the current user which can only be 0, 10, 11 and so on.
12732    // -1 if not available.
12733    optional int32 current_user_id = 3;
12734    // VHAL flags of the current user. (-1 if not available)
12735    optional int32 current_user_flags = 4;
12736    // Number of the set associations requested.
12737    optional int32 number_associations = 5;
12738    // Concatenated string for the types from set associations request.
12739    // This is a string converted from an array of integers.
12740    optional string user_identification_association_types = 6;
12741    // Concatenated string for the values from set associations request.
12742    // This is a string converted from an array of integers.
12743    optional string user_identification_association_values = 7;
12744}
12745
12746/**
12747 * Logs when Car User Hal responds to set user association requests.
12748 *
12749 * Logged from:
12750 *   packages/services/Car/service/src/com/android/car/hal/UserHalService.java
12751 */
12752message CarUserHalSetUserAssociationResponseReported {
12753    // Request id of the request associated with the response.
12754    optional int32 request_id = 1;
12755    // Car user hal callback status.
12756    enum CallbackStatus {
12757        UNKNOWN = 0;
12758        // Hal response was invalid.
12759        INVALID = 1;
12760        // Hal response was ok.
12761        OK = 2;
12762        // Hal timeout during set call.
12763        HAL_SET_TIMEOUT = 3;
12764        // Hal response timeout.
12765        HAL_RESPONSE_TIMEOUT = 4;
12766        // Hal responded with wrong info.
12767        WRONG_HAL_RESPONSE = 5;
12768        // Hal is processing multiple requests simultaneously.
12769        CONCURRENT_OPERATION = 6;
12770    }
12771    optional CallbackStatus callback_status = 2;
12772    // Number of the set associations in the response.
12773    optional int32 number_associations = 3;
12774    // Concatenated string for the types from set associations request.
12775    // This is a string converted from an array of integers.
12776    optional string user_identification_association_types = 4;
12777    // Concatenated string for the values from set associations request.
12778    // This is a string converted from an array of integers.
12779    optional string user_identification_association_values = 5;
12780}
12781
12782/**
12783 * Logs whether GarageMode is entered.
12784 *
12785 * Logged from:
12786 *   packages/services/Car/service/src/com/android/car/CarStatsLog.java
12787 */
12788message GarageModeInfo {
12789    // Whether GarageMode is entered.
12790    optional bool is_garage_mode = 1;
12791}
12792
12793/**
12794 * Historical app ops data per package.
12795 */
12796message AppOps {
12797    // Uid of the package requesting the op
12798    optional int32 uid = 1 [(is_uid) = true];
12799
12800    // Name of the package performing the op
12801    optional string package_name = 2;
12802
12803    // operation id
12804    optional android.app.AppOpEnum op_id = 3 [default = APP_OP_NONE];
12805
12806    // The number of times the op was granted while the app was in the
12807    // foreground (only for trusted requests)
12808    optional int64 trusted_foreground_granted_count = 4;
12809
12810    // The number of times the op was granted while the app was in the
12811    // background (only for trusted requests)
12812    optional int64 trusted_background_granted_count = 5;
12813
12814    // The number of times the op was rejected while the app was in the
12815    // foreground (only for trusted requests)
12816    optional int64 trusted_foreground_rejected_count = 6;
12817
12818    // The number of times the op was rejected while the app was in the
12819    // background (only for trusted requests)
12820    optional int64 trusted_background_rejected_count = 7;
12821
12822    // For long-running operations, total duration of the operation
12823    // while the app was in the foreground (only for trusted requests)
12824    optional int64 trusted_foreground_duration_millis = 8;
12825
12826    // For long-running operations, total duration of the operation
12827    // while the app was in the background (only for trusted requests)
12828    optional int64 trusted_background_duration_millis = 9;
12829
12830    // Whether AppOps is guarded by Runtime permission
12831    optional bool is_runtime_permission = 10;
12832}
12833
12834/**
12835 * Historical app ops data per package and attribution tag.
12836 */
12837message AttributedAppOps {
12838    // Uid of the package requesting the op
12839    optional int32 uid = 1 [(is_uid) = true];
12840
12841    // Name of the package performing the op
12842    optional string package_name = 2;
12843
12844    // tag; provided by developer when accessing related API, limited at 50 chars by API.
12845    // Attributions must be provided through manifest using <attribution> tag available in R and
12846    // above.
12847    optional string tag = 3;
12848
12849    // operation id
12850    optional android.app.AppOpEnum op = 4 [default = APP_OP_NONE];
12851
12852    // The number of times the op was granted while the app was in the
12853    // foreground (only for trusted requests)
12854    optional int64 trusted_foreground_granted_count = 5;
12855
12856    // The number of times the op was granted while the app was in the
12857    // background (only for trusted requests)
12858    optional int64 trusted_background_granted_count = 6;
12859
12860    // The number of times the op was rejected while the app was in the
12861    // foreground (only for trusted requests)
12862    optional int64 trusted_foreground_rejected_count = 7;
12863
12864    // The number of times the op was rejected while the app was in the
12865    // background (only for trusted requests)
12866    optional int64 trusted_background_rejected_count = 8;
12867
12868    // For long-running operations, total duration of the operation
12869    // while the app was in the foreground (only for trusted requests)
12870    optional int64 trusted_foreground_duration_millis = 9;
12871
12872    // For long-running operations, total duration of the operation
12873    // while the app was in the background (only for trusted requests)
12874    optional int64 trusted_background_duration_millis = 10;
12875
12876    // Whether AppOps is guarded by Runtime permission
12877    optional bool is_runtime_permission = 11;
12878
12879    // Sampling rate used on device, from 0 to 100
12880    optional int32 sampling_rate = 12;
12881}
12882
12883/**
12884 * Location Manager API Usage information(e.g. API under usage,
12885 * API call's parameters).
12886 * Logged from:
12887 *  frameworks/base/services/core/java/com/android/server/LocationManagerService.java
12888 */
12889message LocationManagerApiUsageReported {
12890
12891    // Indicating if usage starts or usage ends.
12892    optional android.stats.location.UsageState state = 1;
12893
12894    // LocationManagerService's API in use.
12895    // We can identify which API from LocationManager is
12896    // invoking current LMS API by the combination of
12897    // API parameter(e.g. is_listener_null, is_intent_null,
12898    // is_location_request_null)
12899    optional android.stats.location.LocationManagerServiceApi api_in_use = 2;
12900
12901    // Name of the package calling the API.
12902    optional string calling_package_name = 3;
12903
12904    // Type of the location provider.
12905    optional android.stats.location.ProviderType provider = 4;
12906
12907    // Quality of the location request
12908    optional android.stats.location.LocationRequestQuality quality = 5;
12909
12910    // The desired interval for active location updates, in milliseconds.
12911    // Bucketized to reduce cardinality.
12912    optional android.stats.location.LocationRequestIntervalBucket bucketized_interval = 6;
12913
12914    // Minimum distance between location updates, in meters.
12915    // Bucketized to reduce cardinality.
12916    optional android.stats.location.SmallestDisplacementBucket
12917            bucketized_smallest_displacement = 7;
12918
12919    // The number of location updates.
12920    optional int64 num_updates = 8;
12921
12922    // The request expiration time, in millisecond since boot.
12923    // Bucketized to reduce cardinality.
12924    optional android.stats.location.ExpirationBucket
12925            bucketized_expire_in = 9;
12926
12927    // Type of Callback passed in for this API.
12928    optional android.stats.location.CallbackType callback_type = 10;
12929
12930    // The radius of the central point of the alert
12931    // region, in meters. Only for API REQUEST_GEOFENCE.
12932    // Bucketized to reduce cardinality.
12933    optional android.stats.location.GeofenceRadiusBucket bucketized_radius = 11;
12934
12935    // Activity Importance of API caller.
12936    // Categorized to 3 types that are interesting from location's perspective.
12937    optional android.stats.location.ActivityImportance activiy_importance = 12;
12938
12939    // Attribution tag passed to this API.
12940    optional string attribution_tag = 13;
12941}
12942
12943/**
12944 * Information about a permission grant or denial made by user inside ReviewPermissionsFragment
12945 */
12946message ReviewPermissionsFragmentResultReported {
12947    // unique value identifying a permission group change. A permission group change might result
12948    // in multiple of these atoms
12949    optional int64 change_id = 1;
12950
12951    // UID of package the permission belongs to
12952    optional int32 uid = 2 [(is_uid) = true];
12953
12954    // Name of package the permission belongs to
12955    optional string package_name = 3;
12956
12957    // The permission to be granted
12958    optional string permission_name = 4;
12959
12960    // The result of the permission grant
12961    optional bool permission_granted = 5;
12962}
12963
12964/**
12965* Information about results of permission upgrade by RuntimePermissionsUpgradeController
12966* Logged from: RuntimePermissionUpdgradeController
12967*/
12968message RuntimePermissionsUpgradeResult {
12969    // Permission granted as result of upgrade
12970    optional string permission_name = 1;
12971
12972    // UID of package granted permission
12973    optional int32 uid = 2 [(is_uid) = true];
12974
12975    // Name of package granted permission
12976    optional string package_name = 3;
12977}
12978
12979/**
12980* Information about a buttons presented in GrantPermissionsActivity and choice made by user
12981*/
12982message GrantPermissionsActivityButtonActions {
12983    // Permission granted as result of upgrade
12984    optional string permission_group_name = 1;
12985
12986    // UID of package granted permission
12987    optional int32 uid = 2 [(is_uid) = true];
12988
12989    // Name of package requesting permission
12990    optional string package_name = 3;
12991
12992    // Buttons presented in the dialog - bit flags, bit numbers are in accordance with
12993    // LABEL_ constants in GrantPermissionActivity.java
12994    optional int32 buttons_presented = 4;
12995
12996    // Button clicked by user - same as bit flags in buttons_presented with only single bit set
12997    optional int32 button_clicked = 5;
12998
12999    // id which identifies single session of user interacting with permission controller
13000    optional int64 session_id = 6;
13001
13002    // Target SDK of the package
13003    optional int32 target_sdk = 7;
13004
13005    // Selected precision of the location permission - bit flags indicate which
13006    // locations were chosen
13007    optional int32 selected_precision = 8;
13008
13009    // Whether Permission Rationale was shown on grant permission activity
13010    optional bool permission_rationale_shown = 9;
13011}
13012
13013/**
13014 * Information about LocationAccessCheck notification presented to user
13015 */
13016message LocationAccessCheckNotificationAction {
13017
13018    // id which identifies single session of user interacting with permission controller
13019    optional int64 session_id = 1;
13020
13021    // Uid of package for which location access check is presented
13022    optional int32 package_uid = 2 [(is_uid) = true];
13023
13024    // Name of package for which location access check is presented
13025    optional string package_name = 3;
13026
13027    enum Result {
13028        UNDEFINED = 0;
13029        // notification was presented to the user
13030        NOTIFICATION_PRESENTED = 1;
13031        // notification was declined by the user
13032        NOTIFICATION_DECLINED = 2;
13033        // notification was clicked by the user
13034        NOTIFICATION_CLICKED = 3;
13035    }
13036
13037    // View / interaction recorded
13038    optional Result result = 4;
13039}
13040
13041/**
13042 * Information about a permission grant or revoke made by user inside AppPermissionFragment
13043 */
13044message AppPermissionFragmentActionReported {
13045    // id which identifies single session of user interacting with permission controller
13046    optional int64 session_id = 1;
13047
13048    // unique value identifying a permission group change. A permission group change might result
13049    // in multiple of these atoms
13050    optional int64 change_id = 2;
13051
13052    // UID of package the permission belongs to
13053    optional int32 uid = 3 [(is_uid) = true];
13054
13055    // Name of package the permission belongs to
13056    optional string package_name = 4;
13057
13058    // The permission to be granted
13059    optional string permission_name = 5;
13060
13061    // The result of the permission grant
13062    optional bool permission_granted = 6;
13063
13064    // State of Permission Flags after grant as per android.content.pm.PermissionFlags
13065    optional int32 permission_flags = 7;
13066
13067    enum Button {
13068        UNDEFINED = 0;
13069        // Allow button
13070        ALLOW = 1;
13071        // Deny button
13072        DENY = 2;
13073        // Ask every time button
13074        ASK_EVERY_TIME = 3;
13075        // Allow all the time button
13076        ALLOW_ALWAYS = 4;
13077        // Allow only while using the app button
13078        ALLOW_FOREGROUND = 5;
13079        // Same is Deny button but shown in while in use dialog
13080        DENY_FOREGROUND = 6;
13081        // Switch button set to ON for location accuracy
13082        GRANT_FINE_LOCATION = 7;
13083        // Switch button set to OFF for location accuracy
13084        REVOKE_FINE_LOCATION = 8;
13085        // The user has selected photos/videos from the photo picker
13086        PHOTOS_SELECTED = 9;
13087        // User selects Permission Rationale label
13088        PERMISSION_RATIONALE = 10;
13089    }
13090
13091    // Button pressed in the dialog
13092    optional Button button_pressed = 8;
13093}
13094
13095/**
13096* Information about a AppPermissionFragment viewed by user
13097*/
13098message AppPermissionFragmentViewed {
13099    // id which identifies single session of user interacting with permission controller
13100    optional int64 session_id = 1;
13101
13102    // UID of package for which permissions are viewed
13103    optional int32 uid = 2 [(is_uid) = true];
13104
13105    // Name of package for which permissions are viewed
13106    optional string package_name = 3;
13107
13108    // Permission group viewed
13109    optional string permission_group_name = 4;
13110
13111    // Whether Permission Rationale was shown on app permission fragment
13112    optional bool permission_rationale_shown = 5;
13113}
13114
13115/**
13116* Information about a AppPermissionGroupsFragment viewed by user. Fragment has been renamed, but
13117* the log retains the old fragment name.
13118*/
13119message AppPermissionsFragmentViewed {
13120    // id which identifies single session of user interacting with permission controller
13121    optional int64 session_id = 1;
13122
13123    // id which identifies single view as every view might have several logging records
13124    // with different package information attached
13125    optional int64 view_id = 2;
13126
13127    // Permission group viewed
13128    optional string permission_group_name = 3;
13129
13130    // UID of package for which permissions are viewed
13131    optional int32 uid = 4 [(is_uid) = true];
13132
13133    // Name of package for which permissions are viewed
13134    optional string package_name = 5;
13135
13136    // Category in which permission is included
13137    enum Category {
13138      UNDEFINED = 0;
13139      ALLOWED = 1;
13140      ALLOWED_FOREGROUND = 2;
13141      DENIED = 3;
13142    }
13143    optional Category category = 6;
13144}
13145/**
13146* Information about a PermissionAppsFragment viewed by user.
13147* Logged from ui/handheld/PermissionAppsFragment.java
13148*/
13149message PermissionAppsFragmentViewed {
13150    // id which identifies single session of user interacting with permission controller
13151    optional int64 session_id = 1;
13152
13153    // id which identifies single view as every view might have several logging records
13154    // with different package information attached
13155    optional int64 view_id = 2;
13156
13157    // Permission group viewed
13158    optional string permission_group_name = 3;
13159
13160    // UID of package for which permissions are viewed
13161    optional int32 uid = 4 [(is_uid) = true];
13162
13163    // Name of package for which permissions are viewed
13164    optional string package_name = 5;
13165
13166    // Category in which app is included
13167    enum Category {
13168        UNDEFINED = 0;
13169        ALLOWED = 1;
13170        ALLOWED_FOREGROUND = 2;
13171        DENIED = 3;
13172    }
13173    optional Category category = 6;
13174}
13175
13176/**
13177* Log that the Auto Revoke notification has been clicked
13178* Logged from ui/ManagePermissionsActivity
13179*/
13180message AutoRevokeNotificationClicked {
13181    // id which identifies single session of user interacting with permission controller
13182    optional int64 session_id = 1;
13183}
13184
13185/**
13186* Log that an app has been displayed on the auto revoke page, and lists one permission that was
13187* auto revoked for it.
13188* Logged from ui/handheld/AutoRevokeFragment
13189*/
13190message AutoRevokeFragmentAppViewed {
13191    // id which identifies single session of user interacting with permission controller
13192    optional int64 session_id = 1;
13193
13194    // UID of package for which permissions are viewed
13195    optional int32 uid = 2 [(is_uid) = true];
13196
13197    // Name of package for which permissions are viewed
13198    optional string package_name = 3;
13199
13200    // The name of a permission group that has been revoked
13201    optional string permission_group_name = 4;
13202
13203    // The age of the app- more than three months old, or more than six months
13204    enum Age {
13205        UNDEFINED = 0;
13206        NEWER_BUCKET = 1;
13207        OLDER_BUCKET = 2;
13208    }
13209
13210    // How long the app has been unused. Currently, newer bucket is 3 months, older is 6 months
13211    optional Age age = 5;
13212}
13213
13214/**
13215* Log that the user has interacted with an app on the auto revoke fragment
13216* Logged from ui/handheld/AutoRevokeFragment
13217*/
13218message AutoRevokedAppInteraction {
13219    // id which identifies single session of user interacting with permission controller
13220    optional int64 session_id = 1;
13221
13222    // UID of package for which permissions are viewed
13223    optional int32 uid = 2 [(is_uid) = true];
13224
13225    // Name of package for which permissions are viewed
13226    optional string package_name = 3;
13227
13228    enum Action {
13229        UNDEFINED = 0;
13230        REMOVE = 1;
13231        OPEN = 2;
13232        APP_INFO = 3;
13233        PERMISSIONS = 4;
13234        REMOVE_IN_SETTINGS = 5;
13235        OPEN_IN_SETTINGS = 6;
13236    }
13237
13238    // The action the user took to interact with the app
13239    optional Action action = 4;
13240}
13241
13242/**
13243* Log that the AppPermissionGroupsFragment has been interacted with for the possible purposes of
13244* auto revoke, or that the auto revoke switch has been changed
13245* Logged from ui/handheld/AppPermissionGroupsFragment
13246 */
13247message AppPermissionGroupsFragmentAutoRevokeAction {
13248    // id which identifies single session of user interacting with permission controller
13249    optional int64 session_id = 1;
13250
13251    // UID of package for which permissions are viewed
13252    optional int32 uid = 2 [(is_uid) = true];
13253
13254    // Name of package for which permissions are viewed
13255    optional string package_name = 3;
13256
13257    enum Action {
13258        UNDEFINED = 0;
13259        OPENED_FOR_AUTO_REVOKE = 1;
13260        OPENED_FROM_INTENT = 2;
13261        SWITCH_ENABLED = 3;
13262        SWITCH_DISABLED = 4;
13263    }
13264
13265    // The action the user took to interact with the fragment
13266    optional Action action = 4;
13267}
13268
13269/**
13270 * Logs when there is a smart selection related event.
13271 * See frameworks/base/core/java/android/view/textclassifier/TextClassifierEvent.java
13272 * Logged from: TextClassifierEventLogger.java
13273 */
13274message TextSelectionEvent {
13275    // A session ID.
13276    optional string session_id = 1;
13277
13278    // Event type of this event.
13279    optional android.stats.textclassifier.EventType event_type = 2;
13280
13281    // Name of the annotator model that is involved in this event.
13282    optional string model_name = 3;
13283
13284    // Type of widget that was involved in triggering this event.
13285    optional android.stats.textclassifier.WidgetType widget_type = 4;
13286
13287    // Index of this event in a session.
13288    optional int32 event_index = 5;
13289
13290    // Entity type that is involved.
13291    optional string entity_type = 6;
13292
13293    // Relative word index of the start of the selection.
13294    optional int32 relative_word_start_index = 7;
13295
13296    // Relative word (exclusive) index of the end of the selection.
13297    optional int32 relative_word_end_index = 8;
13298
13299    // Relative word index of the start of the smart selection.
13300    optional int32 relative_suggested_word_start_index = 9;
13301
13302    // Relative word (exclusive) index of the end of the smart selection.
13303    optional int32 relative_suggested_word_end_index = 10;
13304
13305    // Name of source package.
13306    optional string package_name = 11;
13307
13308    // Name of the LangID model that is involved in this event.
13309    optional string langid_model_name = 12;
13310}
13311
13312/**
13313 * Logs when there is a smart linkify related event.
13314 * See frameworks/base/core/java/android/view/textclassifier/TextClassifierEvent.java
13315 * Logged from: TextClassifierEventLogger.java
13316 */
13317message TextLinkifyEvent {
13318    // A session ID.
13319    optional string session_id = 1;
13320
13321    // Event type of this event.
13322    optional android.stats.textclassifier.EventType event_type = 2;
13323
13324    // Name of the annotator model that is involved in this event.
13325    optional string model_name = 3;
13326
13327    // Type of widget that was involved in triggering this event.
13328    optional android.stats.textclassifier.WidgetType widget_type = 4;
13329
13330    // Index of this event in a session.
13331    optional int32 event_index = 5;
13332
13333    // Entity type that is involved.
13334    optional string entity_type = 6;
13335
13336    // Number of links detected.
13337    optional int32 num_links = 7;
13338
13339    // The total length of all links.
13340    optional int32 linked_text_length = 8;
13341
13342    // Length of input text.
13343    optional int32 text_length = 9;
13344
13345    // Time spent on generating links in ms.
13346    optional int64 latency_millis = 10;
13347
13348    // Name of source package.
13349    optional string package_name = 11;
13350
13351    // Name of the LangID model that is involved in this event.
13352    optional string langid_model_name = 12;
13353}
13354
13355/**
13356 * Logs when there is a conversation actions related event.
13357 * See frameworks/base/core/java/android/view/textclassifier/TextClassifierEvent.java
13358 * Logged from: TextClassifierEventLogger.java
13359 */
13360message ConversationActionsEvent {
13361    // A session ID.
13362    optional string session_id = 1;
13363
13364    // Event type of this event.
13365    optional android.stats.textclassifier.EventType event_type = 2;
13366
13367    // Name of the actions model that is involved in this event.
13368    optional string model_name = 3;
13369
13370    // Type of widget that was involved in triggering this event.
13371    optional android.stats.textclassifier.WidgetType widget_type = 4;
13372
13373    // The first entity type that is involved.
13374    optional string first_entity_type = 5;
13375
13376    // The second entity type that is involved.
13377    optional string second_entity_type = 6;
13378
13379    // The third entity type that is involved.
13380    optional string third_entity_type = 7;
13381
13382    // The score of the first entity type.
13383    optional float score = 8;
13384
13385    // Name of source package.
13386    optional string package_name = 9;
13387
13388    // Name of the annotator model that is involved in this event.
13389    optional string annotator_model_name = 10;
13390
13391    // Name of the LangID model that is involved in this event.
13392    optional string langid_model_name = 11;
13393}
13394
13395/**
13396 * Logs when there is a language detection related event.
13397 * See frameworks/base/core/java/android/view/textclassifier/TextClassifierEvent.java
13398 * Logged from: TextClassifierEventLogger.java
13399 */
13400message LanguageDetectionEvent {
13401    // A session ID.
13402    optional string session_id = 1;
13403
13404    // Event type of this event.
13405    optional android.stats.textclassifier.EventType event_type = 2;
13406
13407    // Name of the language detection model that is involved in this event.
13408    optional string model_name = 3;
13409
13410    // Type of widget that was involved in triggering this event.
13411    optional android.stats.textclassifier.WidgetType widget_type = 4;
13412
13413    // Detected language.
13414    optional string language_tag = 5;
13415
13416    // Score of the detected language.
13417    optional float score = 6;
13418
13419    // Position of this action.
13420    optional int32 action_index = 7;
13421
13422    // Name of source package.
13423    optional string package_name = 8;
13424}
13425
13426/**
13427 * Information about an OTA update attempt by update_engine.
13428 * Logged from platform/system/update_engine/metrics_reporter_android.cc
13429 */
13430message UpdateEngineUpdateAttemptReported {
13431    // The number of attempts for the update engine to apply a given payload.
13432    optional int32 attempt_number = 1;
13433
13434    optional android.stats.otaupdate.PayloadType payload_type = 2;
13435
13436    // The total time in minutes for the update engine to apply a given payload.
13437    // The time is calculated by calling clock_gettime() / CLOCK_BOOTTIME; and
13438    // it's increased when the system is sleeping.
13439    optional int32 duration_boottime_in_minutes = 3;
13440
13441    // The total time in minutes for the update engine to apply a given payload.
13442    // The time is calculated by calling clock_gettime() / CLOCK_MONOTONIC_RAW;
13443    // and it's not increased when the system is sleeping.
13444    optional int32 duration_monotonic_in_minutes = 4;
13445
13446    // The size of the payload in MiBs.
13447    optional int32 payload_size_mib = 5;
13448
13449    // The attempt result reported by the update engine for an OTA update.
13450    optional android.stats.otaupdate.AttemptResult attempt_result = 6;
13451
13452    // The error code reported by the update engine after an OTA update attempt
13453    // on A/B devices.
13454    optional android.stats.otaupdate.ErrorCode error_code = 7;
13455
13456    // The build fingerprint of the source system. The value is read from a
13457    // system property when the device takes the update. e.g.
13458    // Android/aosp_sailfish/sailfish:10/QP1A.190425.004/5507117:userdebug/test-keys
13459    optional string source_fingerprint = 8;
13460
13461    // Size of super partition.
13462    optional int64 super_partition_size_bytes = 9;
13463
13464    // Size of current slot within the super partition.
13465    optional int64 slot_size_bytes = 10;
13466
13467    // Free space available in the super partition.
13468    optional int64 super_free_space_bytes = 11;
13469
13470    // Whether the device enables Virtual A/B compression.
13471    optional bool vab_compression_enabled = 12;
13472
13473    // Whether this update attempt uses Virtual A/B compression.
13474    optional bool vab_compression_used = 13;
13475}
13476
13477/**
13478 * Information about all the attempts the device make before finishing the
13479 * successful update.
13480 * Logged from platform/system/update_engine/metrics_reporter_android.cc
13481 */
13482message UpdateEngineSuccessfulUpdateReported {
13483    // The number of attempts for the update engine to apply the payload for a
13484    // successful update.
13485    optional int32 attempt_count = 1;
13486
13487    optional android.stats.otaupdate.PayloadType payload_type = 2;
13488
13489    optional int32 payload_size_mib = 3;
13490
13491    // The total number of bytes downloaded by update_engine since the last
13492    // successful update.
13493    optional int32 total_bytes_downloaded_mib = 4;
13494
13495    // The ratio in percentage of the over-downloaded bytes compared to the
13496    // total bytes needed to successfully install the update. e.g. 200 if we
13497    // download 200MiB in total for a 100MiB package.
13498    optional int32 download_overhead_percentage = 5;
13499
13500    // The total time in minutes for the update engine to apply the payload for a
13501    // successful update.
13502    optional int32 total_duration_minutes = 6;
13503
13504    // The number of reboot of the device during a successful update.
13505    optional int32 reboot_count = 7;
13506
13507    // Whether on device verity computation is enabled
13508    optional bool fec_enabled = 8;
13509
13510    // Whether on device hash tree computation is enabled
13511    optional bool hash_tree_enabled = 9;
13512
13513}
13514
13515/**
13516 * Reported when a client requests to prepare for resume on reboot.
13517 *
13518 * Logged from:
13519 *   frameworks/base/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java
13520 */
13521message RebootEscrowPreparationReported {
13522  enum Result {
13523    ROR_NEED_PREPARATION = 0;
13524    ROR_SKIP_PREPARATION_AND_NOTIFY = 1;
13525    ROR_SKIP_PREPARATION_NOT_NOTIFY = 2;
13526  }
13527
13528  // The uid of the client who requests ror.
13529  optional int32 requesting_uid = 1 [(is_uid) = true];
13530
13531  optional Result result = 2;
13532
13533  // The number of clients who has requested ror, including the current caller.
13534  optional int32 requested_client_count = 3;
13535}
13536
13537/**
13538 * Reported when the lock screen knowledge factor is captured, while there are clients of
13539 * resume on reboot to notify.
13540 *
13541 * Logged from:
13542 *   frameworks/base/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java
13543 */
13544message RebootEscrowLskfCaptureReported {
13545  // The uid of the client to notify about the Lskf capture.
13546  optional int32 uid_to_notify = 1 [(is_uid) = true];
13547
13548  // The total number of clients who have requested ror.
13549  optional int32 requested_client_count = 2;
13550
13551  // The duration between RoR request - current LSKF capture event.
13552  optional int32 duration_ror_requested_to_lskf_captured_seconds = 3;
13553}
13554
13555/* Reported when a client (e.g. gmscore) requests to reboot with Resume on Reboot.
13556 *
13557 * Logged from:
13558 *   frameworks/base/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java
13559 */
13560message RebootEscrowRebootReported {
13561  optional int32 error_code = 1;
13562
13563  // The uid of clients who requested the reboot
13564  optional int32 request_uid = 2 [(is_uid) = true];
13565
13566  // All clients that have prepared for RoR before this reboot
13567  optional int32 prepared_clients_count = 3;
13568
13569  // The RoR request count for the client who requests reboot.
13570  optional int32 request_count = 4;
13571
13572  // Whether the reboot request assumes a slot switch on a/b devices.
13573  optional bool slot_switch = 5;
13574
13575  // True if the DeviceConfig shows the device is using server based RoR.
13576  optional bool server_based = 6;
13577
13578  // The duration between last LSKF captured - reboot requests
13579  optional int32 duration_lskf_captured_to_reboot_seconds = 7;
13580
13581  // The count of LSKF captured since preparation
13582  optional int32 lskf_captured_counts = 8;
13583}
13584
13585/**
13586 * Logs stats for AppSearch function calls
13587 *
13588 * Next tag: 13
13589 */
13590message AppSearchCallStatsReported {
13591    // The sampling interval for this specific type of stats
13592    // For example, sampling_interval=10 means that one out of every 10 stats was logged.
13593    optional int32 sampling_interval = 1;
13594
13595    // # of previous skipped sample for this specific type of stats
13596    // We can't push atoms too closely, so some samples might be skipped
13597    // In order to extrapolate the counts, we need to save the number of skipped stats and add it back
13598    // For example, the true count of an event could be estimated as:
13599    //   SUM(sampling_interval * (num_skipped_sample + 1)) as est_count
13600    optional int32 num_skipped_sample = 2;
13601
13602    // Package UID of the application.
13603    optional int32 uid = 3 [(is_uid) = true];
13604
13605    // Hash of the database name within AppSearch
13606    optional int32 database = 4;
13607
13608    // The status code for the call or internal state.
13609    // Needs to be sync with AppSearchResult#ResultCode in
13610    // frameworks/base/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.java
13611    optional int32 status_code = 5;
13612
13613    // Overall time used for the end-to-end function call in AppSearch.
13614    // It doesn't include binder latency
13615    optional int32 total_latency_millis = 6;
13616
13617    // Type of the function call value is in sync with
13618    // frameworks/base/apex/appsearch/service/java/com/android/server/appsearch/external/localstorage/stats/CallStats.java
13619    optional int32 call_type = 7;
13620
13621    // Estimated binder latency (estimated as single-trip time * 2)
13622    optional int32 estimated_binder_latency_millis = 8;
13623
13624    // Number of operations succeeded for batch operations.
13625    optional int32 num_operations_succeeded = 9;
13626
13627    // Number of operations failed for batch operations.
13628    optional int32 num_operations_failed = 10;
13629
13630    // Number of actual API calls reported in this atom.
13631    optional int32 num_reported_calls = 11;
13632
13633    // The bitmask for all enabled features on this device. Must be one or a combination of the
13634    // types AppSearchEnabledFeatures.
13635    optional int64 enabled_features = 12;
13636}
13637
13638/**
13639 * Logs detailed stats for putting a single document in AppSearch
13640 *
13641 * Next tag: 17
13642 */
13643message AppSearchPutDocumentStatsReported {
13644    // The sampling interval for this specific type of stats
13645    // For example, sampling_interval=10 means that one out of every 10 stats was logged.
13646    optional int32 sampling_interval = 1;
13647
13648    // # of previous skipped sample for this specific type of stats
13649    // We can't push atoms too closely, so some samples might be skipped
13650    // In order to extrapolate the counts, we need to save the number of skipped stats and add it back
13651    // For example, the true count of an event could be estimated as:
13652    //   SUM(sampling_interval * (num_skipped_sample + 1)) as est_count
13653    optional int32 num_skipped_sample = 2;
13654
13655    // Package UID of the application.
13656    optional int32 uid = 3 [(is_uid) = true];
13657
13658    // Hash of the database name within AppSearch
13659    optional int32 database = 4;
13660
13661    // Needs to be sync with AppSearchResult#ResultCode in
13662    // frameworks/base/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.java
13663    optional int32 status_code = 5;
13664
13665    // Overall time used for a put_document
13666    optional int32 total_latency_millis = 6;
13667
13668    // Time used to generate a document proto from a Bundle.
13669    optional int32 generate_document_proto_latency_millis = 7;
13670
13671    // Time used to rewrite types and namespaces in the document.
13672    optional int32 rewrite_document_types_latency_millis = 8;
13673
13674    // Overall time used for the native function call.
13675    optional int32 native_latency_millis = 9;
13676
13677    // Time used to store the document.
13678    optional int32 native_document_store_latency_millis = 10;
13679
13680    // Time used to index the document. It doesn't include the time to
13681    // merge indices.
13682    optional int32 native_index_latency_millis = 11;
13683
13684    // Time used to merge the indices.
13685    optional int32 native_index_merge_latency_millis = 12;
13686
13687    // Document size in bytes.
13688    optional int32 native_document_size_bytes = 13;
13689
13690    // Number of tokens added to the index.
13691    optional int32 native_num_tokens_indexed = 14;
13692
13693    // Whether the max number of tokens exceeded.
13694    optional bool native_exceeded_max_num_tokens = 15;
13695
13696    // The bitmask for all enabled features on this device. Must be one or a combination of the
13697    // types AppSearchEnabledFeatures.
13698    optional int64 enabled_features = 16;
13699}
13700
13701/**
13702 * Logs detailed stats for AppSearch Initialize
13703 *
13704 * Next tag: 22
13705 */
13706message AppSearchInitializeStatsReported {
13707    // The sampling interval for this specific type of stats
13708    // For example, sampling_interval=10 means that one out of every 10 stats was logged.
13709    optional int32 sampling_interval = 1;
13710
13711    // # of previous skipped sample for this specific type of stats
13712    // We can't push atoms too closely, so some samples might be skipped
13713    // In order to extrapolate the counts, we need to save the number of skipped stats and add it back
13714    // For example, the true count of an event could be estimated as:
13715    //   SUM(sampling_interval * (num_skipped_sample + 1)) as est_count
13716    optional int32 num_skipped_sample = 2;
13717
13718    // Package UID of the application.
13719    optional int32 uid = 3 [(is_uid) = true];
13720
13721    // Initialize status code
13722    // Needs to be sync with AppSearchResult#ResultCode in
13723    // frameworks/base/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.java
13724    optional int32 status_code = 4;
13725
13726    // Overall time used for initialization, not including binder latency.
13727    optional int32 total_latency_millis = 5;
13728
13729    // Whether the initialize() detects desyncs.
13730    // Desync happens if we lose the visibility doc.
13731    optional bool has_desync = 6;
13732
13733    // Time used to read and process the schema and namespaces.
13734    optional int32 prepare_schema_and_namespaces_latency_millis = 7;
13735
13736    // Time used to read and process the visibility file.
13737    optional int32 prepare_visibility_file_latency_millis = 8;
13738
13739    // Overall time used for the native function call.
13740    optional int32 native_latency_millis = 9;
13741
13742    // Needs to be sync with RecoveryCause in google3/third_party/icing/proto/logging.proto
13743    optional int32 native_document_store_recovery_cause = 10;
13744
13745    // Needs to be sync with RecoveryCause in google3/third_party/icing/proto/logging.proto
13746    optional int32 native_index_restoration_cause = 11;
13747
13748    // Needs to be sync with RecoveryCause in google3/third_party/icing/proto/logging.proto
13749    optional int32 native_schema_store_recovery_cause = 12;
13750
13751    // Time used to recover the document store.
13752    optional int32 native_document_store_recovery_latency_millis = 13;
13753
13754    // Time used to restore the index.
13755    optional int32 native_index_restoration_latency_millis = 14;
13756
13757    // Time used to recover the schema store.
13758    optional int32 native_schema_store_recovery_latency_millis = 15;
13759
13760    // Needs to be sync with DocumentStoreDataStatus in google3/third_party/icing/proto/logging.proto
13761    optional int32 native_document_store_data_status = 16;
13762
13763    // Number of documents currently in document store. Those may
13764    // include alive, deleted, and expired documents.
13765    optional int32 native_num_documents = 17;
13766
13767    // Number of schema types currently in the schema store.
13768    optional int32 native_num_schema_types = 18;
13769
13770    // Whether we had to reset the index, losing all data, during initialization.
13771    optional bool has_reset = 19;
13772
13773    // The status code of the reset operation if has_reset is true.
13774    // Needs to be sync with AppSearchResult#ResultCode in
13775    // frameworks/base/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.java
13776    optional int32 reset_status_code = 20;
13777
13778    // The bitmask for all enabled features on this device. Must be one or a combination of the
13779    // types AppSearchEnabledFeatures.
13780    optional int64 enabled_features = 21;
13781}
13782
13783/**
13784 * Logs detailed stats for querying in AppSearch
13785 *
13786 * Next tag: 35
13787 */
13788message AppSearchQueryStatsReported {
13789    // The sampling interval for this specific type of stats
13790    // For example, sampling_interval=10 means that one out of every 10 stats was logged.
13791    optional int32 sampling_interval = 1;
13792
13793    // # of previous skipped sample for this specific type of stats
13794    // We can't push atoms too closely, so some samples might be skipped
13795    // In order to extrapolate the counts, we need to save the number of skipped stats and add it back
13796    // For example, the true count of an event could be estimated as:
13797    //   SUM(sampling_interval * (num_skipped_sample + 1)) as est_count
13798    optional int32 num_skipped_sample = 2;
13799
13800    // Package UID of the application.
13801    optional int32 uid = 3 [(is_uid) = true];
13802
13803    // Hash of the database name within AppSearch
13804    optional int32 database = 4;
13805
13806    // Needs to be sync with AppSearchResult#ResultCode in
13807    // frameworks/base/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.java
13808    optional int32 status_code = 5;
13809
13810    // Overall time used for query which doesn't include estimated binder latency
13811    optional int32 total_latency_millis = 6;
13812
13813    // Time used to rewrite the search spec.
13814    optional int32 rewrite_search_spec_latency_millis = 7;
13815
13816    // Time used to rewrite the search results.
13817    optional int32 rewrite_search_result_latency_millis = 8;
13818
13819    // Whether it is a global query.
13820    // Needs to be sync with QueryStats#VisibilityScope in
13821    // frameworks/base/apex/appsearch/service/java/com/android/server/appsearch/external/localstorage/stats/QueryStats.java
13822    optional int32 visibility_scope = 9;
13823
13824    // Overall time used for the native function call.
13825    optional int32 native_latency_millis = 10;
13826
13827    // Number of terms in the query string.
13828    optional int32 native_num_terms = 11;
13829
13830    // Length of the query string.
13831    optional int32 native_query_length = 12;
13832
13833    // Number of namespaces filtered.
13834    optional int32 native_num_namespaces_filtered = 13;
13835
13836    // Number of schema types filtered.
13837    optional int32 native_num_schema_types_filtered = 14;
13838
13839    // The requested number of results in one page.
13840    optional int32 native_requested_page_size = 15;
13841
13842    // The actual number of results returned in the current page.
13843    optional int32 native_num_results_returned_current_page = 16;
13844
13845    // Whether the function call is querying the first page. If it's
13846    // not, Icing will fetch the results from cache so that some steps
13847    // may be skipped.
13848    optional bool native_is_first_page = 17;
13849
13850    // Time used to parse the query, including 2 parts: tokenizing and
13851    // transforming tokens into an iterator tree.
13852    optional int32 native_parse_query_latency_millis = 18;
13853
13854    // Strategy of scoring and ranking.
13855    // Needs to be sync with RankingStrategy.Code in google3/third_party/icing/proto/scoring.proto
13856    optional int32 native_ranking_strategy = 19;
13857
13858    // Number of documents scored.
13859    optional int32 native_num_documents_scored = 20;
13860
13861    // Time used to score the raw results.
13862    optional int32 native_scoring_latency_millis = 21;
13863
13864    // Time used to rank the scored results.
13865    optional int32 native_ranking_latency_millis = 22;
13866
13867    // Time used to fetch the document protos. Note that it includes the
13868    // time to snippet if "native_num_results_with_snippets" is NOT zero.
13869    optional int32 native_document_retrieval_latency_millis = 23;
13870
13871    // How many snippets are calculated.
13872    optional int32 native_num_results_with_snippets = 24;
13873
13874    // Time passed while waiting to acquire the lock during Java function calls.
13875    optional int32 java_lock_acquisition_latency_millis = 25;
13876
13877    // Time spent on ACL checking. This is the time spent filtering namespaces
13878    // based on package permissions and Android permission access.
13879    optional int32 acl_check_latency_millis = 26;
13880
13881    // Time passed while waiting to acquire the lock during native function calls.
13882    optional int32 native_lock_acquisition_latency_millis = 27;
13883
13884    // Time used to send data across the JNI boundary from java to native side.
13885    optional int32 java_to_native_jni_latency_millis = 28;
13886
13887    // Time used to send data across the JNI boundary from native to java side.
13888    optional int32 native_to_java_jni_latency_millis = 29;
13889
13890    // The type of the join query.
13891    //
13892    // Needs to be sync with AppSearchSchema#JoinableValueType in
13893    // packages/modules/AppSearch/framework/java/external/android/app/appsearch/AppSearchSchema.java
13894    optional int32 join_type = 30;
13895
13896    // How many total documents were joined to the parent documents.
13897    optional int32 native_num_joined_results_current_page = 31;
13898
13899    // Time taken to join child documents to parent documents.
13900    optional int32 native_join_latency_millis = 32;
13901
13902    //  The Hash of the tag to indicate the query source of this search
13903    optional int32 query_source_log_tag = 33;
13904
13905    // The bitmask for all enabled features on this device. Must be one or a combination of the
13906    // types AppSearchEnabledFeatures.
13907    optional int64 enabled_features = 34;
13908}
13909
13910/**
13911 * Logs detailed stats for remove in AppSearch
13912 *
13913 * Next tag: 10
13914 */
13915message AppSearchRemoveStatsReported {
13916    // The sampling interval for this specific type of stats
13917    // For example, sampling_interval=10 means that one out of every 10 stats was logged.
13918    optional int32 sampling_interval = 1;
13919
13920    // # of previous skipped sample for this specific type of stats
13921    // We can't push atoms too closely, so some samples might be skipped
13922    // In order to extrapolate the counts, we need to save the number of skipped stats and add it back
13923    // For example, the true count of an event could be estimated as:
13924    //   SUM(sampling_interval * (num_skipped_sample + 1)) as est_count
13925    optional int32 num_previous_skipped_sample = 2;
13926
13927    // Package UID of the application.
13928    optional int32 uid = 3 [(is_uid) = true];
13929
13930    // Hash of the database name within AppSearch
13931    optional int32 database = 4;
13932
13933    // Needs to be sync with AppSearchResult#ResultCode in
13934    // frameworks/base/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.java
13935    optional int32 status_code = 5;
13936
13937    // Overall time used for remove including the binder latency
13938    optional int32 total_latency_millis = 6;
13939
13940    // Overall time used for the native function call.
13941    optional int32 native_latency_millis = 7;
13942
13943    // Used to indicate what kind of delete(namespace, schemaType etc) calls deleteByQuery here.
13944    // Needs to be sync with external/icing/proto/icing/proto/logging.proto#DeleteStatsProto
13945    optional int32 native_delete_type = 8;
13946
13947    // Number of documents deleted by this call.
13948    optional int32 native_num_documents_deleted = 9;
13949
13950    // The bitmask for all enabled features on this device. Must be one or a combination of the
13951    // types AppSearchEnabledFeatures.
13952    optional int64 enabled_features = 10;
13953}
13954
13955/**
13956 * Logs detailed stats for optimization in AppSearch.
13957 *
13958 * stats pushed from:
13959 *   frameworks/base/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java
13960 *
13961 * Next tag: 15
13962 */
13963message AppSearchOptimizeStatsReported {
13964    // The sampling interval for this specific type of stats
13965    // For example, sampling_interval=10 means that one out of every 10 stats was logged.
13966    optional int32 sampling_interval = 1;
13967
13968    // # of previous skipped sample for this specific type of stats
13969    // We can't push atoms too closely, so some samples might be skipped
13970    // In order to extrapolate the counts, we need to save the number of skipped stats and add it back
13971    // For example, the true count of an event could be estimated as:
13972    //   SUM(sampling_interval * (num_skipped_sample + 1)) as est_count
13973    optional int32 num_previous_skipped_sample = 2;
13974
13975    // Needs to be sync with AppSearchResult#ResultCode in
13976    // frameworks/base/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.java
13977    optional int32 status_code = 3;
13978
13979    // Overall time used for remove including the binder latency
13980    optional int32 total_latency_millis = 4;
13981
13982    // Overall time used for the native function call.
13983    optional int32 native_latency_millis = 5;
13984
13985    // Time used to optimize the document store in millis.
13986    optional int32 native_document_store_optimize_latency_millis = 6;
13987
13988    // Time used to restore the index in millis.
13989    optional int32 native_index_restoration_latency_millis = 7;
13990
13991    // Number of documents before the optimization.
13992    optional int32 native_num_original_documents = 8;
13993
13994    // Number of documents deleted during the optimization.
13995    optional int32 native_num_deleted_documents = 9;
13996
13997    // Number of documents expired during the optimization.
13998    optional int32 native_num_expired_documents = 10;
13999
14000    // Size of storage in bytes before the optimization.
14001    optional int64 native_storage_size_before_bytes = 11;
14002
14003    // Size of storage in bytes after the optimization.
14004    optional int64 native_storage_size_after_bytes = 12;
14005
14006    // The amount of time in millis since the last optimization ran.
14007    optional int64 native_time_since_last_optimize_millis = 13;
14008
14009    // The bitmask for all enabled features on this device. Must be one or a combination of the
14010    // types AppSearchEnabledFeatures.
14011    optional int64 enabled_features = 14;
14012}
14013
14014// Reports information in external/icing/proto/icing/proto/storage.proto#DocumentStorageInfoProto
14015// Next tag: 15
14016message AppSearchDocumentStorageInfo {
14017    // Total number of alive documents.
14018    optional int32 num_alive_documents = 1;
14019
14020    // Total number of deleted documents.
14021    optional int32 num_deleted_documents = 2;
14022
14023    // Total number of expired documents.
14024    optional int32 num_expired_documents = 3;
14025
14026    // Total size of the document store in bytes. Will be set to -1 if an IO error
14027    // is encountered while calculating this field.
14028    optional int64 document_store_size_bytes = 4;
14029
14030    // Total size of the ground truth in bytes. The ground truth may
14031    // include deleted or expired documents. Will be set to -1 if an IO error is
14032    // encountered while calculating this field.
14033    optional int64 document_log_size_bytes = 5;
14034
14035    // Size of the key mapper in bytes. Will be set to -1 if an IO error is
14036    // encountered while calculating this field.
14037    optional int64 key_mapper_size_bytes = 6;
14038
14039    // Size of the document id mapper in bytes. Will be set to -1 if an IO error
14040    // is encountered while calculating this field.
14041    optional int64 document_id_mapper_size_bytes = 7;
14042
14043    // Size of the score cache in bytes. Will be set to -1 if an IO error is
14044    // encountered while calculating this field.
14045    optional int64 score_cache_size_bytes = 8;
14046
14047    // Size of the filter cache in bytes. Will be set to -1 if an IO error is
14048    // encountered while calculating this field.
14049    optional int64 filter_cache_size_bytes = 9;
14050
14051    // Size of the corpus mapper in bytes. Will be set to -1 if an IO error is
14052    // encountered while calculating this field.
14053    optional int64 corpus_mapper_size_bytes = 10;
14054
14055    // Size of the corpus score cache in bytes. Will be set to -1 if an IO error
14056    // is encountered while calculating this field.
14057    optional int64 corpus_score_cache_size_bytes = 11;
14058
14059    // Size of the namespace id mapper in bytes. Will be set to -1 if an IO error
14060    // is encountered while calculating this field.
14061    optional int64 namespace_id_mapper_size_bytes = 12;
14062
14063    // Number of namespaces seen from the current documents.
14064    optional int32 num_namespaces = 13;
14065
14066    // Storage information of each namespace is not included due to that it has string field.
14067
14068    reserved 14;
14069}
14070
14071// Reports information in external/icing/proto/icing/proto/storage.proto#SchemaStoreStorageInfoProto
14072// Next tag: 5
14073message AppSearchSchemaStoreStorageInfo {
14074    // Size of the schema store in bytes. Will be set to -1 if an IO error is
14075    // encountered while calculating this field.
14076    optional int64 schema_store_size_bytes = 1;
14077
14078    // Total number of schema types.
14079    optional int32 num_schema_types = 2;
14080
14081    // Total number of all sections across all types
14082    optional int32 num_total_sections = 3;
14083
14084    // Total number of types at the current section limit.
14085    optional int32 num_schema_types_sections_exhausted = 4;
14086}
14087
14088// Reports information in external/icing/proto/icing/proto/storage.proto#IndexStorageInfoProto
14089// Next tag: 9
14090message AppSearchIndexStorageInfo {
14091    // Total size of the index in bytes. Will be set to -1 if an IO error is
14092    // encountered while calculating this field.
14093    optional int64 index_size_bytes = 1;
14094
14095    // Size of the lite index lexicon in bytes. Will be set to -1 if an IO error
14096    // is encountered while calculating this field.
14097    optional int64 lite_index_lexicon_size_bytes = 2;
14098
14099    // Size of the lite index hit buffer in bytes. Will be set to -1 if an IO
14100    // error is encountered while calculating this field.
14101    optional int64 lite_index_hit_buffer_size_bytes = 3;
14102
14103    // Size of the main index lexicon in bytes. Will be set to -1 if an IO error
14104    // is encountered while calculating this field.
14105    optional int64 main_index_lexicon_size_bytes = 4;
14106
14107    // Size of the main index storage in bytes. Will be set to -1 if an IO error
14108    // is encountered while calculating this field.
14109    optional int64 main_index_storage_size_bytes = 5;
14110
14111    // Size of one main index block in bytes.
14112    optional int64 main_index_block_size_bytes = 6;
14113
14114    // Number of main index blocks.
14115    optional int32 num_blocks = 7;
14116
14117    // Percentage of the main index blocks that are free, assuming
14118    // allocated blocks are fully used.
14119    optional float min_free_fraction = 8;
14120}
14121
14122/**
14123 * Pulls information about storage information per user from AppSearch
14124 *
14125 * Pulled from:
14126 *   frameworks/base/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java
14127 *
14128 * Next tag: 7
14129 */
14130message AppSearchStorageInfo {
14131    // The associated user (for multi-user feature). Defined in android/os/UserHandle.java
14132    // This is mainly used as a dimension for the metric, but it can also tell us if
14133    // the StorageInfo is for a primary user or secondary user.
14134    optional int32 user = 1;
14135
14136    // Total size of Icing’s storage in bytes. Will be set to -1 if an IO error is
14137    // encountered while calculating this field.
14138    optional int64 total_storage_size_bytes = 2;
14139
14140    // Storage information of the document store.
14141    optional AppSearchDocumentStorageInfo document_storage_info = 3
14142        [(android.os.statsd.log_mode) = MODE_BYTES];
14143
14144    // Storage information of the schema store.
14145    optional AppSearchSchemaStoreStorageInfo schema_store_storage_info = 4
14146        [(android.os.statsd.log_mode) = MODE_BYTES];
14147
14148    // Storage information of the index.
14149    optional AppSearchIndexStorageInfo index_storage_info = 5
14150        [(android.os.statsd.log_mode) = MODE_BYTES];
14151
14152    // The bitmask for all enabled features on this device. Must be one or a combination of the
14153    // types AppSearchEnabledFeatures.
14154    optional int64 enabled_features = 6;
14155}
14156
14157
14158/**
14159 * Reported when AppSearch Contacts Indexer syncs the contacts data from CP2 to AppSearch
14160 *
14161 * Reported from:
14162 *   packages/modules/AppSearch/service/java/com/android/server/appsearch/contactsindexer/ContactsIndexerManagerService.java
14163 *
14164 * Next tag: 18
14165 */
14166message ContactsIndexerUpdateStatsReported {
14167    enum UpdateType {
14168      UNKNOWN = 0;
14169      DELTA = 1;
14170      FULL = 2;
14171    }
14172
14173    // Type of the update
14174    optional UpdateType update_type = 1;
14175
14176    // Latency for the update in millis
14177    optional int32 total_latency_millis = 2;
14178
14179    // Status code to indicate whether the insert new contacts, or update
14180    // existing contacts succeeds, or fails and why
14181    // In case of success, it only contains OK.
14182    // In case of failures, it contains all the possible errors we get.
14183    repeated int32 update_status_codes = 3;
14184
14185    // Status code to indicate whether the delete succeeds, or fails and why
14186    // In case of success, it only contains OK.
14187    // In case of failures, it contains all the possible errors we get.
14188    repeated int32 delete_status_codes = 4;
14189
14190    // Number of new contacts to be updated.
14191    optional int32 number_of_new_contacts_to_be_updated = 5;
14192
14193    // Number of old and new contacts has been successfully updated.
14194    optional int32 number_of_contacts_update_succeeded = 6;
14195
14196    // Number of old contacts has been successfully deleted.
14197    optional int32 number_of_contacts_delete_succeeded = 7;
14198
14199    // Number of old contacts skipped during this update due to no
14200    // significant change.
14201    optional int32 number_of_contacts_update_skipped = 8;
14202
14203    // Number of old and new contacts failed to be updated
14204    optional int32 number_of_contacts_update_failed = 9;
14205
14206    // Number of old contacts failed to be deleted
14207    optional int32 number_of_contacts_delete_failed = 10;
14208
14209    // Number of old contacts to be deleted that were not found
14210    optional int32 number_of_contacts_delete_not_found = 11;
14211
14212    // Start timestamp of the update in millis
14213    optional int64 update_start_timestamp_millis = 12;
14214
14215    // Timestamp of the last full update in millis (not including this update)
14216    optional int64 last_full_update_timestamp_millis = 13;
14217
14218    // Timestamp of the last delta update in millis (not including this update)
14219    optional int64 last_delta_update_timestamp_millis = 14;
14220
14221    // Timestamp of the last contact to be updated from CP2 in millis
14222    optional int64 last_contact_updated_timestamp_millis = 15;
14223
14224    // Timestamp of the last contact to be deleted from CP2 in millis
14225    optional int64 last_contact_deleted_timestamp_millis = 16;
14226
14227    // The previous update's last_contact_updated_timestamp_millis
14228    // This field is only set for a full update and expected to match
14229    // last_contacted_update_timestamp_millis. If the fields do not match, then we
14230    // were unexpectedly not synced up with CP2 at the time of the update.
14231    optional int64 previous_last_contact_updated_timestamp_millis = 17;
14232}
14233
14234/**
14235 * Reported when the RebootEscrow HAL has attempted to recover the escrowed
14236 * key to indicate whether it was successful or not.
14237 *
14238 * Logged from:
14239 *   frameworks/base/services/core/java/com/android/server/locksettings/RebootEscrowManager.java
14240 */
14241message RebootEscrowRecoveryReported {
14242    // Type of the resume on reboot backend provider.
14243    enum ServiceType {
14244        UNKNOWN = 0;
14245        HAL = 1;
14246        SERVER_BASED = 2;
14247    }
14248
14249    // Whether the vbmeta digest of the current slot matches a precomputed value before reboot.
14250    enum VbmetaDigestStatus {
14251        MATCH_EXPECTED_SLOT = 0;
14252        MATCH_FALLBACK_SLOT = 1;
14253        MISMATCH = 2;
14254    }
14255
14256    optional bool successful = 1;
14257    // The error code for escrow data recovery failure
14258    optional int32 error_code = 2;
14259
14260    optional ServiceType type = 3;
14261
14262    // Number of retries to unwrap the escrow key asynchronously.
14263    optional int32 get_escrow_key_retry_count = 4;
14264
14265    // The duration between storing of reboot escrow key ->
14266    // use of reboot escrow key to unlock CE after reboot
14267    optional int32 duration_escrow_key_storage_to_unlock_seconds = 5;
14268
14269    optional VbmetaDigestStatus vbmeta_digest_status = 6;
14270
14271    // The duration between boot complete -> CE unlock
14272    optional int32 duration_boot_complete_to_unlock_seconds = 7;
14273}
14274
14275/**
14276 * Global display pipeline metrics reported by SurfaceFlinger.
14277 * Metrics exist beginning in Android 11.
14278 * There is a copy of this proto in timestats_atoms.proto in SurfaceFlinger.
14279 * That proto must be updated if this atom is updated.
14280 *
14281 * Pulled from:
14282 *    frameworks/native/services/surfaceflinger/TimeStats/TimeStats.cpp
14283 */
14284message SurfaceflingerStatsGlobalInfo {
14285    // Aggregated refresh rate buckets that layers were presenting at. Buckets
14286    // are defined in SurfaceFlinger and are tracked per device.
14287    // Introduced in Android 12.
14288    // This is intended to be used as a dimenstion in collecting per-refresh rate
14289    // jank statistics.
14290    optional int32 display_refresh_rate_bucket = 18;
14291    // Aggregated render rate buckets that layers were overridden to run at.
14292    // Buckets are defined in SurfaceFlinger and are tracked per device.
14293    // Introduced in Android 12.
14294    // This is intended to be used as a dimension in collecting per-render rate
14295    // jank statistics.
14296    optional int32 render_rate_bucket = 21;
14297    // Total number of frames presented during the tracing period
14298    // Note: This stat is not sliced by dimension. It will be duplicated for metrics
14299    // using render_rate_bucket as a dimension.
14300    optional int64 total_frames = 1;
14301    // Total number of frames missed
14302    // Note: This stat is not sliced by dimension. It will be duplicated for metrics
14303    // using render_rate_bucket as a dimension.
14304    optional int64 missed_frames = 2;
14305    // Total number of frames that fell back to client composition
14306    // Note: This stat is not sliced by dimension. It will be duplicated for metrics
14307    // using render_rate_bucket as a dimension.
14308    optional int64 client_composition_frames = 3;
14309    // Total time the display was turned on
14310    // Note: This stat is not sliced by dimension. It will be duplicated for metrics
14311    // using render_rate_bucket as a dimension.
14312    optional int64 display_on_millis = 4;
14313    // Total time that was spent performing animations.
14314    // This is derived from the present-to-present layer histogram.
14315    // Note: This stat is not sliced by dimension. It will be duplicated for metrics
14316    // using render_rate_bucket as a dimension.
14317    optional int64 animation_millis = 5;
14318    // Total number of event connections tracked by SurfaceFlinger at the time
14319    // of this pull. If this number grows prohibitively large, then this can
14320    // cause jank due to resource contention.
14321    // Note: This stat is not sliced by dimension. It will be duplicated for metrics
14322    // using render_rate_bucket as a dimension.
14323    optional int32 event_connection_count = 6;
14324    // Set of timings measured from when SurfaceFlinger began compositing a
14325    // frame, until the frame was requested to be presented to the display. This
14326    // measures SurfaceFlinger's total CPU walltime on the critical path per
14327    // frame.
14328    // Note: This stat is not sliced by dimension. It will be duplicated for metrics
14329    // using render_rate_bucket as a dimension.
14330    optional FrameTimingHistogram frame_duration = 7
14331        [(android.os.statsd.log_mode) = MODE_BYTES];
14332    // Set of timings measured from when SurfaceFlinger first began using the
14333    // GPU to composite a frame, until the GPU has finished compositing that
14334    // frame. This measures the total additional time SurfaceFlinger needed to
14335    // perform due to falling back into GPU composition.
14336    // Note: This stat is not sliced by dimension. It will be duplicated for metrics
14337    // using render_rate_bucket as a dimension.
14338    optional FrameTimingHistogram render_engine_timing = 8
14339        [(android.os.statsd.log_mode) = MODE_BYTES];
14340    // Number of frames where SF saw a frame, based on its frame timeline.
14341    // Frame timelines may include transactions without updating buffer contents.
14342    // Introduced in Android 12.
14343    optional int32 total_timeline_frames = 9;
14344    // Number of frames where SF saw a janky frame.
14345    // Introduced in Android 12.
14346    optional int32 total_janky_frames = 10;
14347    // Number of janky frames where SF spent a long time on the CPU.
14348    // Introduced in Android 12.
14349    optional int32 total_janky_frames_with_long_cpu = 11;
14350    // Number of janky frames where SF spent a long time on the GPU.
14351    // Introduced in Android 12.
14352    optional int32 total_janky_frames_with_long_gpu = 12;
14353    // Number of janky frames where SF missed the frame deadline, but there
14354    // was not an attributed reason (e.g., maybe HWC missed?)
14355    // Introduced in Android 12.
14356    optional int32 total_janky_frames_sf_unattributed = 13;
14357    // Number of janky frames where the app missed the frame deadline, but
14358    // there was not an attributed reason
14359    // Introduced in Android 12.
14360    optional int32 total_janky_frames_app_unattributed = 14;
14361    // Number of janky frames that were caused because of scheduling errors in
14362    // SF that resulted in early present (e.g., SF sending a buffer to the
14363    // composition engine earlier than expected, resulting in a present that is
14364    // one vsync early)
14365    // Introduced in Android 12.
14366    optional int32 total_janky_frames_sf_scheduling = 15;
14367    // Number of frames that were classified as jank because of possible drift in
14368    // vsync predictions.
14369    // Introduced in Android 12.
14370    optional int32 total_jank_frames_sf_prediction_error = 16;
14371    // Number of janky frames where the app was in a buffer stuffed state (more
14372    // than one buffer ready to be presented at the same vsync). Usually caused
14373    // when the first frame is unusually long, the following frames enter into a
14374    // stuffed state.
14375    // Introduced in Android 12.
14376    optional int32 total_jank_frames_app_buffer_stuffing = 17;
14377    // Buckets of timings in ms by which SurfaceFlinger's deadline was missed
14378    // while latching and presenting frames.
14379    // Introduced in Android 12.
14380    optional FrameTimingHistogram sf_deadline_misses = 19
14381        [(android.os.statsd.log_mode) = MODE_BYTES];
14382    // Buckets of timings in ms by which the Vsync prediction drifted, when
14383    // compared to the actual hardware vsync.
14384    // Introduced in Android 12.
14385    optional FrameTimingHistogram sf_prediction_errors = 20
14386        [(android.os.statsd.log_mode) = MODE_BYTES];
14387
14388    // Next ID: 22
14389}
14390
14391/**
14392 * Per-layer display pipeline metrics reported by SurfaceFlinger.
14393 * Metrics exist beginning in Android 11.
14394 * The number of layers uploaded may be restricted due to size limitations.
14395 * There is a copy of this proto in timestats_atoms.proto in SurfaceFlinger.
14396 * That proto must be updated if this atom is updated.
14397 *
14398 * Pulled from:
14399 *    frameworks/native/services/surfaceflinger/TimeStats/TimeStats.cpp
14400 */
14401message SurfaceflingerStatsLayerInfo {
14402    // UID of the application who submitted this layer for presentation
14403    // This is intended to be used as a dimension for surfacing rendering
14404    // statistics to applications.
14405    // Introduced in Android 12.
14406    optional int32 uid = 12 [(is_uid) = true];
14407    // Refresh rate bucket that the layer was presenting at. Buckets are
14408    // defined in SurfaceFlinger and are tracked per device.
14409    // Introduced in Android 12.
14410    // This is intended to be used as a dimension in collecting per-refresh rate
14411    // jank statistics
14412    optional int32 display_refresh_rate_bucket = 22;
14413    // Render rate bucket that the layer was submitting frames at. Buckets are
14414    // defined in SurfaceFlinger and are tracked per device.
14415    // Introduced in Android 12.
14416    // This is intended to be used as a dimension in collecting per-render rate
14417    // jank statistics.
14418    optional int32 render_rate_bucket = 23;
14419
14420    // Game modes are used only for integrating with GameManager.
14421    enum GameMode {
14422         GAME_MODE_UNSPECIFIED = 0;
14423         GAME_MODE_UNSUPPORTED = 1;
14424         GAME_MODE_STANDARD = 2;
14425         GAME_MODE_PERFORMANCE = 3;
14426         GAME_MODE_BATTERY = 4;
14427         GAME_MODE_CUSTOM = 5;
14428    }
14429
14430    // Game mode that the layer was running at. Used to track user engagement
14431    // in different modes. The modes are defined in GameManager.java
14432    // All non-game layers will have this field set to UNSUPPORTED.
14433    // Introduced in Android 12
14434    // This is intended to be used as a dimension in collecting per-game mode
14435    // fps and frame related metrics.
14436    optional GameMode game_mode = 26;
14437    // The layer for this set of metrics
14438    // In many scenarios the package name is included in the layer name, e.g.,
14439    // layers created by Window Manager. But this is not a guarantee - in the
14440    // general case layer names are arbitrary debug names.
14441    optional string layer_name = 1;
14442    // Total number of frames presented
14443    optional int64 total_frames = 2;
14444    // Total number of dropped frames while latching a buffer for this layer.
14445    optional int64 dropped_frames = 3;
14446    // Set of timings measured between successive presentation timestamps.
14447    optional FrameTimingHistogram present_to_present = 4
14448        [(android.os.statsd.log_mode) = MODE_BYTES];
14449    // Variability histogram of present_to_present timings.
14450    optional FrameTimingHistogram present_to_present_delta = 27
14451        [(android.os.statsd.log_mode) = MODE_BYTES];
14452    // Set of timings measured from when an app queued a buffer for
14453    // presentation, until the buffer was actually presented to the
14454    // display.
14455    optional FrameTimingHistogram post_to_present = 5
14456        [(android.os.statsd.log_mode) = MODE_BYTES];
14457    // Set of timings measured from when a buffer is ready to be presented,
14458    // until the buffer was actually presented to the display.
14459    optional FrameTimingHistogram acquire_to_present = 6
14460        [(android.os.statsd.log_mode) = MODE_BYTES];
14461    // Set of timings measured from when a buffer was latched by
14462    // SurfaceFlinger, until the buffer was presented to the display
14463    optional FrameTimingHistogram latch_to_present = 7
14464        [(android.os.statsd.log_mode) = MODE_BYTES];
14465    // Set of timings measured from the desired presentation to the actual
14466    // presentation time
14467    optional FrameTimingHistogram desired_to_present = 8
14468        [(android.os.statsd.log_mode) = MODE_BYTES];
14469    // Set of timings measured from when an app queued a buffer for
14470    // presentation, until the buffer was ready to be presented.
14471    optional FrameTimingHistogram post_to_acquire = 9
14472        [(android.os.statsd.log_mode) = MODE_BYTES];
14473    // Frames missed latch because the acquire fence didn't fire
14474    optional int64 late_acquire_frames = 10;
14475    // Frames latched early because the desired present time was bad
14476    optional int64 bad_desired_present_frames = 11;
14477    // Number of frames where SF saw a frame, based on its frame timeline.
14478    // Frame timelines may include transactions without updating buffer contents.
14479    // Introduced in Android 12.
14480    optional int32 total_timeline_frames = 13;
14481    // Number of frames where SF saw a janky frame.
14482    // Introduced in Android 12.
14483    optional int32 total_janky_frames = 14;
14484    // Number of janky frames where SF spent a long time on the CPU.
14485    // Introduced in Android 12.
14486    optional int32 total_janky_frames_with_long_cpu = 15;
14487    // Number of janky frames where SF spent a long time on the GPU.
14488    // Introduced in Android 12.
14489    optional int32 total_janky_frames_with_long_gpu = 16;
14490    // Number of janky frames where SF missed the frame deadline, but there
14491    // was not an attributed reason (e.g., maybe HWC missed?)
14492    // Introduced in Android 12.
14493    optional int32 total_janky_frames_sf_unattributed = 17;
14494    // Number of janky frames where the app missed the frame deadline, but
14495    // there was not an attributed reason
14496    // Introduced in Android 12.
14497    optional int32 total_janky_frames_app_unattributed = 18;
14498    // Number of janky frames that were caused because of scheduling errors in
14499    // SF that resulted in early present (e.g., SF sending a buffer to the
14500    // composition engine earlier than expected, resulting in a present that is
14501    // one vsync early)
14502    // Introduced in Android 12.
14503    optional int32 total_janky_frames_sf_scheduling = 19;
14504    // Number of frames that were classified as jank because of possible drift in
14505    // vsync predictions.
14506    // Introduced in Android 12.
14507    optional int32 total_jank_frames_sf_prediction_error = 20;
14508    // Number of janky frames where the app was in a buffer stuffed state (more
14509    // than one buffer ready to be presented at the same vsync). Usually caused
14510    // when the first frame is unusually long, the following frames enter into a
14511    // stuffed state.
14512    // Introduced in Android 12.
14513    optional int32 total_jank_frames_app_buffer_stuffing = 21;
14514
14515    /**
14516     * Encapsulates the FrameRateVote information sent by the application while
14517     * calling setFrameRate.
14518     * Metrics exist beginning in Android 12.
14519     */
14520    message SetFrameRateVote {
14521        // The desired frame rate the application wishes to run on.
14522        optional float frame_rate = 1;
14523
14524        enum FrameRateCompatibility {
14525            FRAME_RATE_UNDEFINED = 0;
14526            FRAME_RATE_DEFAULT = 1;
14527            FRAME_RATE_EXACT_OR_MULTIPLE = 2;
14528        }
14529
14530        // Specifies how to interpret the frame rate associated with the layer.
14531        // Defined in Layer.h
14532        optional FrameRateCompatibility frame_rate_compatibility = 2;
14533
14534        enum Seamlessness {
14535            SEAMLESS_UNDEFINED = 0;
14536            SEAMLESS_SHOULD_BE_SEAMLESS = 1;
14537            SEAMLESS_NOT_REQUIRED = 2;
14538        }
14539        // Indicates whether seamless refresh rate switch is required or not.
14540        optional Seamlessness seamlessness = 3;
14541    }
14542
14543    // The last frame rate vote set by the application.
14544    // Introduced in Android 12.
14545    optional SetFrameRateVote set_frame_rate_vote = 24
14546        [(android.os.statsd.log_mode) = MODE_BYTES];
14547    // Buckets of timings in ms by which the app deadline was missed while
14548    // submitting work for a frame.
14549    // Introduced in Android 12.
14550    optional FrameTimingHistogram app_deadline_misses = 25
14551        [(android.os.statsd.log_mode) = MODE_BYTES];
14552
14553    // Next ID: 28
14554}
14555
14556/**
14557 * Histogram of frame counts bucketed by time in milliseconds.
14558 * Because of size limitations, we hard-cap the number of buckets, with
14559 * buckets for corresponding to larger milliseconds being less precise.
14560 */
14561message FrameTimingHistogram {
14562    // Timings in milliseconds that describes a set of histogram buckets
14563    repeated int32 time_millis_buckets = 1;
14564    // Number of frames that match to each time_millis, i.e. the bucket
14565    // contents
14566    // It's required that len(time_millis) == len(frame_count)
14567    repeated int64 frame_counts = 2;
14568}
14569
14570/**
14571 * Janky event as reported by SurfaceFlinger.
14572 * This event is intended to be consumed by a Perfetto subscriber for
14573 * automated trace collection.
14574 *
14575 * Logged from:
14576 *    frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
14577 */
14578message DisplayJankReported {
14579    // Informational field for how long the janky event lasted in milliseconds
14580    optional int64 event_duration_millis = 1;
14581    // Number of frame deadlines missed, where SurfaceFlinger failed to update
14582    // the display on time.
14583    optional int32 present_deadlines_missed = 2;
14584}
14585
14586message CameraStreamProto {
14587    // The stream width (in pixels)
14588    optional int32 width = 1;
14589    // The stream height (in pixels)
14590    optional int32 height = 2;
14591    // The format of the stream
14592    optional int32 format = 3;
14593    // The dataspace of the stream
14594    optional int32 data_space = 4;
14595    // The usage flag of the stream
14596    optional int64 usage = 5;
14597
14598    // The number of requests for this stream
14599    optional int64 request_count = 6;
14600    // The number of buffer error for this stream
14601    optional int64 error_count = 7;
14602    // The capture latency of first request for this stream
14603    optional int32 first_capture_latency_millis = 8;
14604
14605    // The maximum number of hal buffers
14606    optional int32 max_hal_buffers = 9;
14607    // The maximum number of app buffers
14608    optional int32 max_app_buffers = 10;
14609
14610    // Type of stream histogram
14611    // 1: Capture latency: bin size in milliseconds
14612    enum HistogramType {
14613        UNKNOWN = 0;
14614        CAPTURE_LATENCY = 1;
14615    }
14616    optional HistogramType histogram_type = 11;
14617    // The boundary values between histogram bins
14618    // Expected number of fields: 9
14619    repeated float histogram_bins = 12;
14620    // The frame counts for each histogram bins
14621    // Expected number of fields: 10
14622    repeated int64 histogram_counts = 13;
14623    // The dynamic range profile of the stream
14624    optional int64 dynamic_range_profile = 14;
14625    // The stream use case
14626    optional int64 stream_use_case = 15;
14627    // The color space
14628    optional int32 color_space = 16;
14629}
14630
14631/**
14632 * Information about camera facing and API level usage.
14633 * Logged from:
14634 *   frameworks/base/services/core/java/com/android/server/camera/CameraServiceProxy.java
14635 */
14636message CameraActionEvent {
14637    // Camera session duration in milliseconds if action is SESSION.
14638    // 0 if action is OPEN or CLOSE.
14639    optional int64 duration_millis = 1;
14640
14641    // Camera API level used.
14642    // 1 for camera1 API, and 2 for camera2 API.
14643    optional int32 api_level = 2;
14644
14645    // Name of client package
14646    optional string package_name = 3;
14647
14648    // Camera facing
14649    enum Facing {
14650        UNKNOWN = 0;
14651        BACK = 1;
14652        FRONT = 2;
14653        EXTERNAL = 3;
14654    }
14655    optional Facing facing = 4;
14656
14657    // Camera ID
14658    optional string camera_id = 5;
14659
14660    // Camera action type
14661    enum Action {
14662        UNKNOWN_ACTION = 0;
14663        OPEN = 1;
14664        CLOSE = 2;
14665        SESSION = 3;
14666    }
14667    optional Action action = 6;
14668
14669    // Whether the client is accessing camera using ndk
14670    optional bool is_ndk = 7;
14671
14672    // Action OPEN: Open latency
14673    // Action CLOSE: Close latency
14674    // Action SESSION: Camera session creation duration.
14675    //                 If this entry is reusing an existing session, the value is -1.
14676    optional int32 latency_millis = 8;
14677
14678    // session type: 0 for normal mode, 1 for constrained high speed mode
14679    optional int32 operating_mode = 9;
14680
14681    // If actioh is SESSION: number of internal reconfigurations
14682    // Else: 0
14683    optional int32 internal_reconfig = 10;
14684
14685    // Number of requests for this capture session. Only applicable to SESSION
14686    // action.
14687    optional int64 request_count = 11;
14688    // Number of result errors. Only applicable to SESSION action.
14689    optional int64 result_error_count = 12;
14690    // Whether the device runs into error state.
14691    optional bool device_error = 13;
14692
14693    // If action is SESSION: Stream states
14694    // Else: stream_count = 0
14695    optional int32 stream_count = 14;
14696    optional CameraStreamProto stream_1 = 15 [(log_mode) = MODE_BYTES];
14697    optional CameraStreamProto stream_2 = 16 [(log_mode) = MODE_BYTES];
14698    optional CameraStreamProto stream_3 = 17 [(log_mode) = MODE_BYTES];
14699    optional CameraStreamProto stream_4 = 18 [(log_mode) = MODE_BYTES];
14700    optional CameraStreamProto stream_5 = 19 [(log_mode) = MODE_BYTES];
14701
14702    // User tag string for this session
14703    optional string user_tag = 20;
14704
14705    // Video stabilization mode
14706    // Original type: uint8_t
14707    optional int32 video_stabilization_mode = 21 [default = -1];
14708
14709    // Identifier to correlate different Action events to each other
14710    // Not unique. Must be used with build fingerprint to generate a
14711    // good enough identifier.
14712    optional int64 log_id = 22;
14713
14714    // 0 for OPEN and CLOSE
14715    // ordinal of the SESSION between OPEN and CLOSE
14716    optional int32 session_idx = 23;
14717
14718    // Start: Extension metrics.
14719    // These will only be set for SESSION which use camera2 extensions
14720
14721    // Should match CameraExtensionCharacteristics#EXTENSION_*
14722    enum ExtensionSessionType {
14723        EXTENSION_NONE = -1;
14724        EXTENSION_AUTOMATIC = 0;
14725        EXTENSION_FACE_RETOUCH = 1;
14726        EXTENSION_BOKEH = 2;
14727        EXTENSION_HDR = 3;
14728        EXTENSION_NIGHT = 4;
14729
14730    }
14731
14732    // Type of camera extension being used
14733    optional ExtensionSessionType ext_type = 24 [default = EXTENSION_NONE];
14734
14735    // Whether advanced extensions session is being used
14736    optional bool ext_is_advanced = 25;
14737    // End: Extension Metrics
14738
14739    optional bool used_ultrawide = 26;
14740
14741    optional bool used_zoom_override = 27;
14742
14743    optional int32 most_requested_fps_range_min = 28;
14744    optional int32 most_requested_fps_range_max = 29;
14745
14746    // Extension metric
14747    optional int32 ext_capture_format = 30;
14748}
14749
14750/**
14751 * Logs when a compatibility change is affecting an app.
14752 *
14753 * Logged from:
14754 *   frameworks/base/core/java/android/app/AppCompatCallbacks.java and
14755 *   frameworks/base/services/core/java/com/android/server/compat/PlatformCompat.java
14756 */
14757message AppCompatibilityChangeReported {
14758    // The UID of the app being affected by the compatibilty change.
14759    optional int32 uid = 1 [(is_uid) = true];
14760
14761    // The ID of the change affecting the app.
14762    optional int64 change_id = 2;
14763
14764    enum State {
14765        UNKNOWN_STATE = 0;
14766        ENABLED = 1;
14767        DISABLED = 2;
14768        LOGGED = 3;
14769    }
14770
14771    // The state of the change - if logged from gating whether it was enabled or disabled, or just
14772    // logged otherwise.
14773    optional State state = 3;
14774
14775    enum Source {
14776        UNKNOWN_SOURCE = 0;
14777        APP_PROCESS = 1;
14778        SYSTEM_SERVER = 2;
14779    }
14780
14781    // Where it was logged from.
14782    optional Source source = 4;
14783
14784}
14785
14786/**
14787 * Logged from
14788 *     external/perfetto/src/perfetto_cmd/perfetto_cmd.cc
14789 *     external/perfetto/src/tracing/service/tracing_service_impl.cc
14790 */
14791message PerfettoUploaded {
14792    // TODO(lalitm): many of the atoms below should be renamed to have a
14793    // "PERFETTO_CMD" prefix to make clear they are specific to perfetto_cmd.
14794    // This state exists because of legacy reasons (i.e. these values existed
14795    // before go/perfetto-monitoring was a thing).
14796    // Next id: 60.
14797    enum Event {
14798        PERFETTO_UNDEFINED = 0;
14799
14800        // Checkpoints inside perfetto_cmd before tracing is finished.
14801        PERFETTO_TRACE_BEGIN = 1;
14802        PERFETTO_BACKGROUND_TRACE_BEGIN = 2;
14803        PERFETTO_CMD_CLONE_TRACE_BEGIN = 55;
14804        PERFETTO_CMD_CLONE_TRIGGER_TRACE_BEGIN = 56;
14805        PERFETTO_ON_CONNECT = 3;
14806        PERFETTO_CMD_ON_SESSION_CLONE = 58;
14807        PERFETTO_CMD_ON_TRIGGER_CLONE = 59;
14808
14809        // Guardrails inside perfetto_cmd before tracing is finished.
14810        PERFETTO_ON_TIMEOUT = 16;
14811        PERFETTO_CMD_USER_BUILD_TRACING_NOT_ALLOWED = 43;
14812
14813        // Checkpoints inside traced.
14814        PERFETTO_TRACED_ENABLE_TRACING = 37;
14815        PERFETTO_TRACED_START_TRACING = 38;
14816        PERFETTO_TRACED_DISABLE_TRACING = 39;
14817        PERFETTO_TRACED_NOTIFY_TRACING_DISABLED = 40;
14818
14819        // Trigger checkpoints inside traced.
14820        // These atoms are special because, along with the UUID,
14821        // they log the trigger name.
14822        PERFETTO_TRACED_TRIGGER_START_TRACING = 41;
14823        PERFETTO_TRACED_TRIGGER_STOP_TRACING = 42;
14824        PERFETTO_TRACED_TRIGGER_CLONE_SNAPSHOT = 53;
14825
14826        // Guardrails inside traced.
14827        PERFETTO_TRACED_ENABLE_TRACING_EXISTING_TRACE_SESSION = 18;
14828        PERFETTO_TRACED_ENABLE_TRACING_TOO_LONG_TRACE = 19;
14829        PERFETTO_TRACED_ENABLE_TRACING_INVALID_TRIGGER_TIMEOUT = 20;
14830        PERFETTO_TRACED_ENABLE_TRACING_DURATION_WITH_TRIGGER = 21;
14831        PERFETTO_TRACED_ENABLE_TRACING_STOP_TRACING_WRITE_INTO_FILE = 22;
14832        PERFETTO_TRACED_ENABLE_TRACING_DUPLICATE_TRIGGER_NAME = 23;
14833        PERFETTO_TRACED_ENABLE_TRACING_INVALID_DEFERRED_START = 24;
14834        PERFETTO_TRACED_ENABLE_TRACING_INVALID_BUFFER_SIZE = 25;
14835        PERFETTO_TRACED_ENABLE_TRACING_BUFFER_SIZE_TOO_LARGE = 26;
14836        PERFETTO_TRACED_ENABLE_TRACING_TOO_MANY_BUFFERS = 27;
14837        PERFETTO_TRACED_ENABLE_TRACING_DUPLICATE_SESSION_NAME = 28;
14838        PERFETTO_TRACED_ENABLE_TRACING_SESSION_NAME_TOO_RECENT = 29;
14839        PERFETTO_TRACED_ENABLE_TRACING_TOO_MANY_SESSIONS_FOR_UID = 30;
14840        PERFETTO_TRACED_ENABLE_TRACING_TOO_MANY_CONCURRENT_SESSIONS = 31;
14841        PERFETTO_TRACED_ENABLE_TRACING_INVALID_FD_OUTPUT_FILE = 32;
14842        PERFETTO_TRACED_ENABLE_TRACING_FAILED_TO_CREATE_FILE = 33;
14843        PERFETTO_TRACED_ENABLE_TRACING_OOM = 34;
14844        PERFETTO_TRACED_ENABLE_TRACING_UNKNOWN_ERROR = 35;
14845        PERFETTO_TRACED_START_TRACING_INVALID_SESSION_STATE = 36;
14846        PERFETTO_TRACED_ENABLE_TRACING_INVALID_FILTER = 47;
14847        PERFETTO_TRACED_ENABLE_TRACING_OOB_TARGET_BUFFER = 48;
14848        PERFETTO_TRACED_ENABLE_TRACING_INVALID_TRIGGER_MODE = 52;
14849        PERFETTO_TRACED_ENABLE_TRACING_INVALID_BR_FILENAME = 54;
14850        PERFETTO_TRACED_ENABLE_TRACING_FAILED_SESSION_SEMAPHORE_CHECK = 57;
14851
14852        // Checkpoints inside perfetto_cmd after tracing has finished.
14853        PERFETTO_ON_TRACING_DISABLED = 4;
14854        PERFETTO_FINALIZE_TRACE_AND_EXIT = 11;
14855        PERFETTO_CMD_FW_REPORT_BEGIN = 49;
14856        // Will be removed once incidentd is no longer used.
14857        PERFETTO_UPLOAD_INCIDENT_BEGIN = 8;
14858
14859        // Guardrails inside perfetto_cmd after tracing has finished.
14860        PERFETTO_CMD_FW_REPORT_EMPTY_TRACE = 50;
14861        // Will be removed once incidentd is no longer used.
14862        PERFETTO_UPLOAD_INCIDENT_FAILURE = 10;
14863        PERFETTO_NOT_UPLOADING_EMPTY_TRACE = 17;
14864
14865        // "Successful" terminal states inside perfetto_cmd.
14866        PERFETTO_CMD_FW_REPORT_HANDOFF = 51;
14867
14868        // Deprecated as "success" is misleading; it simply means we were
14869        // able to communicate with incidentd. Will be removed once
14870        // incidentd is no longer used.
14871        PERFETTO_UPLOAD_INCIDENT_SUCCESS = 9 [deprecated = true];
14872
14873        // Contained trigger begin/success/failure. Replaced by
14874        // |PerfettoTriggerAtom| to allow aggregation using a count metric
14875        // and reduce spam.
14876        reserved 12, 13, 14;
14877
14878        // Contained that a guardrail in perfetto_cmd was hit. Replaced with
14879        // kCmd* guardrails.
14880        reserved 15;
14881
14882        // Contained status of Dropbox uploads. Removed as Perfetto no
14883        // longer supports uploading traces using Dropbox.
14884        reserved 5, 6, 7;
14885
14886        // Contained status of guardrail state initialization and upload limit
14887        // in perfetto_cmd. Removed as perfetto no longer manages stateful
14888        // guardrails
14889        reserved 44, 45, 46;
14890    }
14891
14892    // Which stage of the pipeline we are reporting from.
14893    optional Event event = 1;
14894
14895    // UUID matching the one set inside the SystemInfo trace packet.
14896    optional int64 trace_uuid_lsb = 2;
14897    optional int64 trace_uuid_msb = 3;
14898
14899    // For trigger checkpoints inside traced, contains the trigger name
14900    // associated with this trace UUID.
14901    optional string trigger_name = 4;
14902}
14903
14904/**
14905 * Logged from
14906 *     external/perfetto/src/tracing/service/tracing_service_impl.cc
14907 */
14908message PerfettoTrigger {
14909    enum Event {
14910        PERFETTO_UNDEFINED = 0;
14911
14912        PERFETTO_TRACED_LIMIT_PROBABILITY = 5;
14913        PERFETTO_TRACED_LIMIT_MAX_PER_24_H = 6;
14914
14915        PERFETTO_TRACED_TRIGGER = 9;
14916
14917        // Contained events of logging triggers through perfetto_cmd, probes and
14918        // trigger_perfetto. Obsolete because of logging dirctly in traced instead.
14919        // Removed in W (Oct 2024) and replaced by |kTracedTrigger|.
14920        PERFETTO_CMD_TRIGGER = 1 [deprecated = true];
14921        PERFETTO_CMD_TRIGGER_FAIL = 2 [deprecated = true];
14922
14923        PERFETTO_TRIGGER_PERFETTO_TRIGGER = 3 [deprecated = true];
14924        PERFETTO_TRIGGER_PERFETTO_TRIGGER_FAIL = 4 [deprecated = true];
14925
14926        PERFETTO_PROBES_PRODUCER_TRIGGER = 7 [deprecated = true];
14927        PERFETTO_PROBES_PRODUCER_TRIGGER_FAIL = 8 [deprecated = true];
14928    }
14929
14930    // The event which fired.
14931    optional Event event = 1;
14932
14933    // The name of the trigger which fired.
14934    optional string trigger_name = 2;
14935}
14936
14937/**
14938 * Pulls client metrics on data transferred via Vehicle Maps Service.
14939 * Metrics are keyed by uid + layer.
14940 *
14941 * Pulled from:
14942 *   packages/services/Car/service/src/com/android/car/stats/CarStatsService.java
14943 */
14944message VmsClientStats {
14945    // UID of the VMS client app
14946    optional int32 uid = 1 [(is_uid) = true];
14947
14948    // VMS layer definition
14949    optional int32 layer_type = 2;
14950    optional int32 layer_channel = 3;
14951    optional int32 layer_version = 4;
14952
14953    // Bytes and packets sent by the client for the layer
14954    optional int64 tx_bytes = 5;
14955    optional int64 tx_packets = 6;
14956
14957    // Bytes and packets received by the client for the layer
14958    optional int64 rx_bytes = 7;
14959    optional int64 rx_packets = 8;
14960
14961    // Bytes and packets dropped due to client error
14962    optional int64 dropped_bytes = 9;
14963    optional int64 dropped_packets = 10;
14964}
14965
14966/**
14967 * State of a all permission requested by a package - sampled
14968 * Pulled from: StatsCompanionService.java with data obtained from PackageManager API
14969*/
14970message DangerousPermissionStateSampled {
14971    // Name of the permission
14972    optional string permission_name = 1;
14973
14974    // Uid of the package
14975    optional int32 uid = 2 [(is_uid) = true];
14976
14977    // If the permission is granted to the uid
14978    optional bool is_granted = 3;
14979
14980    // Permission flags as per android.content.pm.PermissionFlags
14981    optional int32 permission_flags = 4;
14982
14983    // Permission protection flags as per android.content.pm.PermissionInfo.ProtectionFlags
14984    optional int32 protection_flags = 5;
14985}
14986
14987/**
14988 * HWUI stats for a given app.
14989 */
14990message GraphicsStats {
14991    // The package name of the app
14992    optional string package_name = 1;
14993
14994    // The version code of the app
14995    optional int64 version_code = 2;
14996
14997    // The uid of the app
14998    optional int32 uid = 17 [(is_uid) = true];
14999
15000    // The start & end timestamps in UTC as
15001    // milliseconds since January 1, 1970
15002    // Compatible with java.util.Date#setTime()
15003    optional int64 start_millis = 3;
15004
15005    optional int64 end_millis = 4;
15006
15007    // HWUI renders pipeline type: GL (1) or Vulkan (2).
15008    enum PipelineType {
15009        UNKNOWN = 0;
15010        GL = 1;
15011        VULKAN = 2;
15012    }
15013
15014    // HWUI renders pipeline type: GL or Vulkan.
15015    optional PipelineType pipeline = 5;
15016
15017    // Distinct frame count.
15018    optional int32 total_frames = 6;
15019
15020    // Number of "missed vsync" events.
15021    optional int32 missed_vsync_count = 7;
15022
15023    // Number of frames in triple-buffering scenario (high input latency)
15024    optional int32 high_input_latency_count = 8;
15025
15026    // Number of "slow UI thread" events.
15027    optional int32 slow_ui_thread_count = 9;
15028
15029    // Number of "slow bitmap upload" events.
15030    optional int32 slow_bitmap_upload_count = 10;
15031
15032    // Number of "slow draw" events.
15033    optional int32 slow_draw_count = 11;
15034
15035    // Number of frames that missed their deadline (aka, visibly janked)
15036    optional int32 missed_deadline_count = 12;
15037
15038    // The frame time histogram for the package
15039    optional FrameTimingHistogram cpu_histogram = 13
15040    [(android.os.statsd.log_mode) = MODE_BYTES];
15041
15042    // The gpu frame time histogram for the package
15043    optional FrameTimingHistogram gpu_histogram = 14
15044    [(android.os.statsd.log_mode) = MODE_BYTES];
15045
15046    // UI mainline module version.
15047    optional int64 version_ui_module = 15;
15048
15049    // If true, these are HWUI stats for up to a 24h period for a given app from today.
15050    // If false, these are HWUI stats for a 24h period for a given app from the last complete
15051    // day (yesterday). Stats from yesterday stay constant, while stats from today may change as
15052    // more apps are running / rendering.
15053    optional bool is_today = 16;
15054
15055    // next id = 18
15056}
15057
15058/**
15059 * Message related to dangerous (runtime) app ops access
15060 */
15061message RuntimeAppOpAccess {
15062    // Uid of the package accessing app op
15063    optional int32 uid = 1 [(is_uid) = true];
15064
15065    // Name of the package accessing app op
15066    optional string package_name = 2;
15067
15068    // deprecated - set to empty string
15069    optional string op_deprecated = 3 [deprecated = true];
15070
15071    // attribution_tag; provided by developer when accessing related API, limited at 50 chars by
15072    // API. Attributions must be provided through manifest using <attribution> tag available in R
15073    // and above.
15074    optional string attribution_tag = 4;
15075
15076    // message related to app op access, limited to 600 chars by API
15077    optional string message = 5;
15078
15079    enum SamplingStrategy {
15080        DEFAULT = 0;
15081        UNIFORM = 1;
15082        RARELY_USED = 2;
15083        BOOT_TIME_SAMPLING = 3;
15084        UNIFORM_OPS = 4;
15085    }
15086
15087    // sampling strategy used to collect this message
15088    optional SamplingStrategy sampling_strategy = 6;
15089
15090    // operation id
15091    optional android.app.AppOpEnum op = 7 [default = APP_OP_NONE];
15092}
15093
15094/*
15095 * Logs userspace reboot outcome and duration.
15096 *
15097 * Logged from:
15098 *   frameworks/base/core/java/com/android/server/BootReceiver.java
15099 */
15100message UserspaceRebootReported {
15101    // Possible outcomes of userspace reboot.
15102    enum Outcome {
15103        // Default value in case platform failed to determine the outcome.
15104        OUTCOME_UNKNOWN = 0;
15105        // Userspace reboot succeeded (i.e. boot completed without a fall back to hard reboot).
15106        SUCCESS = 1;
15107        // Userspace reboot shutdown sequence was aborted.
15108        FAILED_SHUTDOWN_SEQUENCE_ABORTED = 2;
15109        // Remounting userdata into checkpointing mode failed.
15110        FAILED_USERDATA_REMOUNT = 3;
15111        // Device didn't finish booting before timeout and userspace reboot watchdog issued a hard
15112        // reboot.
15113        FAILED_USERSPACE_REBOOT_WATCHDOG_TRIGGERED = 4;
15114    }
15115    // Outcome of userspace reboot. Always set.
15116    optional Outcome outcome = 1;
15117    // Duration of userspace reboot in case it has a successful outcome.
15118    // Duration is measured as time between userspace reboot was initiated and until boot completed
15119    // (e.g. sys.boot_completed=1).
15120    optional int64 duration_millis = 2;
15121    // State of primary user's (user0) credential encryption storage.
15122    enum UserEncryptionState {
15123        // Default value.
15124        USER_ENCRYPTION_STATE_UNKNOWN = 0;
15125        // Credential encrypted storage is unlocked.
15126        UNLOCKED = 1;
15127        // Credential encrypted storage is locked.
15128        LOCKED = 2;
15129    }
15130    // State of primary user's encryption storage at the moment boot completed. Always set.
15131    optional UserEncryptionState user_encryption_state = 3;
15132}
15133
15134/*
15135 * Logs integrity check information during each install.
15136 *
15137 * Logged from:
15138 *   frameworks/base/services/core/java/com/android/server/integrity/AppIntegrityManagerServiceImpl.java
15139 */
15140message IntegrityCheckResultReported {
15141    optional string package_name = 1;
15142    optional string app_certificate_hash = 2;
15143    optional int64 version_code = 3;
15144    optional string installer_package_name = 4;
15145    enum Response {
15146        UNKNOWN = 0;
15147        ALLOWED = 1;
15148        REJECTED = 2;
15149        FORCE_ALLOWED = 3;
15150    }
15151    optional Response response = 5;
15152    // An estimate on the cause of the response. This will only be populated for
15153    // REJECTED and FORCE_ALLOWED
15154    optional bool caused_by_app_cert_rule = 6;
15155    optional bool caused_by_installer_rule = 7;
15156}
15157
15158/**
15159 * Logs the information about the rules and the provider whenever rules are
15160 * pushed into AppIntegrityManager.
15161 *
15162 * Logged from:
15163 *   frameworks/base/services/core/java/com/android/server/integrity/AppIntegrityManagerServiceImpl.java
15164 */
15165message IntegrityRulesPushed {
15166    optional bool success = 1;
15167    // Package name of the app that pushed the rules.
15168    optional string rule_provider = 2;
15169    // Version string of arbitrary format provided by the rule provider to
15170    // identify the rules.
15171    optional string rule_version = 3;
15172}
15173
15174/**
15175 * Logs when a cell broadcast message is received on the device.
15176 *
15177 * Logged from Cell Broadcast module and platform:
15178 *   packages/modules/CellBroadcastService/src/com/android/cellbroadcastservice/
15179 *   packages/apps/CellBroadcastReceiver/src/com/android/cellbroadcastreceiver/
15180 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/CellBroadcastServiceManager.java
15181 */
15182message CellBroadcastMessageReported {
15183    // The type of Cell Broadcast message
15184    enum CbType {
15185        UNKNOWN_TYPE = 0;
15186        GSM = 1;
15187        CDMA = 2;
15188        CDMA_SPC = 3;
15189    }
15190
15191    // The parts of the cell broadcast message pipeline
15192    enum ReportSource {
15193        UNKNOWN_SOURCE = 0;
15194        FRAMEWORK = 1;
15195        CB_SERVICE = 2;
15196        CB_RECEIVER_APP = 3;
15197    }
15198
15199    // GSM, CDMA, CDMA-SCP
15200    optional CbType type = 1;
15201    // The source of the report
15202    optional ReportSource source = 2;
15203    // The Message Identifier, as defined in 3GPP 23.041 clause 9.4.1.2.1
15204    optional int32 serial_number = 3 [ deprecated = true ];
15205    // The Message Identifier, as defined in 3GPP 23.041 clause 9.4.1.2.2
15206    optional int32 message_id = 4;
15207    // The roaming case will show mcc value, if not empty string
15208    optional string roaming_mcc_mnc = 5;
15209    // The language indicator, as defined in ISO 639 language codes set 1
15210    optional string language_indicator = 6;
15211}
15212
15213/**
15214 * Logs when a cell broadcast message is filtered out,
15215 * or otherwise intentionally not sent to CBR, or not shown to users for reason
15216 *
15217 * Logged from Cell Broadcast module:
15218 *   packages/modules/CellBroadcastService/src/com/android/cellbroadcastservice/
15219 *   packages/apps/CellBroadcastReceiver/src/com/android/cellbroadcastreceiver/
15220 */
15221message CellBroadcastMessageFiltered {
15222    enum FilterReason {
15223        // shown message to the user
15224        NOT_FILTERED = 0;
15225        // filtered message due to duplication (message body, service category, cross sim)
15226        DUPLICATE_MESSAGE = 1;
15227        // filtered message due to outside of coordinate range
15228        GEOFENCED_MESSAGE = 2;
15229        // filtered message due to not using for emergency alert but for update cell information on Setting Menu
15230        AREA_INFO_MESSAGE = 3;
15231        // filtered message due to OEM set config value ‘filtered message for duplication’ as ‘true’
15232        DISABLED_BY_OEM = 4;
15233        // when in ECBM(Emergency CallBack Mode) status
15234        NOTSHOW_ECBM = 5;
15235        // when user turn off preference of channel
15236        NOTSHOW_USER_PREF = 6;
15237        // when Empty content or Unsupported charset
15238        NOTSHOW_EMPTY_BODY = 7;
15239        // when language code in message is not same with preference of second language
15240        NOTSHOW_MISMATCH_PREF_SECOND_LANG = 8;
15241        // when user turn off preference of second language
15242        NOTSHOW_PREF_SECONDLANG_OFF = 9;
15243        // when language code in message is not same with device language setting
15244        NOTSHOW_MISMATCH_DEVICE_LANG_SETTING = 10;
15245        // when channel has feature ‘testing_mode = true’ and device is not in cb test_mode
15246        NOTSHOW_MESSAGE_FOR_TESTMODE = 11;
15247        // when the message contains ‘filter’ string from properties
15248        NOTSHOW_FILTER_STRING = 12;
15249    }
15250
15251    // GSM, CDMA, CDMA-SCP
15252    optional CellBroadcastMessageReported.CbType type = 1;
15253    // The source of the report
15254    optional FilterReason filter = 2;
15255    // The Message Identifier, as defined in 3GPP 23.041 clause 9.4.1.2.1
15256    optional int32 serial_number = 3 [ deprecated = true ];
15257    // The Message Identifier, as defined in 3GPP 23.041 clause 9.4.1.2.2
15258    optional int32 message_id = 4;
15259}
15260
15261/**
15262 * Logs when an error occurs while handling a cell broadcast message;
15263 *
15264 * Logged from CellBroadcastService module:
15265 *   packages/modules/CellBroadcastService/src/com/android/cellbroadcastservice/
15266 */
15267message CellBroadcastMessageError {
15268    // The type of error raised when trying to handle a cell broadcast message
15269    enum ErrorType {
15270        UNKNOWN_TYPE = 0;
15271        CDMA_DECODING_ERROR = 1;
15272        CDMA_SCP_EMPTY = 2;
15273        CDMA_SCP_HANDLING_ERROR = 3;
15274        GSM_INVALID_HEADER_LENGTH = 4;
15275        GSM_UNSUPPORTED_HEADER_MESSAGE_TYPE = 5;
15276        GSM_UNSUPPORTED_HEADER_DATA_CODING_SCHEME = 6;
15277        GSM_INVALID_PDU = 7;
15278        GSM_INVALID_GEO_FENCING_DATA = 8;
15279        GSM_UMTS_INVALID_WAC = 9;
15280        FAILED_TO_INSERT_TO_DB = 10;
15281        UNEXPECTED_GEOMETRY_FROM_FWK = 11;
15282        UNEXPECTED_GSM_MESSAGE_TYPE_FROM_FWK = 12;
15283        UNEXPECTED_CDMA_MESSAGE_TYPE_FROM_FWK = 13;
15284        UNEXPECTED_CDMA_SCP_MESSAGE_TYPE_FROM_FWK = 14;
15285        NO_CONNECTION_TO_CB_SERVICE = 15;
15286    }
15287
15288    // What kind of error occurred
15289    optional ErrorType type = 1;
15290    // Exception message (or log message) associated with the error (max 1000 chars)
15291    optional string exception_message = 2;
15292}
15293
15294/**
15295 * CellBroadcast channel range
15296 * Refer from CellBroadcastConfigUpdated, CellBroadcastReceiverFeature
15297 * Logged from Cell Broadcast module:
15298 *   packages/apps/CellBroadcastReceiver/src/com/android/cellbroadcastreceiver/
15299 */
15300message CellBroadcastChannelRange {
15301    optional int32 start = 1;
15302    optional int32 end = 2;
15303}
15304/**
15305 * CellBroadcast channel ranges
15306 * Nested field for repeated
15307 * Logged from Cell Broadcast module:
15308 *   packages/apps/CellBroadcastReceiver/src/com/android/cellbroadcastreceiver/
15309 */
15310message CellBroadcastChannelRanges {
15311    repeated CellBroadcastChannelRange channel_ranges = 1;
15312}
15313
15314/**
15315 * Logs when an channel configuration is updated with mcc-mnc
15316 *
15317 * Logged from Cell Broadcast module:
15318 *   packages/apps/CellBroadcastReceiver/src/com/android/cellbroadcastreceiver/
15319 */
15320message CellBroadcastConfigUpdated  {
15321    // mcc_mnc value of Network operator for the roaming case
15322    optional string roaming_mcc_mnc = 1;
15323    // The channel ranges to be updated logged as bytes
15324    optional CellBroadcastChannelRanges channel_ranges = 2 [(log_mode) = MODE_BYTES];
15325}
15326
15327/**
15328 * Logs when a cell broadcast message is activated with the feature below
15329 * or when channel configuration is changed with the feature below
15330 *
15331 * Logged from Cell Broadcast module:
15332 *   packages/modules/CellBroadcastService/src/com/android/cellbroadcastservice
15333 */
15334message CellBroadcastServiceFeatureChanged {
15335    // Not for mainline devices, but for android-go devices, OEM can register package names.
15336    // if there is a data then true otherwise false
15337    optional bool overlay_additional_cbr_packages = 1;
15338    // package name which will get area info message
15339    // if there is a data except “com.android.settings” then true, or false
15340    optional bool overlay_area_info_packages = 2;
15341    // Reset Area Info when device goes out of service
15342    optional bool reset_area_info = 3;
15343}
15344
15345/**
15346 * Logs when a cell broadcast message is activated with the feature below
15347 * or when channel configuration is changed with the feature below
15348 *
15349 * Logged from Cell Broadcast module:
15350 *   packages/apps/CellBroadcastReceiver/src/com/android/cellbroadcastreceiver/
15351 */
15352message CellBroadcastReceiverFeatureChanged {
15353    // Whether to enable alert handling during active voice call
15354    optional bool alert_during_call = 1;
15355    // Play alert sound in full volume regardless DND is on
15356    // [none:0][all:Integer.MAX_VALUE][partial:4370 4380 50]
15357    optional CellBroadcastChannelRanges override_dnd = 2 [(log_mode) = MODE_BYTES];
15358    // Whether to Support roaming for attached network operator
15359    optional bool roaming_support = 3;
15360    // Whether to save alerts to sms inbox database
15361    optional bool store_sms = 4;
15362    // whether the device is in test mode through *#*#CMAS#*#*
15363    optional bool testing_mode = 5;
15364    // whether Text To Speech is on/off
15365    optional bool tts_mode = 6;
15366    // whether the device is able to enter test mode even on user build
15367    optional bool testing_mode_on_user_build = 7;
15368}
15369
15370/**
15371 * Logs when exception is occurred in the device
15372 *
15373 * Logged from Cell Broadcast module:
15374 *   packages/modules/CellBroadcastService/src/com/android/cellbroadcastservice/
15375 *   packages/apps/CellBroadcastReceiver/
15376 */
15377message CellBroadcastModuleErrorReported {
15378    enum ErrorType {
15379        ERROR_UNKNOWN = 0;
15380        ERROR_BAD_CONFIG = 1;
15381        ERROR_DB_MIGRATION = 2;
15382        ERROR_DEFAULT_RES = 3;
15383        ERROR_ENABLE_CHANNEL = 4;
15384        ERROR_GET_LOCATION = 5;
15385        ERROR_MISSING_RES = 6;
15386        ERROR_PLAY_FLASH = 7;
15387        ERROR_PLAY_SOUND = 8;
15388        ERROR_PLAY_TTS = 9;
15389        ERROR_PREF_MIGRATION = 10;
15390        ERROR_PROVIDER_INIT = 11;
15391        ERROR_RESET_CHANNEL_R = 12;
15392        ERROR_STATUS_BAR = 13;
15393        ERROR_REMINDER_INTERVAL = 14;
15394        ERROR_ICON_RESOURCE = 15;
15395        ERROR_CHANNEL_RANGE_PARSE = 16;
15396        ERROR_DB_INIT = 17;
15397        ERROR_NOT_FOUND_DEFAULT_CBR_PKGS = 18;
15398        ERROR_FOUND_MULTIPLE_CBR_PKGS = 19;
15399    }
15400
15401    // The source of the report
15402    optional CellBroadcastMessageReported.ReportSource source = 1;
15403
15404    // The error type
15405    optional ErrorType type = 2;
15406}
15407
15408/**
15409 * Logs when a TV Input Service Session changes tune state
15410 * This is atom ID 327.
15411 *
15412 * Logged from:
15413 *   frameworks/base/services/core/java/com/android/server/tv/TvInputManagerService.java
15414 */
15415message TifTuneStateChanged {
15416
15417    // Tv Input Service uid, TV Player uid
15418    repeated AttributionNode attribution_node = 1 [
15419        (state_field_option).primary_field_first_uid = true
15420    ];
15421    optional android.stats.tv.TifTuneState state = 2 [
15422        (state_field_option).exclusive_state = true,
15423        (state_field_option).default_state_value = 0,
15424        (state_field_option).nested = false
15425    ];
15426    // This a globally unique 128 bit random number created by TvInputManagerService when
15427    // android.media.tv.TvInputManager#createSession is called.
15428    // It is has no device or user association.
15429    // See android.media.tv.TvInputService.onCreateSession(java.lang.String, java.lang.String)
15430    // WARNING: Any changes to this field should be carefully reviewed for privacy.
15431    //          Inspect the code at
15432    //          framework/base/cmds/statsd/src/atoms.proto
15433    //               TifTuneState
15434    //          frameworks/base/services/core/java/com/android/server/tv/TvInputManagerService.java
15435    //              logTuneStateChanged
15436    //              BinderService.createSession
15437    //              SessionState.sessionId
15438    optional string tif_session_id = 3 [(state_field_option).primary_field = true];
15439    optional android.stats.tv.TifInputType type = 4;
15440    // The id of this TV Input, only unique to a given TV Input Service.
15441    // This is specifically NOT android.media.tv.TvInputInfo.getId()
15442    // which is a string that contains the package name of its TvInputService.
15443    optional int32 input_id = 5  [(state_field_option).primary_field = true];
15444    // The HDMI port id
15445    // Only valid when type == HDMI
15446    optional int32 hdmi_port = 6  [(state_field_option).primary_field = true];
15447}
15448
15449/**
15450 * Logs when a tune occurs through device's Frontend.
15451 * This is atom ID 276.
15452 *
15453 * Logged from:
15454 *   frameworks/base/media/java/android/media/tv/tuner/Tuner.java
15455 */
15456message TvTunerStateChanged {
15457    enum State {
15458        UNKNOWN = 0;
15459        TUNING = 1; // Signal is tuned
15460        LOCKED = 2;    // the signal is locked
15461        NOT_LOCKED = 3; // the signal isn’t locked.
15462        SIGNAL_LOST = 4; // the signal was locked, but is lost now.
15463        SCANNING = 5; // the signal is scanned
15464        SCAN_STOPPED = 6; // the scan is stopped.
15465    }
15466    // The uid of the application that sent this custom atom.
15467    optional int32 uid = 1 [(is_uid) = true];
15468    //  new state
15469    optional State state = 2;
15470}
15471
15472/**
15473 * Logs the status of a dvr playback or record.
15474 * This is atom ID 279.
15475 *
15476 * Logged from:
15477 *   frameworks/base/media/java/android/media/tv/tuner/dvr
15478 */
15479message TvTunerDvrStatus {
15480    enum Type {
15481        UNKNOWN_TYPE = 0;
15482        PLAYBACK = 1; // is a playback
15483        RECORD = 2; // is a record
15484    }
15485    enum State {
15486        UNKNOWN_STATE = 0;
15487        STARTED = 1; // DVR is started
15488        STOPPED = 2; // DVR is stopped
15489    }
15490    // The uid of the application that sent this custom atom.
15491    optional int32 uid = 1 [(is_uid) = true];
15492    // DVR type
15493    optional Type type = 2;
15494    //  DVR state
15495    optional State state = 3;
15496    //  Identify the segment of a record or playback
15497    optional int32 segment_id = 4;
15498    // indicate how many overflow or underflow happened between started to stopped
15499    optional int32 overflow_underflow_count = 5;
15500}
15501
15502/**
15503 * Logs when a cas session opened through MediaCas.
15504 * This is atom ID 280.
15505 *
15506 * Logged from:
15507 *   frameworks/base/media/java/android/media/MediaCas.java
15508 */
15509message TvCasSessionOpenStatus {
15510    enum State {
15511        UNKNOWN = 0;
15512        SUCCEEDED = 1; // indicate that the session is opened successfully.
15513        FAILED = 2; // indicate that the session isn’t opened successfully.
15514    }
15515    // The uid of the application that sent this custom atom.
15516    optional int32 uid = 1 [(is_uid) = true];
15517    //  Cas system Id
15518    optional int32 cas_system_id = 2;
15519    // State of the session
15520    optional State state = 3;
15521}
15522
15523/**
15524 * Logs for ContactsProvider general usage.
15525 * This is atom ID 301.
15526 *
15527 * Logged from:
15528 *   packages/providers/ContactsProvider/src/com/android/providers/contacts/ContactsProvider2.java
15529 */
15530message ContactsProviderStatusReported {
15531    enum ApiType {
15532        UNKNOWN_API = 0;
15533        QUERY = 1;
15534        // INSERT includes insert and bulkInsert, and inserts triggered by applyBatch.
15535        INSERT = 2;
15536        // UPDATE and DELETE includes update/delete and the ones triggered by applyBatch.
15537        UPDATE = 3;
15538        DELETE = 4;
15539        CALL = 5;
15540
15541        // Call from CP2 to a GAL provider.
15542        GAL_CALL = 6;
15543    }
15544
15545    // Method called for ApiType.CALL
15546    enum MethodCall {
15547        UNKNOWN_METHOD = 0;
15548        ADD_SIM_ACCOUNTS = 1;
15549        REMOVE_SIM_ACCOUNTS = 2;
15550        GET_SIM_ACCOUNTS = 3;
15551        SET_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS = 4;
15552        GET_DEFAULT_ACCOUNT_FOR_NEW_CONTACTS = 5;
15553        MOVE_LOCAL_CONTACTS_TO_DEFAULT_ACCOUNT = 6;
15554        MOVE_SIM_CONTACTS_TO_DEFAULT_ACCOUNT = 7;
15555        GET_ELIGIBLE_CLOUD_ACCOUNTS = 8;
15556    }
15557
15558    enum ResultType {
15559        UNKNOWN_RESULT = 0;
15560        SUCCESS = 1;
15561        FAIL = 2;
15562        ILLEGAL_ARGUMENT = 3;
15563        UNSUPPORTED_OPERATION = 4;
15564
15565        // Operation is targeting an incorrect account.
15566        INCORRECT_ACCOUNT = 5;
15567    }
15568
15569    enum CallerType {
15570        UNSPECIFIED_CALLER_TYPE = 0;
15571        CALLER_IS_SYNC_ADAPTER = 1;
15572        CALLER_IS_NOT_SYNC_ADAPTER = 2;
15573    }
15574
15575    enum TaskType {
15576        UNKNOWN_TASK = 0;
15577        DANGLING_CONTACTS_CLEANUP_TASK = 1;
15578    }
15579
15580    optional ApiType api_type = 1;
15581    // Defined in
15582    // packages/providers/ContactsProvider/src/com/android/providers/contacts/ContactsProvider2.java
15583    optional int32 uri_type = 2;
15584    optional CallerType caller_type = 3;
15585    optional ResultType result_type = 4;
15586    optional int32 result_count = 5;
15587    optional int64 latency_micros = 6;
15588    optional TaskType task_type = 7;
15589    // Set when api_type == CALL
15590    optional MethodCall method_called = 8;
15591
15592    // Normally, it's the binder calling UID. (this could be CP2, for work profile or cloned
15593    // profile cases.)
15594    // For GAL_CALL, it's the GAL provider UID.
15595    optional int32 uid = 9 [(is_uid) = true];
15596}
15597
15598/**
15599 * Logs when an app is frozen or unfrozen.
15600 *
15601 * Logged from:
15602 *   frameworks/base/services/core/java/com/android/server/am/CachedAppOptimizer.java
15603 */
15604message AppFreezeChanged {
15605    // The type of event.
15606    enum Action {
15607        UNKNOWN = 0;
15608        FREEZE_APP = 1;
15609        UNFREEZE_APP = 2;
15610    }
15611    optional Action action = 1;
15612
15613    // Pid of the process being frozen.
15614    optional int32 pid = 2;
15615
15616    // Name of the process being frozen.
15617    optional string process_name = 3;
15618
15619    // Time since last unfrozen.
15620    optional int64 time_unfrozen_millis = 4;
15621
15622    // The list of reason should be kept in sync with @OomAdjReason in OomAdjuster.java.
15623    enum OomAdjReason {
15624        NONE = 0;
15625        ACTIVITY = 1;
15626        FINISH_RECEIVER = 2;
15627        START_RECEIVER = 3;
15628        BIND_SERVICE = 4;
15629        UNBIND_SERVICE = 5;
15630        START_SERVICE = 6;
15631        GET_PROVIDER = 7;
15632        REMOVE_PROVIDER = 8;
15633        UI_VISIBILITY = 9;
15634        ALLOWLIST = 10;
15635        PROCESS_BEGIN = 11;
15636        PROCESS_END = 12;
15637    }
15638
15639    // Deprecated, use unfreeze_reason_v2.
15640    optional OomAdjReason unfreeze_reason = 5 [ deprecated = true ];
15641
15642    // The list of reason should be kept in sync with @UnfreezeReason in CachedAppOptimizer.java.
15643    enum UnfreezeReason {
15644        UFR_NONE = 0;
15645        UFR_ACTIVITY = 1;
15646        UFR_FINISH_RECEIVER = 2;
15647        UFR_START_RECEIVER = 3;
15648        UFR_BIND_SERVICE = 4;
15649        UFR_UNBIND_SERVICE = 5;
15650        UFR_START_SERVICE = 6;
15651        UFR_GET_PROVIDER = 7;
15652        UFR_REMOVE_PROVIDER = 8;
15653        UFR_UI_VISIBILITY = 9;
15654        UFR_ALLOWLIST = 10;
15655        UFR_PROCESS_BEGIN = 11;
15656        UFR_PROCESS_END = 12;
15657        UFR_TRIM_MEMORY = 13;
15658        UFR_PING = 15;
15659        UFR_FILE_LOCKS = 16;
15660        UFR_FILE_LOCK_CHECK_FAILURE = 17;
15661        UFR_BINDER_TXNS = 18;
15662        UFR_FEATURE_FLAGS = 19;
15663        UFR_SHORT_FGS_TIMEOUT = 20;
15664        UFR_SYSTEM_INIT = 21;
15665        UFR_BACKUP = 22;
15666        UFR_SHELL = 23;
15667        UFR_REMOVE_TASK = 24;
15668        UFR_UID_IDLE = 25;
15669        UFR_STOP_SERVICE = 26;
15670        UFR_EXECUTING_SERVICE = 27;
15671        UFR_RESTRICTION_CHANGE = 28;
15672        UFR_COMPONENT_DISABLED = 29;
15673        UFR_OOM_ADJ_FOLLOW_UP = 30;
15674        UFR_OOM_ADJ_RECONFIGURATION = 31;
15675    }
15676
15677    optional UnfreezeReason unfreeze_reason_v2 = 6;
15678}
15679
15680/**
15681 * Pulls information for a single voice call.
15682 *
15683 * Each pull creates multiple atoms, one for each call. The sequence is randomized when pulled.
15684 *
15685 * Pulled from:
15686 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
15687 */
15688message VoiceCallSession {
15689    // Bearer (IMS or CS) when the call started.
15690    optional android.telephony.CallBearerEnum bearer_at_start = 1;
15691
15692    // Bearer (IMS or CS) when the call ended.
15693    // The bearer may change during the call, e.g. due to SRVCC.
15694    optional android.telephony.CallBearerEnum bearer_at_end = 2;
15695
15696    // Direction of the call (incoming or outgoing).
15697    optional android.telephony.CallDirectionEnum direction = 3;
15698
15699    // Deprecated by setup_duration_millis
15700    optional android.telephony.CallSetupDurationEnum setup_duration = 4 [ deprecated = true ];
15701
15702    // Whether the call ended before the setup was completed.
15703    optional bool setup_failed = 5;
15704
15705    // IMS reason code or CS disconnect cause.
15706    // For IMS, see: frameworks/base/telephony/java/android/telephony/ims/ImsReasonInfo.java
15707    // For CS, see: frameworks/base/telephony/java/android/telephony/DisconnectCause.java
15708    optional int32 disconnect_reason_code = 6;
15709
15710    // IMS extra code or CS precise disconnect cause.
15711    // For IMS, this code is vendor-specific
15712    // For CS, see: frameworks/base/telephony/java/android/telephony/PreciseDisconnectCause.java
15713    optional int32 disconnect_extra_code = 7;
15714
15715    // IMS extra message or CS vendor cause.
15716    optional string disconnect_extra_message = 8;
15717
15718    // Radio access technology (RAT) used when call started.
15719    optional android.telephony.NetworkTypeEnum rat_at_start = 9;
15720
15721    // Radio access technology (RAT) used when call terminated.
15722    optional android.telephony.NetworkTypeEnum rat_at_end = 10;
15723
15724    // Number of times RAT changed during the call.
15725    optional int64 rat_switch_count = 11;
15726
15727    // A bitmask of all codecs used during the call.
15728    // See: frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/VoiceCallSessionStats.java
15729    optional int64 codec_bitmask = 12;
15730
15731    // Number of other calls going on during call setup, for the same SIM slot.
15732    optional int32 concurrent_call_count_at_start = 13;
15733
15734    // Number of other calls going on during call termination, for the same SIM slot.
15735    optional int32 concurrent_call_count_at_end = 14;
15736
15737    // Index of the SIM used, 0 for single-SIM devices.
15738    optional int32 sim_slot_index = 15;
15739
15740    // Whether the device was in multi-SIM mode (with multiple active SIM profiles).
15741    optional bool is_multi_sim = 16;
15742
15743    // Whether the call was made with an eSIM profile.
15744    optional bool is_esim = 17;
15745
15746    // Carrier ID of the SIM card.
15747    // See https://source.android.com/devices/tech/config/carrierid.
15748    optional int32 carrier_id = 18;
15749
15750    // Whether an SRVCC has been completed successfully for this call.
15751    optional bool srvcc_completed = 19;
15752
15753    // Number of SRVCC failures.
15754    optional int64 srvcc_failure_count = 20;
15755
15756    // Number of SRVCC cancellations.
15757    optional int64 srvcc_cancellation_count = 21;
15758
15759    // Whether the Real-Time Text (RTT) was ever used in the call (rather than whether RTT was
15760    // enabled in the dialer's settings).
15761    optional bool rtt_enabled = 22;
15762
15763    // Whether this was an emergency call.
15764    optional bool is_emergency = 23;
15765
15766    // Whether the call was performed while roaming.
15767    optional bool is_roaming = 24;
15768
15769    // A random number used as the dimension field to pull multiple atoms.
15770    optional int32 dimension = 25;
15771
15772    // Signal strength at the end of the call. This value is applicable to both cellular and WiFi.
15773    optional android.telephony.SignalStrengthEnum signal_strength_at_end = 26;
15774
15775    // Band at the end of the call. Value 0 is used if the band is unknown.
15776    // See GeranBands, UtranBands and EutranBands in IRadio interface, depending on the RAT at
15777    // the end of the call.
15778    optional int32 band_at_end = 27;
15779
15780    // Time spent setting up the call in milliseconds.
15781    // The time is measured from dial to ringing for outgoing calls, and from answer to connected
15782    // for incoming calls.
15783    optional int32 setup_duration_millis = 28;
15784
15785    // Main codec quality. The codec quality was equal to or greater than this value for at least
15786    // 70% of the call.
15787    optional android.telephony.CodecQuality main_codec_quality = 29;
15788
15789    // Whether video was enabled at any point during the call.
15790    optional bool video_enabled = 30;
15791
15792    // Radio access technology (RAT) used when call is connected.
15793    optional android.telephony.NetworkTypeEnum rat_at_connected = 31;
15794
15795    // Whether the call was a conference call (applicable only for calls over IMS).
15796    optional bool is_multiparty = 32;
15797
15798    // Duration after the call was connected.
15799    optional android.telephony.CallDuration call_duration = 33;
15800
15801    // Last known Radio access technology (RAT).
15802    optional android.telephony.NetworkTypeEnum last_known_rat = 34;
15803
15804    // Fold state of the device
15805    optional android.telephony.FoldState fold_state = 35;
15806
15807    // Number of times RAT changed after call connection
15808    optional int64 rat_switch_count_after_connected = 36;
15809
15810    // Handover state of the device
15811    optional bool handover_in_progress = 37;
15812
15813    // When the RAT is IWLAN, if it used cross-SIM calling when call started.
15814    optional bool is_iwlan_cross_sim_at_start = 38;
15815
15816    // When the RAT is IWLAN, if it used cross-SIM calling when call ended.
15817    optional bool is_iwlan_cross_sim_at_end = 39;
15818
15819    // When the RAT is IWLAN, if it used cross-SIM calling when call connected.
15820    optional bool is_iwlan_cross_sim_at_connected = 40;
15821
15822    // Whether Vonr is enabled
15823    optional bool vonr_enabled = 41;
15824
15825    // Whether the call is over non-terrestrial networks.
15826    optional bool is_ntn = 42;
15827
15828    // config supports_business_call_composer_bool which controls b2c feature
15829    optional bool supports_business_call_composer = 43;
15830
15831    // The user-set status for enriched calling with call composer
15832    optional android.telephony.CallComposerStatus call_composer_status = 44;
15833
15834    // The call state on call setup
15835    optional android.telephony.CallState call_state_on_setup = 45;
15836}
15837
15838/**
15839 * Pulls voice call radio access technology (RAT) usage.
15840 *
15841 * Each pull creates multiple atoms, one for each carrier/RAT, the order of which is irrelevant to
15842 * time. The atom will be skipped if not enough data is available.
15843 *
15844 * Pulled from:
15845 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
15846 */
15847message VoiceCallRatUsage {
15848    // Carrier ID (https://source.android.com/devices/tech/config/carrierid).
15849    optional int32 carrier_id = 1;
15850
15851    // Radio access technology.
15852    optional android.telephony.NetworkTypeEnum rat = 2;
15853
15854    // Total duration that voice calls spent on this carrier and RAT, rounded to 5 minutes.
15855    optional int64 total_duration_seconds = 3;
15856
15857    // Total number of calls using this carrier and RAT.
15858    // A call is counted once even if it used the RAT multiple times.
15859    optional int64 call_count = 4;
15860}
15861
15862/**
15863 * Pulls amount of time spend in each cellular service state.
15864 *
15865 * Each pull creates multiple atoms, one for each SIM slot/carrier/RAT(including ENDC), the order of
15866 * which is irrelevant to time. If multi SIM settings changes during the period, durations will be
15867 * counted separately before and after the change. Airplane mode does not count towards durations.
15868 *
15869 * Pulled from:
15870 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
15871 */
15872message CellularServiceState {
15873    // Radio access technology (RAT) for voice.
15874    // NETWORK_TYPE_UNKNOWN when the device is not in-service.
15875    // NETWORK_TYPE_IWLAN when the device is using VoWiFi.
15876    optional android.telephony.NetworkTypeEnum voice_rat = 1;
15877
15878    // Radio access technology (RAT) for data.
15879    // NETWORK_TYPE_UNKNOWN when the device is not in-service.
15880    // Only cellular RATs are valid and show where the device is camped.
15881    optional android.telephony.NetworkTypeEnum data_rat = 2;
15882
15883    // Whether the device was in roaming (domestic or international) for voice.
15884    optional android.telephony.RoamingTypeEnum voice_roaming_type = 3;
15885
15886    // Whether the device was in roaming (domestic or international) for data.
15887    optional android.telephony.RoamingTypeEnum data_roaming_type = 4;
15888
15889    // Whether the device is on LTE and has access to NR NSA, i.e. cell supports 5G (ENDC) and UE
15890    // registration (attach/TAU) indicates ENDC is not restricted.
15891    optional bool is_endc = 5;
15892
15893    // Index of the SIM used, 0 for single-SIM devices.
15894    optional int32 sim_slot_index = 6;
15895
15896    // Whether the device was in multi-SIM mode (with multiple active SIM profiles).
15897    optional bool is_multi_sim = 7;
15898
15899    // Carrier ID of the SIM card.
15900    // See https://source.android.com/devices/tech/config/carrierid.
15901    optional int32 carrier_id = 8;
15902
15903    // Total time spent in this service state, rounded to 5 minutes.
15904    optional int32 total_time_seconds = 9;
15905
15906    // Whether the device is in limited service (only emergency voice
15907    // call available). Voice and data RAT will be recorded as
15908    // NETWORK_TYPE_UNKNOWN in this case.
15909    optional bool is_emergency_only = 10;
15910
15911    // Whether internet pdn is up.
15912    optional bool is_internet_pdn_up = 11;
15913
15914    // Fold state of the device.
15915    optional android.telephony.FoldState fold_state = 12;
15916
15917    // Whether the voice service state is overridden by voice calling capability.
15918    optional bool override_voice_service = 13;
15919
15920    // Whether mobile data is enable.
15921    optional bool is_data_enabled = 14;
15922
15923    // When the voice RAT is NETWORK_TYPE_IWLAN, determines whether it is over
15924    // cross-SIM calling (WiFi calling over other SIM's cellular data).
15925    optional bool is_iwlan_cross_sim = 15;
15926
15927    // Whether the device is using non-terrestrial networks.
15928    optional bool is_ntn = 16;
15929
15930    // Whether the call is over Carrier Roaming NB-Iot NTN network.
15931    optional bool is_nb_iot_ntn = 17;
15932
15933    // Whether the subscription is an opportunistic (can change CBRS network when available).
15934    optional bool is_opportunistic = 18;
15935 }
15936
15937/**
15938 * Pulls the number of times cellular data service state switches.
15939 *
15940 * Each pull creates multiple atoms, one for each RAT combination, the order of which is irrelevant
15941 * to time. Switches for different SIM slots, carrier IDs, or multi-SIM settings are counted
15942 * separately.
15943 *
15944 * Pulled from:
15945 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
15946 */
15947message CellularDataServiceSwitch {
15948    // Cellular RAT of the DATA domain from where the switch occurred.
15949    optional android.telephony.NetworkTypeEnum rat_from = 1;
15950
15951    // Cellular RAT of the DATA domain to where the switch occurred.
15952    optional android.telephony.NetworkTypeEnum rat_to = 2;
15953
15954    // Index of the SIM used, 0 for single-SIM devices.
15955    optional int32 sim_slot_index = 3;
15956
15957    // Whether the device was in multi-SIM mode (with multiple active SIM profiles).
15958    optional bool is_multi_sim = 4;
15959
15960    // Carrier ID of the SIM card.
15961    // See https://source.android.com/devices/tech/config/carrierid.
15962    optional int32 carrier_id = 5;
15963
15964    // Number of switches from rat_from to rat_to.
15965    optional int32 switch_count = 6;
15966
15967    // // Whether the subscription is an opportunistic (can change CBRS network when available).
15968    optional bool is_opportunistic = 7;
15969}
15970
15971/**
15972 * Pulls the number of active SIM slots and SIMs/eSIM profiles.
15973 *
15974 * Pulled from:
15975 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
15976 */
15977message SimSlotState {
15978    // Number of active SIM slots (both physical and eSIM profiles) in the device.
15979    optional int32 active_slot_count = 1;
15980
15981    // Number of SIM cards (both physical and active eSIM profiles).
15982    // This number may be greater than the number of active SIM slots, if multiple profiles are
15983    // enabled on the same eUICC.
15984    optional int32 sim_count = 2;
15985
15986    // Number of active eSIM profiles.
15987    // This number is always equal to or less than the number of SIMs.
15988    optional int32 esim_count = 3;
15989
15990    // Number of active eSIM slots in the device.
15991    optional int32 active_esim_slot_count = 4;
15992
15993    // Number of active slots using Multiple Enabled Profiles in the device.
15994    optional int32 active_mep_slot_count = 5;
15995}
15996
15997/**
15998 * Pulls supported cellular radio access technologies.
15999 *
16000 * This atom reports the capabilities of the device, rather than the network it has access to.
16001 *
16002 * Pulled from:
16003 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
16004 */
16005message SupportedRadioAccessFamily {
16006    // A bitmask of supported radio technologies.
16007    // See android.telephony.TelephonyManager.NetworkTypeBitMask.
16008    optional int64 network_type_bitmask = 1;
16009}
16010
16011/**
16012 * Pulls the status of device-level telephony properties.
16013 *
16014 * Pulled from:
16015 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
16016 */
16017message DeviceTelephonyProperties {
16018    // True if the device adopts the data stack came out in T
16019    // Deprecated since U, where legacy stack has been removed
16020    optional bool using_t_data_stack = 1 [deprecated = true];
16021    // True if auto data switch is enabled on the device
16022    optional bool auto_data_switch_enabled = 2;
16023    // Number of time the user toggled the data switch feature since the last collection
16024    optional int32 auto_data_switch_toggle_count = 3;
16025    // True if work profile is enabled on the device
16026    optional bool has_managed_profile_dedicated_sub = 4;
16027    // Number of SIM slots with support for Multiple Enabled Profiles on the device
16028    optional int32 mep_supported_slot_count = 5;
16029}
16030
16031/**
16032 * This atom is deprecated starting in T, use TelephonyNetworkRequestsV2 instead.
16033 *
16034 * Pulls information about network requests.
16035 *
16036 * Pulled from:
16037 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
16038 */
16039message TelephonyNetworkRequests {
16040    // Carrier ID of the SIM card.
16041    // See https://source.android.com/devices/tech/config/carrierid.
16042    optional int32 carrier_id = 1;
16043    // Number of times the enterprise capability was requested.
16044    optional int32 enterprise_request_count = 2;
16045    // Number of times the enterprise capability was released.
16046    optional int32 enterprise_release_count = 3;
16047}
16048
16049/**
16050 * Pulls information about network requests.
16051 *
16052 * Pulled from:
16053 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
16054 */
16055message TelephonyNetworkRequestsV2 {
16056    enum NetworkCapability {
16057        // Unknown capability was requested.
16058        UNKNOWN = 0;
16059        // Low latency capability (URLLC) was requested.
16060        PRIORITIZE_LATENCY = 1;
16061        // High bandwidth capability (EMBB) was requested.
16062        PRIORITIZE_BANDWIDTH = 2;
16063        // CBS (Carrier Branded Services) capability was requested.
16064        CBS = 3;
16065        // Enterprise capability was requested.
16066        ENTERPRISE = 4;
16067        //Satellite internet restricted capability was requested.
16068        SATELLITE_INTERNET_RESTRICTED = 5;
16069        //Satellite mms restricted capability was requested.
16070        SATELLITE_MMS_RESTRICTED = 6;
16071        //Satellite ims restricted capability was requested.
16072        SATELLITE_IMS_RESTRICTED = 7;
16073        //Satellite xcap restricted capability was requested.
16074        SATELLITE_XCAP_RESTRICTED = 8;
16075        //Satellite eims restricted capability was requested.
16076        SATELLITE_EIMS_RESTRICTED = 9;
16077        //Satellite supl restricted capability was requested.
16078        SATELLITE_SUPL_RESTRICTED =10;
16079    }
16080    // Carrier ID of the SIM card.
16081    // See https://source.android.com/devices/tech/config/carrierid.
16082    optional int32 carrier_id = 1;
16083    // The capability that was requested.
16084    optional NetworkCapability capability = 2;
16085    // Number of times the capability was requested.
16086    optional int32 request_count = 3;
16087}
16088
16089/**
16090 * Pulls information for a single incoming SMS.
16091 *
16092 * Each pull creates multiple atoms, one for each SMS. The sequence is randomized when pulled.
16093 *
16094 * Pulled from:
16095 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
16096 */
16097message IncomingSms {
16098    // Format of the SMS (3GPP or 3GPP2).
16099    optional android.telephony.SmsFormatEnum sms_format = 1;
16100
16101    // Technology of the SMS (CS or IMS).
16102    optional android.telephony.SmsTechEnum sms_tech = 2;
16103
16104    // Radio access technology (RAT) used for the SMS. It can be IWLAN in case of IMS.
16105    optional android.telephony.NetworkTypeEnum rat = 3;
16106
16107    // Type the SMS.
16108    optional android.telephony.SmsTypeEnum sms_type = 4;
16109
16110    // Number of total parts.
16111    optional int32 total_parts = 5;
16112
16113    // Number of received parts (if smaller than total parts, the SMS was dropped).
16114    optional int32 received_parts = 6;
16115
16116    // Indicates if the incoming SMS was blocked.
16117    optional bool blocked = 7;
16118
16119    // Indicate a specific error handling the SMS
16120    optional android.telephony.SmsIncomingErrorEnum error = 8;
16121
16122    // Whether the SMS was received while roaming.
16123    optional bool is_roaming = 9;
16124
16125    // Index of the SIM used, 0 for single-SIM devices.
16126    optional int32 sim_slot_index = 10;
16127
16128    // Whether the device was in multi-SIM mode (with multiple active SIM profiles).
16129    optional bool is_multi_sim = 11;
16130
16131    // Whether the message was received with an eSIM profile.
16132    optional bool is_esim = 12;
16133
16134    // Carrier ID of the SIM card used for the SMS.
16135    // See https://source.android.com/devices/tech/config/carrierid.
16136    optional int32 carrier_id = 13;
16137
16138    // Random message ID.
16139    // If the value of count is greater than 1, the message_id represents only one of the messages.
16140    optional int64 message_id = 14;
16141
16142    // Number of messages with the same properties (see message_id for exception)
16143    optional int32 count = 15;
16144
16145    // Whether the message was received with an enterprise profile.
16146    optional bool is_managed_profile = 16;
16147
16148    // Whether the message was received over non-terrestrial networks.
16149    optional bool is_ntn = 17;
16150
16151    // Whether the message is an emergency or not.
16152    optional bool is_emergency = 18;
16153
16154    // Whether the message was received over Carrier Roaming NB-Iot NTN network.
16155    optional bool is_nb_iot_ntn = 19;
16156}
16157
16158/**
16159 * Pulls information for a single outgoing SMS.
16160 *
16161 * Each pull creates multiple atoms, one for each SMS. The sequence is randomized when pulled.
16162 *
16163 * Pulled from:
16164 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
16165 */
16166message OutgoingSms {
16167    // Format of the SMS (3GPP or 3GPP2).
16168    optional android.telephony.SmsFormatEnum sms_format = 1;
16169
16170    // Technology of the SMS (CS or IMS).
16171    optional android.telephony.SmsTechEnum sms_tech = 2;
16172
16173    // Radio access technology (RAT) used for the SMS. It can be IWLAN in case of IMS.
16174    optional android.telephony.NetworkTypeEnum rat = 3;
16175
16176    // Result of the SMS sending.
16177    optional android.telephony.SmsSendResultEnum send_result = 4;
16178
16179    // Error code
16180    // For IMS technology, see @SmsManager.Result in
16181    // http://cs/android/frameworks/base/telephony/java/android/telephony/SmsManager.java
16182    // For CS technology:
16183    //  - GSM format: see GsmSmsErrorCode (3GPP 27.005 clause 3.2.5)
16184    //  - CDMA format: see CdmaSmsErrorCode (3GPP2 N.S0005 (IS-41-C) Table 171)
16185    // The field error_code is used for up-to-Android-13 devices. From Android 14,
16186    // network_error_code will be used. The field error_code will be deprecated when most devices
16187    // use Android 14 or higher versions.
16188    optional int32 error_code = 5;
16189
16190    // Whether the SMS was sent while roaming.
16191    optional bool is_roaming = 6;
16192
16193    // Whether the default SMS application generated the SMS (regardless of which application).
16194    optional bool is_from_default_app = 7;
16195
16196    // Index of the SIM used, 0 for single-SIM devices.
16197    optional int32 sim_slot_index = 8;
16198
16199    // Whether the device was in multi-SIM mode (with multiple active SIM profiles).
16200    optional bool is_multi_sim = 9;
16201
16202    // Whether the message was sent with an eSIM profile.
16203    optional bool is_esim = 10;
16204
16205    // Carrier ID of the SIM card used for the SMS.
16206    // See https://source.android.com/devices/tech/config/carrierid.
16207    optional int32 carrier_id = 11;
16208
16209    // Random message ID.
16210    // If the value of count is greater than 1, the message_id represents only one of the messages.
16211    optional int64 message_id = 12;
16212
16213    // Retry count: 0 for the first attempt and then increasing for each attempt.
16214    // If the value of count is greater than 1, the retry_id represents the value associated with
16215    // the message defined by message_id.
16216    optional int32 retry_id = 13;
16217
16218    // Time in milliseconds to complete the SMS send to the network.
16219    // If the value of count is greater than 1, this field measures the average time interval.
16220    optional int64 interval_millis = 14;
16221
16222    // Number of messages with the same properties (see message_id, retry_id and latency_millis for
16223    // exceptions)
16224    optional int32 count = 15;
16225
16226    // Internal send error code
16227    optional android.telephony.SmsSendErrorEnum send_error_code = 16;
16228
16229    // Network error code
16230    // - SMS_FORMAT_3GPP format: see GsmSmsErrorCode (3GPP 27.005 clause 3.2.5)
16231    // - SMS_FORMAT_3GPP2 format: see CdmaSmsErrorCode (3GPP2 N.S0005 (IS-41-C) Table 171)
16232    optional int32 network_error_code = 17;
16233
16234    // Whether the message was sent with an enterprise profile.
16235    optional bool is_managed_profile = 18;
16236
16237    // Whether the message is an emergency or not.
16238    optional bool is_emergency = 19;
16239
16240    // Whether the message was sent over non-terrestrial networks.
16241    optional bool is_ntn = 20;
16242
16243    // Whether the message is an MT SMS polling.
16244    optional bool is_mt_sms_polling = 21;
16245
16246    // Whether the message was sent over Carrier Roaming NB-Iot NTN network.
16247    optional bool is_nb_iot_ntn = 22;
16248}
16249
16250/**
16251 * Logs information about usage of airplane mode.
16252 *
16253 * Logged from:
16254 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/AirplaneModeStats.java
16255 */
16256message AirplaneMode {
16257    // Status of airplane mode
16258    optional bool is_enabled = 1;
16259
16260    // When is_enabled is false, indicates if this was a very short airplane mode toggle
16261    // (i.e. airplane mode was disabled after less than 10 seconds from enablement).
16262    optional bool short_toggle = 2;
16263
16264    // Carrier ID of the SIM card.
16265    // See https://source.android.com/devices/tech/config/carrierid.
16266    optional int32 carrier_id = 3;
16267}
16268
16269/**
16270 * Logs information about modem restarts.
16271 *
16272 * Logged from:
16273 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/ModemRestartStats.java
16274 */
16275message ModemRestart {
16276    // Software version of the modem, as provided by android.os.Build.getRadioVersion().
16277    optional string baseband_version = 1;
16278
16279    // Reason of the modem restart, as provided in the modemReset indication of IRadio HAL.
16280    optional string reason = 2;
16281
16282    // Carrier ID of the first SIM card.
16283    // See https://source.android.com/devices/tech/config/carrierid.
16284    optional int32 carrier_id = 3;
16285}
16286
16287/**
16288 * Logs the SIM card details when the carrier ID match is not complete.
16289 *
16290 * The atom is pushed when a SIM card is initialized and the MCC/MNC is not present in the
16291 * carrier ID table, or the SIM card contains a GID1 value that is not present in the carrier ID
16292 * table. This atom is pushed only once for each type of SIM card.
16293 *
16294 * Logged from:
16295 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/CarrierIdMatchStats.java
16296 */
16297message CarrierIdMismatchReported {
16298    // Matched carrier ID. The value -1 is used if no match is found.
16299    optional int32 carrier_id = 1;
16300
16301    // MCC/MNC of the SIM card.
16302    optional string mcc_mnc = 2;
16303
16304    // Group identifier (level 1) of the SIM card.
16305    optional string gid1 = 3;
16306
16307    // SPN value of the SIM card.
16308    optional string spn = 4;
16309
16310    // First record of the PNN in the SIM card. This field is populated only if the SPN is missing
16311    // or empty.
16312    optional string pnn = 5;
16313}
16314
16315/**
16316 * Logs the version of the carrier ID matching table at first power up and when it is updated.
16317 *
16318 * Logged from:
16319 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/CarrierIdMatchStats.java
16320 */
16321message CarrierIdTableUpdated {
16322    // Version of the CarrierId matching table.
16323    optional int32 table_version = 1;
16324}
16325
16326/**
16327 * Pulls the version of the carrier ID matching table.
16328 *
16329 * Logged from:
16330 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
16331 */
16332message CarrierIdTableVersion {
16333    // Version of the CarrierId matching table.
16334    optional int32 table_version = 1;
16335}
16336
16337/**
16338 * Pulls information for a single data call session
16339 *
16340 * Each pull creates multiple atoms, one for each data call session.
16341 * The sequence is randomized when pulled.
16342 *
16343 * Pulled from:
16344 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
16345 */
16346message DataCallSession {
16347    // A random number to be used as dimension to capture multiple atoms
16348    optional int32 dimension = 1;
16349
16350    // Whether the device was in multi-SIM mode (with multiple active SIM profiles).
16351    optional bool is_multi_sim = 2;
16352
16353    // Whether the call was made with an eSIM profile.
16354    optional bool is_esim = 3;
16355
16356    // Data profile of this call (for what purpose this call was made)
16357    optional android.telephony.DataProfileEnum profile = 4 [deprecated = true];
16358
16359    // APN type bitmask of the APN used:
16360    // @ApnType in frameworks/base/telephony/java/android/telephony/Annotation.java.
16361    optional int32 apn_type_bitmask = 5;
16362
16363    // Carrier ID of the SIM
16364    // See https://source.android.com/devices/tech/config/carrierid.
16365    optional int32 carrier_id = 6;
16366
16367    // Whether the subscription is roaming
16368    optional bool is_roaming = 7;
16369
16370    // Data RAT when the call ended, can be IWLAN for IMS/MMS, otherwise should be WWAN PS RAT.
16371    // In the case that the connection hasn't ended yet, this field holds the current RAT.
16372    // In the case the call ended due to Out Of Service (OOS),
16373    // this field should be the last known RAT.
16374    optional android.telephony.NetworkTypeEnum rat_at_end = 8;
16375
16376    // Was the data call ended due to OOS
16377    optional bool oos_at_end = 9;
16378
16379    // Number of RAT switches during the data call
16380    optional int64 rat_switch_count = 10;
16381
16382    // Whether the call is on an opportunistic subscription
16383    optional bool is_opportunistic = 11;
16384
16385    // Packet data protocol used
16386    optional android.telephony.ApnProtocolEnum ip_type = 12;
16387
16388    // Whether the data call terminated before being established
16389    optional bool setup_failed = 13;
16390
16391    // Reason why the data call terminated, as in RIL_DataCallFailCause from ril.h
16392    optional int32 failure_cause = 14;
16393
16394    // Suggested retry back-off timer value from RIL
16395    optional int32 suggested_retry_millis = 15;
16396
16397    // Why the data call was deactivated
16398    // Set by telephony for MO deactivations (unrelated to failure_cause)
16399    optional android.telephony.DataDeactivateReasonEnum deactivate_reason = 16;
16400
16401    // Duration of the data call, rounded into the closest 5 minutes.
16402    optional int64 duration_minutes = 17;
16403
16404    // Whether the data call is still connected when the atom is collected.
16405    optional bool ongoing = 18;
16406
16407    // Band at the end of the data call. Value 0 is used if the band is unknown.
16408    // See GeranBands, UtranBands and EutranBands in IRadio interface, depending
16409    // on the RAT at the end of the data call.
16410    optional int32 band_at_end = 19;
16411
16412    // Reason why the data call handover failed, as in RIL_DataCallFailCause from ril.h
16413    repeated int32 handover_failure_causes = 20;
16414
16415    // For each int32, the lower 16 bits represent the source RAT while the upper 16 bits indicate
16416    // the target RAT of the failed handover.
16417    repeated int32 handover_failure_rat = 21;
16418
16419    // Whether the call is for internet on nonDDS due to auto data switch feature
16420    optional bool is_non_dds = 22;
16421
16422    // When the 'rat_at_end' field is IWLAN, determines if the data call setup was
16423    // over cross-SIM calling (Wifi calling over cellular data).
16424    optional bool is_iwlan_cross_sim = 23;
16425
16426    // Whether the call is over non-terrestrial networks.
16427    optional bool is_ntn = 24;
16428
16429    // Determines if current data call was over satellite transport
16430    optional bool is_satellite_transport = 25;
16431
16432    // Determines if current data call was over provisioning profile or not
16433    optional bool is_provisioning_profile = 26;
16434
16435    // Whether the call is over Carrier Roaming NB-Iot NTN network.
16436    optional bool is_nb_iot_ntn = 27;
16437}
16438
16439/**
16440 * Logs data stall recovery event
16441 *
16442 * Logged from:
16443 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/data/
16444 *   DataStallRecoveryManager.java
16445 */
16446message DataStallRecoveryReported {
16447    // Carrier ID of the SIM
16448    // See https://source.android.com/devices/tech/config/carrierid.
16449    optional int32 carrier_id = 1;
16450
16451    // Data RAT when the stall happened
16452    optional android.telephony.NetworkTypeEnum rat = 2;
16453
16454    // Signal strength when stall happened
16455    optional android.telephony.SignalStrengthEnum signal_strength = 3;
16456
16457    // Action taken to recover
16458    optional android.telephony.DataStallRecoveryActionEnum action = 4;
16459
16460    // Whether the subscription is opportunistic
16461    optional bool is_opportunistic = 5;
16462
16463    // Whether the device is in multi-SIM mode
16464    optional bool is_multi_sim = 6;
16465
16466    // Band used when the stall/recovery took place.
16467    // Value 0 is used if the band is unknown.
16468    // See GeranBands, UtranBands and EutranBands in IRadio interface, depending
16469    // on the RAT used at the time.
16470    optional int32 band = 7;
16471
16472    // Whether the data stall is recovered.
16473    optional bool recovered = 8;
16474
16475    // The elapsed time between start of the data stall and result of current action.
16476    optional int32 duration_millis = 9;
16477
16478    // The data stall recovered reason. Available from Android T.
16479    optional android.telephony.DataStallRecoveredReason reason = 10;
16480
16481    // Signal strength of the other phone if DSDS when stall happened.
16482    // SIGNAL_STRENGTH_NONE_OR_UNKNOWN(0) if single SIM.
16483    optional android.telephony.SignalStrengthEnum other_phone_signal_strength = 11;
16484
16485    // PS WWAN Network Registration state of the other phone if DSDS when stall happened.
16486    // REGISTRATION_STATE_NOT_REGISTERED_OR_SEARCHING(0) if single SIM.
16487    optional android.telephony.NetworkRegistrationState other_phone_reg_state = 12;
16488
16489    // PS WWAN Network Registration state of the default phone when data stall.
16490    optional android.telephony.NetworkRegistrationState phone_reg_state = 13;
16491
16492    // collect the first validation after recovery when data stall occurs.
16493    optional bool is_first_validation_after_recovery = 14;
16494
16495    // The phone id when doing the recovery action.
16496    optional int32 phone_id = 15;
16497
16498    // The elapsed time of current action.
16499    optional int32 duration_millis_of_current_action = 16;
16500
16501    // Link status of the data network.
16502    optional int32 link_status = 17;
16503
16504    // The link up bandwidth of the data network.
16505    optional int32 link_up_bandwidth = 18;
16506
16507    // The link down bandwidth of the data network.
16508    optional int32 link_down_bandwidth = 19;
16509}
16510
16511/**
16512 * Pulls IMS registration terminations.
16513 *
16514 * Each pull generates multiple atoms, one for each termination condition happened during the day.
16515 *
16516 * Pulled from:
16517 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
16518 */
16519message ImsRegistrationTermination {
16520    // Carrier ID of the SIM used for IMS registration.
16521    // See https://source.android.com/devices/tech/config/carrierid.
16522    optional int32 carrier_id = 1;
16523
16524    // Whether the device is in multi-SIM mode when the registration terminated.
16525    optional bool is_multi_sim = 2;
16526
16527    // Radio access technology (RAT) used by the registration when it terminated.
16528    // This can be IWLAN if IMS was registered over Wifi.
16529    optional android.telephony.NetworkTypeEnum rat_at_end = 3;
16530
16531    // Whether the IMS registration failed before it was established.
16532    optional bool setup_failed = 4;
16533
16534    // IMS reason code indicating the termination reason.
16535    // See: frameworks/base/telephony/java/android/telephony/ims/ImsReasonInfo.java
16536    optional int32 reason_code = 5;
16537
16538    // IMS extra code indicating the termination reason.
16539    optional int32 extra_code = 6;
16540
16541    // IMS extra message indicating the termination reason.
16542    // This string is truncated to 128 characters if its length exceeds the limit.
16543    optional string extra_message = 7;
16544
16545    // Total number of instances of registration termination that matches the above conditions.
16546    optional int32 count = 8;
16547
16548    // When the 'rat_at_end' field is IWLAN, indicates whether the ImsRegistrationTech is
16549    // REGISTRATION_TECH_CROSS_SIM.
16550    optional bool is_iwlan_cross_sim = 9;
16551}
16552
16553/**
16554 * Pulls IMS registration statistics.
16555 *
16556 * Each pull generates multiple atoms, one for each carrier, SIM slot, and radio access technology
16557 * (RAT) combination. Durations are aggregated from all registrations with matching criteria,
16558 * including ones that are currently active.
16559 *
16560 * Pulled from:
16561 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
16562 */
16563message ImsRegistrationStats {
16564    // Carrier ID of the SIM used for IMS registration.
16565    // See https://source.android.com/devices/tech/config/carrierid.
16566    optional int32 carrier_id = 1;
16567
16568    // Index of the SIM used, 0 for single-SIM devices.
16569    optional int32 sim_slot_index = 2;
16570
16571    // Radio access technology (RAT) used by the registration.
16572    // This can be IWLAN if IMS was registered over Wifi.
16573    optional android.telephony.NetworkTypeEnum rat = 3;
16574
16575    // Total time IMS was registered (connected time), rounded to 5 minutes.
16576    optional int32 registered_seconds = 4;
16577
16578    // Durations that each feature (Voice, Video, UT, SMS) is capable (supported/enabled by the
16579    // network/device) and available (registered and ready to use).
16580    // All durations are rounded to 5 minutes and should be equal to or shorter than
16581    // registered_seconds.
16582    optional int32 voice_capable_seconds = 5;
16583    optional int32 voice_available_seconds = 6;
16584    optional int32 sms_capable_seconds = 7;
16585    optional int32 sms_available_seconds = 8;
16586    optional int32 video_capable_seconds = 9;
16587    optional int32 video_available_seconds = 10;
16588    optional int32 ut_capable_seconds = 11;
16589    optional int32 ut_available_seconds = 12;
16590
16591    // Total time IMS was registering (connecting time), rounded to 5 minutes
16592    optional int32 registering_seconds = 13;
16593    // Total time IMS was unregistered (unconnected time), rounded to 5 minutes
16594    optional int32 unregistered_seconds = 14;
16595
16596    // When the 'rat' field is IWLAN, indicates whether the ImsRegistrationTech is
16597    // REGISTRATION_TECH_CROSS_SIM.
16598    optional bool is_iwlan_cross_sim = 15;
16599
16600    // How many times IMS is registered
16601    optional int32 registered_times = 16;
16602}
16603
16604/*
16605 * Logs information related to PIN storage and automatic PIN operations.
16606 *
16607 * Logged from:
16608 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/uicc/PinStorage.java
16609 */
16610message PinStorageEvent {
16611    // The type of event.
16612    enum Event {
16613        UNKNOWN = 0;
16614        // The PIN was verified automatically successfully.
16615        PIN_VERIFICATION_SUCCESS = 1;
16616        // The PIN was verified automatically unsuccessfully.
16617        PIN_VERIFICATION_FAILURE = 2;
16618        // The PIN(s) was cached, but discarded after reboot (e.g. SIM not present after reboot).
16619        CACHED_PIN_DISCARDED = 3;
16620        // The PIN(s) was stored to be used after unattended reboot.
16621        PIN_STORED_FOR_VERIFICATION = 4;
16622        // The PIN(s) is not available for storage and will be required after unattended reboot.
16623        PIN_REQUIRED_AFTER_REBOOT = 5;
16624        // The PIN was not verified automatically because the SIM card did not match.
16625        PIN_VERIFICATION_SKIPPED_SIM_CARD_MISMATCH = 6;
16626        // The available PINs after reboot does not match the number of stored PINs before reboot.
16627        PIN_COUNT_NOT_MATCHING_AFTER_REBOOT = 7;
16628        // Error while decrypting the PIN
16629        PIN_DECRYPTION_ERROR = 8;
16630        // Error while encrypting the PIN
16631        PIN_ENCRYPTION_ERROR = 9;
16632        // Attempted to decrypt the PIN with a null/missing encryption key.
16633        PIN_ENCRYPTION_KEY_MISSING = 10;
16634    }
16635    optional Event event = 1;
16636
16637    // Number of PINs stored or discarded.
16638    optional int32 number_of_pins = 2;
16639
16640    // The caller package name
16641    optional string package_name = 3;
16642}
16643
16644/**
16645 * Logs flip to screen off events.
16646 *
16647 * Logged from:
16648 *   frameworks/opt/telephony/src/java/com/android/server/power/FaceDownDetector.java
16649 */
16650message FaceDownReported {
16651    enum Response{
16652        UNKNOWN = 1;
16653        // The phone was flipped before the screen turns off.
16654        UNFLIP = 2;
16655        // User interacts with the screen after a face down is detected.
16656        USER_INTERACTION = 3;
16657        // A flip leads to screen turning off. This is the expected outcome.
16658        SCREEN_OFF = 4;
16659    }
16660
16661    // Logs the action that occurs from a flip event, whether by user or system
16662    // action.
16663    optional Response face_down_response = 1;
16664
16665    // After a flip is detected, how long until a system or user action occurs.
16666    optional int64 millis_since_flip = 2;
16667
16668    // Difference between the flip time and when the timeout would otherwise
16669    // occur.
16670    optional int64 millis_until_normal_timeout = 3;
16671
16672    // How quickly the user turns the screen back on after a flip event.
16673    // A low value may indicate a false negative. Logged only when Response is
16674    // SCREEN_OFF.
16675    optional int64 millis_until_next_screen_on = 4;
16676}
16677
16678/**
16679 * Logs timeout extended events which occur from consecutive undims.
16680 *
16681 * Logged from:
16682 *   frameworks/opt/telephony/src/java/com/android/server/power/ScreenUndimDetector.java
16683 */
16684message TimeoutAutoExtendedReported {
16685    enum Outcome {
16686        UNKNOWN = 0;
16687        POWER_BUTTON = 1;
16688        TIMEOUT = 2;
16689    }
16690
16691    // Logs the action that occurs after timeout is extended from undim.
16692    optional Outcome outcome = 1;
16693    // Time from timeout extension to the outcome.
16694    optional int64 time_to_outcome_millis = 2;
16695    // Time of first interaction after undim if an interaction occurs.
16696    // -1 if no interaction occurs before screen turns off.
16697    optional int64 time_to_first_interaction_millis = 3;
16698}
16699
16700/**
16701 * Logs gnss stats from location service provider
16702 *
16703 * Pulled from:
16704 *  frameworks/base/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
16705 */
16706message GnssStats {
16707    // Number of location reports since boot
16708    optional int64 location_reports = 1;
16709
16710    // Total pulled reports of Location failures since boot
16711    optional int64 location_failure_reports = 2;
16712
16713    // Number of time to first fix reports since boot
16714    optional int64 time_to_first_fix_reports = 3;
16715
16716    // Total pulled reported time to first fix (in milli-seconds) since boot
16717    optional int64 time_to_first_fix_millis = 4;
16718
16719    // Number of position accuracy reports since boot
16720    optional int64 position_accuracy_reports = 5;
16721
16722    // Total pulled reported position accuracy (in meters) since boot
16723    optional int64 position_accuracy_meters = 6;
16724
16725    // Number of top 4 average CN0 reports since boot
16726    optional int64 top_four_average_cn0_reports = 7;
16727
16728    // Total pulled reported of top 4 average CN0 (dB-mHz) since boot
16729    optional int64 top_four_average_cn0_db_mhz = 8;
16730
16731    // Number of l5 top 4 average CN0 reports since boot
16732    optional int64 l5_top_four_average_cn0_reports = 9;
16733
16734    // Total pulled reported of l5 top 4 average CN0 (dB-mHz) since boot
16735    optional int64 l5_top_four_average_cn0_db_mhz = 10;
16736
16737    // Total number of sv status messages reports since boot
16738    optional int64 sv_status_reports = 11;
16739
16740    // Total number of sv status messages reports, where sv is used in fix since boot
16741    optional int64 sv_status_reports_used_in_fix = 12;
16742
16743    // Total number of L5 sv status messages reports since boot
16744    optional int64 l5_sv_status_reports = 13;
16745
16746    // Total number of L5 sv status messages reports, where sv is used in fix since boot
16747    optional int64 l5_sv_status_reports_used_in_fix = 14;
16748}
16749
16750/**
16751 * Logs power usage data from GNSS subsystem.
16752 *
16753 * Logged from:
16754 *   /frameworks/base/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
16755 */
16756message GnssPowerStats {
16757    // Relative precision of the alignment of the reported power stats measurement.
16758    optional int64 elapsed_realtime_uncertainty_nanos = 1;
16759
16760    // Total GNSS energy consumption in micro-joules (or micro Watt-seconds).
16761    optional int64 total_energy_micro_joule = 2;
16762
16763    // Total energy consumption in micro-joules (or micro Watt-seconds) for which the GNSS engine is
16764    // tracking signals of a single frequency band.
16765    optional int64 singleband_tracking_mode_energy_micro_joule = 3;
16766
16767    // Total energy consumption in micro-joules (or micro Watt-seconds) for which the GNSS engine is
16768    // tracking signals of multiple frequency bands.
16769    optional int64 multiband_tracking_mode_energy_micro_joule = 4;
16770
16771    // Total energy consumption in micro-joules (or micro Watt-seconds) for which the GNSS engine is
16772    // acquiring signals of a single frequency band.
16773    optional int64 singleband_acquisition_mode_energy_micro_joule = 5;
16774
16775    // Total energy consumption in micro-joules (or micro Watt-seconds) for which the GNSS engine is
16776    // acquiring signals of multiple frequency bands.
16777    optional int64 multiband_acquisition_mode_energy_micro_joule = 6;
16778
16779    // Total energy consumption in micro-joules (microWatt-seconds) for which the GNSS engine is
16780    // operating in each of the vendor-specific power modes. (Index 0)
16781    optional int64 vendor_specific_power_modes_energy_micro_joule_0 = 7;
16782
16783    // Total energy consumption in micro-joules (microWatt-seconds) for which the GNSS engine is
16784    // operating in each of the vendor-specific power modes. (Index 1)
16785    optional int64 vendor_specific_power_modes_energy_micro_joule_1 = 8;
16786
16787    // Total energy consumption in micro-joules (microWatt-seconds) for which the GNSS engine is
16788    // operating in each of the vendor-specific power modes. (Index 2)
16789    optional int64 vendor_specific_power_modes_energy_micro_joule_2 = 9;
16790
16791    // Total energy consumption in micro-joules (microWatt-seconds) for which the GNSS engine is
16792    // operating in each of the vendor-specific power modes. (Index 3)
16793    optional int64 vendor_specific_power_modes_energy_micro_joule_3 = 10;
16794
16795    // Total energy consumption in micro-joules (microWatt-seconds) for which the GNSS engine is
16796    // operating in each of the vendor-specific power modes. (Index 4)
16797    optional int64 vendor_specific_power_modes_energy_micro_joule_4 = 11;
16798
16799    // Total energy consumption in micro-joules (microWatt-seconds) for which the GNSS engine is
16800    // operating in each of the vendor-specific power modes. (Index 5)
16801    optional int64 vendor_specific_power_modes_energy_micro_joule_5 = 12;
16802
16803    // Total energy consumption in micro-joules (microWatt-seconds) for which the GNSS engine is
16804    // operating in each of the vendor-specific power modes. (Index 6)
16805    optional int64 vendor_specific_power_modes_energy_micro_joule_6 = 13;
16806
16807    // Total energy consumption in micro-joules (microWatt-seconds) for which the GNSS engine is
16808    // operating in each of the vendor-specific power modes. (Index 7)
16809    optional int64 vendor_specific_power_modes_energy_micro_joule_7 = 14;
16810
16811    // Total energy consumption in micro-joules (microWatt-seconds) for which the GNSS engine is
16812    // operating in each of the vendor-specific power modes. (Index 8)
16813    optional int64 vendor_specific_power_modes_energy_micro_joule_8 = 15;
16814
16815    // Total energy consumption in micro-joules (microWatt-seconds) for which the GNSS engine is
16816    // operating in each of the vendor-specific power modes. (Index 9)
16817    optional int64 vendor_specific_power_modes_energy_micro_joule_9 = 16;
16818}
16819
16820/**
16821 * Logs when an app is moved to a different standby bucket.
16822 *
16823 * Logged from:
16824 *   frameworks/base/apex/jobscheduler/service/java/com/android/server/usage/AppIdleHistory.java
16825 */
16826message AppStandbyBucketChanged {
16827    optional string package_name = 1;
16828
16829    // Should be 0, 10, 11, 12, etc. where 0 is the owner. See UserHandle for more documentation.
16830    optional int32 user_id = 2;
16831
16832    // These enum values match the constants defined in UsageStatsManager.java.
16833    enum Bucket {
16834        BUCKET_UNKNOWN = 0;
16835        BUCKET_EXEMPTED = 5;
16836        BUCKET_ACTIVE = 10;
16837        BUCKET_WORKING_SET = 20;
16838        BUCKET_FREQUENT = 30;
16839        BUCKET_RARE = 40;
16840        BUCKET_RESTRICTED = 45;
16841        BUCKET_NEVER = 50;
16842    }
16843    optional Bucket bucket = 3;
16844
16845    enum MainReason {
16846        MAIN_UNKNOWN = 0;
16847        MAIN_DEFAULT = 0x0100;
16848        MAIN_TIMEOUT = 0x0200;
16849        MAIN_USAGE = 0x0300;
16850        MAIN_FORCED_BY_USER = 0x0400;
16851        MAIN_PREDICTED = 0x0500;
16852        MAIN_FORCED_BY_SYSTEM = 0x0600;
16853    }
16854    optional MainReason main_reason = 4;
16855
16856    // A more detailed reason for the standby bucket change. The sub reason name is dependent on
16857    // the main reason. Values are one of the REASON_SUB_XXX constants defined in
16858    // UsageStatsManager.java.
16859    optional int32 sub_reason = 5;
16860}
16861
16862/**
16863* Reports a started sharesheet transaction.
16864*
16865* Logged from:
16866*   frameworks/base/core/java/com/android/internal/app/ChooserActivity.java
16867*   packages/modules/IntentResolver/java/src/com/android/intentresolver/ChooserActivity.java
16868*/
16869message SharesheetStarted {
16870    // The event_id (as for UiEventReported).
16871    optional int32 event_id = 1;
16872    // The calling app's package name.
16873    optional string package_name = 2;
16874    // An identifier to tie together multiple logs relating to the same share event
16875    optional int32 instance_id = 3;
16876    // The mime type of the share
16877    optional string mime_type = 4;
16878    // The number of direct targets the calling app is providing that will be shown.
16879    optional int32 num_app_provided_direct_targets = 5;
16880    // The number of app targets the calling app is providing that will be shown.
16881    optional int32 num_app_provided_app_targets = 6;
16882    // True if the share originates from the workprofile
16883    optional bool is_workprofile = 7;
16884
16885    enum SharesheetPreviewType {  // Constants from ChooserActivity.java
16886        CONTENT_PREVIEW_TYPE_UNKNOWN = 0;  // Default for proto 2 / 3 compatibility.
16887        CONTENT_PREVIEW_IMAGE = 1;  // The preview shown in the sharesheet is an image.
16888        CONTENT_PREVIEW_FILE = 2;  // The preview shown in the sharesheet is a file.
16889        CONTENT_PREVIEW_TEXT = 3;  // The preview shown in the sharesheet is text.
16890        // Preview is toggleable media items (Shareousel):
16891        CONTENT_PREVIEW_TOGGLEABLE_MEDIA = 4;
16892    }
16893    // How the sharesheet preview is presented.
16894    optional SharesheetPreviewType preview_type = 8;
16895
16896    enum ResolverActivityIntent { // Intents handled by ResolverActivity.java
16897        INTENT_DEFAULT = 0;
16898        INTENT_ACTION_VIEW = 1;
16899        INTENT_ACTION_EDIT = 2;
16900        INTENT_ACTION_SEND = 3;
16901        INTENT_ACTION_SENDTO = 4;
16902        INTENT_ACTION_SEND_MULTIPLE = 5;
16903        INTENT_ACTION_IMAGE_CAPTURE = 6;
16904        INTENT_ACTION_MAIN = 7;
16905    }
16906    // The intent being processed (only SEND and SEND_MULTIPLE are system sharesheet)
16907    optional ResolverActivityIntent intent_type = 9;
16908    // The number of custom actions that the calling app has provided.
16909    optional int32 num_provided_custom_actions = 10;
16910    // True if the calling app has provided an action for share modification.
16911    optional bool modify_share_action_provided = 11;
16912}
16913
16914/**
16915 * Reports a ranking selection event.
16916 *
16917 * Logged from:
16918 *   frameworks/base/core/java/com/android/internal/app/ChooserActivity.java (sharesheet)
16919 *   packages/modules/IntentResolver/java/src/com/android/intentresolver/ChooserActivity.java
16920 */
16921message RankingSelected {
16922    // The event_id (as for UiEventReported).
16923    optional int32 event_id = 1;
16924    // The relevant app's package name (can be source or picked package).
16925    optional string package_name = 2;
16926    // An identifier to tie together multiple logs relating to the same share event.
16927    optional int32 instance_id = 3;
16928    // Which of the ranked targets got picked, default starting position 0.
16929    optional int32 position_picked = 4;
16930    // Whether the selected target is pinned.
16931    optional bool is_pinned = 5;
16932}
16933
16934/**
16935 * Logs when TvSettings UI is interacted at.
16936 *
16937 * Logged from: packages/apps/TvSettings
16938 */
16939message TvSettingsUIInteracted {
16940
16941    /** The UI action category */
16942    optional android.app.tvsettings.Action action = 1;
16943
16944    /** The ID of the entry that the users actioned on */
16945    optional android.app.tvsettings.ItemId item_id = 2;
16946}
16947
16948/**
16949 * Logs information about a package installation using package installer V2 APIs.
16950 *
16951 * Logged from:
16952 *      frameworks/base/services/core/java/com/android/server/pm/PackageInstallerSession.java
16953 */
16954message PackageInstallerV2Reported {
16955    // Whether this installation uses Incremental File System
16956    optional bool is_incremental = 1;
16957    // Name of the package that is intended to be installed
16958    optional string package_name = 2;
16959    // The duration between when the install was requested to when the install has completed
16960    optional int64 duration_millis = 3;
16961    // Installation result in final integer, which are SystemApi's.
16962    // Return_code 1 indicates success.
16963    // For full list, see frameworks/base/core/java/android/content/pm/PackageManager.java
16964    optional int32 return_code  = 4;
16965    // Total size of the APKs installed for this package
16966    optional int64 apks_size_bytes = 5;
16967    // UID of the package. -1 if the installation failed.
16968    optional int32 uid = 6 [(is_uid) = true];
16969}
16970
16971/**
16972 * Logs settings provider values.
16973 *
16974 * Use DeviceConfig.getProperties to get a list Setting key, query the data from content provider,
16975 * then write the value to proto.
16976 *
16977 */
16978message SettingSnapshot {
16979
16980    // Setting key
16981    optional string name = 1;
16982
16983    enum SettingsValueType {
16984        NOTASSIGNED = 0;
16985        ASSIGNED_BOOL_TYPE = 1;
16986        ASSIGNED_INT_TYPE = 2;
16987        ASSIGNED_FLOAT_TYPE = 3;
16988        ASSIGNED_STRING_TYPE = 4;
16989    };
16990    // Setting value type
16991    optional SettingsValueType type = 2;
16992
16993    optional bool bool_value = 3;
16994
16995    optional int32 int_value = 4;
16996
16997    optional float float_value = 5;
16998
16999    optional string str_value = 6;
17000
17001    // Android user index. 0 for primary user, 10, 11 for secondary or profile user
17002    optional int32 user_id = 7;
17003}
17004
17005/**
17006 * An event logged to indicate that a user journey is about to be performed. This atom includes
17007 * relevant information about the users involved in the journey. A UserLifecycleEventOccurred event
17008 * will immediately follow this atom which will describe the event(s) and its state.
17009 *
17010 * Logged from:
17011 *   frameworks/base/services/core/java/com/android/server/am/UserController.java
17012 *   frameworks/base/services/core/java/com/android/server/pm/UserManagerService.java
17013 */
17014message UserLifecycleJourneyReported {
17015    // An identifier to track a chain of user lifecycle events occurring (referenced in the
17016    // UserLifecycleEventOccurred atom)
17017    optional int64 session_id = 1;
17018
17019    // Indicates what type of user journey this session is related to
17020    enum Journey {
17021        UNKNOWN = 0; // Undefined user lifecycle journey
17022        USER_SWITCH_UI = 1; // A user switch journey where a UI is shown
17023        USER_SWITCH_FG = 2; // A user switch journey without a UI shown
17024        USER_START = 3; // A user start journey
17025        USER_CREATE = 4; // A user creation journey
17026        USER_STOP = 5; // A user stop journey
17027        USER_REMOVE = 6; // A user removal journey
17028        GRANT_ADMIN = 7; // An admin grant journey
17029        REVOKE_ADMIN = 8; // An admin revocation journey
17030        USER_LIFECYCLE = 9; // User journey from creation to deletion
17031    }
17032    optional Journey journey = 2;
17033    // Which user the journey is originating from - could be -1 for certain phases (eg USER_CREATE)
17034    // This integer is a UserIdInt (eg 0 for the system user, 10 for secondary/guest)
17035    optional int32 origin_user = 3;
17036    // Which user the journey is targeting
17037    // This integer is a UserIdInt (eg 0 for the system user, 10 for secondary/guest)
17038    optional int32 target_user = 4;
17039
17040    // What is the user type of the target user
17041    // These should be in sync with USER_TYPE_* flags defined in UserManager.java
17042    enum UserType {
17043        TYPE_UNKNOWN = 0;
17044        FULL_SYSTEM = 1;
17045        FULL_SECONDARY = 2;
17046        FULL_GUEST = 3;
17047        FULL_DEMO = 4;
17048        FULL_RESTRICTED = 5;
17049        PROFILE_MANAGED = 6;
17050        SYSTEM_HEADLESS = 7;
17051        PROFILE_CLONE = 8;
17052        PROFILE_PRIVATE = 9;
17053    }
17054    optional UserType user_type = 5;
17055    // What are the flags attached to the target user
17056    optional int32 user_flags = 6;
17057    optional int32 error_code = 7;
17058    optional int64 elapsed_time = 8;
17059}
17060
17061/**
17062 * An event logged when a specific user lifecycle event is performed. These events should be
17063 * correlated with a UserLifecycleJourneyReported atom via the session_id.
17064 * Note: journeys can span over multiple events, hence some events may share a single session id.
17065 *
17066 * Logged from:
17067 *   frameworks/base/services/core/java/com/android/server/am/UserController.java
17068 *   frameworks/base/services/core/java/com/android/server/pm/UserManagerService.java
17069 */
17070message UserLifecycleEventOccurred {
17071    // An id which links back to user details (reported in the UserLifecycleJourneyReported atom)
17072    optional int64 session_id = 1;
17073    // The target user for this event (same as target_user in the UserLifecycleJourneyReported atom)
17074    // This integer is a UserIdInt (eg 0 for the system user, 10 for secondary/guest)
17075    optional int32 user_id = 2;
17076
17077    enum Event {
17078        UNKNOWN = 0; // Indicates that the associated user journey timed-out or resulted in an error
17079        SWITCH_USER = 1; // Indicates that this is a user switch event
17080        START_USER = 2; // Indicates that this is a user start event
17081        CREATE_USER = 3; // Indicates that this is a user create event
17082        USER_RUNNING_LOCKED = 4; // Indicates that user is running in locked state
17083        UNLOCKING_USER = 5; // Indicates that this is a user unlocking event
17084        UNLOCKED_USER = 6; // Indicates that this is a user unlocked event
17085        STOP_USER = 7; // Indicates that this is a user stop event
17086        REMOVE_USER = 8; // Indicates that this is a user removal event
17087        GRANT_ADMIN = 9; // Indicates that this is an admin privileges grant event
17088        REVOKE_ADMIN = 10; // Indicates that this is an admin privileges revocation event
17089    }
17090    optional Event event = 3;
17091
17092    enum State {
17093        NONE = 0; // Indicates the associated event has no start/end defined
17094        BEGIN = 1;
17095        FINISH = 2;
17096        CANCEL = 3;
17097        ERROR = 4;
17098    }
17099    optional State state = 4; // Represents the state of an event (beginning/ending)
17100    optional int32 error_code = 5;
17101}
17102
17103/**
17104 * The UserInfo information about an Android user (as used in UserManager multiuser).
17105 *
17106 * Currently, we do not include information about user 0, since it is uninteresting.
17107 *
17108 * This will be pulled from
17109 *     frameworks/base/services/core/java/com/android/server/pm/UserManagerService.java
17110 */
17111message UserInfo {
17112    // The @UserIdInt userId of the user
17113    optional int32 user_id = 1;
17114
17115    // The type of user, if AOSP-defined, such as {@link UserManager#USER_TYPE_PROFILE_MANAGED}
17116    optional UserLifecycleJourneyReported.UserType user_type = 2;
17117
17118    // The type of user if not AOSP-defined. Will be empty if user_type is not TYPE_UNKNOWN.
17119    optional string user_type_custom = 3;
17120
17121    // The @UserInfoFlag UserInfo flags of user.
17122    optional int32 user_flags = 4;
17123
17124    // Wall-clock time in milliseconds when user was created, according to System.currentTimeMillis
17125    optional int64 creation_time_millis = 5;
17126
17127    // Wall-clock time in milliseconds when user last entered the state of STATE_RUNNING_UNLOCKED,
17128    // according to System.currentTimeMillis
17129    optional int64 last_logged_in_time_millis = 6;
17130
17131    // True if user is currently running and unlocked.
17132    // Note that this is NOT synonymous with being the 'current' user. Multiple users may be
17133    // running unlocked, with one in the foreground and others running in the background.
17134    optional bool is_user_running_unlocked = 7;
17135}
17136
17137
17138/**
17139 * The MultiUserInfo information about maximum supported users on the device.
17140 *
17141 * This will be pulled from
17142 *     frameworks/base/services/core/java/com/android/server/pm/UserManagerService.java
17143 */
17144message MultiUserInfo {
17145    // Maximum users supported on the device
17146    optional int32 max_supported_users = 1;
17147    // Whether multi user setting is on.
17148    optional bool multi_user_setting_on = 2;
17149    // Whether device supports multiuser and owner have no restriction in adding users.
17150    optional bool supports_adding_full_users = 3;
17151}
17152
17153/**
17154 * Logs when accessibility shortcut clicked.
17155 *
17156 * Logged from:
17157 *   frameworks/base/services/accessibility/java/com/android/server/accessibility
17158 */
17159message AccessibilityShortcutReported {
17160    // The accessibility feature(including installed a11y service, framework a11y feature,
17161    // and installed a11y activity) package name that is assigned to the accessibility shortcut.
17162    optional string package_name = 1;
17163
17164    // The definition of the accessibility shortcut.
17165    // From frameworks/proto_logging/stats/enums/stats/accessibility/accessibility_enums.proto.
17166    optional android.stats.accessibility.ShortcutType shortcut_type = 2;
17167
17168    // The definition of the service status.
17169    // From frameworks/proto_logging/stats/enums/stats/accessibility/accessibility_enums.proto.
17170    optional android.stats.accessibility.ServiceStatus service_status = 3;
17171}
17172
17173/**
17174 * Logs when accessibility service status changed.
17175 *
17176 * Logged from:
17177 *   packages/apps/Settings/src/com/android/settings/accessibility
17178 */
17179message AccessibilityServiceReported {
17180    // The accessibility service package name.
17181    optional string package_name = 1;
17182
17183    // The definition of the service status.
17184    // From frameworks/proto_logging/stats/enums/stats/accessibility/accessibility_enums.proto.
17185    optional android.stats.accessibility.ServiceStatus service_status = 2;
17186}
17187
17188/**
17189 * Pulls accessibility shortcuts status.
17190 *
17191 * Pulled from:
17192 *   StatsPullAtomService
17193 */
17194message AccessibilityShortcutStats {
17195    // The definition of the accessibility software shortcut.
17196    // From frameworks/proto_logging/stats/enums/stats/accessibility/accessibility_enums.proto.
17197    optional android.stats.accessibility.ShortcutType software_shortcut_type = 1;
17198    // Number of accessibility services in accessibility software shortcut.
17199    optional int32 software_shortcut_service_num = 2;
17200
17201    // The definition of the accessibility hardware shortcut.
17202    // From frameworks/proto_logging/stats/enums/stats/accessibility/accessibility_enums.proto.
17203    optional android.stats.accessibility.ShortcutType hardware_shortcut_type = 3;
17204    // Number of accessibility services in accessibility hardware shortcut.
17205    optional int32 hardware_shortcut_service_num = 4;
17206
17207    // The definition of the accessibility gesture shortcut.
17208    // From frameworks/proto_logging/stats/enums/stats/accessibility/accessibility_enums.proto.
17209    optional android.stats.accessibility.ShortcutType gesture_shortcut_type = 5;
17210    // Number of accessibility services in accessibility gesture shortcut.
17211    optional int32 gesture_shortcut_service_num = 6;
17212
17213    // The definition of the accessibility quick settings shortcut.
17214    // From frameworks/proto_logging/stats/enums/stats/accessibility/accessibility_enums.proto.
17215    optional android.stats.accessibility.ShortcutType qs_shortcut_type = 7;
17216    // Boolean indicating whether the user turns on qs shortcut for any
17217    // accessibility feature that support qs shortcut.
17218    optional bool use_qs_shortcut = 8;
17219}
17220
17221/**
17222 * Pulls accessibility floating menu status.
17223 *
17224 * Pulled from:
17225 *   StatsPullAtomService
17226 */
17227message AccessibilityFloatingMenuStats {
17228    // Size of the accessibility floating menu.
17229    optional int32 size = 1;
17230    // Icon shape of the accessibility floating menu.
17231    optional int32 icon_type = 2;
17232    // Whether the accessibility floating menu is enable auto fade ability.
17233    optional bool fade_enabled = 3;
17234    // Opacity of the accessibility floating menu. The range is between 0 and 1.
17235    optional float opacity = 4;
17236}
17237
17238/**
17239 * Logs when display wake up.
17240 *
17241 * Logged from:
17242 *   services/core/java/com/android/server/power/Notifier.java
17243 */
17244
17245message DisplayWakeReported {
17246    // Wake_up_reason code
17247    // If LOWORD(wake_up_reason) = 0
17248    //     reference to HIWORD(wake_up_reason) PowerManager.WAKE_REASON_XXX
17249    //     else reference wake_up_reason to
17250    //     services/core/java/com/android/server/power/Notifier.java#onWakeUp
17251    optional int32 wake_up_reason = 1;
17252    // UID that caused the display to wake
17253    optional int32 uid = 2 [(is_uid) = true];
17254}
17255
17256/**
17257 * Logs app usage events.
17258 *
17259 * Logged from:
17260 *  frameworks/base/services/usage/java/com/android/server/usage/UsageStatsService.java
17261 */
17262message AppUsageEventOccurred {
17263    optional int32 uid = 1 [(is_uid) = true];
17264    optional string package_name = 2;
17265    optional string class_name = 3;
17266
17267    // Usage event types please refer to below file:
17268    // frameworks/base/core/java/android/app/usage/UsageEvents.java
17269    enum EventType {
17270        NONE = 0;
17271        MOVE_TO_FOREGROUND       = 1;
17272        MOVE_TO_BACKGROUND       = 2;
17273        USER_INTERACTION         = 7;
17274        SHORTCUT_INVOCATION      = 8;
17275        CHOOSER_ACTION           = 9;
17276        STANDBY_BUCKET_CHANGED   = 11;
17277        FOREGROUND_SERVICE_START = 19;
17278        FOREGROUND_SERVICE_STOP  = 20;
17279    }
17280    optional EventType event_type = 4;
17281}
17282
17283/*
17284 * Quality metrics logged when EVS cameras are active.
17285 *
17286 * Logged from:
17287 *  packages/services/Car/evs/manager/1.1/Enumerator.cpp
17288 */
17289message EvsUsageStatsReported {
17290
17291    // Camera identifier to distinguish the source camera device.  This is not
17292    // globally unique and therefore cannot be used to identify the user and/or
17293    // the device.
17294    optional int32 device_id = 1;
17295
17296    // Peak number of clients during the service
17297    optional int32 peak_num_clients = 2;
17298
17299    // Number of erroneous events during the service
17300    optional int32 num_errors = 3;
17301
17302    // Round trip latency of the very first frame
17303    optional int64 first_latency_millis = 4;
17304
17305    // Average frame round trip latency
17306    optional float avg_latency_millis = 5;
17307
17308    // Peak frame round trip latency
17309    optional int64 peak_latency_millis = 6;
17310
17311    // Total number of frames received
17312    optional int64 total_frames = 7;
17313
17314    // Number of frames ignored
17315    optional int64 ignored_frames = 8;
17316
17317    // Number of dropped frames to synchronize camera devices
17318    optional int64 dropped_frames_to_sync = 9;
17319
17320    // The duration of the service
17321    optional int64 duration_millis = 10;
17322}
17323
17324/**
17325 * Logs audio power usage stats.
17326 *
17327 * Pushed from:
17328 *  frameworks/av/services/mediametrics/AudioPowerUsage.cpp
17329 */
17330message AudioPowerUsageDataReported {
17331    /**
17332     * Device used for input/output
17333     *
17334     * All audio devices please refer to below file:
17335     * system/media/audio/include/system/audio-base.h
17336     *
17337     * Define our own enum values because we don't report all audio devices.
17338     * Currently, we only report built-in audio devices such as handset, speaker,
17339     * built-in mics, common audio devices such as wired headset, usb headset
17340     * and bluetooth devices.
17341     */
17342    enum AudioDevice {
17343        OUTPUT_EARPIECE         = 0x1; // handset
17344        OUTPUT_SPEAKER          = 0x2; // dual speaker
17345        OUTPUT_WIRED_HEADSET    = 0x4; // 3.5mm headset
17346        OUTPUT_USB_HEADSET      = 0x8; // usb headset
17347        OUTPUT_BLUETOOTH_SCO    = 0x10; // bluetooth sco
17348        OUTPUT_BLUETOOTH_A2DP   = 0x20; // a2dp
17349        OUTPUT_SPEAKER_SAFE     = 0x40; // bottom speaker
17350        OUTPUT_BLUETOOTH_BLE    = 0x80; // ble
17351        OUTPUT_DOCK             = 0x100; // dock
17352        OUTPUT_HDMI             = 0x200; // hdmi
17353
17354        INPUT_DEVICE_BIT        = 0x40000000; // non-negative positive int32.
17355        INPUT_BUILTIN_MIC       = 0x40000001; // buildin mic
17356        INPUT_BUILTIN_BACK_MIC  = 0x40000002; // buildin back mic
17357        INPUT_WIRED_HEADSET_MIC = 0x40000004; // 3.5mm headset mic
17358        INPUT_USB_HEADSET_MIC   = 0x40000008; // usb headset mic
17359        INPUT_BLUETOOTH_SCO     = 0x40000010; // bluetooth sco mic
17360        INPUT_BLUETOOTH_BLE     = 0x40000020; // ble mic
17361    }
17362    optional AudioDevice audio_device = 1;
17363
17364    // Duration of the audio in seconds
17365    optional int32 duration_secs = 2;
17366
17367    // Average volume (0 ... 1.0)
17368    optional float average_volume = 3;
17369
17370    enum AudioType {
17371        UNKNOWN_TYPE = 0;
17372        VOICE_CALL_TYPE = 1; // voice call
17373        VOIP_CALL_TYPE = 2; // voip call, including uplink and downlink
17374        MEDIA_TYPE = 3; // music and system sound
17375        RINGTONE_NOTIFICATION_TYPE = 4; // ringtone and notification
17376        ALARM_TYPE = 5; // alarm type
17377        // record type
17378        CAMCORDER_TYPE = 6; // camcorder
17379        RECORD_TYPE = 7;  // other recording
17380    }
17381    optional AudioType type = 4;
17382
17383    // Minimum volume duration of the audio in seconds
17384    optional int32 minimum_volume_duration_secs = 5;
17385
17386    // Minimum volume (0 ... 1.0)
17387    optional float minimum_volume = 6;
17388
17389    // Maximum volume duration of the audio in seconds
17390    optional int32 maximum_volume_duration_secs = 7;
17391
17392    // Maximum volume (0 ... 1.0)
17393    optional float maximum_volume = 8;
17394}
17395
17396/**
17397 * Logs the Spatializer capability when the Spatializer is created.
17398 *
17399 * We expect this to occur only once on a healthy system,
17400 * when audioserver is initialized.
17401 *
17402 * On devices that do not support spatialization,
17403 * SpatializerLevel returns SPATIALIZER_LEVEL_NONE only.
17404 *
17405 * Logged from:
17406 *   frameworks/av/services/mediametrics/AudioAnalytics.cpp
17407 */
17408message MediametricsSpatializerCapabilitiesReported {
17409    // Available head tracking modes
17410    repeated android.media.audio.HeadTrackingMode head_tracking_modes = 1;
17411
17412    // Available spatializer levels
17413    repeated android.media.audio.SpatializerLevel spatializer_levels = 2;
17414
17415    // Available spatializer modes
17416    repeated android.media.audio.SpatializerMode spatializer_modes = 3;
17417
17418    // Available channel masks, with each channel position bitwise ORed.
17419    // One or more bits from
17420    // system/media/audio/include/system/audio-hal-enums.h
17421    // audio_channel_mask_t, representing the channel configuration
17422    // of AudioTrack data.
17423    //
17424    // Generally the most populated channel_mask is selected for use.
17425    repeated int64 channel_masks = 4;
17426}
17427
17428/**
17429 * Logs when Spatializer is enabled or disabled for a device.
17430 *
17431 * The event field indicates the reason for enabling or disabling:
17432 * through the Settings UI, startup/boot, or new device detection.
17433 *
17434 * The presence of this message indicates that the audio device type
17435 * supports Spatialization; this is generally a fixed
17436 * property of the platform and depends if the device type is considered
17437 * BINAURAL or TRANSAURAL, and the Spatializer support for it.
17438 *
17439 * This logs existing saved state on BOOT and changes afterwards.
17440 * Due to rpc to the MediaMetrics service which generates the atom,
17441 * the timestamp of the atom may have a slight delay.
17442 *
17443 * Logged from:
17444 *   frameworks/av/services/mediametrics/AudioAnalytics.cpp
17445 */
17446message MediametricsSpatializerDeviceEnabledReported {
17447    // Device type enumeration, e.g. BUILTIN_SPEAKER, BT_A2DP, etc.
17448    optional android.media.audio.AudioDeviceInfoType type = 1;
17449
17450    // The event field indicates the reason for enabling or disabling:
17451    // NORMAL: from Settings UI.
17452    // BOOT: on startup/boot.
17453    // FIRST: on new device detection.
17454    optional android.media.audio.SpatializerSettingEvent event = 2;
17455
17456    // Whether the spatializer is enabled on that device.
17457    // This triggers only on a change of state.
17458    // If multiple devices share the same type (e.g. bluetooth headsets),
17459    // they will register separate messages.
17460    optional bool enabled = 3;
17461}
17462
17463/**
17464 * Logs whether the HeadTracker is enabled for a device.
17465 *
17466 * This only changes if there is a HeadTracker associated with the device.
17467 *
17468 * This logs existing saved state on BOOT and changes afterwards.
17469 * Due to rpc to the MediaMetrics service which generates the atom,
17470 * the timestamp of the atom may have a slight delay.
17471 *
17472 * Logged from:
17473 *   frameworks/av/services/mediametrics/AudioAnalytics.cpp
17474 */
17475message MediametricsHeadTrackerDeviceEnabledReported {
17476    // Device type enumeration, e.g. BUILTIN_SPEAKER, BT_A2DP, etc.
17477    optional android.media.audio.AudioDeviceInfoType type = 1;
17478
17479    // The event field indicates the reason for enabling or disabling:
17480    // NORMAL: from Settings UI.
17481    // BOOT: on startup/boot.
17482    // FIRST: on new device detection.
17483    optional android.media.audio.SpatializerSettingEvent event = 2;
17484
17485    // Whether the head tracker was enabled or disabled on that device.
17486    // This triggers only on a change of state.
17487    // If multiple devices share the same type (e.g. bluetooth headsets),
17488    // they will register separate messages.
17489    optional bool enabled = 3;
17490}
17491
17492/**
17493 * Logs whether the HeadTracker is supported for a device.
17494 *
17495 * Generally a fixed property of the device, but it is possible
17496 * that the HeadTracker sensor might be turned off
17497 * or be temporarily unavailable.
17498 *
17499 * This logs existing saved state on BOOT and changes afterwards.
17500 * Due to rpc to the MediaMetrics service which generates the atom,
17501 * the timestamp of the atom may have a slight delay.
17502 *
17503 * Logged from:
17504 *   frameworks/av/services/mediametrics/AudioAnalytics.cpp
17505 */
17506message MediametricsHeadTrackerDeviceSupportedReported {
17507    // Device type enumeration, e.g. BUILTIN_SPEAKER, BT_A2DP, etc.
17508    optional android.media.audio.AudioDeviceInfoType type = 1;
17509
17510    // The event field indicates the reason for enabling or disabling:
17511    // NORMAL: on sensor change.
17512    // BOOT: on startup/boot.
17513    // FIRST: on new device detection.
17514    optional android.media.audio.SpatializerSettingEvent event = 2;
17515
17516    // Whether the head tracker is supported on that device.
17517    // This triggers only on a change of state.
17518    // If multiple devices share the same type (e.g. bluetooth headsets),
17519    // they will register separate messages.
17520    optional bool supported = 3;
17521}
17522
17523/**
17524  * Pulls bytes transferred over WiFi and mobile networks sliced by uid, is_metered, and tag.
17525  *
17526  * Pulled from:
17527  *   StatsPullAtomService, which uses NetworkStatsService to query NetworkStats.
17528  */
17529message BytesTransferByTagAndMetered {
17530    optional int32 uid = 1 [(is_uid) = true];
17531
17532    optional bool is_metered = 2;
17533
17534    optional int32 tag = 3;
17535
17536    optional int64 rx_bytes = 4;
17537
17538    optional int64 rx_packets = 5;
17539
17540    optional int64 tx_bytes = 6;
17541
17542    optional int64 tx_packets = 7;
17543
17544    // Radio Access Technology (RAT) type of this record, should be one of
17545    // TelephonyManager#NETWORK_TYPE_* constants, or
17546    // NetworkTemplate#NETWORK_TYPE_ALL to indicate the record is for all rat
17547    // types combined.
17548    optional int32 rat_type = 8;
17549}
17550
17551/**
17552 * Logs when the Assistant is invoked.
17553 *
17554 * Logged from:
17555 *   frameworks/base/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
17556 */
17557message AssistantInvocationReported {
17558
17559    // The event_id (as for UiEventReported).
17560    optional int32 event_id = 1;
17561
17562    // The registered Assistant's uid and package (as for UiEventReported).
17563    optional int32 uid = 2 [(is_uid) = true];
17564    optional string package_name = 3;
17565
17566    // An identifier used to disambiguate which logs refer to a particular invocation of the
17567    // Assistant  (as for UiEventReported).
17568    optional int32 instance_id = 4;
17569
17570    // The state of the device at the time of invocation.
17571    enum DeviceState {
17572        UNKNOWN_DEVICE_STATE = 0;
17573        AOD1 = 1;
17574        AOD2 = 2;
17575        BOUNCER = 3;
17576        UNLOCKED_LOCKSCREEN = 4;
17577        LAUNCHER_HOME = 5;
17578        LAUNCHER_OVERVIEW = 6;
17579        LAUNCHER_ALL_APPS = 7;
17580        APP_DEFAULT = 8;
17581        APP_IMMERSIVE = 9;
17582        APP_FULLSCREEN = 10;
17583    }
17584    optional DeviceState device_state = 5;
17585
17586    // Whether the Assistant handles were showing at the time of invocation.
17587    optional bool assistant_handles_showing = 6;
17588}
17589
17590/**
17591 * Logs when an AudioRecord finishes running on an audio device
17592 *
17593 * Logged from:
17594 *   frameworks/av/services/mediametrics/AudioAnalytics.cpp
17595 */
17596message MediametricsAudioRecordDeviceUsageReported {
17597    // The devices connected to this AudioRecord.
17598    // A string OR of various input device categories, e.g. "DEVICE1|DEVICE2".
17599    // See lookup<INPUT_DEVICE>() in frameworks/av/services/mediametrics/AudioTypes.cpp
17600    // See audio_device_t in system/media/audio/include/system/audio-base.h
17601    optional string devices = 1;
17602
17603    // The name of the remote device attached to the device, typically available for USB or BT.
17604    // This may be empty for a fixed device, or separated by "|" if more than one.
17605    optional string device_names = 2;
17606
17607    // The amount of time spent in the device as measured by the active track in AudioFlinger.
17608    optional int64 device_time_nanos = 3;
17609
17610    // The audio data format used for encoding.
17611    // An enumeration from system/media/audio/include/system/audio-base.h audio_format_t
17612    optional string encoding = 4;
17613
17614    // The client-server buffer framecount.
17615    // The framecount is generally between 960 - 48000 for PCM encoding.
17616    // The framecount represents raw buffer size in bytes for non-PCM encoding.
17617    optional int32 frame_count = 5;
17618
17619    // The number of audio intervals (contiguous, continuous playbacks).
17620    optional int32 interval_count = 6;
17621
17622    // The sample rate of the AudioRecord.
17623    // A number generally between 8000-96000 (frames per second).
17624    optional int32 sample_rate = 7;
17625
17626    // The audio input flags used to construct the AudioRecord.
17627    // A string OR from system/media/audio/include/system/audio-base.h audio_input_flags_t
17628    optional string flags = 8;
17629
17630    // The santized package name of the audio client associated with the AudioRecord.
17631    // See getSanitizedPackageNameAndVersionCode() in
17632    // frameworks/av/services/mediametrics/MediaMetricsService.cpp
17633    optional string package_name = 9;
17634
17635    // The selected device id (nonzero if a non-default device is selected)
17636    optional int32 selected_device_id = 10;
17637
17638    // The caller of the AudioRecord.
17639    // See lookup<CALLER_NAME>() in frameworks/av/services/mediametrics/AudioTypes.cpp
17640    optional string caller = 11;
17641
17642    // The audio source for AudioRecord.
17643    // An enumeration from system/media/audio/include/system/audio-base.h audio_source_t
17644    optional string source = 12;
17645
17646    // Android S
17647    // Metric log session id, a Base64Url encoded string of a randomly generated 128-bit integer.
17648    // An empty string means no session id is set.
17649    optional string log_session_id = 13;
17650}
17651
17652/**
17653 * Logs when an AudioThread finishes running on an audio device
17654 *
17655 * Logged from:
17656 *   frameworks/av/services/mediametrics/AudioAnalytics.cpp
17657 */
17658message MediametricsAudioThreadDeviceUsageReported {
17659    // The devices connected to this audio thread.
17660    // A string OR of various input device categories, e.g. "DEVICE1|DEVICE2".
17661    // (for record threads):
17662    // See lookup<INPUT_DEVICE> in frameworks/av/services/mediametrics/AudioTypes.cpp
17663    // (for playback threads):
17664    // See lookup<OUTPUT_DEVICE>() in frameworks/av/services/mediametrics/AudioTypes.cpp
17665    // See audio_device_t in system/media/audio/include/system/audio-base.h
17666    optional string devices = 1;
17667
17668    // The name of the remote device attached to the device, typically available for USB or BT.
17669    // This may be empty for a fixed device, or separated by "|" if more than one.
17670    optional string device_names = 2;
17671
17672    // The amount of time spent in the device as measured by the active track in AudioFlinger.
17673    optional int64 device_time_nanos = 3;
17674
17675    // The audio data format used for encoding.
17676    // An enumeration from system/media/audio/include/system/audio-base.h audio_format_t
17677    optional string encoding = 4;
17678
17679    // The framecount of the buffer delivered to (or from) the HAL.
17680    // The framecount is generally ~960 for PCM encoding.
17681    // The framecount represents raw buffer size in bytes for non-PCM encoding.
17682    optional int32 frame_count = 5;
17683
17684    // The number of audio intervals (contiguous, continuous playbacks).
17685    optional int32 interval_count = 6;
17686
17687    // The sample rate of the audio thread.
17688    // A number generally between 8000-96000 (frames per second).
17689    optional int32 sample_rate = 7;
17690
17691    // The audio flags used to construct the thread
17692    // (for record threads):
17693    // A string OR from system/media/audio/include/system/audio-base.h audio_input_flags_t
17694    // (for playback threads):
17695    // A string OR from system/media/audio/include/system/audio-base.h audio_output_flags_t
17696    optional string flags = 8;
17697
17698    // The number of underruns encountered for a playback thread or the
17699    // number of overruns encountered for a capture thread.
17700    optional int32 xruns = 9;
17701
17702    // The type of thread
17703    // A thread type enumeration from
17704    // frameworks/av/mediametrics/services/Translate.h
17705    optional string type = 10;
17706}
17707
17708/**
17709 * Logs when an AudioTrack finishes running on an audio device
17710 *
17711 * Logged from:
17712 *   frameworks/av/services/mediametrics/AudioAnalytics.cpp
17713 */
17714message MediametricsAudioTrackDeviceUsageReported {
17715    // The output devices connected to this AudioTrack.
17716    // A string OR of various output device categories, e.g. "DEVICE1|DEVICE2".
17717    // See lookup<OUTPUT_DEVICE>() in frameworks/av/services/mediametrics/AudioTypes.cpp
17718    // See audio_device_t in system/media/audio/include/system/audio-base.h
17719    optional string devices = 1;
17720
17721    // The name of the remote device attached to the device, typically available for USB or BT.
17722    // This may be empty for a fixed device, or separated by "|" if more than one.
17723    optional string device_names = 2;
17724
17725    // The amount of time spent in the device as measured by the active track in AudioFlinger.
17726    optional int64 device_time_nanos = 3;
17727
17728    // The audio data format used for encoding.
17729    // An enumeration from system/media/audio/include/system/audio-base.h audio_format_t
17730    optional string encoding = 4;
17731
17732    // The client-server buffer framecount.
17733    // The framecount is generally between 960 - 48000 for PCM encoding.
17734    // The framecount represents raw buffer size in bytes for non-PCM encoding.
17735    // A static track (see traits) may have a very large framecount.
17736    optional int32 frame_count = 5;
17737
17738    // The number of audio intervals (contiguous, continuous playbacks).
17739    optional int32 interval_count = 6;
17740
17741    // The sample rate of the AudioTrack.
17742    // A number generally between 8000-96000 (frames per second).
17743    optional int32 sample_rate = 7;
17744
17745    // The audio flags used to construct the AudioTrack.
17746    // A string OR from system/media/audio/include/system/audio-base.h audio_output_flags_t
17747    optional string flags = 8;
17748
17749    // The number of underruns encountered.
17750    optional int32 xruns = 9;
17751
17752    // The santized package name of the audio client associated with the AudioTrack.
17753    // See getSanitizedPackageNameAndVersionCode() in
17754    // frameworks/av/services/mediametrics/MediaMetricsService.cpp
17755    optional string package_name = 10;
17756
17757    // The latency of the last sample in the buffer in milliseconds.
17758    optional float device_latency_millis = 11;
17759
17760    // The startup time in milliseconds from start() to sample played.
17761    optional float device_startup_millis = 12;
17762
17763    // The average volume of the track on the device [ 0.f - 1.f ]
17764    optional float device_volume = 13;
17765
17766    // The selected device id (nonzero if a non-default device is selected)
17767    optional int32 selected_device_id = 14;
17768
17769    // The stream_type category for the AudioTrack.
17770    // An enumeration from system/media/audio/include/system/audio-base.h audio_stream_type_t
17771    optional string stream_type = 15;
17772
17773    // The usage for the AudioTrack.
17774    // An enumeration from system/media/audio/include/system/audio-base.h audio_usage_t
17775    optional string usage = 16;
17776
17777    // The content type of the AudioTrack.
17778    // An enumeration from system/media/audio/include/system/audio-base.h audio_content_type_t
17779    optional string content_type = 17;
17780
17781    // The caller of the AudioTrack.
17782    // See lookup<CALLER_NAME>() in frameworks/av/services/mediametrics/AudioTypes.cpp
17783    optional string caller = 18;
17784
17785    // The traits of the AudioTrack.
17786    // A string OR of different traits, may be empty string.
17787    // Only "static" is supported for R.
17788    // See lookup<TRACK_TRAITS>() in frameworks/av/services/mediametrics/AudioTypes.cpp
17789    optional string traits = 19;
17790
17791    // Android S
17792    // Metric log session id, a Base64Url encoded string of a randomly generated 128-bit integer.
17793    // An empty string means no session id is set.
17794    optional string log_session_id = 20;
17795}
17796
17797/**
17798 * Logs the status of an audio device connection attempt.
17799 *
17800 * Logged from:
17801 *   frameworks/av/services/mediametrics/AudioAnalytics.cpp
17802 */
17803message MediametricsAudioDeviceConnectionReported {
17804    // The input devices represented by this report.
17805    // A string OR of various input device categories, e.g. "DEVICE1|DEVICE2".
17806    // See lookup<INPUT_DEVICE>() in frameworks/av/services/mediametrics/AudioTypes.cpp
17807    // See audio_device_t in system/media/audio/include/system/audio-base.h
17808    optional string input_devices = 1;
17809
17810    // The output devices represented by this report.
17811    // A string OR of various output device categories.
17812    // See lookup<OUTPUT_DEVICE>() in frameworks/av/services/mediametrics/AudioTypes.cpp
17813    // See audio_device_t in system/media/audio/include/system/audio-base.h
17814    optional string output_devices = 2;
17815
17816    // The name of the remote device attached to the device, typically available for USB or BT.
17817    // This may be empty for a fixed device, or separated by "|" if more than one.
17818    optional string device_names = 3;
17819
17820    // The result of the audio device connection.
17821    // 0 indicates success: connection verified.
17822    // 1 indicates unknown: connection not verified or not known if diverted properly.
17823    // Other values indicate specific status.
17824    // See DeviceConnectionResult in frameworks/av/services/mediametrics/AudioTypes.h
17825    optional int32 result = 4;
17826
17827    // Average milliseconds of time to connect
17828    optional float time_to_connect_millis = 5;
17829
17830    // Number of connections if aggregated statistics, otherwise 1.
17831    optional int32 connection_count = 6;
17832}
17833
17834/**
17835 * Logs the status of an AudioRecord operation.
17836 *
17837 * Logged from:
17838 *   frameworks/av/services/mediametrics/AudioAnalytics.cpp
17839 */
17840message MediametricsAudioRecordStatusReported {
17841    // General status code for categorization of status.
17842    optional android.media.Status status = 1;
17843
17844    // Status or error message, e.g. logcat.
17845    optional string debug_message = 2;
17846
17847    // Supplemental status subcode for AudioRecord.
17848    optional int32 status_subcode = 3;
17849
17850    // Uid associated with the AudioRecord.
17851    optional int32 uid = 4 [(is_uid) = true];
17852
17853    // The AudioRecord event.
17854    optional android.media.audio.AudioRecordEvent event = 5;
17855
17856    // Requested AudioRecord flags, with each flag bitwise ORed.
17857    // One or more bits from system/media/audio/include/system/audio-hal-enums.h
17858    // audio_input_flags_t
17859    optional int32 input_flags = 6;
17860
17861    // An enumeration from system/media/audio/include/system/audio-hal-enums.h
17862    // audio_source_t, representing the input source for the AudioRecord.
17863    optional android.media.audio.Source source = 7;
17864
17865    // An enumeration from system/media/audio/include/system/audio-hal-enums.h
17866    // audio_format_t, representing the encoding of the AudioRecord data.
17867    optional android.media.audio.Encoding encoding = 8;
17868
17869    // Channel mask, with each channel position bitwise ORed.
17870    // One or more bits from system/media/audio/include/system/audio-hal-enums.h
17871    // audio_channel_mask_t, representing the input channel configuration
17872    // of AudioRecord data.
17873    optional int64 channel_mask = 9;
17874
17875    // The size of the AudioRecord buffer in frames.
17876    // If an error occurs during creation, this may be a small integer requested size
17877    // as AudioFlinger is entitled to increase this as required.
17878    optional int32 buffer_frame_count = 10;
17879
17880    // Sample rate in Hz.
17881    optional int32 sample_rate = 11;
17882}
17883
17884/**
17885 * Logs the status of an AudioTrack operation.
17886 *
17887 * Logged from:
17888 *   frameworks/av/services/mediametrics/AudioAnalytics.cpp
17889 */
17890message MediametricsAudioTrackStatusReported {
17891    // General status code for categorization of status.
17892    optional android.media.Status status = 1;
17893
17894    // Status or error message, e.g. logcat.
17895    optional string debug_message = 2;
17896
17897    // Supplemental status subcode for AudioTrack.
17898    optional int32 status_subcode = 3;
17899
17900    // Uid associated with track
17901    optional int32 uid = 4 [(is_uid) = true];
17902
17903    // The AudioTrack event.
17904    optional android.media.audio.AudioTrackEvent event = 5;
17905
17906    // Requested AudioTrack flags, with each flag bitwise ORed.
17907    // One or more bits from system/media/audio/include/system/audio-hal-enums.h
17908    // audio_output_flags_t
17909    optional int32 output_flags = 6;
17910
17911    // An enumeration from system/media/audio/include/system/audio-hal-enums.h
17912    // audio_content_type_t, representing the content type of the AudioTrack.
17913    optional android.media.audio.ContentType content_type = 7;
17914
17915    // An enumeration from system/media/audio/include/system/audio-hal-enums.h
17916    // audio_usage_t, representing the use case for the AudioTrack.
17917    optional android.media.audio.Usage usage = 8;
17918
17919    // An enumeration from system/media/audio/include/system/audio-hal-enums.h
17920    // audio_format_t, representing the encoding of the AudioTrack data.
17921    optional android.media.audio.Encoding encoding = 9;
17922
17923    // Channel mask, with each channel position bitwise ORed.
17924    // One or more bits from system/media/audio/include/system/audio-hal-enums.h
17925    // audio_channel_mask_t, representing the channel configuration of AudioTrack data.
17926    optional int64 channel_mask = 10;
17927
17928    // The size of the AudioTrack buffer in frames.
17929    // If an error occurs during creation, this may be a small integer requested size
17930    // as AudioFlinger is entitled to increase this as required.
17931    optional int32 buffer_frame_count = 11;
17932
17933    // Sample rate in Hz.
17934    optional int32 sample_rate = 12;
17935
17936    // Playback speed, nominal 1.f representing 1x.
17937    optional float speed = 13;
17938
17939    // Playback pitch, nominal 1.f representing 1x.
17940    optional float pitch = 14;
17941}
17942
17943/**
17944 * Logs: i) creation of different types of cryptographic keys in the keystore,
17945 * ii) operations performed using the keys,
17946 * iii) attestation of the keys
17947 * Logged from: system/security/keystore/key_event_log_handler.cpp
17948 */
17949message KeystoreKeyEventReported {
17950
17951    enum Algorithm {
17952        /** Asymmetric algorithms. */
17953        RSA = 1;
17954        // 2 removed, do not reuse.
17955        EC = 3;
17956        /** Block cipher algorithms */
17957        AES = 32;
17958        TRIPLE_DES = 33;
17959        /** MAC algorithms */
17960        HMAC = 128;
17961    };
17962    /** Algorithm associated with the key */
17963    optional Algorithm algorithm = 1;
17964
17965    /** Size of the key */
17966    optional int32 key_size = 2;
17967
17968    enum KeyOrigin {
17969        /** Generated in keymaster.  Should not exist outside the TEE. */
17970        GENERATED = 0;
17971        /** Derived inside keymaster.  Likely exists off-device. */
17972        DERIVED = 1;
17973        /** Imported into keymaster.  Existed as cleartext in Android. */
17974        IMPORTED = 2;
17975        /** Keymaster did not record origin. */
17976        UNKNOWN = 3;
17977        /** Securely imported into Keymaster. */
17978        SECURELY_IMPORTED = 4;
17979    };
17980    /* Logs whether the key was generated, imported, securely imported, or derived.*/
17981    optional KeyOrigin key_origin = 3;
17982
17983    enum HardwareAuthenticatorType {
17984        NONE = 0;
17985        PASSWORD = 1;
17986        FINGERPRINT = 2;
17987        // Additional entries must be powers of 2.
17988    };
17989    /**
17990     * What auth types does this key require? If none,
17991     * then no auth required.
17992     */
17993    optional HardwareAuthenticatorType user_auth_type = 4;
17994
17995    /**
17996     * If user authentication is required, is the requirement time based? If it
17997     * is not time based then this field will not be used and the key is per
17998     * operation. Per operation keys must be user authenticated on each usage.
17999     */
18000    optional int32 user_auth_key_timeout_secs = 5;
18001
18002    /**
18003     * padding mode, digest, block_mode and purpose should ideally be repeated
18004     * fields. However, since statsd does not support repeated fields in
18005     * pushed atoms, they are represented using bitmaps.
18006     */
18007
18008    /** Track which padding mode is being used.*/
18009    optional int32 padding_mode_bitmap = 6;
18010
18011    /** Track which digest is being used. */
18012    optional int32 digest_bitmap = 7;
18013
18014    /** Track what block mode is being used (for encryption). */
18015    optional int32 block_mode_bitmap = 8;
18016
18017    /** Track what purpose is this key serving. */
18018    optional int32 purpose_bitmap = 9;
18019
18020    enum EcCurve {
18021        P_224 = 0;
18022        P_256 = 1;
18023        P_384 = 2;
18024        P_521 = 3;
18025    };
18026    /** Which ec curve was selected if elliptic curve cryptography is in use **/
18027    optional EcCurve ec_curve = 10;
18028
18029    enum KeyBlobUsageRequirements {
18030        STANDALONE = 0;
18031        REQUIRES_FILE_SYSTEM = 1;
18032    };
18033    /** Standalone or is a file system required */
18034    optional KeyBlobUsageRequirements key_blob_usage_reqs = 11;
18035
18036    enum Type {
18037        key_operation = 0;
18038        key_creation = 1;
18039        key_attestation = 2;
18040    }
18041    /** Key creation event, operation event or attestation event? */
18042    optional Type type = 12;
18043
18044    /** Was the key creation, operation, or attestation successful? */
18045    optional bool was_successful = 13;
18046
18047    /** Response code or error code */
18048    optional int32 error_code = 14;
18049}
18050
18051/**
18052 * Logs a key creation, with information about the parameters and outcome.
18053 *
18054 * Note that each key creation results in multiple atoms being emitted due
18055 * to the cardinality of the fields related to key creations that we are
18056 * interested in collecting. See the messages with names starting with
18057 * "Keystore2KeyCreation" for the others.
18058 *
18059 * Logged from: system/security/keystore2/metrics.rs
18060 */
18061message Keystore2KeyCreationWithGeneralInfo {
18062    // Algorithm associated with the key.
18063    optional android.system.security.keystore2.Algorithm algorithm = 1;
18064
18065    // Size of the key in bits. Set to -1 if algorithm=EC.
18066    optional int32 key_size = 2;
18067
18068    // Mirror of
18069    // hardware/interfaces/security/keymint/aidl/android/hardware/security/keymint/EcCurve.aidl
18070    // except that an unspecified value with enum tag number 0 is added and the
18071    // enum tag numbers of all other values are incremented by 1.
18072    enum EcCurve {
18073        EC_CURVE_UNSPECIFIED = 0;
18074        P_224 = 1;
18075        P_256 = 2;
18076        P_384 = 3;
18077        P_521 = 4;
18078        CURVE_25519 = 5;
18079    };
18080    // Elliptic curve (EC) used, if algorithm=EC. Otherwise, this is set to
18081    // EC_CURVE_UNSPECIFIED.
18082    optional EcCurve ec_curve = 3;
18083
18084    // Mirror of
18085    // hardware/interfaces/security/keymint/aidl/android/hardware/security/keymint/KeyOrigin.aidl
18086    // except that an unspecified value with enum tag number 0 is added and the
18087    // enum tag numbers of all other values are incremented by 1.
18088    enum KeyOrigin {
18089        ORIGIN_UNSPECIFIED = 0;
18090        GENERATED = 1;
18091        DERIVED = 2;
18092        IMPORTED = 3;
18093        RESERVED = 4;
18094        SECURELY_IMPORTED = 5;
18095    };
18096    optional KeyOrigin key_origin = 4;
18097
18098    // Error code if key creation failed:
18099    // - Integers >1 indicate an error from Keystore (the error code is the
18100    //   enum tag number from
18101    //   system/hardware/interfaces/keystore2/aidl/android/system/keystore2/ResponseCode.aidl)
18102    // - Integers <=0 indicate an error from KeyMint (the error code is the
18103    //   enum tag number from
18104    //   hardware/interfaces/security/keymint/aidl/android/hardware/security/keymint/ErrorCode.aidl)
18105    // If key creation succeeded, this is set to 1.
18106    optional int32 error_code = 5;
18107
18108    // Indicates whether an attestation challenge was provided.
18109    optional bool attestation_requested = 6;
18110
18111    // Number of occurrences of a particular combination of all the other
18112    // fields in this proto message.
18113    optional int32 count = 7;
18114}
18115
18116/**
18117 * Logs a key creation, with information about the user authentication
18118 * constraints on the key's usage and the security level of the KeyMint
18119 * instance that created the key.
18120 *
18121 * Note that each key creation results in multiple atoms being emitted due
18122 * to the cardinality of the fields related to key creations that we are
18123 * interested in collecting. See the messages with names starting with
18124 * "Keystore2KeyCreation" for the others.
18125 *
18126 * Logged from: system/security/keystore2/metrics.rs
18127 */
18128message Keystore2KeyCreationWithAuthInfo {
18129    // Mirror of
18130    // hardware/interfaces/security/keymint/aidl/android/hardware/security/keymint/HardwareAuthenticatorType.aidl
18131    // with some exceptions. See the metrics-specific variant of that AIDL enum in
18132    // system/security/keystore2/aidl/android/security/metrics/HardwareAuthenticatorType.aidl for
18133    // details.
18134    enum HardwareAuthenticatorType {
18135        AUTH_TYPE_UNSPECIFIED = 0;
18136        NONE = 1;
18137        PASSWORD = 2;
18138        FINGERPRINT = 3;
18139        PASSWORD_OR_FINGERPRINT = 4;
18140        ANY = 5;
18141        NO_AUTH_TYPE = 6;
18142    };
18143    // How the user must authenticate themself (if at all) in order to use the
18144    // key.
18145    optional HardwareAuthenticatorType user_auth_type = 1;
18146
18147    // Base 10 logarithm of the user authentication timeout in seconds, or -1
18148    // if no timeout was specified. The logarithm is used to reduce the
18149    // cardinality.
18150    // The timeout is specified as an integral number of seconds during key
18151    // creation, so a value of 0 in this field indicates a timeout in the range
18152    // [0, 10), a value of 1 indicates a timeout in the range [10, 100), etc. A
18153    // timeout of 0 means that authentication is required each time the key is
18154    // used.
18155    optional int32 log_auth_timeout_seconds = 2;
18156
18157    // Security level of the KeyMint instance that created the key.
18158    optional android.system.security.keystore2.SecurityLevelEnum security_level = 3;
18159
18160    // Number of occurrences of a particular combination of all the other
18161    // fields in this proto message.
18162    optional int32 count = 4;
18163}
18164
18165/**
18166 * Logs a key creation, with information about the key's algorithm, purpose(s),
18167 * mode(s), and digest(s).
18168 *
18169 * Note that each key creation results in multiple atoms being emitted due
18170 * to the cardinality of the fields related to key creations that we are
18171 * interested in collecting. See the messages with names starting with
18172 * "Keystore2KeyCreation" for the others.
18173 *
18174 * Logged from: system/security/keystore2/metrics.rs
18175 */
18176message Keystore2KeyCreationWithPurposeAndModesInfo {
18177    // Algorithm associated with the key.
18178    optional android.system.security.keystore2.Algorithm algorithm = 1;
18179
18180    // Bitmap of the key purpose(s) specified during key creation.
18181    // Bitmap composition is given by the KeyPurposeBitPosition enum defined in
18182    // system/security/keystore2/src/metrics_store.rs.
18183    optional int32 purpose_bitmap = 2;
18184
18185    // Bitmap of the padding mode(s) specified during key creation.
18186    // Bitmap composition is given by the PaddingModeBitPosition enum defined
18187    // in system/security/keystore2/src/metrics_store.rs.
18188    optional int32 padding_mode_bitmap = 3;
18189
18190    // Bitmap of the digest(s) specified during key creation.
18191    // Bitmap composition is given by the DigestBitPosition enum defined in
18192    // system/security/keystore2/src/metrics_store.rs.
18193    optional int32 digest_bitmap = 4;
18194
18195    // Bitmap of the block mode(s) specified during key creation.
18196    // Bitmap composition is given by the BlockModeBitPosition enum defined in
18197    // system/security/keystore2/src/metrics_store.rs.
18198    optional int32 block_mode_bitmap = 5;
18199
18200    // Number of occurrences of a particular combination of all the other
18201    // fields in this proto message.
18202    optional int32 count = 6;
18203}
18204
18205/**
18206 * Logs when an atom exceeds the maximum size for atoms stored in Keystore2's
18207 * in-memory store.
18208 *
18209 * The Keystore2 atoms are designed such that their expected cardinalities are
18210 * within statsd's limits. This atom is used to track cases where atoms stored
18211 * in Keystore2's in-memory store have a larger than expected cardinality and
18212 * exceed the maximum size per atom (defined by SINGLE_ATOM_STORE_MAX_SIZE in
18213 * system/security/keystore2/src/metrics_store.rs). This can happen if many
18214 * unexpected combinations of field values are emitted by devices in the field.
18215 *
18216 * Logged from: system/security/keystore2/metrics.rs
18217 */
18218message Keystore2AtomWithOverflow {
18219    // Atom ID as defined in
18220    // system/security/keystore2/aidl/android/security/metrics/AtomID.aidl.
18221    optional int32 atom_id = 1;
18222
18223    // Number of occurrences of a particular combination of all the other
18224    // fields in this proto message.
18225    optional int32 count = 2;
18226}
18227
18228/**
18229 * Logs a key operation, with information about the purpose, mode(s), and
18230 * digest(s).
18231 *
18232 * Note that each key operation results in multiple atoms being emitted due
18233 * to the cardinality of the fields related to key operations that we are
18234 * interested in collecting. See the messages with names starting with
18235 * "Keystore2KeyOperation" for the others.
18236 *
18237 * Logged from: system/security/keystore2/metrics.rs
18238 */
18239message Keystore2KeyOperationWithPurposeAndModesInfo {
18240    // Mirror of
18241    // hardware/interfaces/security/keymint/aidl/android/hardware/security/keymint/KeyPurpose.aidl
18242    // except that an unspecified value with enum tag number 0 is added and the
18243    // enum tag numbers of all other values are incremented by 1.
18244    enum KeyPurpose {
18245        KEY_PURPOSE_UNSPECIFIED = 0;
18246        ENCRYPT = 1;
18247        DECRYPT = 2;
18248        SIGN = 3;
18249        VERIFY = 4;
18250        // 5 is reserved
18251        WRAP_KEY = 6;
18252        AGREE_KEY = 7;
18253        ATTEST_KEY = 8;
18254    }
18255    // Purpose of the key operation.
18256    optional KeyPurpose purpose = 1;
18257
18258    // Bitmap of the padding mode(s) specified during the key operation's
18259    // lifecycle.
18260    // Bitmap composition is given by the PaddingModeBitPosition enum defined in
18261    // system/security/keystore2/src/metrics_store.rs.
18262    optional int32 padding_mode_bitmap = 2;
18263
18264    // Bitmap of the digest(s) specified during the key operation's lifecycle.
18265    // Bitmap composition is given by the DigestBitPosition enum defined in
18266    // system/security/keystore2/src/metrics_store.rs.
18267    optional int32 digest_bitmap = 3;
18268
18269    // Bitmap of the block mode(s) specified during the key operation's
18270    // lifecycle.
18271    // Bitmap composition is given by the BlockModeBitPosition enum defined in
18272    // system/security/keystore2/src/metrics_store.rs.
18273    optional int32 block_mode_bitmap = 4;
18274
18275    // Number of occurrences of a particular combination of all the other
18276    // fields in this proto message.
18277    optional int32 count = 5;
18278}
18279
18280/**
18281 * Logs a key operation, with information about the outcome, error code,
18282 * security level of the KeyMint instance performing the operation, and whether
18283 * the key is upgraded during the operation.
18284 *
18285 * Note that each key operation results in multiple atoms being emitted due
18286 * to the cardinality of the fields related to key operations that we are
18287 * interested in collecting. See the messages with names starting with
18288 * "Keystore2KeyOperation" for the others.
18289 *
18290 * Logged from: system/security/keystore2/metrics.rs
18291 */
18292message Keystore2KeyOperationWithGeneralInfo {
18293    enum Outcome {
18294        OUTCOME_UNSPECIFIED = 0;
18295        DROPPED = 1;
18296        SUCCESS = 2;
18297        ABORT = 3;
18298        PRUNED = 4;
18299        ERROR = 5;
18300    }
18301    // Outcome of the key operation.
18302    optional Outcome outcome = 1;
18303
18304    // Error code if key creation failed:
18305    // - Integers >1 indicate an error from Keystore (the error code is the
18306    //   enum tag number from
18307    //   system/hardware/interfaces/keystore2/aidl/android/system/keystore2/ResponseCode.aidl)
18308    // - Integers <=0 indicate an error from KeyMint (the error code is the
18309    //   enum tag number from
18310    //   hardware/interfaces/security/keymint/aidl/android/hardware/security/keymint/ErrorCode.aidl)
18311    // If the key operation succeeded, this is set to 1.
18312    optional int32 error_code = 2;
18313
18314    // Indicates whether the key was upgraded during the operation.
18315    optional bool key_upgraded = 3;
18316
18317    // Security level of the KeyMint instance which performs the operation.
18318    optional android.system.security.keystore2.SecurityLevelEnum security_level = 4;
18319
18320    // Number of occurrences of a particular combination of all the other
18321    // fields in this proto message.
18322    optional int32 count = 5;
18323}
18324
18325/**
18326 * Logs Keystore2 storage statistics.
18327 *
18328 * Logged from: system/security/keystore2/src/metrics.rs
18329 */
18330message Keystore2StorageStats {
18331    enum Storage {
18332       STORAGE_UNSPECIFIED = 0;
18333       KEY_ENTRY = 1;
18334       KEY_ENTRY_ID_INDEX = 2;
18335       KEY_ENTRY_DOMAIN_NAMESPACE_INDEX = 3;
18336       BLOB_ENTRY = 4;
18337       BLOB_ENTRY_KEY_ENTRY_ID_INDEX = 5;
18338       KEY_PARAMETER = 6;
18339       KEY_PARAMETER_KEY_ENTRY_ID_INDEX = 7;
18340       KEY_METADATA = 8;
18341       KEY_METADATA_KEY_ENTRY_ID_INDEX = 9;
18342       GRANT = 10;
18343       AUTH_TOKEN = 11;
18344       BLOB_METADATA = 12;
18345       BLOB_METADATA_BLOB_ENTRY_ID_INDEX = 13;
18346       METADATA = 14;
18347       DATABASE = 15;
18348       LEGACY_STORAGE = 16;
18349    }
18350    // Type of storage.
18351    optional Storage storage_type = 1;
18352
18353    // Storage size, in bytes.
18354    optional int64 size = 2;
18355
18356    // Unused space, in bytes. The total storage size may be larger, indicating
18357    // inefficiencies in the packing of data in the database.
18358    optional int64 unused_size = 3;
18359}
18360
18361/**
18362 * Logs Remote Key Provisioning (RKP) related error events.
18363 * Logged from: system/security/keystore2
18364 */
18365message RkpErrorStats {
18366
18367    enum RkpError {
18368        RKP_ERROR_UNSPECIFIED = 0;
18369        // The key pool is out of keys.
18370        OUT_OF_KEYS = 1;
18371        // Falling back to factory provisioned keys during hybrid mode.
18372        FALL_BACK_DURING_HYBRID = 2;
18373    }
18374    // Type of the error event
18375    optional RkpError rkp_error = 1;
18376
18377    // Count of a particular error occurred.
18378    optional int32 count = 2;
18379
18380    /**
18381     * Security level of the IRemotelyProvisionedComponent.
18382     */
18383    optional android.system.security.keystore2.SecurityLevelEnum security_level = 3;
18384}
18385
18386
18387/**
18388 * Deprecated in U. Use RkpdPoolStats instead.
18389 *
18390 * Logs: Status of the attestation key pool related to
18391 * Remote Key Provisioning (RKP).
18392 * Logged from: system/security/keystore2
18393 */
18394message RkpPoolStats {
18395    /**
18396     * Security level of the Keymint instance associated with the
18397     * attestation pool status.
18398     */
18399    optional android.system.security.keystore2.SecurityLevelEnum security_level = 1;
18400
18401    /**
18402     * The number of signed attestation certificate chains which are
18403     * expired.
18404     */
18405    optional int32 expiring = 2;
18406
18407    /**
18408     * The number of signed attestation certificate chains which have
18409     * not yet been assigned to an app.
18410     */
18411    optional int32 unassigned = 3;
18412
18413    /**
18414     * The number of signed attestation keys.
18415     */
18416    optional int32 attested = 4;
18417
18418    /**
18419     * The total number of attestation keys.
18420     */
18421    optional int32 total = 5;
18422}
18423
18424/**
18425 * Logs: Number of keystore2 crashes per-boot cycle.
18426 * Logged from: system/security/keystore2
18427 */
18428message Keystore2CrashStats {
18429    optional int32 count_of_crash_events = 1;
18430}
18431
18432// Blob Committer stats
18433// Keep in sync between:
18434//     frameworks/proto_logging/stats/enums/server/blobstoremanagerservice.proto
18435//     frameworks/base/cmds/statsd/src/atoms.proto
18436message BlobCommitterProto {
18437    // Committer app's uid
18438    optional int32 uid = 1 [(is_uid) = true];
18439
18440    // Unix epoch timestamp of the commit in milliseconds
18441    optional int64 commit_timestamp_millis = 2;
18442
18443    // Flags of what access types the committer has set for the Blob
18444    optional int32 access_mode = 3;
18445
18446    // Number of packages that have been whitelisted for ACCESS_TYPE_WHITELIST
18447    optional int32 num_whitelisted_package = 4;
18448}
18449
18450// Blob Leasee stats
18451// Keep in sync between:
18452//     frameworks/proto_logging/stats/enums/server/blobstoremanagerservice.proto
18453//     frameworks/base/cmds/statsd/src/atoms.proto
18454message BlobLeaseeProto {
18455    // Leasee app's uid
18456    optional int32 uid = 1 [(is_uid) = true];
18457
18458    // Unix epoch timestamp for lease expiration in milliseconds
18459    optional int64 lease_expiry_timestamp_millis = 2;
18460}
18461
18462// List of Blob Committers
18463// Keep in sync between:
18464//     frameworks/proto_logging/stats/enums/server/blobstoremanagerservice.proto
18465//     frameworks/base/cmds/statsd/src/atoms.proto
18466message BlobCommitterListProto {
18467    repeated BlobCommitterProto committer = 1;
18468}
18469
18470// List of Blob Leasees
18471// Keep in sync between:
18472//     frameworks/proto_logging/stats/enums/server/blobstoremanagerservice.proto
18473//     frameworks/base/cmds/statsd/src/atoms.proto
18474message BlobLeaseeListProto {
18475    repeated BlobLeaseeProto leasee = 1;
18476}
18477
18478/**
18479 * Logs the current state of a Blob committed with BlobStoreManager
18480 *
18481 * Pulled from:
18482 *  frameworks/base/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java
18483 */
18484message BlobInfo {
18485    // Id of the Blob
18486    optional int64 blob_id = 1;
18487
18488    // Size of the Blob data
18489    optional int64 size = 2;
18490
18491    // Unix epoch timestamp of the Blob's expiration in milliseconds
18492    optional int64 expiry_timestamp_millis = 3;
18493
18494    // List of committers of this Blob
18495    optional BlobCommitterListProto committers = 4 [(log_mode) = MODE_BYTES];
18496
18497    // List of leasees of this Blob
18498    optional BlobLeaseeListProto leasees = 5 [(log_mode) = MODE_BYTES];
18499}
18500
18501/**
18502 * Logs when the HDMI CEC active source changes.
18503 *
18504 * Logged from:
18505 *   frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecAtomWriter.java
18506 */
18507message HdmiCecActiveSourceChanged {
18508    // The logical address of the active source.
18509    optional android.stats.hdmi.LogicalAddress active_source_logical_address = 1;
18510
18511    // The physical address of the active source. Consists of four hexadecimal nibbles.
18512    // Examples: 0x1234, 0x0000 (root device). 0xFFFF represents an unknown or invalid address.
18513    // See section 8.7 in the HDMI 1.4b spec for details.
18514    optional int32 active_source_physical_address = 2;
18515
18516    // The relationship between this device and the active source.
18517    optional android.stats.hdmi.PathRelationship local_relationship = 3;
18518}
18519
18520/**
18521 * Logs when an HDMI CEC message is sent or received.
18522 *
18523 * Logged from:
18524 *   frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecAtomWriter.java
18525 */
18526message HdmiCecMessageReported {
18527    // The calling uid of the application that caused this atom to be written.
18528    optional int32 uid = 1 [(is_uid) = true];
18529
18530    // Whether a HDMI CEC message is sent from this device, to this device, or neither.
18531    optional android.stats.hdmi.MessageDirection direction = 2;
18532
18533    // The HDMI CEC logical address of the initiator.
18534    optional android.stats.hdmi.LogicalAddress initiator_logical_address = 3;
18535
18536    // The HDMI CEC logical address of the destination.
18537    optional android.stats.hdmi.LogicalAddress destination_logical_address = 4;
18538
18539    // The opcode of the message. Ranges from 0x00 to 0xFF.
18540    // For all values, see section "CEC 15 Message Descriptions" in the HDMI CEC 1.4b spec.
18541    optional int32 opcode = 5;
18542
18543    // The result of attempting to send the message on its final retransmission attempt.
18544    // Only applicable to outgoing messages; set to SEND_MESSAGE_RESULT_UNKNOWN otherwise.
18545    optional android.stats.hdmi.SendMessageResult send_message_result = 6;
18546
18547    // Fields specific to <User Control Pressed> messages
18548
18549    // The user control command that was received.
18550    optional android.stats.hdmi.UserControlPressedCommand user_control_pressed_command = 7;
18551
18552    // Fields specific to <Feature Abort> messages
18553
18554    // The opcode of the message that was feature aborted.
18555    // Set to 0x100 when unknown or not applicable.
18556    optional int32 feature_abort_opcode = 8;
18557
18558    // The reason for the feature abort.
18559    optional android.stats.hdmi.FeatureAbortReason feature_abort_reason = 9;
18560
18561    // The physical address in <Report Physical Address> messages. Consists of
18562    // four hexadecimal nibbles. Examples: 0x1234, 0x0000 (root device). 0xFFFF
18563    // represents an unknown or invalid address.
18564    //
18565    // Physical address is assigned to each device through a discovery process.
18566    // It indicates the connection hierarchy, for example, 1:2:0:0 is under
18567    // 1:0:0:0, which is under 0:0:0:0.
18568    //
18569    // See section 8.7 in the HDMI 1.4b spec for details.
18570    optional int32 physical_address = 10;
18571}
18572
18573/**
18574 * Logs when an auto rotate event occurs while smart auto rotate is enabled.
18575 */
18576message AutoRotateReported {
18577    enum Orientation {
18578        UNKNOWN = 0;
18579        DEPRECATED = 1;
18580        ROTATION_0 = 2;
18581        ROTATION_90 = 3;
18582        ROTATION_180 = 4;
18583        ROTATION_270 = 5;
18584        DISABLED = 6;
18585        UNAVAILABLE = 7;
18586        FAILURE = 8;
18587    }
18588
18589    // Orientation of the device when a rotation was detected.
18590    optional Orientation current_orientation = 1;
18591    // The orientation of the phone after rotation before going through the recommendation service.
18592    optional Orientation proposed_orientation = 2;
18593    // Orientation recommended by the smart autorotate service component outside of the platform. It
18594    // may or may not match the proposed_orientation. Can be disabled or unavailable if the
18595    // recommendation service is disabled or unavailable. Will be unknown if the service failed.
18596    optional Orientation recommended_orientation = 3;
18597    // Time taken to calculate the rotation recommendation.
18598    optional int64 recommendation_process_duration_millis = 4;
18599}
18600
18601/**
18602 * Logs when sensors only autorotate is triggered. Associated event can be a rotation preindication,
18603 * actual event or a "data ready to be pulled" indication. More info: go/autorotate-logging.
18604 *
18605 * Logged from:
18606 *    platform/vendor/unbundled_google/packages/SystemUIGoogle/src/com/google/android/systemui/autorotate/DataLogger.java
18607 */
18608
18609message DeviceRotated {
18610  // Timestamp of the event in millis. We log the timestamp explicitly since
18611  // data logging will follow the event logging and all these
18612  // will be joined with other logs such as rotation button clicked.
18613  optional int64 timestamp_millis = 1;
18614  // Device orientation
18615  optional android.stats.wm.Orientation proposed_orientation = 2;
18616
18617  enum RotationEventType{
18618    UNKNOWN = 0;
18619    // An early indication of device might be rotated.
18620    PREINDICATION = 1;
18621    // Device rotation is detected.
18622    ACTUAL_EVENT = 2;
18623    // Device rotated and the data associated with it is ready to be pulled.
18624    // This happens after the ACTUAL_EVENT since some data after the event is
18625    // also useful.
18626    DATA_READY = 3;
18627  }
18628  optional RotationEventType rotation_event_type = 3;
18629}
18630
18631/**
18632 * Records the raw sensor data published by the device orientation debug sensor. The pull will be
18633 * configured to be conditioned on the {@code DeviceRotated} atom.
18634 *
18635 * Logged from:
18636 *     platform/vendor/unbundled_google/packages/SystemUIGoogle/src/com/google/android/systemui/autorotate/DataLogger.java
18637 */
18638message DeviceRotatedData {
18639  // All the sensor data and timestamps used to calculate the orientation
18640  optional DeviceRotatedSensorData snapshot = 1 [(log_mode) = MODE_BYTES];
18641  // Resulting orientation
18642  optional android.stats.wm.Orientation proposed_orientation = 2;
18643}
18644
18645message DeviceRotatedSensorData {
18646  optional DeviceRotatedSensorHeader header = 1 [(log_mode) = MODE_BYTES];
18647  repeated DeviceRotatedSensorSample sample = 2 [(log_mode) = MODE_BYTES];
18648}
18649
18650message DeviceRotatedSensorHeader {
18651  optional int64 timestamp_base_millis = 1;
18652}
18653
18654message DeviceRotatedSensorSample{
18655  optional int32 timestamp_offset_millis = 1;
18656  enum SensorType {
18657    UNKNOWN = 0;
18658    ACCEL = 1;
18659    GYRO = 2;
18660  }
18661  optional SensorType sensor_type = 2;
18662  optional float x_value = 3;
18663  optional float y_value = 4;
18664  optional float z_value = 5;
18665}
18666
18667/**
18668  * Pushes TLS handshake counters from Conscrypt.
18669  * Pulled from:
18670  *   external/conscrypt/common/src/main/java/org/conscrypt/ConscryptEngineSocket.java
18671  *   external/conscrypt/common/src/main/java/org/conscrypt/ConscryptFileDescriptorSocket.java
18672  */
18673message TlsHandshakeReported {
18674    optional bool success = 1;
18675
18676    optional android.stats.tls.Protocol protocol = 2;
18677
18678    optional android.stats.tls.CipherSuite cipher_suite = 3;
18679
18680    optional int32 handshake_duration_millis = 4;
18681
18682    optional android.stats.tls.Source source = 5;
18683
18684    repeated int32 uid = 6 [(is_uid) = true];
18685}
18686
18687/**
18688 * Logs when a TextClassifier API is invoked.
18689 *
18690 * See frameworks/base/core/java/android/view/textclassifier/TextClassifier.java
18691 * Logged from: external/libtextclassifier/java/
18692 */
18693message TextClassifierApiUsageReported {
18694    enum ApiType {
18695        UNKNOWN_API = 0;
18696        SUGGEST_SELECTION = 1;
18697        CLASSIFY_TEXT = 2;
18698        GENERATE_LINKS = 3;
18699        DETECT_LANGUAGES = 4;
18700        SUGGEST_CONVERSATION_ACTIONS = 5;
18701    }
18702    optional ApiType api_type = 1;
18703
18704    enum ResultType {
18705        UNKNOWN_RESULT = 0;
18706        SUCCESS = 1;
18707        FAIL = 2;
18708    }
18709    optional ResultType result_type = 2;
18710    optional int64 latency_millis = 3;
18711    optional string session_id = 4;
18712}
18713
18714/**
18715 * Logs when TextClassifier Model Downloader finishes a download task.
18716 *
18717 * Currently we create a downlaod task for each new manifest to download.
18718 *
18719 * Logged from: external/libtextclassifier/java/
18720 */
18721message TextClassifierDownloadReported {
18722    // The model type to download
18723    enum ModelType {
18724        UNKNOWN_MODEL_TYPE = 0;
18725        ANNOTATOR = 1;
18726        LANG_ID = 2;
18727        ACTIONS_SUGGESTIONS = 3;
18728    }
18729    optional ModelType model_type = 1;
18730    // The file type to download
18731    enum FileType {
18732        UNKNOWN_FILE_TYPE = 0;
18733        MANIFEST = 1;
18734        MODEL = 2;
18735    }
18736    // Deprecated: now manifest and model files are downloaded together.
18737    optional FileType file_type = 2;
18738    // The status of the download
18739    enum DownloadStatus {
18740        UNKNOWN_STATUS = 0;
18741        SCHEDULED = 1;
18742        SUCCEEDED = 2;
18743        FAILED_AND_RETRY = 3;
18744        FAILED_AND_ABORT = 4;
18745    }
18746    optional DownloadStatus download_status = 3;
18747    // The public GStatic url we used to download the model. Contains locale info.
18748    optional string url_suffix = 4;
18749    // Failure reason, only set if this is for a failure status
18750    enum FailureReason {
18751        reserved 1, 8, 9;
18752
18753        UNKNOWN_FAILURE_REASON = 0;
18754        FAILED_TO_DOWNLOAD_SERVICE_CONN_BROKEN = 2;
18755        FAILED_TO_DOWNLOAD_404_ERROR = 3;
18756        FAILED_TO_DOWNLOAD_OTHER = 4;
18757        DOWNLOADED_FILE_MISSING = 5;
18758        FAILED_TO_PARSE_MANIFEST = 6;
18759        FAILED_TO_VALIDATE_MODEL = 7;
18760    }
18761    optional FailureReason failure_reason = 5;
18762    // How many attempts we have tried for the same task at a terminal status (i.e. SUCCEEDED or
18763    // FAILED_AND_ABORT).
18764    optional int32 run_attempt_count = 6;
18765
18766    // Custom failure code for downloader lib internal failures (E.g. 404 error).
18767    optional int32 downloader_lib_failure_code = 7;
18768
18769    // Time elapsed for the whole download task
18770    optional int64 download_duration_millis = 8;
18771
18772    // The id of the WorkManager work that launched this download.
18773    optional int64 work_id = 9;
18774}
18775
18776/**
18777 * Logs when TextClassifier Model Downloader schedules a WorkManager work.
18778 *
18779 * Logged from: external/libtextclassifier/java/
18780 */
18781message TextClassifierDownloadWorkScheduled {
18782    optional int64 work_id = 1;
18783
18784    enum ReasonToSchedule {
18785        UNKNOWN_REASON_TO_SCHEDULE = 0;
18786        TCS_STARTED = 1;
18787        LOCALE_SETTINGS_CHANGED = 2;
18788        DEVICE_CONFIG_UPDATED = 3;
18789    }
18790    optional ReasonToSchedule reason_to_schedule = 2;
18791
18792    optional bool failed_to_schedule = 3;
18793}
18794
18795/**
18796 * Logs when TextClassifier Model Downloader finishes a WorkManager work.
18797 *
18798 * A WorkManager work includes one or more downlad tasks. We log this atom when
18799 * all tasks finished. The work_id can be used to join work log and task logs.
18800 *
18801 * Logged from: external/libtextclassifier/java/
18802 */
18803message TextClassifierDownloadWorkCompleted {
18804    optional int64 work_id = 1;
18805
18806    enum WorkResult {
18807        UNKNOWN_WORK_RESULT = 0;
18808        SUCCESS_MODEL_DOWNLOADED = 1;
18809        SUCCESS_NO_UPDATE_AVAILABLE = 2;
18810        FAILURE_MODEL_DOWNLOADER_DISABLED = 3;
18811        FAILURE_MAX_RUN_ATTEMPT_REACHED = 4;
18812        RETRY_MODEL_DOWNLOAD_FAILED = 5;
18813        RETRY_RUNTIME_EXCEPTION = 6;
18814        RETRY_STOPPED_BY_OS = 7;
18815    }
18816    optional WorkResult work_result = 2;
18817
18818    // How many attempts we have tried for this work.
18819    optional int32 run_attempt_count = 3;
18820
18821    optional int64 work_scheduled_to_started_duration_millis = 4;
18822    optional int64 work_started_to_ended_duration_millis = 5;
18823}
18824
18825/**
18826 * Logs telemetry for Android Virtualization framework
18827 *
18828 * On CreateVM requests, an atom is pushed that records what hypervisor is being used.
18829 * the protected status of the new VM, and if the VM creation succeeded
18830 * Logged from: packages/modules/Virtualization/
18831 */
18832message VmCreationRequested {
18833    enum Hypervisor {
18834        UNKNOWN = 0;
18835        PKVM = 1;
18836        OTHER = 2;
18837    }
18838
18839    enum ConfigType {
18840        UNKNOWN_CONFIG = 0;
18841        VIRTUAL_MACHINE_APP_CONFIG = 1;
18842        VIRTUAL_MACHINE_RAW_CONFIG = 2;
18843    }
18844
18845    optional Hypervisor hypervisor = 1;
18846    // Is the VM started in protected mode?
18847    optional bool is_protected = 2;
18848    // Did the VM creation succeed
18849    optional bool creation_succeeded = 3;
18850    // Binder exception Code thrown by createVm request
18851    optional int32 binder_exception_code = 4;
18852
18853    optional int32 uid = 5 [(is_uid) = true];
18854    optional string vm_identifier = 6;
18855
18856    optional ConfigType config_type = 7;
18857    optional int32 num_cpus = 8;
18858    optional string cpu_affinity = 9 [deprecated = true];
18859    optional int32 memory_mib = 10;
18860    optional string apexes = 11;
18861
18862    // TODO(seungjaeyoo) Fill information about task_profile
18863    // TODO(seungjaeyoo) Fill information about disk_image for raw config
18864
18865}
18866
18867/**
18868 * Logs telemetry for Android Virtualization framework
18869 *
18870 * When VM is booted successfully, an atom is pushed that records information about VM.
18871 * Logged from: packages/modules/Virtualization/
18872 */
18873message VmBooted {
18874    optional int32 uid = 1 [(is_uid) = true];
18875    optional string vm_identifier = 2;
18876    // Elapsed time between start and boot completion of a VM
18877    optional int64 elapsed_time_millis = 3;
18878}
18879
18880/**
18881 * Logs telemetry for Android Virtualization framework
18882 *
18883 * When VM is exited, an atom is pushed that records information about VM.
18884 * Logged from: packages/modules/Virtualization/
18885 */
18886message VmExited {
18887    enum DeathReason {
18888        UNKNOWN = 0;
18889        INFRASTRUCTURE_ERROR = 1;
18890        KILLED = 2;
18891        SHUTDOWN = 3;
18892        ERROR = 4;
18893        REBOOT = 5;
18894        CRASH = 6;
18895        PVM_FIRMWARE_PUBLIC_KEY_MISMATCH = 7;
18896        PVM_FIRMWARE_INSTANCE_IMAGE_CHANGED = 8;
18897        BOOTLOADER_PUBLIC_KEY_MISMATCH = 9;
18898        BOOTLOADER_INSTANCE_IMAGE_CHANGED = 10;
18899        MICRODROID_FAILED_TO_CONNECT_TO_VIRTUALIZATION_SERVICE = 11;
18900        MICRODROID_PAYLOAD_HAS_CHANGED = 12;
18901        MICRODROID_PAYLOAD_VERIFICATION_FAILED = 13;
18902        MICRODROID_INVALID_PAYLOAD_CONFIG = 14;
18903        MICRODROID_UNKNOWN_RUNTIME_ERROR = 15;
18904        HANGUP = 16;
18905    }
18906    optional int32 uid = 1 [(is_uid) = true];
18907    optional string vm_identifier = 2;
18908
18909    optional DeathReason death_reason = 3;
18910    // Exit signal when VM was KILLED
18911    optional int32 exit_signal = 8;
18912
18913    // Elapsed time between start and termination of a VM
18914    optional int64 elapsed_time_millis = 4;
18915
18916    // Guest time for CPU usage
18917    optional int64 guest_time_millis = 5;
18918
18919    // RSS for memory usage
18920    optional int64 rss_vm_kb = 6;
18921    optional int64 rss_crosvm_kb = 7;
18922}
18923
18924/**
18925 * (Deprecated)
18926 * Logs telemetry for Android Virtualization framework
18927 *
18928 * For every second while VM is running, an atom is pushed that records CPU time information of VM.
18929 * Logged from: packages/modules/Virtualization/
18930 */
18931message VmCpuStatusReported {
18932    option deprecated = true;
18933
18934    optional int32 uid = 1 [(is_uid) = true];
18935    optional string vm_identifier = 2;
18936
18937    optional int64 cpu_time_user_millis = 3;
18938    optional int64 cpu_time_nice_millis = 4;
18939    optional int64 cpu_time_sys_millis = 5;
18940    optional int64 cpu_time_idle_millis = 6;
18941}
18942
18943/**
18944 * (Deprecated)
18945 * Logs telemetry for Android Virtualization framework
18946 *
18947 * For every second while VM is running, an atom is pushed that records memory information of VM.
18948 * Logged from: packages/modules/Virtualization/
18949 */
18950message VmMemStatusReported {
18951    option deprecated = true;
18952
18953    optional int32 uid = 1 [(is_uid) = true];
18954    optional string vm_identifier = 2;
18955
18956    optional int64 mem_total_kb = 3;
18957    optional int64 mem_free_kb = 4;
18958    optional int64 mem_available_kb = 5;
18959    optional int64 mem_buffer_kb = 6;
18960    optional int64 mem_cached_kb = 7;
18961}
18962
18963/**
18964 * Logs telemetry for Early boot CompOsArtifacts checks (done by odsign)
18965 *
18966 * odsign is a binary that runs during early boot. One of its responsibility is
18967 * to check if the device can use compOS and check if so, validate the compos
18968 * generated artifacts. An atom is pushed on each such check. Note: We only
18969 * push an atom from devices/configurations that can use compOs.
18970 */
18971message EarlyBootCompOsArtifactsCheckReported {
18972  // Are the current Artifacts okay (This check is done by odrefresh).
18973  // (current_artifacts_ok == true) => compilationRequired is false
18974  optional bool current_artifacts_ok = 1;
18975  // Has CompOs generated any Artifacts
18976  optional bool comp_os_pending_artifacts_exists = 2;
18977  // The device will be using CompOs generated artifacts. Note: the value of
18978  // this is meaningless if current_artifacts_ok = true
18979  optional bool use_comp_os_generated_artifacts = 3;
18980}
18981
18982/**
18983 * Logs telemetry when Isolation compilation job is scheduled.
18984 *
18985 * The atoms are sent by IsolatedCompilationService (fragment of system_server)
18986 * when apex are staged and need compilation.
18987 */
18988message IsolatedCompilationScheduled {
18989    enum Result {
18990        SCHEDULING_RESULT_UNKNOWN = 0;
18991        SCHEDULING_FAILURE = 1;
18992        SCHEDULING_SUCCESS = 2;
18993    }
18994    optional Result scheduling_result = 1;
18995}
18996
18997/**
18998 * Logs telemetry Isolation compilation completion.
18999 *
19000 * The atoms is sent by IsolatedCompilationService by compilation ends
19001 * and contain results/timings of compilation
19002 */
19003message IsolatedCompilationEnded {
19004    enum Result {
19005        RESULT_UNKNOWN = 0;
19006        RESULT_SUCCESS = 1;
19007        RESULT_UNKNOWN_FAILURE = 2;
19008        RESULT_FAILED_TO_START = 3;
19009        RESULT_JOB_CANCELED = 4;
19010        RESULT_COMPILATION_FAILED = 5;
19011        RESULT_UNEXPECTED_COMPILATION_RESULT = 6;
19012        RESULT_COMPOSD_DIED = 7;
19013        RESULT_FAILED_TO_ENABLE_FSVERITY = 8;
19014    }
19015    // Time between compilation job starts to when it ends.
19016    // Note: this does not include the time between compilation job being scheduled (or when apex is staged)
19017    // and it actually starting
19018    optional int64 compilation_time_millis = 1;
19019    // Result of compilation
19020    optional Result compilation_result = 2;
19021    // In case the job scheduler cancels the job, this will be the reason code
19022    // Codes are used from https://source.corp.google.com/android/frameworks/base/apex/jobscheduler/framework/java/android/app/job/JobParameters.java
19023    // Note: this field only makes sense when compilation_result = RESULT_JOB_CANCELED
19024    optional int32 compilation_job_stop_reason = 3;
19025}
19026
19027/**
19028 * Logs the current state of an application/process before it is killed.
19029 *
19030 * Keep in sync with proto file at
19031 * packages/services/Car/service/src/com/android/car/watchdog/proto/atoms.proto
19032 * frameworks/opt/car/services/builtInServices/proto/src/atoms.proto
19033 *
19034 * Pushed from:
19035 *  packages/services/Car/service/src/com/android/car/watchdog/WatchdogPerfHandler.java
19036 *  frameworks/opt/car/services/builtInServices/src/com/android/internal/car/CarServiceHelperService.java
19037 */
19038message CarWatchdogKillStatsReported {
19039    // Linux process uid for the package.
19040    optional int32 uid = 1 [(is_uid) = true];
19041
19042    // State of the uid when it was killed.
19043    enum UidState {
19044        UNKNOWN_UID_STATE = 0;
19045        BACKGROUND_MODE = 1;
19046        FOREGROUND_MODE = 2;
19047    }
19048    optional UidState uid_state = 2;
19049
19050    // System state indicating whether the system was in normal mode or garage mode.
19051    enum SystemState {
19052        UNKNOWN_SYSTEM_STATE = 0;
19053        USER_INTERACTION_MODE = 1;
19054        USER_NO_INTERACTION_MODE = 2;
19055        GARAGE_MODE = 3;
19056    }
19057    optional SystemState system_state = 3;
19058
19059    // Reason for killing the application.
19060    // Keep in sync with proto file at packages/services/Car/cpp/watchdog/proto
19061    enum KillReason {
19062        UNKNOWN_KILL_REASON = 0;
19063        KILLED_ON_ANR = 1;
19064        KILLED_ON_IO_OVERUSE = 2;
19065        KILLED_ON_MEMORY_OVERUSE = 3;
19066    }
19067    optional KillReason kill_reason = 4;
19068
19069    // Stats of the processes owned by the application when the application was killed.
19070    // The process stack traces are not collected when the application was killed due to IO_OVERUSE.
19071    optional CarWatchdogProcessStats process_stats = 5 [(log_mode) = MODE_BYTES];
19072
19073    // The application's I/O overuse stats logged only when the kill reason is KILLED_ON_IO_OVERUSE.
19074    optional CarWatchdogIoOveruseStats io_overuse_stats = 6 [(log_mode) = MODE_BYTES];
19075}
19076
19077/**
19078 * Logs the I/O overuse stats for an application on detecting I/O overuse.
19079 *
19080 * Keep in sync with proto file at
19081 * packages/services/Car/service/src/com/android/car/watchdog/proto/atoms.proto
19082 *
19083 * Pushed from:
19084 *  packages/services/Car/service/src/com/android/car/watchdog/WatchdogPerfHandler.java
19085 */
19086message CarWatchdogIoOveruseStatsReported {
19087    // Linux process uid for the package.
19088    optional int32 uid = 1 [(is_uid) = true];
19089
19090    // The application's I/O overuse stats.
19091    optional CarWatchdogIoOveruseStats io_overuse_stats = 2 [(log_mode) = MODE_BYTES];
19092}
19093
19094/**
19095 * Logs I/O overuse stats for a package.
19096 *
19097 * Keep in sync with proto file at
19098 * packages/services/Car/service/src/com/android/car/watchdog/proto/atoms.proto
19099 *
19100 * Logged from:
19101 *  packages/services/Car/service/src/com/android/car/watchdog/WatchdogPerfHandler.java
19102 */
19103message CarWatchdogIoOveruseStats {
19104    enum Period {
19105        UNKNOWN_PERIOD = 0;
19106        DAILY = 1;
19107        WEEKLY = 2;
19108    }
19109
19110    // Threshold and usage stats period.
19111    optional Period period = 1;
19112
19113    // Threshold in-terms of write bytes defined for the package.
19114    optional CarWatchdogPerStateBytes threshold = 2;
19115
19116    // Number of write bytes in each state for the specified period.
19117    optional CarWatchdogPerStateBytes written_bytes = 3;
19118
19119    // Application or service uptime during the aforementioned period.
19120    optional uint64 uptime_millis = 4;
19121};
19122
19123/**
19124 * Logs bytes attributed to each application and system states.
19125 *
19126 * Keep in sync with proto file at
19127 * packages/services/Car/service/src/com/android/car/watchdog/proto/atoms.proto
19128 *
19129 * Logged from:
19130 *  packages/services/Car/service/src/com/android/car/watchdog/WatchdogPerfHandler.java
19131 */
19132message CarWatchdogPerStateBytes {
19133    // Number of bytes attributed to the application foreground.
19134    optional int64 foreground_bytes = 1;
19135
19136    // Number of bytes attributed to the application background.
19137    optional int64 background_bytes = 2;
19138
19139    // Number of bytes attributed to the garage mode.
19140    optional int64 garage_mode_bytes = 3;
19141}
19142
19143/**
19144 * Logs each CarWatchdogProcessStat in CarWatchdogProcessStats.
19145 *
19146 * Keep in sync with proto file at
19147 * packages/services/Car/service/src/com/android/car/watchdog/proto/atoms.proto
19148 *
19149 * Logged from:
19150 *  packages/services/Car/service/src/com/android/car/watchdog/WatchdogPerfHandler.java
19151 */
19152message CarWatchdogProcessStats {
19153    // Records the stats of the processes owned by an application.
19154    repeated CarWatchdogProcessStat process_stat = 1;
19155}
19156
19157/**
19158 * Logs a process's stats.
19159 *
19160 * Keep in sync with proto file at
19161 * packages/services/Car/service/src/com/android/car/watchdog/proto/atoms.proto
19162 *
19163 * Logged from:
19164 *  packages/services/Car/service/src/com/android/car/watchdog/WatchdogPerfHandler.java
19165 */
19166message CarWatchdogProcessStat {
19167    // Command name of the process.
19168    optional string process_name = 1;
19169
19170    // Process uptime.
19171    optional uint64 uptime_millis = 2;
19172
19173    // Number of major page faults caused by the process and its children.
19174    optional uint64 major_page_faults = 3;
19175
19176    // Peak virtual memory size in kb.
19177    optional uint64 vm_peak_kb = 4;
19178
19179    // Virtual memory size in kb.
19180    optional uint64 vm_size_kb = 5;
19181
19182    // Peak resident set size (high water mark) in kb.
19183    optional uint64 vm_hwm_kb = 6;
19184
19185    // Resident set size in kb.
19186    optional uint64 vm_rss_kb = 7;
19187}
19188
19189/**
19190 * Logs total I/O usage summary for all applications and services running in the system.
19191 *
19192 * Keep in sync with proto file at
19193 * packages/services/Car/service/src/com/android/car/watchdog/proto/atoms.proto
19194 *
19195 * Pulled from:
19196 *  packages/services/Car/service/src/com/android/car/watchdog/WatchdogPerfHandler.java
19197 */
19198message CarWatchdogSystemIoUsageSummary {
19199    // I/O usage summary for the system.
19200    optional CarWatchdogIoUsageSummary io_usage_summary = 1 [(log_mode) = MODE_BYTES];
19201
19202    // Start time of the event in milliseconds since epoch.
19203    // Note: This field must be a top-level field as it is used to slice the metrics.
19204    optional int64 start_time_millis = 2;
19205}
19206
19207/**
19208 * Logs I/O usage summary for an UID.
19209 *
19210 * Keep in sync with proto file at
19211 * packages/services/Car/service/src/com/android/car/watchdog/proto/atoms.proto
19212 *
19213 * Pulled from:
19214 *  packages/services/Car/service/src/com/android/car/watchdog/WatchdogPerfHandler.java
19215 */
19216message CarWatchdogUidIoUsageSummary {
19217    // UID of the application/service whose usage summary are recorded.
19218    optional int32 uid = 1 [(is_uid) = true];
19219
19220    // I/O usage summary for the UID.
19221    optional CarWatchdogIoUsageSummary io_usage_summary = 2 [(log_mode) = MODE_BYTES];
19222
19223    // Start time of the event in milliseconds since epoch.
19224    // Note: This field must be a top-level field as it is used to slice the metrics.
19225    optional int64 start_time_millis = 3;
19226}
19227
19228/**
19229 * Logs I/O usage summary for a time period.
19230 *
19231 * Keep in sync with proto file at
19232 * packages/services/Car/service/src/com/android/car/watchdog/proto/atoms.proto
19233 *
19234 * Pulled from:
19235 *  packages/services/Car/service/src/com/android/car/watchdog/WatchdogPerfHandler.java
19236 */
19237message CarWatchdogIoUsageSummary {
19238    // Summary event time period.
19239    optional CarWatchdogEventTimePeriod event_time_period = 1;
19240
19241    // Daily I/O usage summary for the period. Logs summary entries only for days with I/O usage.
19242    // The entries are ordered beginning from the event_time_period.start_time_millis.
19243    repeated CarWatchdogDailyIoUsageSummary daily_io_usage_summary = 2;
19244}
19245
19246/**
19247 * Logs a car watchdog event's time period.
19248 *
19249 * Keep in sync with proto file at
19250 * packages/services/Car/service/src/com/android/car/watchdog/proto/atoms.proto
19251 *
19252 * Pulled from:
19253 *  packages/services/Car/service/src/com/android/car/watchdog/WatchdogPerfHandler.java
19254 */
19255message CarWatchdogEventTimePeriod {
19256    enum Period {
19257        UNKNOWN_PERIOD = 0;
19258        WEEKLY = 1;
19259        BIWEEKLY = 2;
19260        MONTHLY = 3;
19261    }
19262
19263    // Deprecated field - Start time of the event in milliseconds since epoch.
19264    optional uint64 start_time_millis = 1 [deprecated = true];
19265
19266    // Period for the event.
19267    optional Period period = 2;
19268}
19269
19270/**
19271 * Logs daily I/O usage summary.
19272 *
19273 * Keep in sync with proto file at
19274 * packages/services/Car/service/src/com/android/car/watchdog/proto/atoms.proto
19275 *
19276 * Pulled from:
19277 *  packages/services/Car/service/src/com/android/car/watchdog/WatchdogPerfHandler.java
19278 */
19279message CarWatchdogDailyIoUsageSummary {
19280    // Total bytes written to disk during a day.
19281    optional CarWatchdogPerStateBytes written_bytes = 1;
19282
19283    // Total uptime for the system or service or application during a day.
19284    optional uint64 uptime_millis = 2;
19285
19286    // Total disk I/O overuses during a day.
19287    optional int32 overuse_count = 3;
19288}
19289
19290/*
19291 * pushes Media playback information.
19292 * Logged from
19293 *  frameworks/base/services/core/java/com/android/server/media/metrics/
19294 *      MediaMetricsManagerService.java
19295 */
19296message MediametricsPlaybackReported {
19297    optional int32 uid = 1 [(is_uid) = true];
19298
19299    // Randomly generated log session ID. A Base64 encoded hex string representing a
19300    // 128-bit integer.
19301    optional string log_session_id = 2;
19302    // The total length of the media in milliseconds. 0 for live contents.
19303    optional int64 media_duration_millis = 3;
19304    // Network, device, or mixed.
19305    optional android.stats.mediametrics.StreamSourceType stream_source = 4;
19306    // Stream type. DASH, HLS, etc
19307    optional android.stats.mediametrics.StreamType stream_type = 5;
19308    // Live, VOD, others
19309    optional android.stats.mediametrics.PlaybackType playback_type = 6;
19310    // DRM type
19311    optional android.stats.mediametrics.DrmType drm_type = 7;
19312    // Main, AD, others
19313    optional android.stats.mediametrics.ContentType content_type = 8;
19314    // Player name. E.g. ExoPlayer
19315    optional string player_name = 9;
19316    // Player version. E.g. 1.10.3e
19317    optional string player_version = 10;
19318    // Player related experiment IDs
19319    optional Experiments experiment_ids = 11 [(log_mode) = MODE_BYTES];
19320    // Number of frames played. Dropped frames are not included.  -1 means unknown.
19321    optional int32 video_frames_played = 12;
19322    // Number of frames dropped. -1 means unknown.
19323    optional int32 video_frames_dropped = 13;
19324    // Number of audio underruns. -1 means unknown.
19325    optional int32 audio_underrun_count = 14;
19326    // Total number of bytes read from the network
19327    optional int64 network_bytes_read = 15;
19328    // Total number of bytes read from on-device sources
19329    optional int64 local_bytes_read = 16;
19330    // Total transfer spent reading from the network in ms.
19331    // For parallel requests, the overlapping time intervals are counted only once.
19332    optional int64 network_transfer_duration_millis = 17;
19333    // A session ID generated from DRM to distinguish different DRM sessions.
19334    optional string drm_session_id = 18;
19335}
19336
19337message MediaNetworkInfoChanged {
19338    // Randomly generated log session ID. A Base64 encoded hex string representing a
19339    // 128-bit integer.
19340    optional string log_session_id = 1;
19341    //  New network type
19342    optional android.stats.mediametrics.NetworkType type = 2;
19343    // When the network info change occurred relative to playback creation
19344    // time in milliseconds.
19345    // It is in absolute time (e.g. always ticks even if the playback is paused).
19346    optional int64 time_since_playback_created_millis = 3;
19347}
19348
19349message MediaPlaybackStateChanged {
19350    // Randomly generated log session ID. A Base64 encoded hex string representing a
19351    // 128-bit integer.
19352    optional string log_session_id = 1;
19353    //  New playback state
19354    optional android.stats.mediametrics.PlaybackState playback_state = 2;
19355    // When the state change occurred relative to playback creation time in
19356    // milliseconds.
19357    // It is in absolute time (e.g. always ticks even if the playback is paused).
19358    optional int64 time_since_playback_created_millis = 3;
19359}
19360
19361message MediaPlaybackErrorReported {
19362    // Randomly generated log session ID. A Base64 encoded hex string representing a
19363    // 128-bit integer.
19364    optional string log_session_id = 1;
19365    //  A shortened call stack of the error
19366    optional string exception_stack = 2;
19367    //  Error code
19368    optional android.stats.mediametrics.PlaybackErrorCode error_code = 3;
19369    //  Sub-code of error type specified by the error code.
19370    optional int32 sub_error_code = 4;
19371    // When the error occurred relative to playback creation time in millisecond.
19372    // It is in absolute time (e.g. always ticks even if the playback is paused).
19373    optional int64 time_since_playback_created_millis = 5;
19374}
19375
19376message MediaPlaybackTrackChanged {
19377    // Randomly generated log session ID. A Base64 encoded hex string representing a
19378    // 128-bit integer.
19379    optional string log_session_id = 1;
19380    //  The track is on or off after the change
19381    optional android.stats.mediametrics.TrackState state = 2;
19382    //  The reason of the track change
19383    optional android.stats.mediametrics.TrackChangeReason reason = 3;
19384    //  The MIME type of the container. E.g. video/mp4
19385    optional string container_mime_type = 4;
19386    //  The sample MIME type of the track. E.g. video/avc
19387    optional string sample_mime_type = 5;
19388
19389    //  Codec name
19390    optional string codec_name = 6;
19391    //  Bits per second. 0 means unknown.
19392    optional int32 bitrate = 7;
19393
19394   // When the track change occurred, relative to playback creation time in
19395   // millisecond.
19396   // It is in absolute time (e.g. always ticks even if the playback is paused).
19397   optional int64 time_since_playback_created_millis = 8;
19398
19399    //  Track type. Audio, Video, Text
19400    optional android.stats.mediametrics.TrackType type = 9;
19401    //  2-letter ISO 639-1 language code.
19402    optional string language = 10;
19403    //  IETF BCP 47 optional language region subtag based on a two-letter country code
19404    optional string language_region = 11;
19405    //  Number of channels
19406    optional int32 channel_count = 12;
19407    //  Samples per second
19408    optional int32 sample_rate = 13;
19409    //  The width of the video in pixels.
19410    optional int32 width = 14;
19411    //  The height of the video in pixels.
19412    optional int32 height = 15;
19413    //  Video frame rate in frames per second.
19414    optional float video_frame_rate = 16;
19415}
19416
19417message Experiments {
19418    // Experiment IDs sent by the player.
19419    repeated int64 experiments = 1;
19420}
19421
19422/**
19423 * Logs when a Wifi network scan happens.
19424 *
19425 * Logged from:
19426 *   frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiMetrics.java
19427 */
19428message WifiScanReported {
19429    enum Type {
19430        TYPE_UNKNOWN = 0;
19431
19432        // Single scan.
19433        TYPE_SINGLE = 1;
19434
19435        // Background scan (deprecated, should not happen).
19436        TYPE_BACKGROUND = 2;
19437    }
19438
19439    enum Result {
19440        RESULT_UNKNOWN = 0;
19441
19442        // Failed to start scan.
19443        RESULT_FAILED_TO_START = 1;
19444
19445        // The HAL reported a scan failure after the scan was started.
19446        RESULT_FAILED_TO_SCAN = 2;
19447
19448        // Scan succeeded.
19449        RESULT_SUCCESS = 3;
19450    }
19451
19452    enum Source {
19453        SOURCE_UNKNOWN = 0;
19454
19455        // No work source set - not possible to determine the origin.
19456        SOURCE_NO_WORK_SOURCE = 1;
19457
19458        // The Wifi stack.
19459        SOURCE_WIFI_STACK = 2;
19460
19461        // GMS on behalf of some other app.
19462        SOURCE_GMS = 3;
19463
19464        // Settings app.
19465        SOURCE_SETTINGS_APP = 4;
19466
19467        // Other app directly.
19468        SOURCE_OTHER_APP = 5;
19469    }
19470
19471    enum Importance {
19472        IMPORTANCE_UNKNOWN = 0;
19473
19474        // Foreground app. Corresponds to the value of
19475        // ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND or less.
19476        IMPORTANCE_FOREGROUND = 1;
19477
19478        // Foreground service. Corresponds to the value of
19479        // ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE
19480        IMPORTANCE_FOREGROUND_SERVICE = 2;
19481
19482        // Everything else.
19483        IMPORTANCE_BACKGROUND = 3;
19484    }
19485
19486    // Scan type
19487    optional Type type = 1;
19488
19489    // Outcome: success/failure
19490    optional Result result = 2;
19491
19492    // What initiated a scan.
19493    optional Source source = 3;
19494
19495    // Process importance of the initiator.
19496    // This is only available for non-system calls.
19497    optional Importance importance = 4;
19498
19499    // Time taken for the scan.
19500    optional int32 scan_duration_millis = 5;
19501
19502    // Count of found networks.
19503    optional int32 count_networks_found = 6;
19504}
19505
19506/**
19507 * Logs when a Wifi PNO (Preferred Network Offload) scan happens.
19508 *
19509 * Logged from:
19510 *   frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiMetrics.java
19511 */
19512message WifiPnoScanReported {
19513    enum State {
19514        UNKNOWN = 0;
19515
19516        // Scan started.
19517        STARTED = 1;
19518
19519        // Scan failed to start (e.g. bad request, unsupported by hardware, etc).
19520        FAILED_TO_START = 2;
19521
19522        // Scan completed and a network was found.
19523        // Note - due to implementation constraints, nothing is reported when a scan completes but
19524        // doesn't find any networks.
19525        FINISHED_NETWORKS_FOUND = 3;
19526
19527        // Scan failed.
19528        FAILED = 4;
19529    }
19530
19531    optional State state = 1;
19532}
19533
19534/**
19535 * Logs when an airplane mode session happens.
19536 *
19537 * Logged from:
19538 *   packages/modules/Wifi/service/java/com/android/server/wifi/WifiMetrics.java
19539 *   packages/modules/Bluetooth/service/java/com/android/server/bluetooth/BluetoothAirplaneModeListener.java
19540 */
19541message AirplaneModeSessionReported {
19542    enum PackageName {
19543        WIFI = 0;
19544        BLUETOOTH = 1;
19545    }
19546    // Module recording the airplane mode session
19547    optional PackageName package_name = 1;
19548    // State of the module before entering airplane mode
19549    // False - module off
19550    // True - module on
19551    optional bool previous_state = 2;
19552    // State of the module at the beginning of airplane mode
19553    optional bool entering_state = 3;
19554    // State of the module at the end of airplane mode
19555    optional bool exiting_state = 4;
19556    // Whether the user has activated the feature by
19557    // toggling the module in airplane mode
19558    optional bool feature_active = 5;
19559    // Whether the user toggled the module during current airplane mode
19560    optional bool user_toggled = 6;
19561    // Whether the user toggled the module within one minute
19562    optional bool user_toggled_within_minute = 7;
19563    // Whether media profile was connected before entering airplane mode
19564    // Only applicable to the Bluetooth module
19565    optional bool media_profile_connected = 8;
19566}
19567
19568/**
19569 * Logs when a package installation session happens.
19570 *
19571 * Logged from:
19572 *   frameworks/base/services/core/java/com/android/server/pm/InstallPackageHelper.java
19573 */
19574message PackageInstallationSessionReported {
19575    // Used to correlate with Play logging metrics
19576    optional int32 session_id = 1;
19577    // Only logged for failed installations
19578    optional string package_name = 2;
19579
19580    // UID of the app that is successfully installed
19581    optional int32 uid = 3 [(is_uid) = true];
19582    // Users that will have this package installed
19583    repeated int32 user_ids = 4;
19584    // User types for the users listed above
19585    repeated int32 user_types = 5;
19586    // Users that originally had this package installed if it already exists
19587    repeated int32 original_user_ids = 6;
19588    // User types for original users
19589    repeated int32 original_user_types = 7;
19590    // PackageManager.INSTALL_FAILED_* error codes
19591    optional int32 public_return_code = 8;
19592    // Internal error codes that indicate detailed installation failures
19593    optional int32 internal_error_code = 9;
19594    // Total size of the new APKs in the current session
19595    optional int64 apks_size_bytes = 10;
19596    // Version code of the app
19597    optional int64 version_code = 11;
19598
19599    // List of install steps defined in
19600    // frameworks/base/services/core/java/com/android/server/pm/PackageMetrics.java
19601    repeated int32 install_steps = 12;
19602    // Duration of each step in the installation; order must match install_steps
19603    repeated int64 step_duration_millis = 13;
19604    // Total duration can be greater than zero even if install failed
19605    optional int64 total_duration_millis = 14;
19606    // Installation flags including DONT_KILL
19607    optional int32 install_flags = 15;
19608    // UID of the package that initiates the installation
19609    optional int32 installer_package_uid = 16 [(is_uid) = true];
19610    // UID of the package that previously installed the app
19611    optional int32 original_installer_package_uid = 17 [(is_uid) = true];
19612    // {@see android.content.pm.DataLoaderType}
19613    optional int32 data_loader_type = 18;
19614    // {@see android.content.pm.UserActionRequirement}
19615    optional int32 user_action_required_type = 19;
19616
19617    // Install types might overlap, therefore using booleans for each type
19618    // A regular new app install has every field as false.
19619    optional bool is_instant = 20;
19620    optional bool is_replace = 21;
19621    optional bool is_system = 22;
19622    optional bool is_inherit = 23;
19623    optional bool is_installing_existing_as_user = 24;
19624    optional bool is_move_install = 25;
19625    // Whether this is a staged installation
19626    optional bool is_staged = 26;
19627
19628    // Set when this session was configured to automatically install any missing dependencies.
19629    optional bool is_install_dependencies_enabled = 27;
19630    // Number of dependencies that are missing and are required for this install to be successful.
19631    // Provided when is_install_dependencies_enabled is set.
19632    optional int32 missing_dependencies_count = 28;
19633}
19634
19635message PackageUninstallationReported {
19636    // UID of the package being uninstalled
19637    optional int32 uid = 1 [(is_uid) = true];
19638    // Users on which the package (or system app update) is uninstalled from
19639    // If uninstall for all users, list all the user ids
19640    repeated int32 user_ids = 2;
19641    // Types of the users listed above. Order must match above.
19642    repeated int32 user_types = 3;
19643    // Users that originally had this package (or system app update) installed
19644    repeated int32 original_user_ids = 4;
19645    repeated int32 original_user_types = 5;
19646    // Flags of uninstallation, including KEEP_DATA
19647    optional int32 uninstall_flags = 6;
19648    // PackageManager.DELETE_SUCCEEDED or PackageManager.DELETE_FAILED_*
19649    optional int32 return_code = 7;
19650    // Special uninstall types might overlap, therefore booleans
19651    // An uninstall of a non-system app on all users should have all fields false
19652    optional bool is_system = 8;
19653    // When this is true, user_ids != original_user_ids
19654    optional bool is_uninstall_for_users = 9;
19655}
19656
19657/**
19658 * Logs when the entitlement configuration of an IMS service is queried/updated.
19659 *
19660 * Logged from: ImsServiceEntitlement app
19661 */
19662message ImsServiceEntitlementUpdated {
19663    // The purpose of entitlement query/update
19664    enum Purpose {
19665        UNKNOWN_PURPOSE = 0;
19666
19667        // Initial service activation in foreground
19668        ACTIVATION = 1;
19669
19670        // Updating service configuration in foreground
19671        UPDATE = 2;
19672
19673        // Background polling for querying service entitlement
19674        POLLING = 3;
19675    }
19676
19677    // The IMS services
19678    enum ServiceType {
19679        UNKNOWN_SERVICE = 0;
19680        VOWIFI = 1;
19681        VOLTE = 2;
19682        SMSOIP = 3;
19683    }
19684
19685    // The result of activation
19686    enum AppResult {
19687        UNKNOWN_RESULT = 0;
19688        ENABLED = 1;
19689        DISABLED = 2;
19690        INCOMPATIBLE = 3;
19691        PROVISIONING = 4;
19692        SUCCESSFUL = 5;
19693        FAILED = 6;
19694        CANCELED = 7;
19695        TIMEOUT = 8;
19696        UNEXPECTED_RESULT = 9;
19697    }
19698
19699    // The Android carrier ID for the carrier providing the IMS service.
19700    // This may not be the actual carrier of the device, e.g. a MVNO
19701    // may use the IMS service of its MNO.
19702    optional int64 carrier_id = 1;
19703
19704    // The Android carrier ID of the actual carrier.
19705    // E.g. a MVNO may use its MNO's IMS service. In this case,
19706    // actual_carrier_id is the MVNO and carrier_id is the MNO.
19707    optional int64 actual_carrier_id = 2;
19708
19709    // The purpose of this query/update.
19710    optional Purpose purpose = 3;
19711
19712    // Which IMS service's entitlement status were queried/updated.
19713    optional ServiceType service_type = 4;
19714
19715    // Result of this query/update.
19716    optional AppResult app_result = 5;
19717
19718    // How long (in milliseconds) this query/update took.
19719    optional int64 duration_millis = 6;
19720}
19721
19722/**
19723 * Logged when a SIM-specific settings restore was attempted.
19724 *
19725 * Logged from:
19726 *    packages/providers/TelephonyProvider/src/com/android/providers/telephony/TelephonyProvider.java
19727 */
19728message SimSpecificSettingsRestored {
19729    optional android.telephony.SimSpecfifcSettingsRestoreResult result = 1;
19730
19731    // Indicates which restore flow was followed.
19732    optional android.telephony.SimSpecificSettingsRestoreCase restored_from_suw = 2;
19733
19734    // Indicates which criteria was used to match the inserted SIM to backed up
19735    // SIM. Only relevant when result is SUCCESS
19736    optional android.telephony.SimSpecificSettingsRestoreMatchingCriteria matching_criteria = 3;
19737}
19738
19739/**
19740 * The latency of Binder calls broken down by calling API and method name.
19741 * This is different from BinderCalls as it collects a histogram of the
19742 * latencies (to get more detailed data) not just the count, sum, and maximum.
19743 *
19744 * Logged from:
19745 * frameworks/base/core/java/com/android/internal/os/BinderLatencyObserver.java
19746 */
19747message BinderLatencyReported {
19748    message Dims {
19749        enum ProcessSource {
19750            UNKNOWN_PROCESS_SOURCE = 0;
19751            SYSTEM_SERVER = 1;
19752            TELEPHONY = 2;
19753            BLUETOOTH = 3;
19754            WIFI = 4;
19755        }
19756        enum ServiceClassName {
19757            UNKNOWN_CLASS = 0;
19758        }
19759        enum ServiceMethodName {
19760            UNKNOWN_METHOD = 0;
19761        }
19762
19763        // Required.
19764        optional ProcessSource process_source = 1;
19765
19766        // The class name of the API making the call to Binder. Enum value
19767        // is preferred as uses much less data to store.
19768        // This field does not contain PII.
19769        oneof service_class {
19770            ServiceClassName service_class_name_as_enum = 2;
19771            string service_class_name = 3;
19772        }
19773
19774        // Method name of the API call. It can also be a transaction code if we
19775        // cannot resolve it to a name. See Binder#getTransactionName. Enum value
19776        // is preferred as uses much less data to store.
19777        // This field does not contain PII.
19778        oneof service_method {
19779            ServiceMethodName service_method_name_as_enum = 4;
19780            string service_method_name = 5;
19781        }
19782    }
19783
19784    message ApiStats {
19785        // required.
19786        optional Dims dims = 1;
19787
19788        // Indicates the first bucket that had any data. Allows omitting any empty
19789        // buckets at the start of the bucket list and thus save on data size.
19790        optional int32 first_bucket_index = 2;
19791        // Stores the count of samples for each bucket. The number of buckets and
19792        // their sizes are controlled server side with a flag.
19793        repeated int32 buckets = 3;
19794    }
19795
19796    message RepeatedApiStats {
19797        repeated ApiStats api_stats = 1;
19798    }
19799
19800    // The binder latency data broken down by the dimensions specified above.
19801    // The message wrapper is used for the repeated field as top level repeated
19802    // fields are not allowed.
19803    // MODE_BYTES is used as nested messages are not allowed otherwise.
19804    // Required.
19805    optional RepeatedApiStats repeated_api_stats = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
19806
19807    // The fraction of samples that are recorded in the histogram.
19808    // Required.
19809    optional float sampling_rate = 2;
19810
19811    // Indicates how many shards the APIs are divided in - e.g. for 3 every
19812    // 3rd API will be included in the data for this shard.
19813    // Required.
19814    optional int32 sharding_modulo = 3;
19815
19816    // Params for histogram buckets.
19817    // The number of buckets the histogram should have.
19818    optional int32 bucket_count = 4;
19819
19820    // The size (upper bound) of the first bucket (used to avoid creating an
19821    // excessive amount of small buckets). E.g. for first_bucket_size of 5, the
19822    // first bucket will be [0, 5) and the second will be [5, 5 * scaleFactor).
19823    optional int32 first_bucket_size = 5;
19824
19825    // The rate in which each consecutive bucket increases (before rounding).
19826    // Implemented in: com.android.internal.os.BinderLatencyBuckets.
19827    optional float scale_factor = 6;
19828}
19829
19830/**
19831 * Log audio device types that are used for input/output.
19832 * Next Tag: 2
19833 */
19834message AudioDevice {
19835    // See audio_devices_t in system/media/audio/include/system/audio-hal-enums.h
19836    repeated int32 type = 1;
19837}
19838
19839/**
19840 * Track information about AAudio Stream
19841 * Logged from
19842 *   frameworks/av/services/mediametrics/AudioAnalytics.cpp
19843 */
19844message MediametricsAAudioStreamReported {
19845    // The implementation of aaudio.
19846    optional android.media.audio.CallerPath path = 1;
19847
19848    // The direction of the stream.
19849    optional android.media.audio.Direction direction = 2;
19850
19851    // The amount read or written in one shot by the Mixer or DSP.
19852    optional int32 frames_per_burst = 3;
19853    // The number of frames that the buffer is used.
19854    optional int32 buffer_size = 4;
19855    // The allocated number of frames for the buffer.
19856    optional int32 buffer_capacity = 5;
19857    // The channel count of the aaudio stream.
19858    optional int32 channel_count = 6;
19859    // Total frames transferred (written or read)
19860    optional int64 total_frames_transferred = 7;
19861
19862    // The performance mode requested by the applications.
19863    optional android.media.audio.PerformanceMode perf_mode_requested = 8;
19864    // The actual performance mode used by aaudio.
19865    optional android.media.audio.PerformanceMode perf_mode_actual = 9;
19866
19867    // The mode requested for sharing the device
19868    optional android.media.audio.SharingMode sharing = 10;
19869
19870    // Approximate number of glitches.
19871    // Underrun on output stream. Overrun on input stream.
19872    optional int32 xrun_count = 11;
19873    // Devices that are used by the aaudio stream.
19874    optional AudioDevice types = 12 [(log_mode) = MODE_BYTES];
19875
19876    // Format request by the applications
19877    optional int32 format_app = 13;
19878    // Format processed by the framework
19879    optional int32 format_device = 14;
19880
19881    // Android S metric log session id, a Base64Url encoded string representing a 128-bit integer.
19882    optional string log_session_id = 15;
19883
19884    // The sample rate of the aaudio stream.
19885    optional int32 sample_rate = 16;
19886
19887    // The content type of the aaudio stream.
19888    optional android.media.audio.ContentType content_type = 17;
19889
19890    // The mode of sharing the device requested by the client.
19891    optional android.media.audio.SharingMode sharing_requested = 18;
19892
19893    // Android U
19894    // The format used by the audio hardware.
19895    optional int32 format_hardware = 19;
19896
19897    // Android U
19898    // The channel count used by the audio hardware.
19899    optional int32 channel_count_hardware = 20;
19900
19901    // Android U
19902    // The sample rate used by the audio hardware.
19903    optional int32 sample_rate_hardware = 21;
19904
19905    // Android U
19906    // The UID of the client.
19907    optional int32 uid = 22 [(is_uid) = true];
19908
19909    // Android U
19910    // The sample rate used by the client.
19911    optional int32 sample_rate_client = 23;
19912}
19913
19914/**
19915 * Logs media transcoding session ended events.
19916 *
19917 * Logged from:
19918 *   frameworks/av/media/libmediatranscoding/TranscoderWrapper.cpp
19919 */
19920message MediaTranscodingSessionEnded {
19921
19922    enum Reason {
19923        UNKNOWN = 0;       // Unused.
19924        FINISHED = 1;      // Transcoding session finished successfully.
19925        ERROR = 2;         // Transcoding session returned error while running.
19926        PAUSED = 3;        // Transcoding session was paused, potentially failed.
19927        CANCELLED = 4;     // Transcoding session was cancelled.
19928        START_FAILED = 5;  // Transcoding session failed to start.
19929        RESUME_FAILED = 6; // Transcoding session failed to resume.
19930        CREATE_FAILED = 7; // Transcoder instance failed to crate.
19931        CONFIG_SRC_FAILED = 8;    // Configure source failed.
19932        CONFIG_DST_FAILED = 9;    // Configure destination failed.
19933        CONFIG_TRACK_FAILED = 10; // Configure track failed.
19934        OPEN_SRC_FD_FAILED = 11;  // Open source fd failed.
19935        OPEN_DST_FD_FAILED = 12;  // Open destination fd failed.
19936        NO_TRACKS = 13;  // No tracks in source file.
19937    }
19938
19939    // Reason for logging the atom.
19940    optional Reason reason = 1;
19941
19942    // UID of client connecting to media transcoding service.
19943    optional int32 calling_uid = 2 [(is_uid) = true];
19944
19945    // Transcode session status flag (media_status_t).
19946    optional int32 transcode_status = 3;
19947
19948    // Transcode speed as framerate, if status is success.
19949    optional int32 transcode_fps = 4;
19950
19951    // Source video dimensions.
19952    optional int32 src_width = 5;
19953    optional int32 src_height = 6;
19954
19955    // Source video codec information.
19956    optional string src_codec_type = 7;
19957    optional int32 src_profile = 8;
19958    optional int32 src_level = 9;
19959
19960    // Source video framerate.
19961    optional int32 src_fps = 10;
19962
19963    // Source video duration.
19964    optional int32 src_duration_millis = 11;
19965
19966    // Whether source video is HDR.
19967    optional bool src_is_hdr = 12;
19968
19969    // Destination video dimensions.
19970    optional int32 dst_width = 13;
19971    optional int32 dst_height = 14;
19972
19973    // Destination video codec information.
19974    optional string dst_codec_type = 15;
19975
19976    // Whether destination video is HDR.
19977    optional bool dst_is_hdr = 16;
19978}
19979
19980/** Logs information about an unattended reboot that took place. This is logged
19981 *  after the next boot, when the device is first unlocked.
19982 *
19983 * Logged from:
19984 *   packages/modules/Scheduling/service/java/com/android/server/RebootReadinessLogger.java
19985 */
19986message UnattendedRebootOccurred {
19987
19988    // Time between the reboot readiness state checks starting, and the device
19989    // becoming reboot-ready.
19990    optional int64 time_until_reboot_ready_millis= 1;
19991
19992    // Time taken for the device to be unlocked (i.e. for the keyguard to be
19993    // gone) after an unattended reboot took place.
19994    optional int64 time_until_first_unlock_millis = 2;
19995
19996    // Number of times the reboot was blocked by the device being interactive.
19997    optional int32 times_blocked_by_interactivity = 3;
19998
19999    // Number of times the reboot was blocked by a callback registered by a
20000    // subsystem or a privileged app.
20001    optional int32 times_blocked_by_subsystems = 4;
20002
20003    // Number of times the reboot was blocked by background app activity.
20004    optional int32 times_blocked_by_app_activity = 5;
20005
20006    // Time until next user interaction with the device.
20007    optional int64 time_until_next_interaction_ms = 6;
20008}
20009
20010
20011/**
20012 * Logs information about an app uid or registered system component that has
20013 * been blocking the device from being reboot-ready for a long time.
20014 *
20015 * Logged from:
20016 *   packages/modules/Scheduling/service/java/com/android/server/RebootReadinessLogger.java
20017 */
20018message LongRebootBlockingReported {
20019
20020    enum RebootBlockReason {
20021        SYSTEM_COMPONENT = 1;
20022        APP_UID = 2;
20023    }
20024
20025    // The reason why the reboot has been blocked. This is either a system
20026    // component that has registered a callback, or an app UID running in the
20027    // background.
20028    optional RebootBlockReason reboot_block_reason = 1;
20029
20030    // Only one of the following two fields should be set, depending on the
20031    // RebootBlockReason.
20032
20033    // The name supplied by a system component when it registered a callback
20034    // to block the reboot.
20035    optional string component_name = 2;
20036
20037    // The uid of an app that is running in the background.
20038    optional int32 uid = 3 [(is_uid) = true];
20039}
20040
20041/**
20042 * Logs the magnification activated mode and its duration of the usage
20043 * when the magnification is disabled.
20044 *
20045 * Logged from:
20046 *   frameworks/base/services/accessibility/java/com/android/server/accessibility
20047 */
20048message MagnificationUsageReported {
20049    // The definition of the magnification mode.
20050    // From frameworks/base/core/proto/android/stats/accessibility/accessibility_enums.proto.
20051    optional android.stats.accessibility.MagnificationMode activated_mode = 1;
20052
20053    // The duration of this magnification mode activation in milliseconds
20054    optional int64 duration_millis = 2;
20055
20056    // The last magnification scale for the activation in percentage
20057    optional int64 scale_percentage = 3;
20058}
20059
20060/**
20061 * Logs the magnification activated mode when IME dialog shows on the screen.
20062 *
20063 * Logged from:
20064 *   frameworks/base/services/accessibility/java/com/android/server/accessibility
20065 */
20066message MagnificationModeWithImeOnReported {
20067    // The definition of the magnification mode.
20068    // From frameworks/base/core/proto/android/stats/accessibility/accessibility_enums.proto.
20069    optional android.stats.accessibility.MagnificationMode activated_mode = 1;
20070}
20071
20072/**
20073 * Logs the duration for the magnification session which is activated by the triple tap and
20074 * hold gesture.
20075 *
20076 * Logged from:
20077 *   frameworks/base/services/accessibility/java/com/android/server/accessibility
20078 */
20079message MagnificationTripleTapAndHoldActivatedSessionReported {
20080    // The duration of the triple tap and hold activated session in milliseconds
20081    optional int64 duration_millis = 1;
20082}
20083
20084/**
20085 * Logs the duration for the following typing focus activated session.
20086 *
20087 * Logged from:
20088 *   frameworks/base/services/accessibility/java/com/android/server/accessibility
20089 */
20090message MagnificationFollowTypingFocusActivatedSessionReported {
20091    // The duration of the following typing focus activated session in milliseconds
20092    optional int64 duration_millis = 1;
20093}
20094
20095/*
20096 * Logged when hardware based user-configurable device state changes.
20097 *
20098 * Logged from:
20099 *     frameworks/base/services/core/java/com/android/server/devicestate/DeviceStateManagerService.java
20100 */
20101message DeviceStateChanged {
20102    optional int32 new_device_state = 1
20103            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
20104    optional bool boot_state = 2;
20105}
20106
20107/*
20108 * Logged when device folded state changes.
20109 *
20110 * Logged from:
20111 *     frameworks/base/packages/SystemUI/src/com/android/systemui/unfold/FoldStateLogger.kt
20112 */
20113message FoldStateDurationReported {
20114    enum State {
20115      UNKNOWN = 0;
20116      OPEN = 1;
20117      CLOSED = 2;
20118      HALF_OPEN = 3;
20119    }
20120
20121    optional State start_state = 1;
20122    optional State end_state = 2;
20123    optional int64 duration_millis = 3;
20124}
20125
20126/**
20127 * This metric is collected at the end of playback
20128 * as a pulled atom.
20129 *
20130 *   DrmHal::cleanup() {
20131 *     // ...
20132 *     reportFrameworkMetrics(reportPluginMetrics());
20133 *     // ...
20134 *   }
20135 * This proto should be kept in-sync with
20136 * frameworks/av/drm/libmediadrm/protos/metrics.proto.
20137 */
20138message DrmFrameworkMetrics {
20139
20140    // Attributes are associated with a recorded value. E.g. A counter may
20141    // represent a count of an operation returning a specific error code. The
20142    // error code will be an attribute.
20143    message Attributes {
20144        // Reserved for compatibility with logging proto.
20145        reserved 2 to 13;
20146
20147        // A general purpose error code where 0 means OK.
20148        optional int32 error_code = 1;
20149
20150        // Defined at ::android::hardware::drm::V1_0::KeyStatusType;
20151        optional uint32 key_status_type = 14;
20152
20153        // Defined at ::android::hardware::drm::V1_0::EventType;
20154        optional uint32 event_type = 15;
20155    }
20156
20157    // The Counter message is used to store a count value with an associated
20158    // Attribute.
20159    message Counter {
20160        optional uint64 count = 1;
20161        // Represents the attributes associated with this counter instance.
20162        optional Attributes attributes = 2;
20163    }
20164
20165    // The DistributionMetric is meant to capture the moments of a normally
20166    // distributed (or approximately normal) value.
20167    message DistributionMetric {
20168        optional float min = 1;
20169        optional float max = 2;
20170        optional float mean = 3;
20171        optional double variance = 4;
20172        optional uint64 operation_count = 5;
20173
20174        // Represents the attributes associated with this distribution metric
20175        // instance.
20176        optional Attributes attributes = 6;
20177    }
20178
20179    message SessionLifetime {
20180        // Start time of the session in milliseconds since epoch.
20181        optional uint64 start_time_millis = 1;
20182        // End time of the session in milliseconds since epoch.
20183        optional uint64 end_time_millis = 2;
20184    }
20185
20186    // The count of open session operations. Each instance has a specific error
20187    // code associated with it.
20188    repeated Counter open_session_counter = 1;
20189
20190    // The count of close session operations. Each instance has a specific error
20191    // code associated with it.
20192    repeated Counter close_session_counter = 2;
20193
20194    // Count and execution time of getKeyRequest calls.
20195    repeated DistributionMetric get_key_request_time_us = 3;
20196
20197    // Count and execution time of provideKeyResponse calls.
20198    repeated DistributionMetric provide_key_response_time_us = 4;
20199
20200    // Count of getProvisionRequest calls.
20201    repeated Counter get_provisioning_request_counter = 5;
20202
20203    // Count of provideProvisionResponse calls.
20204    repeated Counter provide_provisioning_response_counter = 6;
20205
20206    // Count of key status events broken out by status type.
20207    repeated Counter key_status_change_counter = 7;
20208
20209    // Count of events broken out by event type
20210    repeated Counter event_callback_counter = 8;
20211
20212    // Count getPropertyByteArray calls to retrieve the device unique id.
20213    repeated Counter get_device_unique_id_counter = 9;
20214
20215    message SessionLifetimeEntry {
20216        optional string session_id = 1;
20217        optional SessionLifetime session_lifetime = 2;
20218    }
20219    // Session ids to lifetime (start and end time) map.
20220    // Session ids are strings of hex-encoded byte arrays.
20221    // This field is equivalent to the map<string, SessionLifetime>
20222    // field in frameworks/av/drm/libmediadrm/protos/metrics.proto.
20223    repeated SessionLifetimeEntry session_lifetimes = 10;
20224}
20225
20226/**
20227 * The metric is collected at the end of playback
20228 * as a pulled atom MediaDrmActivityInfo.
20229 *
20230 * The framework_metrics is defined in
20231 * frameworks/av/drm/libmediadrm/protos/metrics.proto.
20232 *
20233 * The format of vendor_metrics is  MediaDrm plugin dependent.
20234 *
20235 *   DrmHal::cleanup() {
20236 *     // ...
20237 *     reportFrameworkMetrics(reportPluginMetrics());
20238 *     // ...
20239 *   }
20240 *
20241 * This pulled atom is then collected in
20242 * frameworks/av/services/mediametrics/MediaMetricsService.cpp.
20243 */
20244message MediaDrmActivityInfo {
20245    optional string package_name = 1;
20246    optional int64 package_version_code = 2;
20247
20248    // vendor+description tell about which DRM plugin is in use on this device
20249    optional string vendor = 3;
20250    optional string description = 4;
20251
20252    optional DrmFrameworkMetrics framework_metrics = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
20253    optional bytes vendor_metrics = 6 [(android.os.statsd.log_mode) = MODE_BYTES];
20254}
20255
20256/*
20257 * A canonical form time zone suggestion for metrics use.
20258 */
20259message MetricsTimeZoneSuggestion {
20260    enum Type {
20261        UNKNOWN = 0;
20262        CERTAIN = 1;
20263        UNCERTAIN = 2;
20264    }
20265    optional Type type = 1;
20266
20267    // The ordinals for time zone(s) in the suggestion. Always empty for
20268    // UNCERTAIN, and can be empty for CERTAIN, for example when the device is in
20269    // a disputed area / on an ocean.
20270    //
20271    // The suggestion's time zone IDs (which relate to location) are obfuscated by
20272    // mapping them to an ordinal. When the ordinal is assigned consistently across
20273    // several objects (i.e. so the same time zone ID is always mapped to the same
20274    // ordinal), this allows comparisons between those objects. For example, we can
20275    // answer "did these two suggestions agree?", "does the suggestion match the
20276    // device's current time zone?", without leaking knowledge of location. Ordinals
20277    // are also significantly more compact than full IANA TZDB IDs, albeit unstable
20278    // and of limited use.
20279    repeated int32 time_zone_ordinals = 2;
20280
20281    // The actual time zone ID(s) in the suggestion. Similar to time_zone_ordinals
20282    // but contains the actual string IDs.
20283    //
20284    // This information is only captured / reported for some devices based on the
20285    // value of a server side flag, i.e. it could be enabled for internal testers.
20286    // Therefore the list can be empty even when time_zone_ordinals is populated.
20287    //
20288    // When enabled, see time_zone_ordinals for the expected number of values.
20289    repeated string time_zone_ids = 3;
20290}
20291
20292/*
20293 * Logs a snapshot of time zone detector state.
20294 *
20295 * Logged from:
20296 * frameworks/base/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
20297 */
20298message TimeZoneDetectorState {
20299
20300    // True if telephony-based time zone detection is supported on the device.
20301    optional bool telephony_supported = 1;
20302
20303    // True if geo-based time zone detection is supported on the device.
20304    optional bool geo_supported = 2;
20305
20306    // The current user's master location setting value.
20307    optional bool location_enabled = 3;
20308
20309    // The current user's auto time zone detection enabled setting value.
20310    optional bool auto_detection_setting = 4;
20311
20312    // The current user's geo detection enabled setting.
20313    optional bool geo_detection_setting = 5;
20314
20315    enum DetectionMode {
20316        UNKNOWN = 0;
20317        MANUAL = 1;
20318        TELEPHONY = 2;
20319        GEO = 3;
20320    }
20321
20322    // The functional / behavioral state for how time zones are currently determined on the device.
20323    // Avoids needing to duplicate the logic used.
20324    optional DetectionMode detection_mode = 6;
20325
20326    // The device's current time zone ordinal (see MetricsTimeZoneSuggestion).
20327    optional int32 device_time_zone_ordinal = 7;
20328
20329    // The latest suggestion received from the user, e.g. via SettingsUI (non-persistent).
20330    optional MetricsTimeZoneSuggestion latest_manual_suggestion = 8
20331            [(log_mode) = MODE_BYTES];
20332
20333    // The latest telephony-derived suggestion (non-persistent).
20334    optional MetricsTimeZoneSuggestion latest_telephony_suggestion = 9
20335            [(log_mode) = MODE_BYTES];
20336
20337    // The latest geo-derived suggestion (non-persistent).
20338    optional MetricsTimeZoneSuggestion latest_geo_suggestion = 10
20339            [(log_mode) = MODE_BYTES];
20340
20341    // True if fallback to telephony time zone detection is supported on the device.
20342    optional bool telephony_time_zone_fallback_supported = 11;
20343
20344    // The device's current time zone ID (see MetricsTimeZoneSuggestion).
20345    optional string device_time_zone_id = 12;
20346
20347    // True if enhanced metrics collection is enabled.
20348    optional bool enhanced_metrics_collection_enabled = 13;
20349
20350    // True if the device may run geolocation time zone detection in the
20351    // background. This is the raw server flag value, not the value after
20352    // considering other state like the user's "use location" setting that also
20353    // affects runtime behavior. See LocationTimeZoneProviderController for
20354    // details.
20355    optional bool geo_detection_run_in_background_enabled = 14;
20356}
20357
20358/*
20359 * Logs information about an individual location time zone provider's state.
20360 *
20361 * Logged from:
20362 * frameworks/base/services/core/java/com/android/server/timezonedetector/location/RealProviderMetricsLogger.java
20363 */
20364message LocationTimeZoneProviderStateChanged {
20365    // The index of the provider (primary = 0, secondary = 1)
20366    optional int32 provider_index = 1 [(state_field_option).primary_field = true];
20367
20368    enum State {
20369        // A placeholder for unknown values.
20370        UNKNOWN = 0;
20371
20372        // The provider is initializing.
20373        INITIALIZING = 1;
20374
20375        // The provider is certain of the time zone.
20376        CERTAIN = 2;
20377
20378        // The provider is uncertain of the time zone.
20379        UNCERTAIN = 3;
20380
20381        // The provider has been stopped.
20382        STOPPED = 4;
20383
20384        // The provider has failed.
20385        PERM_FAILED = 5;
20386
20387        // The provider has been destroyed.
20388        DESTROYED = 6;
20389    }
20390
20391    // The state of the provider.
20392    optional State state = 2 [
20393        (state_field_option).exclusive_state = true,
20394        (state_field_option).nested = false
20395    ];
20396}
20397
20398/*
20399 * Logs information about the location time zone provider controller's state.
20400 *
20401 * Logged from:
20402 * frameworks/base/services/core/java/com/android/server/timezonedetector/location/RealControllerMetricsLogger.java
20403 */
20404message LocationTimeZoneProviderControllerStateChanged {
20405
20406    enum State {
20407        // A placeholder for unknown values.
20408        UNKNOWN = 0;
20409
20410        // The providers are initializing.
20411        PROVIDERS_INITIALIZING = 1;
20412
20413        // The controller is / has been stopped.
20414        STOPPED = 2;
20415
20416        // The controller is started and is initializing.
20417        INITIALIZING = 3;
20418
20419        // The controller is started and is certain of the time zone.
20420        CERTAIN = 4;
20421
20422        // The controller is started and is uncertain of the time zone.
20423        UNCERTAIN = 5;
20424
20425        // The controller has been destroyed.
20426        DESTROYED = 6;
20427
20428        // The controller has failed.
20429        FAILED = 7;
20430    }
20431
20432    // The state of the provider.
20433    optional State state = 1;
20434}
20435
20436/*
20437 * Reports fdtrack state change.
20438 *
20439 * Logged from:
20440 *   frameworks/base/services/java/com/android/server/SystemServer.java
20441 */
20442message FdtrackEventOccurred {
20443    enum FdtrackEventType {
20444      DISABLED = 1;
20445      ENABLED = 2;
20446
20447      // Aborting because we're above the abort threshold.
20448      ABORTING = 3;
20449    }
20450
20451    optional FdtrackEventType event = 1;
20452    optional int32 fd_count = 2;
20453}
20454
20455/**
20456 * Pushed when delivering a batch of alarms.
20457 *
20458 * Logged from:
20459 * frameworks/base/apex/jobscheduler/service/java/com/android/server/alarm/MetricsHelper.java
20460 */
20461message AlarmBatchDelivered {
20462    // The total number of alarms delivered in the batch.
20463    optional int32 num_alarms = 1;
20464
20465    // The number of wakeup alarms delivered in the batch.
20466    optional int32 wakeups = 2;
20467
20468    // A list of uids receiving the alarm delivery.
20469    repeated int32 uids = 3 [(is_uid) = true];
20470
20471    // The number of alarms delivered to each of the {@link uids} above.
20472    repeated int32 num_alarms_per_uid = 4;
20473
20474    // The number of wakeup alarms delivered to each of the {@link uids} above.
20475    repeated int32 num_wakeups_per_uid = 5;
20476}
20477
20478/**
20479 * Pushed when an app schedules an alarm.
20480 *
20481 * Logged from:
20482 * frameworks/base/apex/jobscheduler/service/java/com/android/server/alarm/MetricsHelper.java
20483 */
20484message AlarmScheduled {
20485    optional int32 calling_uid = 1 [(is_uid) = true];
20486
20487    optional bool is_exact = 2;
20488    optional bool is_wakeup = 3;
20489    optional bool is_allow_while_idle = 4;
20490    optional bool is_alarm_clock = 5;
20491    optional bool is_repeating = 6;
20492
20493    enum ReasonCode {
20494        NOT_APPLICABLE = 0;
20495        PERMISSION = 1;
20496        ALLOW_LIST = 2;
20497        CHANGE_DISABLED = 3;
20498        POLICY_PERMISSION = 4;
20499        LISTENER = 5;
20500        PRIORITIZED = 6;
20501    }
20502    optional ReasonCode exact_alarm_allowed_reason = 7;
20503    optional bool is_rtc = 8;
20504    // The state of the callingUid, from frameworks/proto_logging/stats/enums/app_shared/app_enums.proto.
20505    optional android.app.ProcessStateEnum calling_process_state = 9;
20506}
20507
20508/**
20509 * Logs statistics about pending alarms.
20510 *
20511 * Pulled from:
20512 * frameworks/base/apex/jobscheduler/service/java/com/android/server/alarm/MetricsHelper.java
20513 */
20514message PendingAlarmInfo {
20515    optional int32 num_total = 1;
20516    optional int32 num_exact = 2;
20517    optional int32 num_wakeup = 3;
20518    optional int32 num_allow_while_idle = 4;
20519    optional int32 num_prioritized = 5;
20520    optional int32 num_foreground_service = 6;
20521    optional int32 num_activity = 7;
20522    optional int32 num_service = 8;
20523    optional int32 num_listener = 9;
20524    optional int32 num_indefinite_future = 10;
20525    optional int32 num_repeating = 11;
20526    optional int32 num_alarm_clock = 12;
20527    optional int32 num_rtc = 13;
20528}
20529
20530/*
20531 * Logged when a package's user-level hibernation state changes.
20532 * Logged from:
20533 *   frameworks/base/services/core/java/com/android/server/apphibernation/AppHibernationService.java
20534 */
20535 message UserLevelHibernationStateChanged {
20536    // Name of the package that had its hibernation state change.
20537    optional string package_name = 1;
20538
20539    // Android user id to which this event belongs. This can only be 0, 10, 11 and so on.
20540    optional int32 user_id = 2;
20541
20542    // New hibernation state. True if hibernating, false otherwise
20543    optional bool is_hibernating = 3;
20544}
20545
20546/*
20547 * Pull atom for the number of hibernated packages on the device for the given user.
20548 * Logged from:
20549 *   frameworks/base/services/core/java/com/android/server/apphibernation/AppHibernationService.java
20550 */
20551message UserLevelHibernatedApps {
20552    // Total number of apps hibernated for the user
20553    optional int32 hibernated_app_count = 1;
20554
20555    // Android user id of the queried user which can only be 0, 10, 11 and so on.
20556    optional int32 user_id = 2;
20557}
20558
20559/**
20560 * Pull atom for total number of globally hibernated packages on the device and the storage savings
20561 * from these apps being hibernated.
20562 * Logged from:
20563 *   frameworks/base/services/core/java/com/android/server/apphibernation/AppHibernationService.java
20564 */
20565message GlobalHibernatedApps {
20566    // Total number of apps in global hibernation
20567    optional int32 hibernated_app_count = 1;
20568
20569    // Cumulative storage savings from apps being hibernated
20570    optional int64 storage_saved_mb = 2;
20571}
20572
20573/*
20574 * Report the event of app process kills.
20575 * Logged from:
20576 *   frameworks/base/services/core/java/com/android/server/am/AppExitInfoTracker.java
20577 */
20578message AppProcessDied {
20579    // Uid of the package of the dying process
20580    optional int32 uid = 1 [(is_uid) = true];
20581
20582    // Name of the dying process, it'll be omitted if the process name and package name are the same
20583    optional string process_name = 2;
20584
20585    // The reason code of why the process dies
20586    optional android.app.AppExitReasonCode reason = 3;
20587
20588    // The supplemental reason code of why the process dies
20589    optional android.app.AppExitSubReasonCode sub_reason = 4;
20590
20591    // The importance of the process when it dies
20592    optional android.app.Importance importance = 5;
20593
20594    // The last known PSS (in kB) of the process before it dies, could be 0.
20595    optional int32 pss = 6;
20596
20597    // The last known RSS (in kB) of the process before it dies, could be 0.
20598    optional int32 rss = 7;
20599
20600    // Whether or not this process is hosting one or more foregound services.
20601    optional bool has_foreground_services = 8;
20602}
20603
20604// Each pull creates multiple atoms. One for each incremental package.
20605message InstalledIncrementalPackage {
20606    optional int32 uid = 1 [(is_uid) = true];
20607    optional bool is_loading = 2;
20608    optional int64 loading_completed_timestamp = 3;
20609}
20610
20611/**
20612 * Memory management statistics pulled atom based on /proc/vmstat.
20613 * Logged from StatsPullAtomService.
20614 */
20615message VmStat {
20616    optional int32 oom_kill_count = 1;
20617}
20618
20619/**
20620* Log that the user has interacted with an app on the permission usage
20621* fragment.
20622* Logged from permission/debug/PermissionUsageV2Frament.kt
20623*/
20624message PermissionUsageFragmentInteraction {
20625    // id which identifies single session of user interacting with permission hub
20626    optional int64 session_id = 1;
20627
20628    enum Action {
20629        UNDEFINED = 0;
20630        OPEN = 1;
20631        LOCATION_ACCESS_TIMELINE_VIEWED = 2;
20632        CAMERA_ACCESS_TIMELINE_VIEWED = 3;
20633        MICROPHONE_ACCESS_TIMELINE_VIEWED = 4;
20634        SHOW_SYSTEM_CLICKED = 5;
20635        SEE_OTHER_PERMISSIONS_CLICKED = 6;
20636        SHOW_7DAYS_CLICKED = 7;
20637    }
20638
20639    // The action the user took to interact with the fragment
20640    optional Action action = 2;
20641}
20642
20643/**
20644* Log that the user has clicked on .
20645* Logged from permission/debug/PermissionDetailsFragment.kt
20646*/
20647message PermissionDetailsInteraction {
20648    // id which identifies single session of user interacting with permission details fragment.
20649    optional int64 session_id = 1;
20650
20651    // The name of a permission group whose details are viewed.
20652    optional string permission_group_name = 2;
20653
20654    enum Action {
20655        UNDEFINED = 0;
20656        SHOW_SYSTEM_CLICKED = 1;
20657        INFO_ICON_CLICKED = 2;
20658        TIMELINE_ROW_CLICKED = 3;
20659        SHOW_7DAYS_CLICKED = 4;
20660        MANAGE_PERMISSIONS_CLICKED = 5;
20661    }
20662
20663    // Package name for which the info icon was clicked.
20664    optional string package_name = 3;
20665
20666    // The action the user took to interact with the fragment
20667    optional Action action = 4;
20668}
20669
20670/**
20671* Log that the user has toggled the sensor privacy.
20672*/
20673message PrivacySensorToggleInteraction {
20674
20675    enum Sensor {
20676        SENSOR_UNKNOWN = 0;
20677        MICROPHONE = 1;
20678        CAMERA = 2;
20679    }
20680
20681    // Sensor for which sensor privacy was toggled.
20682    optional Sensor sensor = 1;
20683
20684    enum Action {
20685        ACTION_UNKNOWN = 0;
20686        TOGGLE_ON = 1;
20687        TOGGLE_OFF = 2;
20688        TOGGLE_ON_EXCEPT_ALLOWLISTED_APPS = 3;
20689    }
20690
20691    // Action taken on sensor.
20692    optional Action action = 2;
20693
20694    enum Source {
20695        SOURCE_UNKNOWN = 0;
20696        DIALOG = 1;
20697        SETTINGS = 2;
20698        QS_TILE = 3;
20699    }
20700
20701    // Source for the toggling.
20702    optional Source source = 3;
20703
20704    // Amount of time a user spent in the previous sensor privacy state in minutes.
20705    optional int64 time_in_previous_state_in_mins = 4;
20706}
20707
20708message PrivacyToggleDialogInteraction {
20709
20710    enum Action {
20711        ACTION_UNKNOWN = 0;
20712        ENABLE = 1;
20713        CANCEL = 2;
20714    }
20715
20716    // Action taken on the toggle dialog.
20717    optional Action action = 1;
20718
20719    // Name of the package for which the dialog was shown.
20720    optional string package_name = 2;
20721}
20722
20723message VendorApexInfo {
20724  optional string package_name = 1;
20725  optional string version_code = 2;
20726  optional string version_name = 3;
20727  optional string source_dir = 4;
20728  optional string signing_certs_hash = 5;
20729  optional string file_hash = 6;
20730}
20731
20732/**
20733 * Logs the non-a11yTool service warning status and its duration of the usage.
20734 *
20735 * Logged from:
20736 *   frameworks/base/services/accessibility/java/com/android/server/accessibility
20737 *   packages/apps/Settings
20738 */
20739message NonA11yToolServiceWarningReported {
20740    // Package name of the non-a11yTool service.
20741    optional string package_name = 1;
20742
20743    // Warning status of the non-a11yTool service.
20744    optional android.stats.accessibility.WarningStatus status = 2;
20745
20746    // Duration between status in milliseconds.
20747    optional int64 duration_millis = 3;
20748}
20749
20750message MediaCapabilities {
20751    message AudioEncodings {
20752        repeated android.stats.mediametrics.AudioEncoding audio_encodings = 1;
20753    }
20754
20755    message HdrFormats {
20756        repeated android.stats.mediametrics.HdrFormat hdr_formats = 1;
20757    }
20758
20759
20760    message DisplayMode {
20761        optional int32 height = 1;
20762        optional int32 width = 2;
20763        optional float refresh_rate = 3;
20764        optional int32 seamless_refresh_rates_group_id = 4;
20765    }
20766
20767    message DisplayModes {
20768        repeated DisplayMode display_modes = 1;
20769    }
20770
20771    // Surround sound capabilities
20772
20773    // List of surround sound encodings supported by this device
20774    optional AudioEncodings surround_encodings = 1 [(log_mode) = MODE_BYTES];
20775    // List of surround sound encodings supported by the sink device
20776    optional AudioEncodings sink_surround_encodings = 2 [(log_mode) = MODE_BYTES];
20777    // List of supported surround sound encodings disabled by user
20778    optional AudioEncodings user_disabled_surround_encodings = 3 [(log_mode) = MODE_BYTES];
20779    // List of unsupported surround sound encodings enabled by user
20780    optional AudioEncodings user_enabled_surround_encodings = 4 [(log_mode) = MODE_BYTES];
20781     // The surround sound output mode chosen by user
20782    optional android.stats.mediametrics.EncodedSurroundOutputMode surround_output_mode = 5;
20783
20784
20785    // Display capabilities
20786
20787    // List of HDR display formats supported by the sink device
20788    optional HdrFormats sink_hdr_formats = 6 [(log_mode) = MODE_BYTES];
20789    // List of modes supported by the sink device. Each mode has height, width, refresh rate and a list
20790    // of refresh-rates between which a seamless switch is possible.
20791    optional DisplayModes sink_display_modes = 7 [(log_mode) = MODE_BYTES];
20792    // The HDCP level with which the display is connected
20793    optional int32 hdcp_level = 8;
20794
20795    // Display settings
20796
20797    // The Match content refresh rate user preference
20798    optional android.stats.mediametrics.MatchContentFrameRatePreference
20799                match_content_refresh_rate_preference = 9;
20800    // List of HDR formats disabled by the user
20801    optional HdrFormats user_disabled_hdr_formats = 10 [(log_mode) = MODE_BYTES];
20802    // The resolution height selected by the user
20803    optional int32 user_preferred_resolution_height = 11;
20804    // The resolution width selected by the user
20805    optional int32 user_preferred_resolution_width = 12;
20806    // The refresh rate selected by the user
20807    optional float user_preferred_refresh_rate = 13;
20808    // Whether the user has disabled auto low latency mode
20809    optional bool has_user_disabled_allm = 14;
20810}
20811
20812/**
20813 * Logs when NNAPI model is compiled successfully
20814 * Logged from
20815 *   modules/NeuralNetworks/runtime/TelemetryStatsd.cpp
20816 */
20817message NeuralNetworksCompilationCompleted {
20818    // Linux process uid for the package.
20819    optional int32 uid = 1 [(is_uid) = true];
20820
20821    // id which identifies single session of client interacting with NNAPI runtime
20822    optional int32 session_id = 2;
20823
20824    // NNAPI mainline module version.
20825    optional int64 version_nnapi_module = 3;
20826
20827    // An identifier that can be used to match events for ML model architecture.
20828    // Hash is generated from model operations and operands definition, but not weights.
20829    // Hash algorithm: HMAC-SHA256
20830    // Size: 32 byte
20831    optional bytes model_arch_hash = 4 [(log_mode) = MODE_BYTES];
20832
20833    // Device driver identifier used by this compilation.
20834    // NeuralNetworks models are compiled/prepared for one or more device drivers (e.g., DSP, GPU,
20835    // TPU, CPU). The device driver identifier is a concatenation of [device driver name, =, and
20836    // device driver version]. If multiple device drivers are used, all device driver identifiers
20837    // are sorted and concatenated with comma as a separator.
20838    optional string device_id = 5;
20839
20840    // Type of tensors used for inputs
20841    optional android.neuralnetworks.DataClass input_data_class = 6;
20842
20843    // Type of tensors used for outputs
20844    optional android.neuralnetworks.DataClass output_data_class = 7;
20845
20846    // Did the compilation had to fallback to cpu due to an error?
20847    optional bool fallback_to_cpu_from_error = 8;
20848
20849    // Did client name target devices explicitly?
20850    optional bool introspection_enabled = 9;
20851
20852    // Was cache enabled?
20853    optional bool cache_enabled = 10;
20854
20855    // Was control flow used in the model?
20856    optional bool has_control_flow = 11;
20857
20858    // Whether there exists a partition boundary in the compilation that has dynamic size
20859    optional bool has_dynamic_temporaries = 12;
20860
20861    // Time taken to compile a model
20862    optional int64 compilation_time_sum_millis = 13;
20863    optional int64 compilation_time_min_millis = 14;
20864    optional int64 compilation_time_max_millis = 15;
20865    optional int64 compilation_time_sum_squared_millis = 16;
20866    optional int32 compilation_time_count = 17;
20867
20868    // How many times this atom occurred locally before being pushed.
20869    optional int32 count = 18;
20870
20871    // model_arch_hash compressed to 64 bits by bitwise-xor each 64 chunk of model_arch_hash.
20872    optional int64 model_arch_hash_64 = 19;
20873}
20874
20875/**
20876 * Logs when NNAPI model fails compilation
20877 * Logged from
20878 *   modules/NeuralNetworks/runtime/TelemetryStatsd.cpp
20879 */
20880message NeuralNetworksCompilationFailed {
20881    // Linux process uid for the package.
20882    optional int32 uid = 1 [(is_uid) = true];
20883
20884    // id which identifies single session of client interacting with NNAPI runtime
20885    optional int32 session_id = 2;
20886
20887    // NNAPI mainline module version.
20888    optional int64 version_nnapi_module = 3;
20889
20890    // An identifier that can be used to match events for ML model architecture.
20891    // Hash is generated from model operations and operands definition, but not weights.
20892    // Hash algorithm: HMAC-SHA256
20893    // Size: 32 byte
20894    optional bytes model_arch_hash = 4 [(log_mode) = MODE_BYTES];
20895
20896    // Device driver identifier used by this compilation.
20897    // NeuralNetworks models are compiled/prepared for one or more device drivers (e.g., DSP, GPU,
20898    // TPU, CPU). The device driver identifier is a concatenation of [device driver name, =, and
20899    // device driver version]. If multiple device drivers are used, all device driver identifiers
20900    // are sorted and concatenated with comma as a separator.
20901    optional string device_id = 5;
20902
20903    // Type of tensors used for inputs
20904    optional android.neuralnetworks.DataClass input_data_class = 6;
20905
20906    // Type of tensors used for outputs
20907    optional android.neuralnetworks.DataClass output_data_class = 7;
20908
20909    // Error code returned by compilation call
20910    optional android.neuralnetworks.ResultCode error_code = 8;
20911
20912    // Did client name target devices explicitly?
20913    optional bool introspection_enabled = 9;
20914
20915    // Was cache enabled?
20916    optional bool cache_enabled = 10;
20917
20918    // Was control flow used in the model?
20919    optional bool has_control_flow = 11;
20920
20921    // Whether there exists a partition boundary in the compilation that has dynamic size
20922    optional bool has_dynamic_temporaries = 12;
20923
20924    // How many times this atom occurred locally before being pushed.
20925    optional int32 count = 13;
20926
20927    // model_arch_hash compressed to 64 bits by bitwise-xor each 64 chunk of model_arch_hash.
20928    optional int64 model_arch_hash_64 = 14;
20929}
20930
20931/**
20932 * Logs when NNAPI model is executed successfully
20933 *
20934 * Logged from
20935 *   modules/NeuralNetworks/runtime/TelemetryStatsd.cpp
20936 */
20937message NeuralNetworksExecutionCompleted {
20938    // Linux process uid for the package.
20939    optional int32 uid = 1 [(is_uid) = true];
20940
20941    // id which identifies single session of client interacting with NNAPI runtime
20942    optional int32 session_id = 2;
20943
20944    // NNAPI mainline module version.
20945    optional int64 version_nnapi_module = 3;
20946
20947    // An identifier that can be used to match events for ML model architecture.
20948    // Hash is generated from model operations and operands definition, but not weights.
20949    // Hash algorithm: HMAC-SHA256
20950    // Size: 32 byte
20951    optional bytes model_arch_hash = 4 [(log_mode) = MODE_BYTES];
20952
20953    // Device driver identifier used by this execution.
20954    // NeuralNetworks models are executed on one or more device drivers (e.g., DSP, GPU, TPU, CPU).
20955    // The device driver identifier is a concatenation of [device driver name, =, and device driver
20956    // version]. If multiple device drivers are used, all device driver identifiers are sorted and
20957    // concatenated with comma as a separator.
20958    optional string device_id = 5;
20959
20960    // Execution mode
20961    optional android.neuralnetworks.Mode mode = 6;
20962
20963    // Type of tensors used for inputs
20964    optional android.neuralnetworks.DataClass input_data_class = 7;
20965
20966    // Type of tensors used for outputs
20967    optional android.neuralnetworks.DataClass output_data_class = 8;
20968
20969    // Did client name target devices explicitly?
20970    optional bool introspection_enabled = 9;
20971
20972    // Was cache enabled?
20973    optional bool cache_enabled = 10;
20974
20975    // Was control flow used in the model?
20976    optional bool has_control_flow = 11;
20977
20978    // Whether there exists a partition boundary in the compilation that has dynamic size
20979    optional bool has_dynamic_temporaries = 12;
20980
20981    // Time taken to execute from runtime, including runtime/ipc overhead
20982    optional int64 duration_runtime_sum_micros = 13;
20983    optional int64 duration_runtime_min_micros = 14;
20984    optional int64 duration_runtime_max_micros = 15;
20985    optional int64 duration_runtime_sum_squared_micros = 16;
20986    optional int32 duration_runtime_count = 17;
20987
20988    // Time taken to execute in the driver, excluding runtime/ipc overhead
20989    optional int64 duration_driver_sum_micros = 18;
20990    optional int64 duration_driver_min_micros = 19;
20991    optional int64 duration_driver_max_micros = 20;
20992    optional int64 duration_driver_sum_squared_micros = 21;
20993    optional int32 duration_driver_count = 22;
20994
20995    // Time taken to execute on the hardware, excluding driver overhead
20996    optional int64 duration_hardware_sum_micros = 23;
20997    optional int64 duration_hardware_min_micros = 24;
20998    optional int64 duration_hardware_max_micros = 25;
20999    optional int64 duration_hardware_sum_squared_micros = 26;
21000    optional int32 duration_hardware_count = 27;
21001
21002    // How many times this atom occurred locally before being pushed.
21003    optional int32 count = 28;
21004
21005    // model_arch_hash compressed to 64 bits by bitwise-xor each 64 chunk of model_arch_hash.
21006    optional int64 model_arch_hash_64 = 29;
21007}
21008
21009/**
21010 * Logs when NNAPI model fails execution
21011 * Logged from
21012 *   modules/NeuralNetworks/runtime/TelemetryStatsd.cpp
21013 */
21014message NeuralNetworksExecutionFailed {
21015    // Linux process uid for the package.
21016    optional int32 uid = 1 [(is_uid) = true];
21017
21018    // id which identifies single session of client interacting with NNAPI runtime
21019    optional int32 session_id = 2;
21020
21021    // NNAPI mainline module version.
21022    optional int64 version_nnapi_module = 3;
21023
21024    // An identifier that can be used to match events for ML model architecture.
21025    // Hash is generated from model operations and operands definition, but not weights.
21026    // Hash algorithm: HMAC-SHA256
21027    // Size: 32 byte
21028    optional bytes model_arch_hash = 4 [(log_mode) = MODE_BYTES];
21029
21030    // Device driver identifier used by this execution.
21031    // NeuralNetworks models are executed on one or more device drivers (e.g., DSP, GPU, TPU, CPU).
21032    // The device driver identifier is a concatenation of [device driver name, =, and device driver
21033    // version]. If multiple device drivers are used, all device driver identifiers are sorted and
21034    // concatenated with comma as a separator.
21035    optional string device_id = 5;
21036
21037    // Execution mode
21038    optional android.neuralnetworks.Mode mode = 6;
21039
21040    // Type of tensors used for inputs
21041    optional android.neuralnetworks.DataClass input_data_class = 7;
21042
21043    // Type of tensors used for outputs
21044    optional android.neuralnetworks.DataClass output_data_class = 8;
21045
21046    // Error code returned by execution call
21047    optional android.neuralnetworks.ResultCode error_code = 9;
21048
21049    // Did client name target devices explicitly?
21050    optional bool introspection_enabled = 10;
21051
21052    // Was cache enabled?
21053    optional bool cache_enabled = 11;
21054
21055    // Was control flow used in the model?
21056    optional bool has_control_flow = 12;
21057
21058    // Whether there exists a partition boundary in the compilation that has dynamic size
21059    optional bool has_dynamic_temporaries = 13;
21060
21061    // How many times this atom occurred locally before being pushed.
21062    optional int32 count = 14;
21063
21064    // model_arch_hash compressed to 64 bits by bitwise-xor each 64 chunk of model_arch_hash.
21065    optional int64 model_arch_hash_64 = 15;
21066}
21067
21068/**
21069 * Logs boot-time info for a Context Hub.
21070 */
21071message ContextHubBooted {
21072  // The amount of time it took the framework to connect to CHRE/Context Hub HAL
21073  // since the framework has booted.
21074  optional int64 boot_time_nanos = 1;
21075
21076  // The number of Context Hub instances found on this system.
21077  optional int32 num_context_hubs = 2;
21078}
21079
21080/**
21081 * Logs Context Hub restart events (e.g. crashes).
21082 */
21083message ContextHubRestarted {
21084  // The duration of time between the last time Context Hub restart and this event.
21085  // This should use the SystemClock.elapsedRealTime() API.
21086  optional int64 elapsed_time_millis_since_boot = 1;
21087
21088  // The ID of the Context Hub that has restarted (zero-indexed).
21089  optional int32 context_hub_id = 2;
21090}
21091
21092/**
21093 * Logs a snapshot of all the nanoapps loaded on this Context Hub.
21094 */
21095message ContextHubLoadedNanoappSnapshotReported {
21096  // The ID of the Context Hub the snapshot is for (zero-indexed).
21097  optional int32 context_hub_id = 1;
21098
21099  // The nanoapp this snapshot is for. The nanoapp ID is the 64-bit unique identifier
21100  // for the application, and the version is the semantic versioning (https://semver.org)
21101  // used to determine the software version.
21102  optional int64 nanoapp_id = 2;
21103  optional int32 nanoapp_version = 3;
21104}
21105
21106/**
21107 * Logs details of a dynamic CHRE nanoapp code download transaction.
21108 */
21109message ChreCodeDownloadTransacted {
21110  enum Type {
21111    TYPE_UNKNOWN = 0;
21112    TYPE_LOAD = 1;
21113    TYPE_UNLOAD = 2;
21114  }
21115  // The ID/version of the nanoapp this code download was for.
21116  optional int64 nanoapp_id = 1;
21117  optional int32 nanoapp_version = 2;
21118
21119  // The type of code download transaction.
21120  optional Type transaction_type = 3;
21121
21122  // The result of this transaction.
21123  optional android.contexthub.ContextHubTransactionResult transaction_result = 4;
21124}
21125
21126/**
21127 * Stats about each feature tag that was included in the registration.
21128 *
21129 * Logged from:
21130 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/RcsStats.java
21131 */
21132message ImsRegistrationFeatureTagStats {
21133    // the carrier id associated with this SIP delegate
21134    // Used as a dimension
21135    optional int32 carrier_id = 1;
21136
21137    // The slot id associated with this SIP delegate
21138    // Used as a dimension
21139    optional int32 slot_id = 2;
21140
21141    // The name of the feature tag
21142    // used as a dimension
21143    optional android.telephony.ImsFeatureTag feature_tag_name = 3;
21144
21145    // The underlying radio technology type associated with the feature tag
21146    // used as a dimension
21147    // See the ImsRegistrationImplBase#REGISTRATION_TECH*
21148    optional int32 registration_tech = 4;
21149
21150    // The time this feature tag was registered, rounded to 5 minutes
21151    optional int32 registered_seconds = 5;
21152}
21153
21154/**
21155 * Stats about the messaging client interacting with telephony
21156 *
21157 * Logged from:
21158 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/RcsStats.java
21159 */
21160message RcsClientProvisioningStats {
21161    enum EventType {
21162        EVENT_TYPE_UNSPECIFIED = 0;
21163        // The client sent its client params to the ACS service.
21164        CLIENT_PARAMS_SENT = 1;
21165        // The client has manually triggered reconfiguration
21166        TRIGGER_RCS_RECONFIGURATION = 2;
21167        // Default messaging application changed.
21168        DMA_CHANGED = 3;
21169    }
21170    // Carrier ID of the SIM used for IMS registration.
21171    // See https://source.android.com/devices/tech/config/carrierid.
21172    // Used as a dimension
21173    optional int32 carrier_id = 1;
21174
21175    // Index of the SIM used, 0 for single-SIM devices.
21176    // Used as a dimension
21177    optional int32 slot_id = 2;
21178
21179    // Used as a dimension
21180    optional EventType event = 3;
21181
21182    // The number of times this event has occurred.
21183    optional int32 count = 4;
21184}
21185
21186/**
21187 * Stats about the RCS provisioning via ACS
21188 *
21189 * Logged from:
21190 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/RcsStats.java
21191 */
21192message RcsAcsProvisioningStats {
21193    enum ResponseType {
21194        RESPONSE_TYPE_UNSPECIFIED = 0;
21195        // a provisioning request resulted in an error.
21196        ERROR = 1;
21197        // a provisioning request succeeded and provided an xml
21198        PROVISIONING_XML = 2;
21199        // a provisioning request has resulted in a "pre-provisioning" xml, which
21200        // means RCS is not provisioned and requires the user to intervene.
21201        PRE_PROVISIONING_XML = 3;
21202    }
21203
21204    // Carrier ID of the SIM used for IMS registration.
21205    // See https://source.android.com/devices/tech/config/carrierid.
21206    // Used as a dimension
21207    optional int32 carrier_id = 1;
21208
21209    // Index of the SIM used, 0 for single-SIM devices.
21210    // Used as a dimension
21211    optional int32 slot_id = 2;
21212
21213    // The response code of provisioning if the provisioning resulted in
21214    // ResponseType.ERROR
21215    // Used as a dimension
21216    optional int32 response_code = 3;
21217
21218    // used as a dimension.
21219    optional ResponseType response_type = 4;
21220
21221    // Does the provisioning XML have single registration provisioned.
21222    // Populated if response_type is ResponseType.PROVISIONING_XML
21223    // used as a dimension
21224    optional bool is_single_registration_enabled = 5;
21225
21226    // The number of times this event has occurred.
21227    optional int32 count = 6;
21228
21229    // The amount of time in seconds that the device was in this state in total, rounded 5 minutes
21230    optional int32 state_timer_sec = 7;
21231}
21232
21233/**
21234 * Metrics surrounding the lifetime of a SIP delegate created by applications.
21235 *
21236 * Logged from:
21237 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/RcsStats.java
21238 */
21239message SipDelegateStats {
21240    // The random number identifier with this SIP delegate
21241    optional int32 dimension = 1;
21242
21243    // The carrier id associated with this SIP delegate
21244    optional int32 carrier_id = 2;
21245
21246    // The slot id associated with this SIP delegate
21247    optional int32 slot_id = 3;
21248
21249    // The total uptime of this delegate, rounded 5 minutes
21250    optional int32 uptime_seconds = 4;
21251
21252    // The reason why this SIP delegate was destroyed.
21253    // See the SipDelegateManager#SIP_DELEGATE_DESTROY_REASON*
21254    optional int32 destroy_reason = 5;
21255}
21256
21257/**
21258 * Tracks each feature tag associated with the SipDelegates that are currently active.
21259 *
21260 * Logged from:
21261 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/RcsStats.java
21262 */
21263message SipTransportFeatureTagStats {
21264    // the carrier id associated with this SIP delegate
21265    // Used as a dimension
21266    optional int32 carrier_id = 1;
21267
21268    // The slot id associated with this SIP delegate
21269    // Used as a dimension
21270    optional int32 slot_id = 2;
21271
21272    // The name of the feature tag
21273    // used as a dimension
21274    optional android.telephony.ImsFeatureTag feature_tag_name = 3;
21275
21276    // The reason why this feature tag was denied on the SIP Transport
21277    // used as a dimension
21278    // Use SIP transport denied reason.
21279    // See the SipDelegateManager#DENIED_REASON*
21280    optional int32 sip_transport_denied_reason = 4;
21281
21282    // The reason why this feature tag was associated with the SIP Transport but not
21283    // marked as deregistered.
21284    // used as a dimension
21285    // Use SIP transport deregistered reason.
21286    // See the DelegateRegistrationState#DEREGISTERING_REASON*
21287    optional int32 sip_transport_deregistered_reason = 5;
21288
21289    // the time this feature tag was in this state, rounded 5 minutes
21290    optional int32 associated_seconds = 6;
21291}
21292
21293/**
21294 * Tracks each SIP message and the response from either the app or network.
21295 *
21296 * Logged from:
21297 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/RcsStats.java
21298 */
21299message SipMessageResponse {
21300    enum Direction {
21301        UNKNOWN = 0;
21302        INCOMING = 1;
21303        OUTGOING = 2;
21304    }
21305    // the carrier id associated with this SIP delegate
21306    // Used as a dimension
21307    optional int32 carrier_id = 1;
21308
21309    // The slot id associated with this SIP delegate
21310    // Used as a dimension
21311    optional int32 slot_id = 2;
21312
21313    // The SIP message method type (INVITE, MESSAGE, etc...)
21314    // used as a dimension
21315    optional android.telephony.SipRequestMethodType sip_message_method = 3;
21316
21317    // The SIP message response code, used if this is a response to a request.
21318    // used as a dimension.
21319    optional int32 sip_message_response = 4;
21320
21321    // The SIP message direction
21322    // used as a dimension
21323    optional Direction sip_message_direction = 5;
21324
21325    // The response from the SIP stack to sending/receiving the message
21326    // used as a dimension
21327    // See the SipDelegateManager#MESSAGE_FAILURE_REASON*
21328    optional int32 message_error = 6;
21329
21330    // The number of messages that fit this criteria.
21331    optional int32 count = 7;
21332}
21333
21334/**
21335 * Tracks SIP sessions managed by the SIP transport.
21336 *
21337 * Logged from:
21338 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/RcsStats.java
21339 */
21340message SipTransportSession {
21341    enum Direction {
21342        UNKNOWN = 0;
21343        INCOMING = 1;
21344        OUTGOING = 2;
21345    }
21346    // the carrier id associated with this SIP delegate
21347    // Used as a dimension
21348    optional int32 carrier_id = 1;
21349
21350    // The slot id associated with this SIP delegate
21351    // Used as a dimension
21352    optional int32 slot_id = 2;
21353
21354    // The SIP message method that started the session (INVITE, SUBSCRIBE, etc...)
21355    // used as a dimension
21356    optional android.telephony.SipRequestMethodType session_method = 3;
21357
21358    // The SIP message direction
21359    // used as a dimension
21360    optional Direction sip_message_direction = 4;
21361
21362    // The response from the SIP stack or network.
21363    // used as a dimension.
21364    optional int32 sip_response = 5;
21365
21366    // The number of these sessions counted
21367    optional int32 session_count = 6;
21368
21369    // The number of sessions that were started properly and did not require
21370    // the SIP transport to forcefully close them.
21371    optional int32 ended_gracefully_count = 7;
21372}
21373
21374/**
21375 * Used to determine if there were dedicated bearers set up for a specific listener.
21376 * If not, this indicates that there may have been a network issue in the dedicated bearer setup.
21377 *
21378 * Logged from:
21379 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/RcsStats.java
21380 */
21381message ImsDedicatedBearerListenerEvent {
21382    // Carrier ID of the SIM used for IMS registration.
21383    // See https://source.android.com/devices/tech/config/carrierid.
21384    // Used as a dimension
21385    optional int32 carrier_id = 1;
21386
21387    // Index of the SIM used, 0 for single-SIM devices.
21388    // Used as a dimension
21389    optional int32 slot_id = 2;
21390
21391    // Radio access technology (RAT) used by the registration when it terminated.
21392    // The value is either 4G or 5G.
21393    // Used as a dimension
21394    optional android.telephony.NetworkTypeEnum rat_at_end = 3;
21395
21396    // QoS class identifier.
21397    // dimension
21398    optional int32 qci = 4;
21399
21400    // True if there was a dedicated bearer established for this listener.
21401    // dimension
21402    optional bool dedicated_bearer_established = 5;
21403
21404    // The count of listeners with this result.
21405    optional int32 event_count = 6;
21406}
21407
21408/**
21409 * Logs information related to ims dedicated bearer which fulfills required qos and provides guaranteed service.
21410 *
21411 * Logged from:
21412 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/RcsStats.java
21413 */
21414message ImsDedicatedBearerEvent {
21415    enum State {
21416        STATE_UNSPECIFIED = 0;
21417        STATE_ADDED = 1;
21418        STATE_MODIFIED = 2;
21419        STATE_DELETED = 3;
21420    }
21421    // Carrier ID of the SIM used for IMS registration.
21422    // See https://source.android.com/devices/tech/config/carrierid.
21423    // Used as a dimension
21424    optional int32 carrier_id = 1;
21425
21426    // Index of the SIM used, 0 for single-SIM devices.
21427    // Used as a dimension
21428    optional int32 slot_id = 2;
21429
21430    // Radio access technology (RAT) used by the registration when it terminated.
21431    // The value is either 4G or 5G.
21432    // Used as a dimension
21433    optional android.telephony.NetworkTypeEnum rat_at_end = 3;
21434
21435    // Qos class identifier.
21436    // Used as a dimension
21437    optional int32 qci = 4;
21438
21439    // Dedicated bearer state from the network.
21440    // Used as a dimension
21441    optional State bearer_state = 5;
21442
21443    // Whether location connection information is received.
21444    // Used as a dimension
21445    optional bool local_connection_info_received = 6;
21446
21447    // Whether remote connection information is received.
21448    // Used as a dimension
21449    optional bool remote_connection_info_received = 7;
21450
21451    // Whether or not the QoS indication had listeners.
21452    // Used as a dimension
21453    optional bool has_listeners = 8;
21454
21455    // The count that matches the above conditions.
21456    optional int32 count = 9;
21457}
21458
21459/**
21460 * Stats about each ServiceDescription that was included in the PIDF XML sent to the network during publish.
21461 *
21462 * Logged from:
21463 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/RcsStats.java
21464 */
21465message ImsRegistrationServiceDescStats {
21466    // Describe Service IDs will be included PUBLISH
21467    // See RcsContactPresenceTuple.java
21468    enum ServiceId {
21469        SERVICE_ID_UNSPECIFIED = 0;
21470        SERVICE_ID_CUSTOM = 1;
21471        SERVICE_ID_MMTEL = 2;
21472        SERVICE_ID_CHAT_V1 = 3;
21473        SERVICE_ID_CHAT_V2 = 4;
21474        SERVICE_ID_FT = 5;
21475        SERVICE_ID_FT_OVER_SMS = 6;
21476        SERVICE_ID_GEO_PUSH = 7;
21477        SERVICE_ID_GEO_PUSH_VIA_SMS = 8;
21478        SERVICE_ID_CALL_COMPOSER = 9;
21479        SERVICE_ID_POST_CALL = 10;
21480        SERVICE_ID_SHARED_MAP = 11;
21481        SERVICE_ID_SHARED_SKETCH = 12;
21482        SERVICE_ID_CHATBOT = 13;
21483        SERVICE_ID_CHATBOT_STANDALONE = 14;
21484        SERVICE_ID_CHATBOT_ROLE = 15;
21485    }
21486
21487    // the carrier id associated with this SIP delegate
21488    // Used as a dimension
21489    optional int32 carrier_id = 1;
21490
21491    // The slot id associated with this SIP delegate
21492    // Used as a dimension
21493    optional int32 slot_id = 2;
21494
21495    // The service id portion of the ServiceDescription
21496    // used as a dimension
21497    optional ServiceId service_id_name = 3;
21498
21499    // The version portion of the ServiceDescription
21500    // used as a dimension
21501    optional float service_id_version = 4;
21502
21503    // The underlying radio technology type associated with the feature tag
21504    // used as a dimension
21505    // See the ImsRegistrationImplBase#REGISTRATION_TECH*
21506    optional int32 registration_tech = 5;
21507
21508    // the time this feature tag was registered, rounded 5 minutes
21509    optional int32 published_seconds = 6;
21510}
21511
21512/**
21513 * Stats related to UCE queries to the network
21514 *
21515 * Logged from:
21516 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/RcsStats.java
21517 */
21518message UceEventStats {
21519    enum MessageType {
21520        MESSAGE_TYPE_UNSPECIFIED = 0;
21521        PUBLISH = 1;
21522        SUBSCRIBE = 2;
21523        INCOMING_OPTION = 3;
21524        OUTGOING_OPTION = 4;
21525    }
21526    enum CommandCode {
21527        SERVICE_UNKNOWN = 0;
21528        GENERIC_FAILURE = 1;
21529        INVALID_PARAM = 2;
21530        FETCH_ERROR = 3;
21531        REQUEST_TIMEOUT = 4;
21532        INSUFFICIENT_MEMORY = 5;
21533        LOST_NETWORK_CONNECTION = 6;
21534        NOT_SUPPORTED = 7;
21535        NOT_FOUND = 8;
21536        SERVICE_UNAVAILABLE = 9;
21537        NO_CHANGE = 10;
21538    }
21539    // Carrier ID of the SIM used for IMS registration.
21540    // See https://source.android.com/devices/tech/config/carrierid.
21541    // Used as a dimension
21542    optional int32 carrier_id = 1;
21543
21544    // Index of the SIM used, 0 for single-SIM devices.
21545    // Used as a dimension
21546    optional int32 slot_id = 2;
21547
21548    // Used to identify the message type.
21549    // Used as a dimension
21550    optional MessageType type = 3;
21551
21552    // Whether the UCE event is successfully finished. If false, the request to the
21553    // modem timed out and we sent a timeout error back to the requesting app.
21554    // Used as a dimension
21555    optional bool successful = 4;
21556
21557    // The command error code for the Uce event. Not populated if the modem
21558    // accepted the request and delivered a network_response.
21559    // Used as a dimension
21560    optional CommandCode command_code = 5;
21561
21562    // The network response code for the Uce event. Will not be populated if
21563    // command_code is present.
21564    // Used as a dimension
21565    optional int32 network_response = 6;
21566
21567    // The count that matches the above conditions;
21568    optional int32 count = 7;
21569}
21570
21571/**
21572 * Information related to a SIP NOTIFY event from modem.
21573 *
21574 * Logged from:
21575 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/RcsStats.java
21576 */
21577message PresenceNotifyEvent {
21578    // See RFC3265 Section 3.2.4 for more information about these subscription states.
21579    enum TerminatedReason {
21580        REASON_UNSPECIFIED = 0;
21581        // Not spec defined, the network returned a custom code that is not spec defined.
21582        REASON_CUSTOM = 1;
21583        REASON_DEACTIVATED = 2;
21584        REASON_PROBATION = 3;
21585        REASON_REJECTED = 4;
21586        REASON_TIMEOUT = 5;
21587        REASON_GIVEUP = 6;
21588        REASON_NORESOURCE = 7;
21589    }
21590
21591    // Carrier ID of the SIM used for IMS registration.
21592    // See https://source.android.com/devices/tech/config/carrierid.
21593    // Used as a dimension
21594    optional int32 carrier_id = 1;
21595
21596    // Index of the SIM used, 0 for single-SIM devices.
21597    // Used as a dimension
21598    optional int32 slot_id = 2;
21599
21600    // The terminated reason associated with the subscription state.
21601    // Used as a dimension
21602    optional TerminatedReason reason = 3;
21603
21604    // Whether or not the NOTIFY received contained at least one body with PIDF
21605    // content before moving to the terminated state.
21606    // Used as a dimension
21607    optional bool content_body_received = 4;
21608
21609    // The count of PIDF info received that contained RCS caps.
21610    optional int32 rcs_caps_count = 5;
21611
21612    // The count of PIDF info received that contained MMTEL caps.
21613    optional int32 mmtel_caps_count = 6;
21614
21615    // The count of PIDF info received that contained no mmtel or RCS caps.
21616    optional int32 no_caps_count = 7;
21617
21618    // The count that matches the above conditions;
21619    optional int32 count = 8;
21620}
21621
21622/**
21623 * Tracks GBA requests from applications
21624 *
21625 * Logged from:
21626 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/RcsStats.java
21627 */
21628message GbaEvent {
21629    enum FailedReason {
21630        UNKNOWN = 0;
21631        FEATURE_NOT_SUPPORTED = 1;
21632        FEATURE_NOT_READY = 2;
21633        NETWORK_FAILURE = 3;
21634        INCORRECT_NAF_ID = 4;
21635        SECURITY_PROTOCOL_NOT_SUPPORTED = 5;
21636    }
21637    // Carrier ID of the SIM used for IMS registration.
21638    // See https://source.android.com/devices/tech/config/carrierid.
21639    // Used as a dimension
21640    optional int32 carrier_id = 1;
21641
21642    // Index of the SIM used, 0 for single-SIM devices.
21643    // Used as a dimension
21644    optional int32 slot_id = 2;
21645
21646    // Whether the GBA event is successful.
21647    // Used as a dimension
21648    optional bool successful = 3;
21649
21650    // Gba authentication failed reason.
21651    // Used as a dimension
21652    optional FailedReason failed_reason = 4;
21653
21654    // The count that matches the above conditions.
21655    optional int32 count = 5;
21656}
21657
21658/*
21659 * Logs details of initiated UWB ranging session
21660 * Logged from packages/modules/Uwb/service/java/com/android/server/uwb/UwbMetrics.java
21661 */
21662message UwbSessionInitiated {
21663    // UWB profiles
21664    optional android.uwb.Profile profile = 1;
21665    // Scrambled timestamp sequence (STS) Type
21666    optional android.uwb.Sts sts = 2;
21667    // Was it an initiator as opposed to responder?
21668    optional bool is_initiator = 3;
21669    // Was it a controller as opposed to controlee?
21670    optional bool is_controller = 4;
21671    // Was the discovery done by the framework?
21672    optional bool is_discovered_by_framework = 5;
21673    // Was it out-of-band connection as opposed to in-band connection?
21674    // Note that this field is ignored if is_discovered_by_framework is false.
21675    optional bool is_out_of_band = 6;
21676    // UWB channel 5, 6, 9, etc.
21677    optional int32 channel = 7;
21678    // The status code of session initialization.
21679    optional android.uwb.Status status = 8;
21680    // Initialization latency in ms if is_discovered_by_framework is true.
21681    optional int32 latency_ms = 9;
21682    // Initialization latency in step size of 200 ms if is_discovered_by_framework is true.
21683    optional int32 latency_200ms = 10;
21684    // The uid of the app that initiates the connection.
21685    optional int32 uid = 11 [(is_uid) = true];
21686    // Ranging interval of the session in ms.
21687    optional int32 ranging_interval_ms = 12;
21688    // How many ongoing session when current session is initiated?
21689    optional int32 parallel_session_count = 13;
21690    // Composed value for UWB filter configurations.
21691    // This value combines the boolean value of multiple feature flags for
21692    // UWB filter configuration into one integer, where the bits of its binary value
21693    // are for the flags
21694    // Below are the flags from LSB to MSB, 1 for enabled and 0 for disabled
21695    // bit 0: filter_enabled
21696    // bit 1: enable_azimuth_mirroring
21697    // bit 2: enable_primer_aoa
21698    // bit 3: enable_primer_est_elevation
21699    // bit 4: enable_primer_fov
21700    // bit 5: predict_rear_azimuths
21701    // For example, when all flags are enabled this value is 63 (0b111111)
21702    // Refer to packages/modules/Uwb/service/ServiceUwbResources/res/values/config.xml
21703    // for more information about the flags
21704    optional int32 filter_config_value = 14;
21705}
21706
21707/*
21708 * Logs details of closed UWB ranging session
21709 * Logged from packages/modules/Uwb/service/java/com/android/server/uwb/UwbMetrics.java
21710 */
21711message UwbSessionClosed {
21712    // UWB profiles
21713    optional android.uwb.Profile profile = 1;
21714    // Scrambled timestamp sequence (STS) Type
21715    optional android.uwb.Sts sts = 2;
21716    // Was it an initiator as opposed to responder?
21717    optional bool is_initiator = 3;
21718    // Was it a controller as opposed to controlee?
21719    optional bool is_controller = 4;
21720    // Was the connection done by the app as opposed to by the framework?
21721    optional bool is_framework_initiated = 5;
21722    // Was it out-of-band connection as opposed to in-band connection?
21723    // Note that this field is ignored if is_framework_initiated is false.
21724    optional bool is_out_of_band = 6;
21725    // Session active duration in seconds
21726    optional int32 duration_sec = 7;
21727    // Session active duration bucket
21728    optional android.uwb.DurationBucket duration_bucket = 8;
21729    // Total ranging measurement count
21730    optional int32 ranging_count = 9;
21731    // Valid ranging measurement count
21732    optional int32 valid_ranging_count = 10;
21733    // Ranging measurement count bucket.
21734    optional android.uwb.CountBucket ranging_count_bucket = 11;
21735    // Valid ranging measurement count bucket.
21736    optional android.uwb.CountBucket valid_ranging_count_bucket = 12;
21737    // Ranging start count
21738    optional int32 start_count = 13;
21739    // Ranging start failure count
21740    optional int32 start_failure_count = 14;
21741    // Ranging start without valid ranging result count
21742    optional int32 start_no_valid_report_count = 15;
21743    // Total Rx data packet count
21744    optional int32 rx_packet_count = 16;
21745    // Total Tx data packet count
21746    optional int32 tx_packet_count = 17;
21747    // Count of Rx data packet with error
21748    optional int32 rx_error_count = 18;
21749    // Count of Tx data packet with error
21750    optional int32 tx_error_count = 19;
21751    // Count of Rx data packets sent to upper layer
21752    optional int32 rx_to_upper_layer_count = 20;
21753    // Ranging Measurement Type
21754    optional android.uwb.RangingType ranging_type = 21;
21755    // The UID of the process that started the ranging session.
21756    optional int32 uid = 22 [(is_uid) = true];
21757}
21758
21759/*
21760 * Logs details of start UWB ranging
21761 * Logged from packages/modules/Uwb/service/java/com/android/server/uwb/UwbMetrics.java
21762 */
21763message UwbStartRanging {
21764    // UWB profiles
21765    optional android.uwb.Profile profile = 1;
21766    // Scrambled timestamp sequence (STS) Type
21767    optional android.uwb.Sts sts = 2;
21768    // Was it an initiator as opposed to responder?
21769    optional bool is_initiator = 3;
21770    // Was it a controller as opposed to controlee?
21771    optional bool is_controller = 4;
21772    // Was the connection done by the app as opposed to by the framework?
21773    optional bool is_framework_initiated = 5;
21774    // Was it out-of-band connection as opposed to in-band connection?
21775    // Note that this field is ignored if is_framework_initiated is false.
21776    optional bool is_out_of_band = 6;
21777    // The status code of ranging start.
21778    optional android.uwb.RangingStatus status = 7;
21779    // The UID of the process that started the ranging session.
21780    optional int32 uid = 8 [(is_uid) = true];
21781}
21782
21783/*
21784 * Log that the ranging measurement is received
21785 * Logged from packages/modules/Uwb/service/java/com/android/server/uwb/UwbMetrics.java
21786 */
21787message UwbRangingMeasurementReceived {
21788    // UWB profiles
21789    optional android.uwb.Profile profile = 1;
21790    // None-Line-of-sight (LOS) indication
21791    optional android.uwb.Nlos nlos = 2;
21792    // Was the distance valid?
21793    optional bool is_distance_valid = 3;
21794    // The distance measurement in centimeters.
21795    optional int32 distance_cm = 4;
21796    // The distance measurement in step size of 50 cm
21797    optional int32 distance_50cm = 5;
21798    // RSSI of ranging report, in dBm
21799    optional int32 rssi = 6;
21800    // Was azimuth angle valid?
21801    optional bool is_azimuth_valid = 7;
21802    // The azimuth angle measurement in degrees.
21803    optional int32 azimuth_degree = 8;
21804    // The azimuth angle measurement in step size of 10 degree.
21805    optional int32 azimuth_10degree = 9;
21806    // The figure of merit of azimuth angle measurement.
21807    optional int32 azimuth_fom = 10;
21808    // Was elevation angle valid?
21809    optional bool is_elevation_valid = 11;
21810    // The elevation angle measurement in degrees.
21811    optional int32 elevation_degree = 12;
21812    // The elevation angle measurement in step size of 10 degree.
21813    optional int32 elevation_10degree = 13;
21814    // The figure of merit of elevation angle measurement.
21815    optional int32 elevation_fom = 14;
21816    // Ranging Measurement Type
21817    optional android.uwb.RangingType ranging_type = 15;
21818    // The filtered distance measurement in centimeters.
21819    optional int32 filtered_distance_cm = 16;
21820    // The filtered azimuth angle measurement in degrees.
21821    optional int32 filtered_azimuth_degree = 17;
21822    // The filtered figure of merit of azimuth angle measurement.
21823    optional int32 filtered_azimuth_fom = 18;
21824    // The filtered elevation angle measurement in degrees.
21825    optional int32 filtered_elevation_degree = 19;
21826    // The filtered figure of merit of elevation angle measurement.
21827    optional int32 filtered_elevation_fom = 20;
21828    // The UID of the process that started the ranging session.
21829    optional int32 uid = 21 [(is_uid) = true];
21830}
21831
21832/*
21833 * Log that the first ranging measurement is received
21834 * Logged from packages/modules/Uwb/service/java/com/android/server/uwb/UwbMetrics.java
21835 */
21836message UwbFirstRangingReceived {
21837    // UWB profiles
21838    optional android.uwb.Profile profile = 1;
21839    // The latency between the ranging start/resume and 1st ranging measurement, in ms.
21840    optional int32 latency_ms = 2;
21841    // The ranging latency in 200ms.
21842    optional int32 latency_200ms = 3;
21843    // The UID of the process that started the ranging session.
21844    optional int32 uid = 4 [(is_uid) = true];
21845}
21846
21847/*
21848 * Log that UWB device error is detected
21849 * Logged from packages/modules/Uwb/service/java/com/android/server/uwb/UwbMetrics.java
21850 */
21851message UwbDeviceErrorReported {
21852    enum Type {
21853        UNKNOWN = 0;
21854        // Initialization error
21855        INIT_ERROR = 1;
21856        // Device status error
21857        DEVICE_STATUS_ERROR = 2;
21858        // UCI generic error
21859        UCI_GENERIC_ERROR = 3;
21860    }
21861    // Error type
21862    optional Type type= 1;
21863}
21864
21865/**
21866 * Log that the clipboard has been cleared
21867 * Logged from frameworks/base/services/core/java/android/content/ClipboardAutoWipeService.java
21868 */
21869message ClipboardCleared {
21870    enum Source {
21871        SOURCE_UNKNOWN = 0;
21872        AUTO_CLEAR = 1;
21873    }
21874
21875    // Source of the wipe
21876    optional Source source = 1;
21877}
21878
21879/**
21880 * Pulls status for a SIM.
21881 *
21882 * Each pull creates multiple atoms, one for each SIM. The atom holds the status for a SIM that's
21883 * sensitive per carrier. The atom would be aggregated per carrier for analysis.
21884 *
21885 * Pulled from:
21886 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
21887 */
21888message PerSimStatus {
21889    enum WfcMode {
21890        UNKNOWN = 0;
21891        WIFI_ONLY = 1;
21892        CELLULAR_PREFERRED = 2;
21893        WIFI_PREFERRED = 3;
21894    }
21895    enum SimVoltageClass {
21896        VOLTAGE_CLASS_UNKNOWN = 0;
21897        VOLTAGE_CLASS_A = 1;
21898        VOLTAGE_CLASS_B = 2;
21899        VOLTAGE_CLASS_C = 3;
21900    }
21901
21902    // Index of the SIM, 0 for single-SIM devices.
21903    optional int32 sim_slot_index = 1;
21904
21905    // Carrier ID of the SIM.
21906    // See https://source.android.com/devices/tech/config/carrierid.
21907    optional int32 carrier_id = 2;
21908
21909    // Indicates whether phone number source UICC provides a phone number
21910    // and whether it agrees with other sources:
21911    //  - 0: no number provided
21912    //  - a positive integer (> 0): sources providing the same phone number
21913    //    shall use the same integer. The integer shall start from 1, and
21914    //    for each new unique source the next integer (2, 3, …) is used.
21915    // This way, the raw phone number cannot be derived from the value of
21916    // this field.
21917    // This also allows a quick check of conflicts: any field > 1 means conflict,
21918    // and the max means the count of unique phone numbers.
21919    optional int32 phone_number_source_uicc = 3;
21920
21921    // Indicates whether phone number source CARRIER provides a phone number
21922    // and whether it agrees with other sources.
21923    // See field phone_number_source_uicc.
21924    optional int32 phone_number_source_carrier = 4;
21925
21926    // Indicates whether phone number source IMS provides a phone number
21927    // and whether it agrees with other sources.
21928    // See field phone_number_source_uicc.
21929    optional int32 phone_number_source_ims = 5;
21930
21931    // Indicates whether VoLTE is enabled
21932    optional bool volte_enabled = 6;
21933
21934    // Indicates whether WFC is enabled
21935    optional bool wfc_enabled = 7;
21936
21937    // Indicates the user's WFC mode
21938    optional WfcMode wfc_mode = 8;
21939
21940    // Indicates the user's WFC mode when roaming
21941    optional WfcMode wfc_roaming_mode = 9;
21942
21943    // Indicates the user's setting for video calling.
21944    optional bool video_calling_enabled = 10;
21945
21946    // Indicates if data roaming is enabled
21947    optional bool data_roaming_enabled = 11;
21948
21949    // Indicates the list of networks allowed by the user. Bitmask is encoded as
21950    // TelephonyManager#NetworkTypeBitMask.
21951    optional int64 allowed_networks_by_user = 12;
21952
21953    // Indicates if 2G is disabled by the user using the "Allow 2G" toggle
21954    optional bool is_2g_disabled = 13;
21955
21956    // Indicates if PIN1 of the SIM card is enabled
21957    optional bool is_pin1_enabled = 14;
21958
21959    // Indicates the lowest voltage class supported by the SIM
21960    optional SimVoltageClass sim_voltage_class = 15;
21961
21962    // APN type bitmask of the APNs added or modified by user:
21963    // @ApnType in frameworks/base/telephony/java/android/telephony/Annotation.java.
21964    optional int32 user_modified_apn_type_bitmask = 16;
21965
21966    // Indicates the unmetered networks
21967    // Bitmask is encoded as TelephonyManager#NetworkTypeBitMask.
21968    optional int64 unmetered_networks = 17;
21969
21970    // Indicates whether VoNR is enabled
21971    optional bool vonr_enabled = 18;
21972
21973    // Indicates whether cross-SIM calling (WiFi calling over cellular data) is
21974    // enabled.
21975    optional bool cross_sim_calling_enabled = 19;
21976}
21977
21978/*
21979 * Logs Device Scan State events generated by Nearby Scan API.
21980 */
21981message NearbyDeviceScanStateChanged {
21982  // Uid of the client that triggers the Nearby scan.
21983  optional int32 uid = 1 [(is_uid) = true];
21984
21985  // Scan start timestamp as session id.
21986  optional int64 scan_session_id = 2;
21987
21988  // Scan state.
21989  optional android.nearby.NearbyScanState scan_state = 3;
21990
21991  // Scan type.
21992  optional android.nearby.NearbyScanType scan_type = 4;
21993
21994  // Medium that this device was discovered/lost.
21995  optional android.nearby.NearbyNetworkMedium network_medium = 5;
21996
21997  // Received Signal Strength Indication (RSSI) value of the device discovered/lost.
21998  optional int32 rssi = 6;
21999
22000  // Model of the device discovered/lost.
22001  optional string scanned_device_model = 7;
22002
22003  // Manufacturer of the device discovered/lost.
22004  optional string scanned_device_manufacturer = 8;
22005}
22006
22007/**
22008 * Logs when locales of an application are changed.
22009 * Logged from
22010 *   frameworks/base/services/core/java/com/android/server/locales/LocaleManagerService.java
22011 */
22012message ApplicationLocalesChanged {
22013    // The uid which invoked this update. The locales for an application
22014    // could be changed from the in-app picker OR from the settings UI.
22015    optional int32 calling_uid = 1 [(is_uid) = true];
22016
22017    // The uid for which the locale change is being done.
22018    optional int32 target_uid = 2 [(is_uid) = true];
22019
22020    // The new locales for the target package. A comma separated list of BCP 47
22021    // locale identifiers, compatible with LocaleList#forLanguageTags.
22022    optional string new_locales = 3;
22023
22024    // The previous locales for the target package. A comma separated list of
22025    // BCP 47 locale identifiers, compatible with LocaleList#forLanguageTags.
22026    optional string prev_locales = 4;
22027
22028    // Application locales changed status.
22029    enum Status {
22030        // A placeholder for unspecified values.
22031        STATUS_UNSPECIFIED = 0;
22032
22033        // New locales were committed.
22034        CONFIG_COMMITTED = 1;
22035
22036        // Likely because no change is required.
22037        CONFIG_UNCOMMITTED = 2;
22038
22039        // Failed because the target package is invalid.
22040        FAILURE_INVALID_TARGET_PACKAGE = 3;
22041
22042        // Failed because the calling package does not have the required permission.
22043        FAILURE_PERMISSION_ABSENT = 4;
22044    }
22045
22046    optional Status status = 5;
22047
22048    // The caller where changes application locales.
22049    enum Caller {
22050        // A placeholder for unknown value.
22051        CALLER_UNKNOWN = 0;
22052
22053        // The change was called from the delegate.
22054        CALLER_DELEGATE = 1;
22055
22056        // The change was called from Apps.
22057        CALLER_APPS = 2;
22058
22059        // The change was called from the system due to backup and restore.
22060        CALLER_BACKUP_RESTORE = 3;
22061
22062        // The change was called from the system when the app languages
22063        // feature or the set per-app locales was changed from opt-in to
22064        // opt-out.
22065        CALLER_APP_UPDATE_LOCALES_CHANGE = 4;
22066
22067        // The change was called from the system due to the dynamic locales
22068        // change.
22069        CALLER_DYNAMIC_LOCALES_CHANGE = 5;
22070    }
22071
22072    optional Caller caller = 6;
22073}
22074
22075/* Logs when the display HBM state changes.
22076 *
22077 * Logged from:
22078 *   frameworks/base/services/core/java/com/android/server/display/HighBrightnessModeController.java
22079 */
22080message DisplayHbmStateChanged {
22081    optional int32 display_id = 1;
22082
22083    // New HBM state
22084    optional android.server.display.HbmState state = 2;
22085
22086    // The reason the state changes.
22087    optional android.server.display.HbmStateTransitionReason reason = 3;
22088}
22089
22090/*
22091 * Logs when the display HBM brightness changes.
22092 * Logged from:
22093 *   frameworks/base/services/core/java/com/android/server/display/AutomaticBrightnessControllerjava
22094 */
22095message DisplayHbmBrightnessChanged {
22096    optional int32 display_id = 1;
22097
22098    // display brightness
22099    optional float brightness = 2;
22100}
22101
22102/**
22103 * Per-UID time spent running work on the GPU.
22104 *
22105 * Each pull creates multiple atoms, one per (GPU ID, UID) pair, for at most 10
22106 * randomly selected UIDs.
22107 *
22108 * Pulled from:
22109 *    frameworks/native/services/gpuservice/gpuwork/GpuWork.cpp
22110 */
22111message GpuWorkPerUid {
22112  // The UID (i.e. app id) that scheduled work on the GPU.
22113  optional int32 uid = 1 [(is_uid) = true];
22114
22115  // The GPU ID for which we have work information.
22116  optional int32 gpu_id = 2;
22117
22118  // The time duration (in seconds) over which this data was collected (most
22119  // likely 24 hours).
22120  optional int32 time_duration_seconds = 3;
22121
22122  // The total amount of time (in milliseconds) the GPU spent running work for
22123  // |uid|.
22124  optional int32 total_active_duration_millis = 4;
22125
22126  // The total amount of time (in milliseconds) the GPU was inactive while
22127  // running "continuous" work for |uid|. This is estimated by adding up the
22128  // duration of the small gaps between GPU work for |uid|.
22129  optional int32 total_inactive_duration_millis = 5;
22130}
22131
22132/**
22133 * Logs when entries are dropped in DropBox and the reason for the drop.
22134 *
22135 * Logged from: frameworks/base/services/
22136 */
22137message DropboxEntryDropped {
22138    // Explains at which stage of the DropBox workflow the entry was dropped.
22139    enum DropReason {
22140        UNKNOWN = 0;
22141        CLEARING_DATA = 3;
22142        AGED = 4;
22143        WRITE_FAILURE = 5;
22144        ENTRY_TOO_LARGE = 6;
22145
22146        reserved 1, 2;
22147    }
22148
22149    optional DropReason drop_reason = 1;
22150
22151    // Tag describing the type of dropbox entry.
22152    optional string tag = 2;
22153
22154    // The age (millis) of the dropped dropbox entry.
22155    optional int64 age_millis = 3;
22156}
22157
22158message PersistentUriPermissionsFlushed {
22159    // Current amount of persistent uri permissions overall
22160    optional int32 permissions_flushed_amount = 1;
22161}
22162
22163message PersistentUriPermissionsAmountPerPackage {
22164    // The uid persistent uri permissions amount reported for
22165    optional int32 uid = 1 [(is_uid) = true];
22166    // Current amount of persistent uri permissions for this package
22167    optional int32 amount = 2;
22168}
22169
22170/**
22171 * VBMeta Digest cryptographically encapsulates the composition of signed images or partitions of
22172 * a particular build.
22173 *
22174 * Logs when boot is complete.
22175 * Pushed from:
22176 *    frameworks/base/services/core/java/com/android/server/BinaryTransparencyService.java
22177 */
22178message VBMetaDigestReported {
22179    // the hex encoded string of VBMeta Digest value
22180    optional string vbmeta_digest = 1;
22181}
22182
22183/**
22184 * APEXs can either be signed by Google or OEMs. This atom captures basic metadata of APEXs
22185 * pre-installed on a build or a device.
22186 *
22187 * Logs when boot is complete.
22188 * Pushed from:
22189 *    frameworks/base/services/core/java/com/android/server/BinaryTransparencyService.java
22190 */
22191message ApexInfoGathered {
22192    // APEX package names are determined by OEMs
22193    optional string package_name = 1;
22194    // the version code of the APEX
22195    optional int64 version_code = 2;
22196
22197    // the hex encoded value of digest of the content of this APEX
22198    // we are deprecating the use of this going forward
22199    optional string content_digest = 3;
22200
22201    // the algorithm that the content digest is computed
22202    optional com.android.os.transparency.DigestAlgorithmType algo_type = 4;
22203
22204    // the SHA256 digest(s) of the APEX's signer certificate(s)
22205    repeated string signer_sha256_digest = 5;
22206}
22207
22208/**
22209 * MobileBundledApps (MBAs) include preloaded apps and apps that are installed in the background
22210 * without user knowledge/consent.
22211 *
22212 * However, note that we will only be recording *updated* preloaded apps + dynamic MBAs.
22213 *
22214 * Pushed from:
22215 *    frameworks/base/services/core/java/com/android/server/BinaryTransparencyService.java
22216 *
22217 * Next ID: 12
22218 */
22219message MobileBundledAppInfoGathered {
22220    // MBA package names are determined by developers (which can include OEMs)
22221    optional string package_name = 1;
22222    // the package version code of the MBA
22223    optional int64 version_code = 2;
22224    // the split name (empty if it's the base)
22225    optional string split_name = 11;
22226
22227    // the hex encoded value of digest of the content of the MBA
22228    optional string content_digest = 3;
22229    // the algorithm that the content_digest is computed
22230    optional com.android.os.transparency.DigestAlgorithmType algo_type = 4;
22231    // the SHA256 digest(s) of the APEX's signer certificate(s)
22232    repeated string signer_sha256_digest = 5;
22233
22234    enum MBAStatus {
22235        ERROR = 0;
22236        PRELOADED = 1;
22237        UPDATED_PRELOAD = 2;
22238        NEW_MBA = 3;
22239        UPDATED_NEW_MBA = 4;
22240        DOWNGRADED_PRELOADED = 5;
22241        UNINSTALLED_MBA = 6;
22242    }
22243    // whether the MBA is preloaded, dynamically installed, or uninstalled/downgraded
22244    optional MBAStatus mba_status = 6;
22245    // the package that initiated the installation of this MBA
22246    optional string initiator = 7;
22247    // the SHA256 digest(s) of the initiator's signer certificate(s)
22248    repeated string initiator_signer_sha256_digest = 8;
22249    // the package that installs this MBA
22250    optional string installer = 9;
22251    // the package on behalf of which initiator requested the installation of this MBA
22252    optional string originator = 10;
22253}
22254
22255/**
22256 * PVM is protected virtual machine. This atom captures the notion of a container
22257 * that describes a virtual machine.
22258 *
22259 * Will be pushed from:
22260 *      frameworks/base/services/core/java/com/android/server/BinaryTransparencyService.java
22261 */
22262message PvmInfoGathered {
22263    // PVM names are determined by OEMs
22264    optional string name = 1;
22265    // an int describing the version of the VM
22266    optional int64 version = 2;
22267    // the hex encoded SHA256 digest of the pvm descriptor file
22268    optional string sha256_digest = 3;
22269}
22270
22271/**
22272 * This will be pulled from
22273 *     frameworks/base/services/core/java/com/android/server/BinaryTransparencyService.java
22274 */
22275message SignedPartitionInfo {
22276    // partition name (e.g. vendor, product) is determined by OEM
22277    optional string partition_name = 1;
22278    // the hex encoded SHA256 digest of the partition image file
22279    optional string sha256_digest = 2;
22280}
22281
22282/**
22283 * Logs when Wear Settings UI is interacted with
22284 */
22285message WearSettingsUIInteracted {
22286    /** The UI action category */
22287    optional android.app.wearsettings.Action action = 1;
22288
22289    /** The ID of the entry that the users actioned on. */
22290    optional android.app.wearsettings.ItemId item_id = 2;
22291}
22292
22293message TracingServiceReportEvent {
22294    enum Event {
22295      TRACING_SERVICE_REPORT_UNDEFINED = 0;
22296
22297      // Checkpoints inside TracingServiceProxy.
22298      TRACING_SERVICE_REPORT_BEGIN = 1;
22299      TRACING_SERVICE_REPORT_SVC_HANDOFF = 2;
22300
22301      // Guardrails inside TracingServiceProxy.
22302      TRACING_SERVICE_REPORT_BIND_PERM_INCORRECT = 3;
22303      TRACING_SERVICE_REPORT_SVC_PERM_MISSING = 4;
22304      TRACING_SERVICE_REPORT_SVC_COMM_ERROR = 5;
22305  }
22306
22307  // Which stage of the pipeline we are reporting from.
22308  optional Event event = 1;
22309
22310  // UUID of the trace.
22311  optional int64 trace_uuid_lsb = 2;
22312  optional int64 trace_uuid_msb = 3;
22313}
22314
22315/** Pulled from PinnerService. */
22316message PinnedFileSizesPerPackage {
22317    // If the file is pinned but not as part of a specific pinned app,
22318    // this will be set to 1000 - the value of system_server.
22319    optional int32 uid = 1 [(is_uid) = true];
22320
22321    // Consists of only the pinned file's filename, not its full path; for example
22322    // Given a pinned file at ‘/vendor/lib64/libCB.so’, then this field will be
22323    // Determined to have have the value ‘libCB.so’.
22324    optional string filename = 2;
22325
22326    // The size of the pinned file, in kilobytes.
22327    optional int32 size_kb = 3;
22328}
22329
22330/** Pulled from PendingIntentController. */
22331message PendingIntentsPerPackage {
22332    // The UID of the app that sent the PendingIntent.
22333    optional int32 uid = 1 [(is_uid) = true];
22334    // The total number of currently active PendingIntents belonging to this uid.
22335    optional int32 pending_intent_count = 2;
22336    // The total size of all currently active PendingIntents belonging to this uid, in kilobytes.
22337    optional int32 pending_intent_total_bundle_size_kb = 3;
22338}
22339
22340/*
22341 * Logs changes to game state set by game applications via GameService.
22342 */
22343message GameStateChanged {
22344    enum State {
22345        // Game mode is unknown.
22346        MODE_UNKNOWN = 0;
22347
22348        // The game is not in active play, e.g.e the user is using a game menu.
22349        MODE_NONE = 1;
22350
22351        // The game is in active, but interruptible, game play.
22352        MODE_GAMEPLAY_INTERRUPTIBLE = 2;
22353
22354        // The game is in active user play mode, which cannot be interrupted.
22355        MODE_GAMEPLAY_UNINTERRUPTIBLE = 3;
22356
22357        // The current content shown is not gameplay related (e.g. an ad).
22358        MODE_CONTENT = 4;
22359    }
22360
22361    // Provided to ensure package is available even with UID sharing.
22362    optional string package_name = 1;
22363
22364    // The UID (i.e. app id).
22365    optional int32 uid = 2 [(is_uid) = true];
22366
22367    // Whether the device enabled performance boost when the state was changed.
22368    optional bool boost_enabled = 3;
22369
22370    // This includes a top-level state for the game.
22371    optional State state = 4;
22372
22373    // Indicates if the game is loading assets/resources/compiling/etc.
22374    optional bool is_loading = 5;
22375
22376    // A developer-selected enum, for example to indicate level or scene.
22377    optional int32 label = 6;
22378
22379    // A developer-supplied enum, e.g. to indicate the current quality level.
22380    optional int32 quality = 7;
22381}
22382
22383/**
22384 * Log the duration of executing all receivers of LOCKED_BOOT_COMPLETED or BOOT_COMPLETED broadcast.
22385 * The dispatch latency is the dispatchTime - enqueueTime.
22386 * The completion latency is the completeTime - enqueueTime.
22387 * Logged from:
22388 *   frameworks/base/services/core/java/com/android/server/am/BroadcastQueue.java
22389 */
22390message BootCompletedBroadcastCompletionLatencyReported {
22391    enum Event {
22392        UNKNOWN = 0;
22393        LOCKED_BOOT_COMPLETED = 1;
22394        BOOT_COMPLETED = 2;
22395    }
22396
22397    optional Event event = 1;
22398    // from enqueueTime to dispatchTime.
22399    optional int32 dispatch_latency_uptime_millis = 2;
22400    // from enqueueTime to completeTime.
22401    optional int32 complete_latency_uptime_millis = 3;
22402    // from enqueueRealTime to dispatchRealTime.
22403    optional int32 dispatch_latency_realtime_millis = 4;
22404    // from enqueueRealTime to completeRealTime.
22405    optional int32 complete_latency_realtime_millis = 5;
22406
22407    optional int32 user_id = 6;
22408    optional UserLifecycleJourneyReported.UserType user_type = 7;
22409}
22410
22411/**
22412 * Log that the permission reminder notification has been displayed or clicked.
22413 */
22414message PermissionReminderNotificationInteracted {
22415    // id which identifies single session of user interacting with permission
22416    // controller
22417    optional int64 session_id = 1;
22418
22419    enum Result {
22420        UNDEFINED = 0;
22421        // notification was presented to the user
22422        NOTIFICATION_PRESENTED = 1;
22423        // notification was clicked by the user
22424        NOTIFICATION_CLICKED = 2;
22425    }
22426
22427    // View / interaction recorded
22428    optional Result result = 2;
22429}
22430
22431/**
22432 * Log that the user has interacted with the permission decision screen.
22433 */
22434message RecentPermissionDecisionsInteracted {
22435    // id which identifies single session of user interacting with permission
22436    // controller
22437    optional int64 session_id = 1;
22438
22439    enum Action {
22440        ACTION_UNKNOWN = 0;
22441        SCREEN_VIEWED = 1;
22442        REVIEW_DECISION = 2;
22443        VIEW_ALL_CLICKED = 3;
22444    }
22445
22446    // Action taken on the recent permission decisions page.
22447    optional Action action = 2;
22448
22449    // Uid of the package for the permission decision being reviewed
22450    optional int32 uid = 3 [(is_uid) = true];
22451
22452    // Name of the permission for the permission decision being reviewed.
22453    optional string permission_group_name = 4;
22454}
22455
22456/**
22457 * Logs information about app background restrictions.
22458 *
22459 * Logged from:
22460 *      frameworks/base/services/core/java/com/android/server/am/AppRestrictionController.java
22461 */
22462message AppBackgroundRestrictionsInfo {
22463    // the uid of the app.
22464    optional int32 uid = 1 [(is_uid) = true];
22465
22466    enum RestrictionLevel {
22467        LEVEL_UNKNOWN = 0;
22468        LEVEL_UNRESTRICTED = 1;
22469        LEVEL_EXEMPTED = 2;
22470        LEVEL_ADAPTIVE_BUCKET = 3;
22471        LEVEL_RESTRICTED_BUCKET = 4;
22472        LEVEL_BACKGROUND_RESTRICTED = 5;
22473        LEVEL_HIBERNATION = 6;
22474    }
22475    // indicates the app background restriction level.
22476    optional RestrictionLevel restriction_level = 2;
22477
22478    enum Threshold {
22479        THRESHOLD_UNKNOWN = 0;
22480        THRESHOLD_RESTRICTED = 1; // app was background restricted by the system.
22481        THRESHOLD_USER = 2; // app was background restricted by user action.
22482    }
22483    // indicates which threshold caused the app to be put into bg restriction.
22484    optional Threshold threshold = 3;
22485
22486    enum StateTracker {
22487        UNKNOWN_TRACKER = 0;
22488        BATTERY_TRACKER = 1;
22489        BATTERY_EXEMPTION_TRACKER = 2;
22490        FGS_TRACKER = 3;
22491        MEDIA_SESSION_TRACKER = 4;
22492        PERMISSION_TRACKER = 5;
22493        BROADCAST_EVENTS_TRACKER = 6;
22494        BIND_SERVICE_EVENTS_TRACKER = 7;
22495    }
22496    // indicates the reason/tracker which caused the app to hit the threshold.
22497    optional StateTracker tracker = 4;
22498
22499    message FgsTrackerInfo {
22500        // indicates whether an fgs notification was visible for this app or not.
22501        optional bool fgs_notification_visible = 1;
22502        // total FGS duration for this app.
22503        optional int64 fgs_duration = 2;
22504    }
22505    optional FgsTrackerInfo fgs_tracker_info = 5 [(log_mode) = MODE_BYTES];
22506
22507    message BatteryTrackerInfo {
22508        // total battery usage within last 24h (1/10000th)
22509        optional int32 battery_24h = 1;
22510        // background battery usage (1/10000th)
22511        optional int32 battery_usage_background = 2;
22512        // FGS battery usage (1/10000th)
22513        optional int32 battery_usage_fgs = 3;
22514        // Foreground battery usage (1/10000th)
22515        optional int32 battery_usage_foreground = 4;
22516        // Cached battery usage (1/10000th)
22517        optional int32 battery_usage_cached = 5;
22518    }
22519    optional BatteryTrackerInfo battery_tracker_info = 6 [(log_mode) = MODE_BYTES];
22520
22521    message BroadcastEventsTrackerInfo {
22522        // the number of broadcasts sent by this app.
22523        optional int32 broadcasts_sent = 1;
22524    }
22525    optional BroadcastEventsTrackerInfo broadcast_events_tracker_info = 7 [(log_mode) = MODE_BYTES];
22526
22527    message BindServiceEventsTrackerInfo {
22528        // the number of bind service requests by this app.
22529        optional int32 bind_service_requests = 1;
22530    }
22531    optional BindServiceEventsTrackerInfo bind_service_events_tracker_info =
22532        8 [(log_mode) = MODE_BYTES];
22533
22534    // The reasons listed below are defined in PowerExemptionManager.java
22535    enum ExemptionReason {
22536        // range 0-9 is reserved for default reasons
22537        REASON_UNKNOWN = 0;
22538        REASON_DENIED = 1;
22539        REASON_OTHER = 2;
22540        // range 10-49 is reserved for BG-FGS-launch allowed proc states
22541        REASON_PROC_STATE_PERSISTENT = 10;
22542        REASON_PROC_STATE_PERSISTENT_UI = 11;
22543        REASON_PROC_STATE_TOP = 12;
22544        REASON_PROC_STATE_BTOP = 13;
22545        REASON_PROC_STATE_FGS = 14;
22546        REASON_PROC_STATE_BFGS = 15;
22547        // range 50-99 is reserved for BG-FGS-launch allowed reasons
22548        REASON_UID_VISIBLE = 50;
22549        REASON_SYSTEM_UID = 51;
22550        REASON_ACTIVITY_STARTER = 52;
22551        REASON_START_ACTIVITY_FLAG = 53;
22552        REASON_FGS_BINDING = 54;
22553        REASON_DEVICE_OWNER = 55;
22554        REASON_PROFILE_OWNER = 56;
22555        REASON_COMPANION_DEVICE_MANAGER = 57;
22556        REASON_BACKGROUND_ACTIVITY_PERMISSION = 58;
22557        REASON_BACKGROUND_FGS_PERMISSION = 59;
22558        REASON_INSTR_BACKGROUND_ACTIVITY_PERMISSION = 60;
22559        REASON_INSTR_BACKGROUND_FGS_PERMISSION = 61;
22560        REASON_SYSTEM_ALERT_WINDOW_PERMISSION = 62;
22561        REASON_DEVICE_DEMO_MODE = 63;
22562        REASON_ALLOWLISTED_PACKAGE = 65;
22563        REASON_APPOP = 66;
22564        REASON_ACTIVITY_VISIBILITY_GRACE_PERIOD = 67;
22565        REASON_OP_ACTIVATE_VPN = 68;
22566        REASON_OP_ACTIVATE_PLATFORM_VPN = 69;
22567        REASON_TEMP_ALLOWED_WHILE_IN_USE = 70;
22568        REASON_CURRENT_INPUT_METHOD = 71;
22569        // range 100-199 is reserved for public reasons
22570        REASON_GEOFENCING = 100;
22571        REASON_PUSH_MESSAGING = 101;
22572        REASON_PUSH_MESSAGING_OVER_QUOTA = 102;
22573        REASON_ACTIVITY_RECOGNITION = 103;
22574        REASON_ACCOUNT_TRANSFER = 104;
22575        // range 200-299 is reserved for broadcast actions
22576        REASON_BOOT_COMPLETED = 200;
22577        REASON_PRE_BOOT_COMPLETED = 201;
22578        REASON_LOCKED_BOOT_COMPLETED = 202;
22579        REASON_BLUETOOTH_BROADCAST = 203;
22580        REASON_TIMEZONE_CHANGED = 204;
22581        REASON_TIME_CHANGED = 205;
22582        REASON_LOCALE_CHANGED = 206;
22583        REASON_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED = 207;
22584        REASON_REFRESH_SAFETY_SOURCES = 208;
22585        // range 300-399 is reserved for other internal reasons
22586        REASON_SYSTEM_ALLOW_LISTED = 300;
22587        REASON_ALARM_MANAGER_ALARM_CLOCK = 301;
22588        REASON_ALARM_MANAGER_WHILE_IDLE = 302;
22589        REASON_SERVICE_LAUNCH = 303;
22590        REASON_KEY_CHAIN = 304;
22591        REASON_PACKAGE_VERIFIER = 305;
22592        REASON_SYNC_MANAGER = 306;
22593        REASON_DOMAIN_VERIFICATION_V1 = 307;
22594        REASON_DOMAIN_VERIFICATION_V2 = 308;
22595        REASON_VPN = 309;
22596        REASON_NOTIFICATION_SERVICE = 310;
22597        REASON_PACKAGE_REPLACED = 311;
22598        REASON_LOCATION_PROVIDER = 312;
22599        REASON_MEDIA_BUTTON = 313;
22600        REASON_EVENT_SMS = 314;
22601        REASON_EVENT_MMS = 315;
22602        REASON_SHELL = 316;
22603        REASON_MEDIA_SESSION_CALLBACK = 317;
22604        REASON_ROLE_DIALER = 318;
22605        REASON_ROLE_EMERGENCY = 319;
22606        REASON_SYSTEM_MODULE = 320;
22607        REASON_CARRIER_PRIVILEGED_APP = 321;
22608        REASON_DPO_PROTECTED_APP = 322;
22609        REASON_DISALLOW_APPS_CONTROL = 323;
22610        REASON_ACTIVE_DEVICE_ADMIN = 324;
22611        REASON_MEDIA_NOTIFICATION_TRANSFER = 325;
22612        REASON_PACKAGE_INSTALLER = 326;
22613        REASON_SYSTEM_EXEMPT_APP_OP = 327;
22614        REASON_PACKAGE_UNARCHIVE = 328;
22615        REASON_TILE_ONCLICK = 329;
22616        // app requested to be exempt
22617        REASON_OPT_OUT_REQUESTED = 1000;
22618    }
22619    // indicates if the app is exempt from background restrictions and the reason if applicable.
22620    optional ExemptionReason exemption_reason = 9;
22621
22622    enum OptimizationLevel {
22623        UNKNOWN = 0;
22624        OPTIMIZED = 1;
22625        BACKGROUND_RESTRICTED = 2;
22626        NOT_OPTIMIZED = 3;
22627    }
22628    // the user choice for the optimization level of the app.
22629    optional OptimizationLevel opt_level = 10;
22630
22631    enum TargetSdk {
22632        SDK_UNKNOWN = 0;
22633        SDK_PRE_S = 1;
22634        SDK_S = 2;
22635        SDK_T = 3;
22636    }
22637    // indicates the target sdk level for this app.
22638    optional TargetSdk target_sdk = 11;
22639
22640    // indicates if the current device is a low ram device.
22641    optional bool low_mem_device = 12;
22642
22643    // indicates previous background restriction level.
22644    optional RestrictionLevel previous_restriction_level = 13;
22645}
22646
22647/**
22648 * Logs failure reason when MmsSmsProvider#getThreadId fails to return a threadId
22649 */
22650message MmsSmsProviderGetThreadIdFailed {
22651    enum FailureCode {
22652        FAILURE_UNKNOWN = 0;
22653        // Did not return a threadId due to recipients being passed in
22654        FAILURE_NO_RECIPIENTS = 1;
22655        FAILURE_FIND_OR_CREATE_THREAD_ID_SQL = 2;
22656        // Found more than one threadId for the given of recipients
22657        FAILURE_MULTIPLE_THREAD_IDS_FOUND = 3;
22658    }
22659
22660    optional FailureCode failure_code = 1;
22661}
22662
22663/**
22664 * Logs failure reason when MmsSmsDatabaseHelperOnUpgradeFailed fails on an upgrade step
22665 */
22666message MmsSmsDatabaseHelperOnUpgradeFailed {
22667    enum FailureCode {
22668        FAILURE_UNKNOWN = 0;
22669        FAILURE_IO_EXCEPTION = 1;
22670        FAILURE_SECURITY_EXCEPTION = 2;
22671        FAILURE_SQL_EXCEPTION = 3;
22672    }
22673
22674    // Database version being upgraded from
22675    optional int32 old_version = 1;
22676    // Database version being upgraded to
22677    optional int32 current_version = 2;
22678    // Version number of the database upgrade step that failed
22679    optional int32 upgrade_failed_to_version = 3;
22680    optional FailureCode failure_code = 4;
22681}
22682
22683/** Log for autofill events. This captures events till the view goes out of
22684 * focus. For each auttofilled view going out of focus, and coming back, a
22685 * separate event would be generated.
22686 *
22687 * Logged from:
22688 * frameworks/base/services/autofill/java/com/android/server/autofill/
22689 *
22690 * Next ID: 55
22691 */
22692message AutofillPresentationEventReported {
22693  enum PresentationEventResult {
22694    NONE_SHOWN_UNKNOWN_REASON =
22695        0;  // Includes reasons where losses can be partial: eg: IME not showing
22696            // certain datasets, while others are filtered out because user
22697            // started typing. So, it can either refer to a set of mixed of
22698            // known or unknown reasons.
22699    ANY_SHOWN =
22700        1;  // This is counter to the event name, but we need it in order to get
22701            // overall success rate.
22702    // Below ones corresponds to no presentation getting shown
22703    NONE_SHOWN_VIEW_FOCUS_CHANGED =
22704        2;  // User action leads to focus getting shifted to another field
22705    NONE_SHOWN_VIEW_CHANGED =
22706        3;  // This would also include if view becomes invisible.
22707    NONE_SHOWN_ACTIVITY_FINISHED = 4;  // Eg: User pressed back
22708    NONE_SHOWN_REQUEST_TIMEOUT =
22709        5;  // Autofill provider didn't respond in the given time.
22710    NONE_SHOWN_SESSION_COMMITTED_PREMATURELY =
22711        6;  // Session was prematurely committed. This can happen due to various
22712            // reasons, eg: app developers calling commit() earlier than when
22713            // they should.
22714    NONE_SHOWN_FILL_REQUEST_FAILED =
22715        7; // Autofill provider request failed. Different from timeout.
22716    NONE_SHOWN_NO_FOCUS =
22717        8; // Autofill provider request was triggered pre-focus. User never
22718           // focussed on autofillable fields. This can happen for FillDialog
22719           // where we trigger fill request at layout time.
22720    NONE_SHOWN_VIEW_FOCUSED_BEFORE_FILL_DIALOG_RESPONSE =
22721        9; // Users focus a field before the fill dialogs response is returned.
22722    NONE_SHOWN_SUGGESTION_FILTER_OUT =
22723        10; // Suggestions were filtered out due to pre-existing text
22724  }
22725
22726  // Id number which increases for each subsequent request.
22727  optional int32 request_id = 1;
22728
22729  // SessionId to aggregate requests within a session, and see overall
22730  // performance.
22731  optional int32 session_id = 2;
22732
22733  // Result of autofill event.
22734  optional PresentationEventResult presentation_event_result = 3;
22735
22736  // Count of datasets that should've been available for display. If the request
22737  // times out, this won't be populated.
22738  optional int32 available_count = 4;
22739
22740  // Count of datasets that are shown to the user.
22741  optional int32 count_shown = 5;
22742
22743  // Count of datasets that are eligible to be shown to the user, but aren't
22744  // shown because user started typing already, and the results were filtered.
22745  // If the user starts typing, dataset isn't shown at the moment, but then the
22746  // user deletes text, and the dataset becomes visible, it would count as
22747  // shown, and not as filtered out.
22748  optional int32 count_filtered_user_typing = 6;
22749
22750  // Count of datasets that aren't shown because IME didn't use datasets at all.
22751  optional int32 count_not_shown_unused_by_ime = 7;
22752
22753  // Count of datasets that are eligible to be shown to the user, but aren't
22754  // shown because display didn't show them (probably user didn't scroll to see
22755  // the view). The dataset was requested by display, but not shown.
22756  optional int32 count_not_shown_never_visible = 8;
22757
22758  // How the dataset is supposed to be shown to the user
22759  optional AutofillDisplayPresentationType display_presentation_type = 9;
22760
22761  // Autofill Service Provider's uid
22762  optional int32 autofill_service_uid = 10 [(is_uid) = true];
22763
22764  // Inline suggestion host's uid. Populated only when
22765  // AutofillDisplayPresentationType = INLINE
22766  optional int32 inline_suggestion_host_uid = 11 [(is_uid) = true];
22767
22768  // Whether a new request was triggered or alternatively served from cached
22769  // response.
22770  optional bool is_request_triggered = 12;
22771
22772  // Timestamps are in milliseconds, relative to when the Session was created
22773  // For example, if timestamp has a value = 100, the event was triggered
22774  // 100ms after the session was created.
22775  // Since these are relative to Session creation, you can subtract events to
22776  // get the latency duration between events.
22777  // t1 = 100
22778  // t2 = 300
22779  // duration = t2 - t1 = 200ms
22780  // ------------------------------------------------------------------------
22781  // Timestamp of when FillRequest is sent to Autofill provider
22782  // This is also the latency of when a field is focused to Framework sending a FillRequest
22783  optional int32 fill_request_sent_timestamp_ms = 13;
22784
22785  // Timestamp of when Autofill provider returns a FillResponse
22786  // The latency of the Autofill provider IPC can be calculated
22787  // by fillResponseReceivedTimestampMs - fillRequestSentTimestampMs
22788  optional int32 fill_response_received_timestamp_ms = 14;
22789
22790  // Timestamp of when FillResponse is sent to the IME/Dropdown handler/Fill Dialog UI
22791  // The latency of processing provider FillResponse to when suggestions are sent to be rendered
22792  // can be calculated by suggestionSentTimestampMs - fillResponseReceivedTimestampMs
22793  optional int32 suggestion_sent_timestamp_ms = 15;
22794
22795  // Timestamp of when the suggestion is first shown
22796  // The latency of showing suggestions can be calculated by
22797  // suggestionPresentedTimestampMs - suggestionSentTimestampMs
22798  optional int32 suggestion_presented_timestamp_ms = 16;
22799
22800  // The index of the dataset that a user selected. -1 if not selected.
22801  optional int32 selected_dataset_id = 17;
22802
22803  // True if the user dismissed the fill UI.
22804  optional bool dialog_dismissed = 18;
22805
22806  // True if the user clicked the negative CTA button.
22807  optional bool negative_cta_button_clicked = 19;
22808
22809  // True if the user clicked the positive CTA button.
22810  optional bool positive_cta_button_clicked = 20;
22811
22812  optional autofill.AuthenticationType authentication_type = 21;
22813
22814  optional autofill.AuthenticationResult authentication_result = 22;
22815
22816  // From response received to authentication UI displayed to the user.
22817  optional int64 latency_authentication_ui_display_millis = 23;
22818
22819  // From the user finishing authentication to the dataset is displayed to the user.
22820  optional int64 latency_dataset_display_millis = 24;
22821
22822  // Count of datasets that are available due to PCC Detection. These can include datasets
22823  // available via provider response, and would be eligible because of pcc too.
22824  // If PCC detection is preferred over Autofill provider, and Autofill provider had same detection
22825  // as PCC did, the following invariants would hold.
22826  // available_pcc_count = available_count
22827  // available_pcc_only_count = 0
22828  optional int32 available_pcc_count = 25;
22829
22830  // Count of datasets that are available only due to PCC Detection.
22831  optional int32 available_pcc_only_count = 26;
22832
22833  // The selection process of this dataset.
22834  optional autofill.DatasetPickedReason selected_dataset_picked_reason = 27;
22835
22836  // Which detection was preferred
22837  optional autofill.DetectionPreference detection_preference = 28;
22838
22839  // field_classification request id that was used for this event.
22840  optional int32 field_classification_request_id = 29;
22841
22842  // App package Uid
22843  optional int32 app_package_uid = 30 [(is_uid) = true];
22844
22845  // True if the request is directed to the credential autofill service.
22846  optional bool is_credential_request = 31;
22847
22848  // True if the response is from webview requesting credential autofill service.
22849  optional bool webview_requested_credential = 32;
22850
22851  // Count of views that are filtered because they are not in current session
22852  // before autofill framework calls AutofillManager.autofill().
22853  optional int64 views_fillable_excluded_by_session_count = 46;
22854
22855  // Count of views that can be filled as per the provider service.
22856  // views_fillable_total_count = views_filled_failure_count +
22857  //     views_filled_success_count + views_with_no_callback
22858  // views_with_no_callback aren't logged explicitly, as it can be computed.
22859  // There may be no callback due to views overriding default behavior, and
22860  // not adhering to javadoc guidelines. They may correspond to autofill
22861  // failing or being successful. There is no way for autofill framework to
22862  // know such status.
22863  optional int64 views_fillable_total_count = 33;
22864
22865  // Count of views that failed to receive autofill values. These are minimum counts.
22866  // It's possible that additional views themselves didn't fill correctly.
22867  optional int64 views_filled_failure_count = 34;
22868
22869  // ViewID of the AutofillID that triggered the presentation
22870  optional int32 focused_autofill_id = 35;
22871
22872  // Count of views that successfully received autofill values. These are guaranteed counts.
22873  // They are confirmed by getting views autofill value, and comparing against what was attempted
22874  // to be set.
22875  optional int64 views_filled_success_count = 36;
22876
22877  // Count of views that successfully received autofill values, but don't belong to this event.
22878  // This value is for confirmation that nothing is wrong. It's expected value is 0.
22879  // If non-zero, there's likely some bug in our logging (or in autofill).
22880  optional int64 views_filled_but_unexpected_count = 37;
22881
22882  // Timestamp (relative to session start) of when user tapped a selection
22883  optional int32 presentation_selected_timestamp_ms = 38;
22884
22885  // Timestamp (relative to session start) of filling into a field
22886  optional int32 field_autofilled_timestamp_ms = 39;
22887
22888  // Timestamp (relative to session start) of when the field is first modified
22889  // This is used to check if a field was modified before an Autofill suggestion
22890  // was presented
22891  optional int32 field_first_modified_timestamp_ms = 40;
22892
22893  // Timestamp (relative to session start) of when the field is last modified
22894  // This is value is updated when the view value was changed manually
22895  // (by app/user - not autofill)
22896  // This will be the same as field_first_modified_timestamp_ms
22897  // if field was only modified once
22898  optional int32 field_last_modified_timestamp_ms = 41;
22899
22900  // Supplement to suggestion_presented_timestamp_ms. This is the timestamp
22901  // of the last suggestion that was presented to the user. It is used to
22902  // distinguish multiple presentations in the same field.
22903  optional int32 suggestion_presented_last_timestamp_ms = 42;
22904
22905  // The virtual component (if any) of the autofill id
22906  optional int32 focused_virtual_autofill_id = 43;
22907
22908  // Length of text already in the field when the event is initialized
22909  optional int32 field_first_length = 44;
22910
22911  // Length of text already in the field when the event is logged
22912  optional int32 field_last_length = 45;
22913
22914  // Count of views that failed prior to refill attempt
22915  optional int32 view_failed_prior_to_refill_count = 47;
22916
22917  // Count of views that were able to be filled during refill
22918  // Note that this doesn't include views that were filled successfully prior
22919  // to refill.
22920  optional int32 view_filled_on_refill_count = 48;
22921
22922  // Count of views that failed in refill attempt
22923  optional int32 view_failed_on_refill_count = 49;
22924
22925  // Count of times response wasn't expired due to pending authentication.
22926  optional int32 fix_expire_response_auth_count = 50;
22927
22928  // Count of times notifyViewEntered wasn't done due to pending authentication
22929  optional int32 notify_view_entered_ignored_auth_count = 51;
22930
22931  // Following three fields are only logged if improve_fill_dialog is enabled.
22932  //
22933  // Fill dialog not shown reason.
22934  optional android.os.statsd.autofill.FillDialogNotShownReason
22935    fill_dialog_not_shown_reason = 52;
22936
22937  // Timestamp (relative to session start) of when the fill dialog is ready to
22938  // show.
22939  optional int64 fill_dialog_ready_to_show_ms = 53;
22940
22941  // Timestamp (relative to session start) of when the IME animation is
22942  // finished.
22943  optional int64 ime_animation_finish_ms = 54;
22944}
22945
22946// Tells how Autofill dataset was/will-be displayed.
22947enum AutofillDisplayPresentationType {
22948  UNKNOWN_AUTOFILL_DISPLAY_PRESENTATION_TYPE = 0;
22949  MENU = 1;    // aka drop-down
22950  INLINE = 2;  // shown via IME
22951  DIALOG = 3;  // aka Bottom-sheet dialog
22952}
22953
22954/**
22955 * Log the CompanionDeviceManager associations are created by various device
22956 * profiles
22957 *
22958 * Logged from:
22959 * frameworks/base/services/companion/java/com/android/server/companion/
22960 * CompanionDeviceManagerService.java
22961 */
22962message CdmAssociationAction {
22963    enum Action {
22964        UNKNOWN = 0;
22965        CREATED = 1;
22966        REMOVED = 2;
22967    }
22968
22969    enum DeviceProfile{
22970        DEVICE_PROFILE_NULL = 0;
22971        DEVICE_PROFILE_WATCH = 1;
22972        DEVICE_PROFILE_APP_STREAMING = 2;
22973        DEVICE_PROFILE_AUTO_PROJECTION = 3;
22974        DEVICE_PROFILE_COMPUTER = 4;
22975        DEVICE_PROFILE_GLASSES = 5;
22976        DEVICE_PROFILE_NEARBY_DEVICE_STREAMING = 6;
22977        DEVICE_PROFILE_VIRTUAL_DEVICE = 7;
22978        DEVICE_PROFILE_WEARABLE_SENSING = 8;
22979    }
22980
22981    // Action taken on the CDM association been created by companion apps.
22982    optional Action action = 1;
22983
22984    // Name of the CDM Association Request profiles.
22985    optional DeviceProfile device_profile = 2;
22986}
22987
22988/**
22989 * Logs when text and reading options changed.
22990 *
22991 * Logged from:
22992 *   packages/apps/Settings/src/com/android/settings/accessibility
22993 */
22994message AccessibilityTextReadingOptionsChanged {
22995    // The item name of the accessibility feature "Text and Reading Options".
22996    optional android.stats.accessibility.TextReadingOption name = 1;
22997
22998    // The status value of the item of the accessibility feature "Text and Reading Options".
22999    optional int32 value = 2;
23000
23001    // The entry point from which page.
23002    optional android.stats.accessibility.TextReadingEntry entry_point = 3;
23003}
23004
23005/*
23006 * Pushed atom logged by ONS service.
23007 */
23008message OnsOpportunisticEsimProvisioningComplete {
23009    enum ResultCode {
23010      // Unknown
23011      RESULT_UNKNOWN = 0;
23012
23013      // Operation was successful.
23014      RESULT_SUCCESS = 1;
23015
23016      // Device capabilities not met such as eSIM and MultiSIM not supported.
23017      RESULT_DEVICE_NOT_CAPABLE = 2;
23018
23019      // Internet connection is not available while trying to download opportunistic eSIM.
23020      RESULT_INTERNET_NOT_AVAILABLE = 3;
23021
23022      // Error occurred while switching device from Single to MultiSIM mode.
23023      RESULT_SWITCH_TO_MULTISIM_FAILED = 4;
23024
23025      // Connection error occurred while downloading opportunistic eSIM from SMDP server.
23026      RESULT_CONNECTION_ERROR = 5;
23027
23028      // Download failed because there is no sufficient storage available in eUICC memory.
23029      RESULT_MEMORY_FULL = 6;
23030
23031      // Installation of downloaded eSIM failed.
23032      RESULT_INSTALL_ESIM_PROFILE_FAILED = 7;
23033
23034      // Unresolvable errors such as Invalid SMDP address or activation code.
23035      RESULT_UNRESOLVABLE_ERROR = 8;
23036
23037      // Auto provisioning disabled
23038      RESULT_AUTO_PROVISIONING_DISABLED = 9;
23039
23040      // eSIM provisioning failed
23041      RESULT_ESIM_PROVISIONING_FAILED = 10;
23042    }
23043
23044    // CBRS carrier id. Filled only while reporting failure cases.
23045    optional int32 carrier_id = 1;
23046
23047    // carrier id of the opportunistic eSIM downloaded from the SMDP server.
23048    //Filled only while reporting failure cases.
23049    optional int32 opportunistic_esim_carrier_id = 2;
23050
23051    // Flag to indicate that the data connection was used for downloading.
23052    optional bool is_mobile_data_used = 3;
23053
23054    // Error code occurred during the above operation.
23055    optional ResultCode error_code = 4;
23056
23057    // Retry count of the above operation.
23058    optional int32 retry_count = 5;
23059
23060    // Detailed error code.
23061    optional int32 detailed_error_code = 6;
23062}
23063
23064/**
23065 * Logs when a telephony anomaly is reported.
23066 *
23067 * Logged from:
23068 *   frameworks/base/telephony/java/android/telephony/AnomalyReporter.java
23069 */
23070message TelephonyAnomalyDetected {
23071    // Carrier ID of the SIM card.
23072    // See https://source.android.com/devices/tech/config/carrierid.
23073    optional int32 carrier_id = 1;
23074    // UUID of the anomaly, as generated by android.telephony.AnomalyReporter
23075    optional int64 event_id_lsb = 2;
23076    optional int64 event_id_msb = 3;
23077}
23078
23079// Logs when the remote key provisioner application is invoked, either
23080// due to a periodically scheduled job, due to an attestation key being
23081// consumed from the pool, or when the system has detected that it's
23082// completely out of attestation keys.
23083//
23084// Logged from:
23085//   packages/modules/RemoteKeyProvisioning
23086message RemoteKeyProvisioningAttempt {
23087    // The reason for the provisioning attempt.
23088    enum Cause {
23089        CAUSE_UNKNOWN = 0;
23090        SCHEDULED = 1;          // A scheduled job issued the request
23091        KEY_CONSUMED = 2;       // A provisioned key was consumed from the pool
23092        OUT_OF_KEYS = 3;        // The system is out of keys
23093    }
23094    optional Cause cause = 1;
23095
23096    // The name of the remotely provisioned component for whom keys are being
23097    // generated and certified. The string value is determined by the vendor,
23098    // and is fixed for the lifetime of the device. The number of unique string
23099    // values on a given device is determined by how many remotely provisioned
23100    // component HALs are on a given device. Typically, this is 2-3 HALs.
23101    optional string remotely_provisioned_component = 2;
23102
23103    // The uptime of the device, organized into time ranges of interest.
23104    enum UpTime {
23105        UPTIME_UNKNOWN = 0;
23106        LESS_THAN_5_MINUTES = 1;
23107        BETWEEN_5_AND_60_MINUTES = 2;
23108        MORE_THAN_60_MINUTES = 3;
23109    }
23110    optional UpTime uptime = 3;
23111
23112    // The state of remote provisioning enablement
23113    enum Enablement {
23114        ENABLEMENT_UNKNOWN = 0;
23115        ENABLED_WITH_FALLBACK = 1;
23116        ENABLED_RKP_ONLY = 2;
23117        DISABLED = 3;
23118    }
23119    optional Enablement enablement = 4;
23120
23121    // If the key pool is completely exhausted, this is set to true. Typically,
23122    // we do not expect to see a pool with no spare keys available.
23123    optional bool is_key_pool_empty = 5;
23124
23125    // Indicates success or failure of the provisioning attempt.
23126    optional com.android.remoteprovisioner.RemoteKeyProvisioningStatus status = 6;
23127
23128    // A digest of the root key that certified the provisioned certificates
23129    optional string root_cert_fingerprint = 7;
23130
23131    // The depth of the cert chains issued to the device
23132    optional int32 cert_chain_length = 8;
23133}
23134
23135// Logs that correlate remote key provisioning status with the active
23136// network for the given provisioning attempt.
23137//
23138// Logged from:
23139//   packages/modules/RemoteKeyProvisioning
23140message RemoteKeyProvisioningNetworkInfo {
23141    // The network transport, according ConnectivityManager::getActiveNetwork().
23142    optional android.stats.connectivity.TransportType transport_type = 1;
23143
23144    // Indicates success or failure of the provisioning attempt.
23145    optional com.android.remoteprovisioner.RemoteKeyProvisioningStatus status = 2;
23146
23147    // If an HTTP error was received, this contains the code. Else, contains 200.
23148    optional int32 http_status_error = 3;
23149}
23150
23151// Logs indicating timing data to understand how long the remote provisioner is
23152// taking to perform various sub-tasks. This is intended to be used with KLL metrics.
23153//
23154// Logged from:
23155//   packages/modules/RemoteKeyProvisioning
23156message RemoteKeyProvisioningTiming {
23157    // Time spent waiting on the RKP service to reply.
23158    optional int32 server_wait_millis = 1;
23159
23160    // Time spent waiting on internal binder calls to the provisioning service.
23161    optional int32 binder_wait_millis = 2;
23162
23163    // Time spent waiting on the serialization lock.
23164    optional int32 lock_wait_millis = 3;
23165
23166    // Total time spent processing the attempt.
23167    optional int32 total_processing_time = 4;
23168
23169    // The network transport, according ConnectivityManager::getActiveNetwork().
23170    optional android.stats.connectivity.TransportType transport_type = 5;
23171
23172    // The name of the remotely provisioned component for whom keys are being
23173    // generated and certified. The string value is determined by the vendor,
23174    // and is fixed for the lifetime of the device. The number of unique string
23175    // values on a given device is determined by how many remotely provisioned
23176    // component HALs are on a given device. Typically, this is 2-3 HALs.
23177    optional string remotely_provisioned_component = 6;
23178
23179    // Cause of the attempt which resulted in these timings.
23180    optional RemoteKeyProvisioningAttempt.Cause cause = 7;
23181
23182    // Indicates success or failure of the provisioning attempt.
23183    optional com.android.remoteprovisioner.RemoteKeyProvisioningStatus status = 8;
23184}
23185
23186// Deprecated in U.
23187//
23188// Counters that track how many errors we're seeing on the device for the
23189// given boot.
23190//
23191// Logged from:
23192//   packages/modules/RemoteKeyProvisioning
23193message RemoteKeyProvisioningErrorCounts {
23194    // The total number of RKP attempts there have been this boot.
23195    optional int32 total_count = 1;
23196
23197    // How many errors this device has encountered this boot.
23198    optional int32 error_count = 2;
23199
23200    // How many bytes of data have been sent that resulted in errors. These
23201    // bytes count against an error budget, so it's important to track.
23202    optional int32 error_bytes = 3;
23203}
23204
23205/**
23206 * Logs information about sync exemptions when they occur.
23207 *
23208 * Logged from:
23209 *      frameworks/base/services/core/java/com/android/server/content/ContentService.java
23210 */
23211message SyncExemptionOccurred {
23212    optional int32 uid = 1 [(is_uid) = true]; // the uid of the app.
23213
23214    enum ProcState {
23215        UNKNOWN = 0;
23216        PERSISTENT = 1;
23217        PERSISTENT_UI = 2;
23218        TOP = 3;
23219        BOUND_TOP = 4;
23220        FOREGROUND_SERVICE = 5;
23221        BOUND_FOREGROUND_SERVICE = 6;
23222        IMPORTANT_FOREGROUND = 7;
23223        IMPORTANT_BACKGROUND = 8;
23224        TRANSIENT_BACKGROUND = 9;
23225        BACKUP = 10;
23226        SERVICE = 11;
23227        RECEIVER = 12;
23228        TOP_SLEEPING = 13;
23229        HEAVY_WEIGHT = 14;
23230        HOME = 15;
23231        LAST_ACTIVITY = 16;
23232        CACHED_ACTIVITY = 17;
23233        CACHED_ACTIVITY_CLIENT = 18;
23234        CACHED_RECENT = 19;
23235        CACHED_EMPTY = 20;
23236    }
23237    optional ProcState proc_state = 2; // the proc state of the app when the exemption occurred.
23238
23239    optional bool is_uid_active = 3; // was the uid active when the exemption occurred.
23240
23241    optional AppBackgroundRestrictionsInfo.RestrictionLevel restriction_level = 4;
23242}
23243
23244// Logs the overall Safety State of the device (as cached by the Safety Center)
23245message SafetyState {
23246    // The overall severity level of the Safety Center.
23247    optional android.stats.safetycenter.SafetySeverityLevel overall_severity_level = 1;
23248
23249    // The number of open issues in the Safety Center.
23250    optional int64 open_issues_count = 2;
23251
23252    // The number of dismissed issues in the Safety Center.
23253    optional int64 dismissed_issues_count = 3;
23254}
23255
23256// Logs the state of an individual Safety Source when overall SafetyState is
23257// collected.
23258message SafetySourceStateCollected {
23259    optional int64 encoded_safety_source_id = 1;
23260
23261    optional android.stats.safetycenter.SafetySourceProfileType safety_source_profile_type = 2;
23262
23263    // The severity level of this source.
23264    optional android.stats.safetycenter.SafetySeverityLevel severity_level = 3;
23265
23266    // The number of open issues belonging to this Safety Source.
23267    optional int64 open_issues_count = 4;
23268
23269    // The number of dismissed issues belonging to this Safety Source.
23270    optional int64 dismissed_issues_count = 5;
23271
23272    optional int64 duplicate_filtered_out_issues_count = 6;
23273
23274    enum SourceState {
23275        SOURCE_STATE_UNKNOWN = 0;
23276        DATA_PROVIDED = 1;
23277        NO_DATA_PROVIDED = 2;
23278        REFRESH_TIMEOUT = 3;
23279        REFRESH_ERROR = 4;
23280        SOURCE_ERROR = 5;
23281        SOURCE_CLEARED = 6;
23282    }
23283    optional SourceState source_state = 7;
23284
23285    // Indicates the reason for which this event was collected.
23286    enum CollectionType {
23287        COLLECTION_TYPE_UNKNOWN = 0;
23288        AUTOMATIC = 1;
23289        SOURCE_UPDATED = 2;
23290    }
23291    optional CollectionType collection_type = 8;
23292
23293    enum UpdateType {
23294        UPDATE_TYPE_UNKNOWN = 0;
23295        SELF_INITIATED = 1;
23296        REFRESH_RESPONSE = 2;
23297    }
23298    optional UpdateType update_type = 9;
23299
23300    optional int64 refresh_reason = 10;
23301
23302    optional bool data_changed = 11;
23303
23304    optional int64 last_updated_elapsed_time_millis = 12;
23305}
23306
23307// Logs system-health and performance related events from the Safety Center
23308message SafetyCenterSystemEventReported {
23309    enum EventType {
23310        EVENT_TYPE_UNKNOWN = 0;
23311        SINGLE_SOURCE_GET_NEW_DATA = 1;
23312        SINGLE_SOURCE_RESCAN = 2;
23313        COMPLETE_GET_NEW_DATA = 3;
23314        COMPLETE_RESCAN = 4;
23315        INLINE_ACTION = 5;
23316    }
23317    optional EventType event_type = 1;
23318
23319    // Unset if this event isn't source-specific.
23320    optional int64 encoded_safety_source_id = 2;
23321
23322    // Unset if this event isn't source-specific.
23323    optional android.stats.safetycenter.SafetySourceProfileType safety_source_profile_type = 3;
23324
23325    // Unset if this event isn't specific to an issue.
23326    optional int64 encoded_issue_type_id = 4;
23327
23328    optional int64 duration_millis = 5;
23329
23330    enum Result {
23331        RESULT_UNKNOWN = 0;
23332        SUCCESS = 1;
23333        TIMEOUT = 2;
23334        ERROR = 3;
23335    }
23336    optional Result result = 6;
23337
23338    optional int64 refresh_reason = 7;
23339
23340    optional bool data_changed = 8;
23341}
23342
23343// Logs a user interaction with the Safety Center. Various fields may or may not be
23344// set depending on the Action reported.
23345message SafetyCenterInteractionReported {
23346    // ID which identifies single session of user interacting with Safety Center.
23347    optional int64 session_id = 1;
23348
23349    enum Action {
23350        ACTION_UNKNOWN = 0;
23351
23352        SAFETY_CENTER_VIEWED = 1;
23353        SAFETY_ISSUE_VIEWED = 2;
23354
23355        SCAN_INITIATED = 3;
23356
23357        ISSUE_PRIMARY_ACTION_CLICKED = 4;
23358        ISSUE_SECONDARY_ACTION_CLICKED = 5;
23359        ISSUE_DISMISS_CLICKED = 6;
23360
23361        MORE_ISSUES_CLICKED = 7;
23362        ENTRY_CLICKED = 8;
23363        ENTRY_ICON_ACTION_CLICKED = 9;
23364        STATIC_ENTRY_CLICKED = 10;
23365
23366        PRIVACY_CONTROL_TOGGLE_CLICKED = 11;
23367        SENSOR_PERMISSION_REVOKE_CLICKED = 12;
23368        SENSOR_PERMISSION_SEE_USAGES_CLICKED = 13;
23369        REVIEW_SETTINGS_CLICKED = 14;
23370
23371        NOTIFICATION_POSTED = 15;
23372        NOTIFICATION_DISMISSED = 16;
23373
23374        STATUS_VIEWED = 17;
23375        ENTRY_VIEWED = 18;
23376
23377        ISSUE_RESOLVED = 19;
23378    }
23379
23380    // Action taken in the Safety Center.
23381    optional Action action = 2;
23382
23383    enum ViewType {
23384        VIEW_TYPE_UNKNOWN = 0;
23385        FULL = 1;
23386        QUICK_SETTINGS = 2;
23387        SUBPAGE = 3;
23388
23389        // Prefix required to distinguish from NavigationSource.NOTIFICATION (since
23390        // proto enums use C++ scoping rules, enum value names must be unique within
23391        // the enum's enclosing type, not just the enum itself).
23392        VIEW_TYPE_NOTIFICATION = 4;
23393    }
23394
23395    // Which view of the Safety Center this interaction occurred in.
23396    optional ViewType view_type = 3;
23397
23398    enum NavigationSource {
23399        SOURCE_UNKNOWN = 0;
23400        NOTIFICATION = 1;
23401        QUICK_SETTINGS_TILE = 2;
23402        SETTINGS = 3;
23403        SENSOR_INDICATOR = 4;
23404
23405        // Set for navigations that start from within Safety Center. e.g. when a subpage
23406        // is opened from the main Safety Center page instead of from a notification.
23407        SAFETY_CENTER = 5;
23408    }
23409
23410    // Where the session was initiated from.
23411    optional NavigationSource navigation_source = 4;
23412
23413    // Severity level of the particular issue or entry, or the overall Safety
23414    // Center this interaction is associated with.
23415    optional android.stats.safetycenter.SafetySeverityLevel severity_level = 5;
23416
23417    // The hashed ID of the Safety Source that this interaction was with performed with,
23418    // or nothing if this event isn't source-specific.
23419    optional int64 encoded_safety_source_id = 6;
23420
23421    // The kind of profile that this safety source originated from (sources from
23422    // personal and work profiles may have the same source ID)
23423    optional android.stats.safetycenter.SafetySourceProfileType safety_source_profile_type = 7;
23424
23425    // A hash of the loggable issue type ID that this interaction was performed with.
23426    optional int64 encoded_issue_type_id = 8;
23427
23428    enum Sensor {
23429        SENSOR_UNKNOWN = 0;
23430        MICROPHONE = 1;
23431        CAMERA = 2;
23432        LOCATION = 3;
23433    }
23434
23435    // Which sensor was associated with this interaction (if any).
23436    optional Sensor sensor = 9;
23437
23438    optional int64 encoded_safety_sources_group_id = 10;
23439
23440    enum IssueState {
23441        ISSUE_STATE_UNKNOWN = 0;
23442        ACTIVE = 1;
23443        DISMISSED = 2;
23444    }
23445    optional IssueState issue_state = 11;
23446}
23447
23448/**
23449 * Logs information about SettingsProvider setting changes when they occur.
23450 *
23451 * Logged from:
23452 *      frameworks/base/packages/src/com/android/providers/settings/SettingsProvider.java
23453 */
23454message SettingsProviderSettingChanged {
23455    optional int32 user_id = 1; // user for whom the setting has changed
23456    optional string name = 2; // name of the setting
23457    optional int32 type = 3; // the setting type, e.g., global, system or secure
23458    optional int32 change_type = 4; // the change type, e.g., insert, delete or update
23459}
23460
23461/**
23462 * Pulls information for a single incoming MMS.
23463 *
23464 * Each pull creates multiple atoms, one for each MMS.
23465 * The sequence is randomized when pulled.
23466 *
23467 * Pulled from:
23468 *   packages/services/Mms/src/com/android/mms/service/metrics/MmsMetricsCollector.java
23469 */
23470message IncomingMms {
23471    // Radio access technology (RAT) used for downloading the MMS.
23472    // It can be IWLAN in case of IMS.
23473    // RAT is logged at the end of the download.
23474    optional android.telephony.NetworkTypeEnum rat = 1;
23475
23476    // Indicate a specific result handling the MMS.
23477    optional android.mms.MmsResultEnum result = 2;
23478
23479    // Roaming type when MMS was received.
23480    optional android.telephony.RoamingTypeEnum roaming = 3;
23481
23482    // Index of the SIM used, 0 for single-SIM devices.
23483    optional int32 sim_slot_index = 4;
23484
23485    // Whether the device was in multi-SIM mode (with multiple active SIM profiles).
23486    optional bool is_multi_sim = 5;
23487
23488    // Whether the MMS was received with an eSIM profile.
23489    optional bool is_esim = 6;
23490
23491    // Carrier ID of the SIM card used for the MMS.
23492    // See https://source.android.com/devices/tech/config/carrierid.
23493    optional int32 carrier_id = 7;
23494
23495    // Average time in milliseconds to download MMS from the network.
23496    optional int64 avg_interval_millis = 8;
23497
23498    // Total number of MMS having same configuration.
23499    optional int64 mms_count = 9;
23500
23501    // Retry count: 0 for the first attempt and then increasing for each attempt.
23502    optional int32 retry_id = 10;
23503
23504    // Whether MmsService or carrier app downloaded the MMS from the network.
23505    optional bool handled_by_carrier_app = 11;
23506
23507    // Whether the MMS was received with an enterprise profile.
23508    optional bool is_managed_profile = 12;
23509
23510    // Whether the MMS was received over non-terrestrial networks.
23511    optional bool is_ntn = 13;
23512
23513    // Whether the MMS was received over Carrier Roaming NB-Iot NTN network.
23514    optional bool is_nb_iot_ntn = 14;
23515}
23516
23517/**
23518 * Pulls information for a single outgoing MMS.
23519 *
23520 * Each pull creates multiple atoms, one for each MMS.
23521 * The sequence is randomized when pulled.
23522 *
23523 * Pulled from:
23524 *   packages/services/Mms/src/com/android/mms/service/metrics/MmsMetricsCollector.java
23525 */
23526message OutgoingMms {
23527    // Radio access technology (RAT) used for uploading the MMS.
23528    // It can be IWLAN in case of IMS.
23529    // RAT is logged at the end of the upload.
23530    optional android.telephony.NetworkTypeEnum rat = 1;
23531
23532    // Indicate a specific result handling the MMS.
23533    optional android.mms.MmsResultEnum result = 2;
23534
23535    // Roaming type when MMS was received.
23536    optional android.telephony.RoamingTypeEnum roaming = 3;
23537
23538    // Index of the SIM used, 0 for single-SIM devices.
23539    optional int32 sim_slot_index = 4;
23540
23541    // Whether the device was in multi-SIM mode (with multiple active SIM profiles).
23542    optional bool is_multi_sim = 5;
23543
23544    // Whether the MMS was sent with an eSIM profile.
23545    optional bool is_esim = 6;
23546
23547    // Carrier ID of the SIM card used for the MMS.
23548    // See https://source.android.com/devices/tech/config/carrierid.
23549    optional int32 carrier_id = 7;
23550
23551    // Average time in milliseconds to download MMS from the network.
23552    optional int64 avg_interval_millis = 8;
23553
23554    // Total number of MMS having same configuration.
23555    optional int64 mms_count = 9;
23556
23557    // Whether the default MMS application sent the MMS (regardless of which application).
23558    optional bool is_from_default_app = 10;
23559
23560    // Retry count: 0 for the first attempt and then increasing for each attempt.
23561    optional int32 retry_id = 11;
23562
23563    // Whether MmsService or carrier app uploaded the MMS to the network.
23564    optional bool handled_by_carrier_app = 12;
23565
23566    // Whether the MMS was sent with an enterprise profile.
23567    optional bool is_managed_profile = 13;
23568
23569    // Whether the MMS was sent over non-terrestrial networks.
23570    optional bool is_ntn = 14;
23571
23572    // Whether the MMS was sent over Carrier Roaming NB-Iot NTN network.
23573    optional bool is_nb_iot_ntn = 15;
23574}
23575
23576message PrivacySignalNotificationInteraction {
23577
23578    enum Action {
23579        UNKNOWN = 0;
23580        NOTIFICATION_SHOWN = 1;
23581        NOTIFICATION_CLICKED = 2;
23582        DISMISSED = 3;
23583    }
23584
23585    // Privacy source that triggered the notification
23586    optional android.stats.privacysignals.PrivacySource privacy_source = 1;
23587
23588    // Optional Uid of the package for which the notification was sent.
23589    optional int32 uid = 2 [(is_uid) = true];
23590
23591    // Action taken on the notification.
23592    optional Action action = 3;
23593
23594    // Session Id to link the notification with the issue card.
23595    optional int64 session_id = 4; // to map the notification and issue card interaction
23596}
23597
23598message PrivacySignalIssueCardInteraction {
23599
23600    enum Action {
23601        ACTION_UNKNOWN = 0;
23602        CARD_SHOWN = 1;
23603        CARD_CLICKED = 2;
23604        CARD_DISMISSED = 3;
23605        CLICKED_CTA1 = 4;
23606        CLICKED_CTA2 = 5;
23607    }
23608
23609    // Privacy source  that pushed the issue card.
23610    optional android.stats.privacysignals.PrivacySource privacy_source = 1;
23611
23612    // Optional Uid of the package for which the issue card was sent.
23613    optional int32 uid = 2 [(is_uid) = true];
23614
23615    // Action taken on the issue card.
23616    optional Action action = 3;
23617
23618    // Session Id to link the notification with the issue card.
23619    optional int64 session_id = 4;
23620}
23621
23622message PrivacySignalsJobFailure {
23623
23624    // Which privacy source for which the daily job failed.
23625    optional android.stats.privacysignals.PrivacySource privacy_source = 1;
23626
23627    enum JobFailureReason {
23628        REASON_UNKNOWN = 0;
23629        TIMEOUT = 1;
23630        COROUTINE_CANCELLED = 2;
23631    }
23632    optional JobFailureReason reason =2;
23633}
23634
23635/**
23636 * Contains information about different method and code contention durations in
23637 * the ANR code path
23638 */
23639message ANRLatencyReported {
23640    /* Important durations */
23641    // Total duration of the ANR (in ms)
23642    optional int64 total_duration = 1;
23643    // The duration between when the ANR is triggered and when the stacks are dumped
23644    // (in ms)
23645    optional int64 triggering_to_stack_dump_duration = 2;
23646
23647    /* Disjoint durations, each duration representing the time spent in the
23648    method before calling the next one on the ANR chain */
23649    // The duration between when the ANR is triggered and when appNotResponding starts.
23650    optional int64 triggering_to_app_not_responding_duration = 3;
23651    // The time taken by appNotResponding before the record is placed on the
23652    // queue.
23653    optional int64 app_not_responding_duration = 4;
23654    // The time spent by the ANR record on the ANR queue.
23655    optional int64 anr_record_placed_on_queue_duration = 5;
23656    // The time from the start of the ANR processing by the ANR thread until the
23657    // stacks are dumped.
23658    optional int64 anr_processing_duration = 6;
23659    // The time taken to dump the stacks.
23660    optional int64 dump_stack_traces_duration = 7;
23661
23662    /* Helper methods */
23663    // The time spent waiting on updateCpuStatsNow to return.
23664    optional int64 update_cpu_stats_now_total_duration = 8;
23665    // The time spent waiting on currentPsiStateReturned to return.
23666    optional int64 current_psi_state_total_duration = 9;
23667    // The time spent waiting on ProcessCpuTracker methods to return
23668    optional int64 process_cpu_tracker_methods_total_duration = 10;
23669    // The time spent waiting on CriticalEventLog#logLinesForTraceFile to return.
23670    optional int64 critical_event_log_duration = 11;
23671
23672    /* Lock contention */
23673    // The time spent waiting on the Global Lock.
23674    optional int64 global_lock_total_contention = 12;
23675    // The time spent waiting on the PID lock.
23676    optional int64 pid_lock_total_contention = 13;
23677    // The time spent waiting on the AMS lock.
23678    optional int64 ams_lock_total_contention = 14;
23679    // The time spent waiting on proc lock.
23680    optional int64 proc_lock_total_contention = 15;
23681    // The time spent waiting on the ANR record queue lock.
23682    optional int64 anr_record_lock_total_contention = 16;
23683
23684    /* Misc */
23685    // The size of the ANR queue before pushing the ANR.
23686    optional int32 anr_queue_size_when_pushed = 17;
23687    // The type of the ANR.
23688    optional android.anr.AnrType anr_type = 18;
23689    // The number of dumped processes.
23690    optional int32 dumped_processes_count = 19;
23691    // Next ID: 20
23692}
23693
23694// Logs Display Brightness change events.
23695message DisplayBrightnessChanged {
23696
23697    enum Reason {
23698        REASON_UNKNOWN = 0;
23699        REASON_MANUAL = 1;
23700    }
23701
23702    // Display brightness before the brightness event, in nits.
23703    optional float initial_nits = 1;
23704
23705    // Display brightness after the brightness event, in nits.
23706    optional float end_nits = 2;
23707
23708    // Estimated ambient light, in lux.
23709    optional float lux = 3;
23710
23711    // Physical display id, with format $ADAPTER_PREFIX:$ID, in this case
23712    // "local:$PHYSICAL_ID".
23713    optional string physical_display_id = 4 [(state_field_option).primary_field = true];
23714
23715    // Whether the short term model was active at the time of the event.
23716    optional bool short_term_model_active = 5;
23717
23718    // The factor to adjust the screen brightness in low power mode in the range
23719    // 0 (screen off) to 1 (no change).
23720    // If not applied, this is set to -1.
23721    optional float power_brightness_factor = 6;
23722
23723    // The level of Reduce Bright Colors (RBC) intensity, the range is [0, 100].
23724    // If RBC is not enabled, this is set to -1;
23725    optional int32 reduce_bright_colors_strength = 7;
23726
23727    // Max nits value when High Brightness Mode (HBM) is enabled.
23728    // If HBM is not enabled, this is set to -1;
23729    optional float hbm_current_max = 8;
23730
23731    // Thermal throttling cap.
23732    // If thermal throttling not enabled, this is -1.
23733    optional float thermal_throttling_cap = 9;
23734
23735    // Whether adaptive brightness is enabled.
23736    optional bool adaptive_brightness_enabled = 10;
23737
23738    // Historical: replaced by entire_reason after 2023-04-10
23739    optional Reason reason = 11 [deprecated = true];
23740
23741    // Reason that triggered the brightness event to occur.
23742    optional android.display.DisplayBrightnessChangeReasonEnum entire_reason = 12;
23743
23744    // New brightness bucket index, from frameworks/proto_logging/stats/enums/display/display_enums.proto.
23745    optional android.display.DisplayBrightnessRangeEnum bucket_index = 13
23746            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
23747
23748    // Brightness is at maximum allowable value regarding the current context.
23749    optional bool brightness_at_max = 14;
23750
23751    // Whether HBM mode is enabled due to sunlight
23752    optional bool hbm_mode_sunlight = 15;
23753
23754    // Whether HBM mode is enabled due to HDR
23755    optional bool hbm_mode_hdr = 16;
23756
23757    // Whether modified by low power mode.
23758    optional bool modified_by_low_power_mode = 17;
23759
23760    // Value defined in frameworks/base/core/java/android/hardware/display/BrightnessInfo.java
23761    // BRIGHTNESS_MAX_REASON_NONE = 0
23762    // BRIGHTNESS_MAX_REASON_THERMAL = 1
23763    // BRIGHTNESS_MAX_REASON_* defined in the future
23764    optional int32 throttling_reason = 18;
23765
23766    // Whether modified by dimming.
23767    optional bool modified_by_dimming = 19;
23768
23769    // Whether Reduce Bright Colors (RBC) is enabled.
23770    optional bool rbc_enabled = 20;
23771
23772    // Whether ambient lux is invalid.
23773    optional bool ambient_lux_invalid = 21;
23774
23775    // Whether doze scale applied for auto brightness.
23776    optional bool doze_scale_applied = 22;
23777
23778    // Whether the value is set by the user.
23779    optional bool set_by_user = 23;
23780
23781    // Whether idle mode is active.
23782    optional bool idle_mode_active= 24;
23783
23784    // Whether low power mode is enabled.
23785    optional bool low_power_mode_enabled= 25;
23786}
23787
23788// Logs daily ambient brightness stats.
23789message AmbientBrightnessStatsReported {
23790
23791    // How much time was spent in each of the buckets, in seconds.
23792    repeated float bucket_size_seconds = 1;
23793
23794    // Ambient brightness values for creating bucket boundaries from.
23795    repeated float bucket_boundary_lux = 2;
23796}
23797
23798// Logs information about bpf maps in BpfNetMaps.
23799//
23800// Logged from:
23801//   packages/modules/Connectivity/service/src/com/android/server/BpfNetMaps.java
23802message NetworkBpfMapInfo {
23803    // The size of cookie tag bpf map.
23804    optional int32 cookie_tag_map_size = 1;
23805
23806    // The size of uid owner bpf map.
23807    optional int32 uid_owner_map_size = 2;
23808
23809    // The size of uid permission bpf map.
23810    optional int32 uid_permission_map_size = 3;
23811}
23812
23813/**
23814 * Pulls information for a single outgoing short code sms.
23815 *
23816 * Each pull generates multiple atoms, one for each category and xml_version combination.
23817 *
23818 * Pulled from:
23819 *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
23820 */
23821message OutgoingShortCodeSms {
23822    /* Short code sms category. */
23823    optional android.telephony.ShortCodeSmsEnum category = 1;
23824
23825    /* sms_short_codes.xml file version used by the device. */
23826    optional int32 xml_version = 2;
23827
23828    /* Number of short code sms with the same configuration. */
23829    optional int32 short_code_sms_count = 3;
23830}
23831
23832/**
23833 * Logs information when a hearing aid is bonded
23834 *
23835 * Logged from:
23836 *   frameworks/base/packages/SettingsLib/src/com/android/settingslib/bluetooth/
23837 *   LocalBluetoothProfileManager.java
23838 */
23839message HearingAidInfoReported {
23840    // The device mode of the bonded hearing aid
23841    // Mode definition for hearing aids. See {@link HearingAidInfo}
23842    enum DeviceMode {
23843        MODE_UNKNOWN = -1;
23844        MONAURAL = 0;
23845        BINAURAL = 1;
23846        BANDED = 2;
23847    }
23848    optional DeviceMode device_mode = 1;
23849
23850    // The device side of the bonded hearing aid
23851    // Side definition for hearing aids. See {@link HearingAidInfo}.
23852    enum DeviceSide {
23853        SIDE_UNKNOWN = -1;
23854        LEFT = 0;
23855        RIGHT = 1;
23856        LEFT_AND_RIGHT = 2;
23857    }
23858    optional DeviceSide device_side = 2;
23859
23860    // The entry page id where the bonding process starts
23861    enum BondEntry {
23862        PAGE_UNKNOWN = -1;
23863        CONNECTED_DEVICES = 0;
23864        ACCESSIBILITY_HEARING_AIDS = 1;
23865        ACCESSIBILITY_HEARING_AID_PAIR_ANOTHER = 2;
23866        BLUETOOTH = 3;
23867        ACCESSIBILITY_HEARING_AID_SETTINGS = 4;
23868    }
23869    optional BondEntry bond_entry = 3;
23870}
23871
23872/**
23873 * Logs when Ambient/OFFLOAD Mode is entered or exited.
23874 *
23875 * Logged from:
23876 *  1. vendor/google_clockwork/packages/Ambient/src/com/google/
23877 *     android/wearable/ambient/AmbientService.java
23878 *  2. vendor/google_clockwork/packages/Ambient/src/com/google/android/
23879 *     wearable/ambient/autoresume/AmbientLiteFlowController.java
23880 *  3. frameworks/opt/wear/src/com/google/android/clockwork/
23881 *     displayoffload/DisplayOffloadService.java
23882 */
23883message AmbientModeChanged {
23884    enum AmbientStateEnum {
23885        AMBIENT_ENTER = 1;
23886        AMBIENT_EXIT = 2;
23887        AMBIENT_LITE_ENTER = 3;
23888        AMBIENT_LITE_EXIT = 4;
23889        OFFLOAD_ENTER = 5;
23890        OFFLOAD_EXIT = 6;
23891    }
23892
23893    optional AmbientStateEnum state = 1;
23894}
23895
23896
23897/**
23898 * Contains statistics about time spent fetching resource information from an APK.
23899 * Logged from:
23900 *   frameworks/base/core/java/android/content/res/ResourceTimer.java
23901 */
23902message ResourceValueApiStatisticsReported {
23903
23904  // The api that is being reported.
23905  optional android.app.ResourceApiEnum api = 1;
23906
23907  // The total number of events recorded.
23908  optional int32 event_count = 2;
23909
23910  // The total time spent in thie API.  The units are ns.
23911  optional int64 cumulative_event_time_ns = 3;
23912
23913  // Four percentile values.  Units are in ns.  A value of zero means the percentile could not be
23914  // computed.
23915  optional int32 p50_ns = 4;
23916  optional int32 p90_ns = 5;
23917  optional int32 p95_ns = 6;
23918  optional int32 p99_ns = 7;
23919
23920  // The five largest values recorded.  Units are in ns.  A value of zero means the value is
23921  // missing (which means fewer than 5 events were recorded).  Values that exceed INT_MAX are
23922  // capped at INT_MAX.
23923  optional int32 l0_ns = 8;
23924  optional int32 l1_ns = 9;
23925  optional int32 l2_ns = 10;
23926  optional int32 l3_ns = 11;
23927  optional int32 l4_ns = 12;
23928}
23929
23930/**
23931 * Logs when Iwlan responds the setup data call request.
23932 *
23933 * Logged from:
23934 *   packages/services/Iwlan/src/com/google/android/iwlan/IwlanDataService.java
23935 */
23936message IwlanSetupDataCallResultReported {
23937  enum IwlanError {
23938    NO_ERROR = 0;
23939    IKE_PROTOCOL_EXCEPTION = 1;
23940    IKE_INTERNAL_IO_EXCEPTION = 2;
23941    IKE_GENERIC_EXCEPTION = 3;
23942    EPDG_SELECTOR_SERVER_SELECTION_FAILED = 4;
23943    TUNNEL_TRANSFORM_FAILED = 5;
23944    SIM_NOT_READY_EXCEPTION = 6;
23945    NETWORK_FAILURE = 7;
23946    UNKNOWN_EXCEPTION = 8;
23947  }
23948
23949  // Setup data call apn type
23950  // See go/apntypedefinition
23951  optional int32 apn_type = 1;
23952  // Is the request for handover
23953  optional bool is_handover = 2;
23954  // ePDG server address
23955  optional string epdg_server_address = 3;
23956  // If the request type is handover, record the source network type
23957  // See
23958  // frameworks/base/telephony/java/android/telephony/TelephonyManager.java
23959  optional int32 source_rat = 4;
23960  // If the request type is handover, record the source network roaming status
23961  optional bool is_cellular_roaming = 5;
23962  // Is network connected
23963  optional bool is_network_connected = 6;
23964  // Default network transport type
23965  // See
23966  // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
23967  optional int32 transport_type = 7;
23968  // Setup result
23969  optional int32 setup_request_result = 8;
23970  // Iwlan error code if setup failed
23971  optional IwlanError iwlan_error = 9;
23972  // Data call fail cause
23973  // See
23974  // frameworks/base/telephony/java/android/telephony/DataFailCause.java
23975  optional int32 data_call_fail_cause = 10;
23976  // Setup request processing duration
23977  optional int32 processing_duration_millis = 11;
23978  // Time for doing ePDG server selection through DNS query of FQDNs
23979  optional int32 epdg_server_selection_duration_millis = 12;
23980  // Time for establishing IKE tunnel
23981  optional int32 ike_tunnel_establishment_duration_millis = 13;
23982  // Tunnel State
23983  // See
23984  // packages/services/Iwlan/src/com/google/android/iwlan/IwlanDataService.java
23985  optional int32 tunnel_state = 14;
23986  // Handover failure mode
23987  // See
23988  // frameworks/base/telephony/java/android/telephony/data/DataCallResponse.java
23989  optional int32 handover_failure_mode = 15;
23990  // Retry duration
23991  optional int32 retry_duration_millis = 16;
23992  // Iwlan error wrapped exception classname
23993  optional string iwlan_error_wrapped_classname = 17;
23994  // Iwlan error wrapped exception 1st line of stack trace
23995  optional string iwlan_error_wrapped_stack_first_frame = 18;
23996  // Error count of the same error cause
23997  optional int32 error_count_of_same_cause = 19;
23998  // Underlying network validation status
23999  optional bool is_underlying_network_validated = 20;
24000}
24001
24002/**
24003 * Logs when Iwlan reports IWLAN PDN disconnected without deactivation request.
24004 *
24005 * Logged from:
24006 *   packages/services/Iwlan/src/com/google/android/iwlan/IwlanDataService.java
24007 */
24008message IwlanPdnDisconnectedReasonReported {
24009  // Disconnection cause
24010  // See
24011  // frameworks/base/telephony/java/android/telephony/DataFailCause.java
24012  optional int32 cause = 1;
24013  // Is network connected
24014  optional bool is_network_connected = 2;
24015  // default network transport type
24016  // See
24017  // packages/services/Iwlan/src/com/google/android/iwlan/IwlanDataService.java
24018  optional int32 transport_type = 3;
24019  // Wifi signal level
24020  optional int32 wifi_signal_level = 4;
24021}
24022
24023/**
24024 * Logs the number of network count on each list of transports
24025 *
24026 * Logs from:
24027 *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
24028 */
24029message NetworkCountPerTransports {
24030    // the number of network count on each list of transports
24031    repeated NetworkCountForTransports network_count_for_transports = 1;
24032}
24033
24034/**
24035 * Logs the number of network count and transport type
24036 *
24037 * Logs from:
24038 *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
24039 */
24040message NetworkCountForTransports {
24041    // Transport types of the network
24042    optional int32 transport_types = 1;
24043
24044    // Number of networks for one list of transport types
24045    optional int32 network_count = 2;
24046}
24047
24048/**
24049 * Logs a list of networks
24050 *
24051 * Logs from:
24052 *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
24053 */
24054message NetworkList {
24055    repeated NetworkDescription network_description = 1;
24056}
24057
24058/**
24059 * Logs connection duration in seconds and list of transports
24060 *
24061 * Logs from:
24062 *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
24063 */
24064message ConnectionDurationForTransports {
24065    // Transport types of the network
24066    optional int32 transport_types = 1;
24067
24068    // Time duration that the device stays connected to the network
24069    optional int32 duration_sec = 2;
24070}
24071
24072/**
24073 * Logs connection duration on each list of transports, in seconds
24074 *
24075 * Logs from:
24076 *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
24077 */
24078message ConnectionDurationPerTransports {
24079    repeated ConnectionDurationForTransports connection_duration_for_transports = 1;
24080}
24081
24082/**
24083 * Logs network request count & request type
24084 *
24085 * Logs from:
24086 *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
24087 */
24088message RequestCountForType {
24089    // The type of network request
24090    optional android.stats.connectivity.RequestType request_type = 1;
24091
24092    // Number of network requests
24093    optional int32 request_count = 2;
24094}
24095
24096/**
24097 * Logs network request count
24098 *
24099 * Logs from:
24100 *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
24101 */
24102message NetworkRequestCount {
24103    // Network request count for request type
24104    repeated RequestCountForType request_count_for_type = 1;
24105}
24106
24107/**
24108 * Logs information about a network
24109 *
24110 * Logs from:
24111 *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
24112 */
24113message NetworkDescription {
24114    // The transport types of the network. A network may include multiple transport types.
24115    // Each transfer type is represented by a different bit, defined in
24116    // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
24117    optional int32 transport_types = 1;
24118
24119    // Indicates the network is metered, non-metered or temporarily-unmetered
24120    optional android.stats.connectivity.MeteredState metered_state = 2;
24121
24122    // Indicates the network is validated, non-validated, partial or portal
24123    optional android.stats.connectivity.ValidatedState validated_state = 3;
24124
24125    // Record the bitmask of all the policies applied to this score of network.
24126    // Each policy is represented by a different bit, defined in
24127    // packages/modules/Connectivity/service/src/com/android/server/connectivity/FullScore.java
24128    optional int64 score_policies = 4;
24129
24130    // The capabilities of the network. A network may include multiple network capabilities.
24131    // Each capability is represented by a different bit, defined in
24132    // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
24133    optional int64 capabilities = 5;
24134
24135    // Bitfield representing the network's enterprise capability identifier, defined in
24136    // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
24137    optional int32 enterprise_id = 6;
24138}
24139
24140/**
24141 * Pulls a list of NumberOfRematchesPerReason.
24142 *
24143 * Pulled from:
24144 *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
24145 */
24146message NumberOfRematchesPerReason {
24147    // Number of network rematches for each rematch reason
24148    repeated NumberOfRematchesForReason number_of_rematches_per_reason= 1;
24149}
24150
24151/**
24152 * Logs number of network rematches for rematch reason
24153 *
24154 * Logs from:
24155 *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
24156 */
24157message NumberOfRematchesForReason {
24158    // The reason of network rematch
24159    optional android.stats.connectivity.RematchReason rematch_reason = 1;
24160
24161    // Number of network rematches
24162    optional int32 rematch_count = 2;
24163};
24164
24165/**
24166 * Pulls information for connectivity stats.
24167 *
24168 * Pulled from:
24169 *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
24170 */
24171message ConnectivityStateSample {
24172    // Number of networks per list of transports
24173    optional NetworkCountPerTransports network_count_per_transports = 1
24174    [(android.os.statsd.log_mode) = MODE_BYTES];
24175
24176    // This is a list of networks with their transports and the duration
24177    optional ConnectionDurationPerTransports connection_duration_per_transports = 2
24178    [(android.os.statsd.log_mode) = MODE_BYTES];
24179
24180    // Number of requests per category
24181    optional NetworkRequestCount network_request_count  = 3
24182    [(android.os.statsd.log_mode) = MODE_BYTES];
24183
24184    // Full list of network details (slice by transport / meteredness / internet+validated)
24185    optional NetworkList networks = 4 [(android.os.statsd.log_mode) = MODE_BYTES];
24186}
24187
24188
24189/**
24190 * Pulls information for network selection rematch info.
24191 *
24192 * Pulled from:
24193 *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
24194 */
24195message NetworkSelectionRematchReasonsInfo {
24196    // Number of rematch per rematch reason
24197    optional NumberOfRematchesPerReason number_of_rematches_per_reason = 1
24198    [(android.os.statsd.log_mode) = MODE_BYTES];
24199}
24200
24201/**
24202 * Logs rematch information for the default network
24203 *
24204 * Logs from:
24205 *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
24206 */
24207message DefaultNetworkRematchInfo {
24208    // The session id comes from each reboot, this is used to correlate the statistics of the
24209    // networkselect on the same boot
24210    optional int64 session_id = 1;
24211
24212    // The information of old device default network
24213    optional NetworkDescription old_network = 2 [(android.os.statsd.log_mode) = MODE_BYTES];
24214
24215    // The information of new device default network
24216    optional NetworkDescription new_network = 3 [(android.os.statsd.log_mode) = MODE_BYTES];
24217
24218    // The reason of network rematch
24219    optional android.stats.connectivity.RematchReason rematch_reason = 4;
24220
24221    // The time duration the device kept the old network as the default in seconds
24222    optional int32 time_duration_on_old_network_sec = 5;
24223}
24224
24225/**
24226 * Logs network selection performance
24227 *
24228 * Logs from:
24229 *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
24230 */
24231message NetworkSelectionPerformance {
24232    // Number of network requests
24233    optional int32 number_of_network_requests = 1;
24234
24235    // List of networks right now
24236    // (slice by transport / meteredness / internet+validated)
24237    optional NetworkList networks = 2 [(android.os.statsd.log_mode) = MODE_BYTES];
24238
24239    // The latency of selection computed in milli-second
24240    optional int32 selection_computed_latency_milli = 3;
24241
24242    // The latency of selection applied in milli-second
24243    optional int32 selection_applied_latency_milli = 4;
24244
24245    // The latency of selection issued in milli-second
24246    optional int32 selection_issued_latency_milli = 5;
24247}
24248
24249message NetworkSliceRequestCountSample {
24250    // Bitfield representing the network's capability(e.g. NET_CAPABILITY_PRIORITIZE_LATENCY),
24251    // defined in packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
24252    optional int64 slice_id = 1;
24253
24254    // Bitfield representing the network's enterprise capability identifier
24255    // (e.g. NET_ENTERPRISE_ID_1), defined in
24256    // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
24257    optional int32 enterprise_id = 2;
24258
24259    // number of request for this slice
24260    optional int32 request_count = 3;
24261
24262    // number of apps with outstanding request(s) for this slice
24263    optional int32 distinct_app_count = 4;
24264}
24265
24266message NetworkSliceSessionEnded {
24267    // Bitfield representing the network's capability(e.g. NET_CAPABILITY_PRIORITIZE_LATENCY),
24268    // defined in packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
24269    optional int64 slice_id = 1;
24270
24271    // Bitfield representing the network's enterprise capability identifier
24272    // (e.g. NET_ENTERPRISE_ID_1), defined in
24273    // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
24274    optional int32 enterprise_id = 2;
24275
24276    // Number of bytes received at the device on this slice id
24277    optional int64 rx_bytes = 3;
24278
24279    // Number of bytes transmitted by the device on this slice id
24280    optional int64 tx_bytes = 4;
24281
24282    // Number of apps that have used this slice
24283    optional int32 number_of_apps = 5;
24284
24285    // How long(in seconds) this slice has been connected
24286    optional int32 slice_connection_duration_sec = 6;
24287}
24288
24289message NetworkSliceDailyDataUsageReported {
24290    // Bitfield representing the network's capability(e.g. NET_CAPABILITY_PRIORITIZE_LATENCY),
24291    // defined in packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
24292    optional int64 slice_id = 1;
24293
24294    // Bitfield representing the network's enterprise capability identifier
24295    // (e.g. NET_ENTERPRISE_ID_1), defined in
24296    // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
24297    optional int32 enterprise_id = 2;
24298
24299    // Number of bytes received at the device on this slice id
24300    optional int64 rx_bytes = 3;
24301
24302    // Number of bytes transmitted by the device on this slice id
24303    optional int64 tx_bytes = 4;
24304
24305    // Number of apps that have used this slice
24306    optional int32 number_of_apps = 5;
24307
24308    // How long(in seconds) this slice has been connected
24309    optional int32 slice_connection_duration_sec = 6;
24310}
24311
24312/**
24313 * Logs the Brightness Configuration pushed by the long term model. The Brightness Configuration is
24314 * expressed as a curve where each point is a pair of ambient light (lux) and the corresponding
24315 * screen brightness (nits).
24316 *
24317 * Logged from:
24318 *    frameworks/base/services/core/java/com/android/server/display/DisplayManagerService.java
24319 */
24320message BrightnessConfigurationUpdated {
24321    // Array of ambient light values (in lux) to define the configuration.
24322    repeated float lux = 1;
24323    // Array of screen brightness values (in nits) corresponding to the lux
24324    // values above.
24325    repeated float nits = 2;
24326    // Physical display id, with format $ADAPTER_PREFIX:$ID, in this case
24327    // "local:$PHYSICAL_ID".
24328    optional string physical_display_id = 3;
24329}
24330
24331/**
24332 * Logs data when wear media output switcher is launched.
24333 *
24334 * Logged from:
24335 * package: vendor/google_clockwork/packages/Media
24336 */
24337message WearMediaOutputSwitcherLaunched {
24338    // Name of the media app package from where Output Switcher got triggered.
24339    optional string triggering_package_name = 1;
24340
24341    // The operation type for invoking the OutputSwitcher
24342    optional com.google.android.wearable.media.routing.OpType op_type = 2;
24343
24344    // The result of OutputSwticher launch.
24345    optional com.google.android.wearable.media.routing.LaunchResult result = 3;
24346}
24347
24348/**
24349 * Logs data when wear media output switcher is finished.
24350 *
24351 * Logged from:
24352 * package: vendor/google_clockwork/packages/Media
24353 */
24354message WearMediaOutputSwitcherFinished {
24355    optional bool user_did_some_activity = 1;
24356    optional bool is_device_connected = 2;
24357}
24358
24359/**
24360 * Logs data when wear media output switcher operation is INITIATED
24361 * or COMPLETED.
24362 *
24363 * Logged from:
24364 * package: vendor/google_clockwork/packages/Media
24365 */
24366message WearMediaOutputSwitcherConnectionReported {
24367    // Type of the medium through which media is played
24368    optional com.google.android.wearable.media.routing.MediumType source = 1;
24369    optional com.google.android.wearable.media.routing.MediumType target  = 2;
24370
24371    // Reason for the connection reported
24372    optional com.google.android.wearable.media.routing.ConnectionReportReason reason = 3;
24373
24374    // Current status of switching the media.
24375    optional com.google.android.wearable.media.routing.ConnectionState state =4;
24376
24377    // Type of target device.
24378    optional com.google.android.wearable.media.routing.MediaDeviceType target_device_type = 5;
24379
24380    // The operation type for invoking the OutputSwitcher
24381    optional com.google.android.wearable.media.routing.OpType op_type = 6;
24382
24383    optional bool is_retry = 7;
24384
24385    // For differentiating if the bluetooth device is connected from already
24386    // paired device list or from the bluetooth settings flow.
24387    optional bool is_already_paired = 8;
24388}
24389
24390/**
24391 * Logs data when wear media output switcher starts scanning
24392 * for already paired devices.
24393 *
24394 * Logged from:
24395 * package: vendor/google_clockwork/packages/Media
24396 */
24397message WearMediaOutputSwitcherDeviceScanTriggered {
24398    // The current status of the scanned device.
24399    optional com.google.android.wearable.media.routing.ScanState scan_state = 1;
24400
24401    // Name of the media app package from where Output Switcher got triggered.
24402    optional string triggering_package_name = 2;
24403
24404    optional com.google.android.wearable.media.routing.OpType op_type = 3;
24405}
24406
24407/**
24408 * Logs the latency for scanning the first device.
24409 *
24410 * Logged from:
24411 * package: vendor/google_clockwork/packages/Media
24412 */
24413message WearMediaOutputSwitcherFirstDeviceScanLatency {
24414    // The latency of scanning the first device
24415    optional int32 latency_in_millis = 1;
24416}
24417
24418/**
24419 * Logs the latency for scanning all devices.
24420 *
24421 * Logged from:
24422 * package: vendor/google_clockwork/packages/Media
24423 */
24424message WearMediaOutputSwitcherAllDevicesScanLatency {
24425    // The latency of scanning all available devices in milli-second
24426    optional int32 latency_in_millis = 1;
24427
24428    // Type of target device.
24429    optional com.google.android.wearable.media.routing.MediaDeviceType target_device_type = 2;
24430}
24431
24432/**
24433 * Logs the latency in connecting to an already paired device.
24434 *
24435 * Logged from:
24436 * package: vendor/google_clockwork/packages/Media
24437 */
24438message WearMediaOutputSwitcherConnectDeviceLatency {
24439    // The latency of connecting to an already paired device in milli-second.
24440    optional int32 latency_in_millis = 1;
24441
24442    // Type of target medium.
24443    optional com.google.android.wearable.media.routing.MediumType target_device_medium_type = 2;
24444
24445    // Type of target device.
24446    optional com.google.android.wearable.media.routing.MediaDeviceType target_device_type = 3;
24447}
24448
24449/**
24450 * Logs package manager snapshot performance.
24451 *
24452 * Logs from:
24453 *   frameworks/base/services/core/java/com/android/server/pm/SnapshotStatistics.java
24454 */
24455message PackageManagerSnapshotReported {
24456    // The histogram of snapshot rebuild latency in a period. Each bucket
24457    // represents a range of rebuild latency such as less than 1 ms, and the
24458    // value of the bucket is the number of snapshots in this range.
24459    repeated int32 rebuild_latency_buckets= 1;
24460
24461    // The histogram of the snapshot usage in a period. Each bucket
24462    // represents a range of snapshot uses such as less than 1, and the
24463    // value is the number of snapshots in this range.
24464    repeated int32 reuse_count_buckets = 2;
24465
24466    // The maximum rebuild latency in a period.
24467    optional int64 max_rebuild_latency_us = 3;
24468
24469    // The maximum number of snapshot usage in a period.
24470    optional int32 max_reuse_count = 4;
24471
24472    // The average rebuild latency for each snapshot in a period.
24473    optional int64 rebuild_latency_us_avg = 5;
24474
24475    // The average snapshot usage for each snapshot in a period.
24476    optional int32 reuse_count_avg = 6;
24477
24478    // The number of packages on the device.
24479    optional int32 packages_count = 7;
24480}
24481
24482/**
24483 * Logs package manager apps filter cache built performance.
24484 *
24485 * Logs from:
24486 *   frameworks/base/services/core/java/com/android/server/pm/AppsFilterImpl.java
24487 */
24488message PackageManagerAppsFilterCacheBuildReported {
24489    // An event id to indicate the type of the cache building.
24490    enum Event {
24491        UNSPECIFIED = 0;
24492        BOOT = 1;
24493        USER_CREATED = 2;
24494        USER_DELETED = 3;
24495    }
24496    optional Event event_type = 1;
24497
24498    // The time to build the cache in microseconds.
24499    optional int64 build_cache_latency_us = 2;
24500
24501    // The number of users on the device.
24502    optional int32 user_count = 3;
24503
24504    // The number of packages on the device.
24505    optional int32 packages_count = 4;
24506
24507    // The size of the cache.
24508    optional int32 cache_size_bytes = 5;
24509}
24510
24511/**
24512 * Logs package manager apps filter cache updated performance.
24513 *
24514 * Logs from:
24515 *   frameworks/base/services/core/java/com/android/server/pm/AppsFilterImpl.java
24516 */
24517message PackageManagerAppsFilterCacheUpdateReported {
24518    // An event id to indicate the type of cache updating.
24519    enum Event {
24520        UNSPECIFIED = 0;
24521        PACKAGE_ADDED = 1;
24522        PACKAGE_DELETED = 2;
24523        PACKAGE_REPLACED = 3;
24524        COMPAT_CHANGED = 4;
24525    }
24526    optional Event event_type = 1;
24527
24528    // The package's uid.
24529    optional int32 uid = 2 [(is_uid) = true];
24530
24531    // The time to update the cache in microseconds.
24532    optional int64 update_cache_latency_us = 3;
24533
24534    // The number of users on the device.
24535    optional int32 user_count = 4;
24536
24537    // The number of packages on the device.
24538    optional int32 packages_count = 5;
24539
24540    // The size of the cache.
24541    optional int32 cache_size_bytes = 6;
24542}
24543
24544/**
24545* Logged during the watch face editing session in Wear Services
24546* This atom will log the duration with SessionStateEnum#END.
24547*
24548* Logged from :
24549* com/google/wear/services/watchfaces/editing/api/WatchFaceEditingApiImpl.java
24550*/
24551message WsWatchFaceEdited {
24552   // Depicts the state of the session eg: START/END/ABORT.
24553   optional android.app.wearservices.SessionStateEnum session_state = 1;
24554
24555   // Session duration for watch face editing.
24556   optional int32 session_duration_millis = 2;
24557
24558   // Enum to depict the source of the request. Values (PHONE, WATCH)
24559   optional android.app.wearservices.RequestSource request_source = 3;
24560
24561   // Component package for watch face.
24562   optional int32 component_package_uid = 4 [(is_uid) = true];
24563}
24564
24565/**
24566* Logged for watch face favorite feature in Wear Services.
24567*
24568* Logged from :
24569* com/google/wear/services/watchfaces/api/WatchFacesApiImpl.java
24570*/
24571message WsWatchFaceFavouriteActionReported {
24572   // Component package for watch face.
24573   optional int32 component_package_uid = 1 [(is_uid) = true];
24574
24575   // Depicts the action for wf favorites eg: Add/Remove.
24576   optional android.app.wearservices.ActionEnum favorite_action = 2;
24577
24578   // Enum to depict the source of the request. Values (PHONE, WATCH)
24579   optional android.app.wearservices.RequestSource request_source = 3;
24580}
24581
24582/**
24583* Logged for the watch face set feature in Wear Services.
24584*
24585* Logged from :
24586* com/google/wear/services/watchfaces/api/WatchFacesApiImpl.java
24587*/
24588message WsWatchFaceSetActionReported {
24589   // Component package for watch face.
24590   optional int32 component_package_uid = 1 [(is_uid) = true];
24591
24592  // Result for WF, whether it resulted in SAME/FAVORITE/FALLBACK
24593  optional android.app.wearservices.SetResultEnum wf_set_result = 2;
24594
24595  // Enum to depict the source of the request. Values (PHONE, WATCH)
24596   optional android.app.wearservices.RequestSource request_source = 3;
24597}
24598
24599/**
24600* Logged when tile list is modified (go/wear-dd-wearservices-telemetry)
24601*/
24602message WsTileListChanged {
24603    enum Event {
24604        EVENT_UNKNOWN = 0;
24605        TILE_ADDED = 1;
24606        TILE_REMOVED = 2;
24607        TILE_UPDATED = 3;  // go/wear-dd-tiles-oem-metadata
24608    }
24609    // Component package for the tile that is being changed.
24610    optional int32 component_package_uid = 1 [(is_uid) = true];
24611
24612    // Class name for the tile.
24613    optional string component_class_name = 2;
24614
24615    // The event in result of which tile list has changed.
24616    optional Event event = 3;
24617
24618    // Where a tile has been changed from. When changed on the companion equals
24619    // to the phone source, otherwise watch source if it's changed from the watch.
24620    optional android.app.wearservices.RequestSource request_source = 4;
24621
24622    // The package name of the app where the tile change has originated from.
24623    // Null for cases where the tile change originated from paired phone
24624    // where request_source would be RequestSource.PHONE.
24625    optional string origin_package_name = 5;
24626}
24627
24628/**
24629* A snapshot of all visible tiles in the order they appear on the watch.
24630* (go/wear-dd-wearservices-telemetry)
24631*/
24632message WsTileSnapshot {
24633    // Component package name for the tiles.
24634    repeated string component_package_name = 1;
24635
24636    // Class name for the tiles.
24637    repeated string component_class_name = 2;
24638
24639    // The size in bytes of the vendor-specific metadata associated with this
24640    // tile.  It will be zero (or not present) if no vendor-specific metadata is
24641    // associated with the tile or the associated metadata is empty.
24642    //
24643    // See go/wear-dd-tiles-oem-metadata for details.
24644    repeated int32 vendor_metadata_size_bytes = 3;
24645}
24646/*
24647* Logs calls to getType of a contentProvider, where the caller has potentially no access to
24648* the provider.
24649*
24650* Logs from :
24651* frameworks/base/services/core/java/com/android/server/am/ContentProviderHelper.java
24652* frameworks/base/core/java/android/content/ContentProvider.java
24653*/
24654message GetTypeAccessedWithoutPermission{
24655  // Indicator of the type of permission failure
24656  enum FailureType{
24657      UNSPECIFIED = 0;
24658      AM_FRAMEWORK_PERMISSION = 1;
24659      AM_CHECK_URI_PERMISSION = 2;
24660      AM_ERROR = 3;
24661      PROVIDER_FRAMEWORK_PERMISSION = 4;
24662      PROVIDER_CHECK_URI_PERMISSION = 5;
24663      PROVIDER_ERROR = 6;
24664  }
24665  optional FailureType location = 1;
24666  // Name of the caller package
24667  optional int32 calling_uid = 2 [(is_uid) = true];
24668  // Name of the provider (authority) which is being accessed
24669  optional string provider = 3;
24670  // Type of the uri returned
24671  optional string type = 4;
24672}
24673
24674/** Logged when a complication is changed on a watch face. Both
24675  data for complication that is being placed in the complication
24676  slot (we call is new here) and for complication that is being
24677  replaced (we call is old) is reported.
24678*/
24679message WsWatchFaceComplicationSetChanged {
24680  // Watch face package uid
24681  optional int32 watch_face_package_uid = 1 [(is_uid) = true];
24682
24683  // Complication component package uid for complication that is being replaced.
24684  // Equals to -1 if new complication is placed on previously empty slot.
24685  optional int32 old_complication_component_package_uid = 2 [(is_uid) = true];
24686
24687  // Complication component class name for complication that is being replaced.
24688  // Equals to empty string if new complication is placed on previously empty slot.
24689  optional string old_complication_component_class_name = 3;
24690
24691  // Complication component package uid for new complication.
24692  // Equals to -1 if complication is removed from complication slot.
24693  optional int32 new_complication_component_package_uid = 4 [(is_uid) = true];
24694
24695  // Complication component class name for new complication.
24696  // Equals to empty string if complication is removed from complication slot.
24697  optional string new_complication_component_class_name = 5;
24698
24699  // Where a complication has been changed from. When changed on the companion equals
24700  // to SOURCE_PHONE, otherwise if it's changed from the watch SOURCE_WATCH.
24701  optional android.app.wearservices.RequestSource request_source = 6;
24702
24703  // Old complication type.
24704  optional int32 old_complication_type = 7;
24705
24706  // New complication type.
24707  optional int32 new_complication_type = 8;
24708}
24709
24710/** Snapshot of all active complications on the current watch face.
24711*   (go/wear-dd-wearservices-telemetry)
24712*/
24713message WsActiveWatchFaceComplicationSetSnapshot {
24714  // Complication package name.
24715  repeated string complication_component_package_name = 1;
24716
24717  // Complication component class name.
24718  repeated string complication_component_class_name = 2;
24719
24720  // Complication type.
24721  repeated int32 complication_type = 4;
24722
24723  // Active watch face package uid.
24724  optional int32 watch_face_package_uid = 3 [(is_uid) = true];
24725
24726  /* Active watch face class name. This will be
24727  null for Declarative WF packages, as these packages have only one WF. */
24728  optional string watch_face_class_name = 5;
24729}
24730
24731message UnsafeIntentEventReported {
24732    enum EventType {
24733        UNKNOWN = 0;
24734        // When a component is matched with a null action.
24735        NULL_ACTION_MATCH = 1;
24736        // When a non-exported internal component is matched.
24737        INTERNAL_NON_EXPORTED_COMPONENT_MATCH = 2;
24738        // When an explicit intent does not match
24739        // an external component intent filter.
24740        EXPLICIT_INTENT_FILTER_UNMATCH = 3;
24741        // When a mutable pending intent for an implicit intent is retrieved
24742        NEW_MUTABLE_IMPLICIT_PENDING_INTENT_RETRIEVED = 4;
24743    }
24744    // Type of matching event.
24745    optional EventType event_type = 1;
24746    // The calling UID.
24747    optional int32 calling_uid = 2 [(is_uid) = true];
24748    // The component name of the intent.
24749    optional string component_name = 3;
24750    // The package name of the intent.
24751    optional string package_name = 4;
24752    // The action of the intent.
24753    optional string action = 5;
24754    // List of categories of the intent.
24755    repeated string categories = 6;
24756    // Data type of the intent.
24757    optional string data_type = 7;
24758    // Data scheme of the intent.
24759    optional string data_scheme = 8;
24760    // Is the unsafe intent event blocked by the system.
24761    optional bool is_blocked = 9;
24762}
24763
24764/**
24765 * Snapshot of all favorite watch faces from the watch.
24766 */
24767message WsFavouriteWatchFaceListSnapshot {
24768  repeated string watch_face_component_name = 1;
24769}
24770