• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2018 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
19// C++ namespace: android::hardware::google::pixel::PixelAtoms
20package android.hardware.google.pixel.PixelAtoms;
21
22option optimize_for = LITE_RUNTIME;
23
24option java_package = "android.hardware.google.pixel";
25option java_outer_classname = "PixelAtoms";
26
27import "frameworks/proto_logging/stats/atom_field_options.proto";
28import "frameworks/proto_logging/stats/enums/app_shared/app_enums.proto";
29
30/*
31 * Please note that the following features are not currently supported by
32 * the IStats->reportVendorAtom implementation:
33 *   - types outside of int, long, float, bool and string (ex. uint)
34 *   - submessages within an atom
35 *   - field # 1 - this will be occupied by the vendor namespace
36 */
37
38/* Allocated atom IDs. */
39message Atom {
40    oneof pushed {
41      // AOSP atom ID range starts at 105000
42      ChargeStats charge_stats = 105000;
43      VoltageTierStats voltage_tier_stats = 105001;
44      BatteryCapacity battery_capacity = 105002;
45      StorageUfsHealth storage_ufs_health = 105003;
46      F2fsStatsInfo f2fs_stats = 105004;
47      ZramMmStat zram_mm_stat = 105005;
48      ZramBdStat zram_bd_stat = 105006;
49      BootStatsInfo boot_stats = 105007;
50      // 105008 - 105009 is available.
51      BatteryCapacityFG fg_capacity = 105010;
52      PdVidPid pd_vid_pid = 105011;
53      BatteryEEPROM battery_eeprom = 105012;
54      VendorSpeakerImpedance vendor_speaker_impedance = 105013; // moved from atoms.proto
55      StorageUfsResetCount ufs_reset_count = 105014;
56      PixelMmMetricsPerHour pixel_mm_metrics_per_hour = 105015;
57      PixelMmMetricsPerDay pixel_mm_metrics_per_day = 105016;
58      F2fsCompressionInfo f2fs_compression_info = 105017;
59      VendorChargeCycles vendor_charge_cycles = 105018; // moved from atoms.proto
60      VendorHardwareFailed vendor_hardware_failed = 105019 [(android.os.statsd.module) = "pixelaudio"]; // moved from atoms.proto
61      VendorSlowIo vendor_slow_io = 105020; // moved from atoms.proto
62      VendorSpeechDspStat vendor_speech_dsp_stat = 105021; // moved from atoms.proto
63      VendorPhysicalDropDetected vendor_physical_drop_detected =
64                105022 [(android.os.statsd.module) = "pixelstats"];     // moved from atoms.proto
65      VendorUsbPortOverheat vendor_usb_port_overheat = 105023; // moved from atoms.proto
66      CmaStatus cma_status = 105024;
67      CmaStatusExt cma_status_ext = 105025;
68      VendorBatteryHealthSnapshot vendor_battery_health_snapshot =
69                105026 [(android.os.statsd.module) = "pixelhealth"]; // moved from atoms.proto
70      VendorBatteryCausedShutdown vendor_battery_caused_shutdown =
71                105027 [(android.os.statsd.module) = "pixelhealth"]; // moved from atoms.proto
72      F2fsGcSegmentInfo f2fs_gc_segment_info = 105028;
73      PowerMitigationStats mitigation_stats = 105029; // moved from atoms.proto
74
75      CitadelVersion citadel_version = 100018; // moved from vendor proprietary
76      CitadelEvent citadel_event = 100019;  // moved from vendor proprietary
77      VendorSpeakerStatsReported vendor_speaker_stats_reported = 105030 [(android.os.statsd.module) = "pixelaudio"];
78
79      ChreHalNanoappLoadFailed chre_hal_nanoapp_load_failed =
80                105031 [(android.os.statsd.module) = "chre"];
81      ChrePalOpenFailed chre_pal_open_failed = 105032 [(android.os.statsd.module) = "chre"];
82      ChreApiErrorCodeDistributionTaken chre_api_error_code_distribution_taken =
83                105033 [(android.os.statsd.module) = "chre"];
84      ChreDynamicMemorySnapshotReported chre_dynamic_memory_snapshot_reported =
85                105034 [(android.os.statsd.module) = "chre"];
86      ChreEventQueueSnapshotReported chre_event_queue_snapshot_reported =
87                105035 [(android.os.statsd.module) = "chre"];
88      ChreApWakeUpOccurred chre_ap_wake_up_occurred = 105036 [(android.os.statsd.module) = "chre"];
89
90      BatteryHealthStatus battery_health_status = 105037;
91      BatteryHealthUsage battery_health_usage = 105038;
92      F2fsSmartIdleMaintEnabledStateChanged f2fs_smart_idle_maint_enabled_state_changed = 105039;
93      BlockStatsReported block_stats_reported = 105040;
94      VendorAudioHardwareStatsReported vendor_audio_hardware_stats_reported = 105041 [(android.os.statsd.module) = "pixelaudio"];
95
96      ThermalDfsStats thermal_dfs_stats = 105042;
97      VendorLongIRQStatsReported vendor_long_irq_stats_reported = 105043;
98      VendorResumeLatencyStats vendor_resume_latency_stats = 105044;
99      VendorTempResidencyStats vendor_temp_residency_stats = 105045;
100      BrownoutDetected brownout_detected = 105046;
101      PcieLinkStatsReported pcie_link_stats = 105047;
102      VendorSensorCoolingDeviceStats vendor_sensor_cooling_device_stats = 105048;
103
104      VibratorPlaycountReported vibrator_playcount_reported = 105049 [(android.os.statsd.module) = "vibrator"];
105      VibratorLatencyReported vibrator_latency_reported = 105050 [(android.os.statsd.module) = "vibrator"];
106      VibratorErrorsReported vibrator_errors_reported = 105051 [(android.os.statsd.module) = "vibrator"];
107      F2fsAtomicWriteInfo f2fs_atomic_write_info = 105052;
108      PartitionsUsedSpaceReported partition_used_space_reported = 105053;
109      PowerMitigationDurationCounts mitigation_duration = 105054; // moved from atoms.proto
110      DisplayPanelErrorStats display_panel_error_stats = 105055;
111      VendorAudioPdmStatsReported vendor_audio_pdm_stats_reported = 105056;
112      VendorAudioThirdPartyEffectStatsReported vendor_audio_third_party_effect_stats_reported = 105057 [(android.os.statsd.module) = "pixelaudio"];
113      VendorAudioAdaptedInfoStatsReported vendor_audio_adapted_info_stats_reported = 105058;
114      GpuEvent gpu_event = 105059;
115      VendorAudioPcmStatsReported vendor_audio_pcm_stats_reported = 105060 [(android.os.statsd.module) = "pixelaudio"];
116      VendorUsbDataSessionEvent vendor_usb_data_session_event = 105061;
117      ThermalSensorAbnormalityDetected thermal_sensor_abnormality_detected = 105062;
118      VendorAudioOffloadedEffectStatsReported vendor_audio_offloaded_effect_stats_reported = 105063;
119      VendorAudioBtMediaStatsReported vendor_audio_bt_media_stats_reported = 105064 [(android.os.statsd.module) = "pixelaudio"];
120      PixelImpulseUsageReported pixel_impulse_usage_reported = 105065;
121      DisplayPortErrorStats display_port_error_stats = 105066;
122      HDCPAuthTypeStats hdcp_auth_type_stats = 105067;
123      DisplayPortUsage display_port_usage = 105068;
124      FuelGaugeAbnormalityReported fuel_gauge_abnormality_reported = 105069;
125      MmProcessUsageByOomGroupSnapshot mm_process_usage_by_oom_group_snapshot = 105070;
126      MmGcmaSnapshot mm_gcma_snapshot = 105071;
127      MmGcmaStats mm_gcma_stats = 105072;
128      VendorAudioUsbDeviceCapabilityStats vendor_audio_usb_device_capability_stats = 105073 [(android.os.statsd.module) = "pixelaudio"];
129      BatteryTimeToFullStatsReported battery_time_to_full_stats_reported = 105074;
130      VendorAudioDirectUsbAccessUsageStats vendor_audio_direct_usb_access_usage_stats = 105075 [(android.os.statsd.module) = "pixelaudio"];
131      VendorAudioUsbConfigStats vendor_audio_usb_config_stats = 105076 [(android.os.statsd.module) = "pixelaudio"];
132      GpuFrequencyTimeInStatePerUidReported gpu_frequency_time_in_state_per_uid_reported = 105077;
133      GpuFrozenAppsMemoryPerUid gpu_frozen_apps_memory_per_uid = 105078;
134      RepairModeEntered repair_mode_entered = 105079;
135      RepairModeExited repair_mode_exited = 105080;
136      RepairModeLowStorageReported repair_mode_low_storage_reported = 105081;
137      RepairModeErrorReported repair_mode_error_reported = 105082;
138      DisplayPortDSCSupportCountStatsReported display_port_dsc_support_stats = 105083;
139      DisplayPortMaxResolutionCountStatsReported display_port_max_resolution_stats = 105084;
140      VendorAudioDspRecordUsageStatsReported vendor_audio_dsp_record_usage_stats_reported = 105085 [(android.os.statsd.module) = "pixelaudio"];
141      VendorAudioUsbConnectionState vendor_audio_usb_connection_state = 105086 [(android.os.statsd.module) = "pixelaudio"];
142      VendorAudioSpeakerPowerStatsReported vendor_audio_speaker_power_stats_reported = 105087 [(android.os.statsd.module) = "pixelaudio"];
143      DmVerityPartitionReadAmountReported dm_verity_partition_read_amount_reported = 105088;
144      WaterEventReported water_event_reported = 105089;
145      MediaPlaybackUsageStatsReported media_playback_usage_stats_reported = 105090 [(android.os.statsd.module) = "pixelaudio"];
146      CallUsageStatsReported call_usage_stats_reported = 105091 [(android.os.statsd.module) = "pixelaudio"];
147      BatteryFirmwareUpdateReported battery_firmware_update_reported = 105092;
148      PowerFifoDump power_fifo_dump = 105093 [(android.os.statsd.module) = "pixelpower"];
149      GnssTtffReported gnss_ttff_reported = 105094 [(android.os.statsd.module) = "pixelgnss"];
150    }
151    // AOSP atom ID range ends at 109999
152    reserved 109997; // reserved for VtsVendorAtomJavaTest test atom
153    reserved 109998; // reserved for VtsVendorAtomJavaTest test atom
154    reserved 109999; // reserved for VtsVendorAtomJavaTest test atom
155}
156
157/* Supported reverse domain names. */
158message ReverseDomainNames {
159    optional string pixel = 1 [default = "com.google.pixel"];
160}
161
162/* A message containing detailed statistics and debug information about a charge session. */
163message ChargeStats {
164    /* Charge Adapter stats. */
165    enum AdapterType {
166        ADAPTER_TYPE_UNKNOWN = 0;
167        ADAPTER_TYPE_USB = 1;
168        ADAPTER_TYPE_USB_SDP = 2;
169        ADAPTER_TYPE_USB_DCP = 3;
170        ADAPTER_TYPE_USB_CDP = 4;
171        ADAPTER_TYPE_USB_ACA = 5;
172        ADAPTER_TYPE_USB_C = 6;
173        ADAPTER_TYPE_USB_PD = 7;
174        ADAPTER_TYPE_USB_PD_DRP = 8;
175        ADAPTER_TYPE_USB_PD_PPS = 9;
176        ADAPTER_TYPE_USB_PD_BRICKID = 10;
177        ADAPTER_TYPE_HVDCP = 11;
178        ADAPTER_TYPE_HVDCP3 = 12;
179        ADAPTER_TYPE_FLOAT = 13;
180        ADAPTER_TYPE_WLC  = 14;
181        ADAPTER_TYPE_WLC_EPP = 15;
182        ADAPTER_TYPE_WLC_SPP = 16;
183        ADAPTER_TYPE_GPP = 17;
184        ADAPTER_TYPE_10W = 18;
185        ADAPTER_TYPE_L7 = 19;
186        ADAPTER_TYPE_DL = 20;
187        ADAPTER_TYPE_WPC_EPP = 21;
188        ADAPTER_TYPE_WPC_GPP = 22;
189        ADAPTER_TYPE_WPC_10W = 23;
190        ADAPTER_TYPE_WPC_BPP = 24;
191        ADAPTER_TYPE_WPC_L7 = 25;
192        ADAPTER_TYPE_EXT = 26;
193        ADAPTER_TYPE_EXT1 = 27;
194        ADAPTER_TYPE_EXT2 = 28;
195        ADAPTER_TYPE_EXT_UNKNOWN = 29;
196        ADAPTER_TYPE_USB_UNKNOWN = 30;
197        ADAPTER_TYPE_WLC_UNKNOWN = 31;
198        ADAPTER_TYPE_WPC_MPP = 32;
199        ADAPTER_TYPE_WPC_MPP25 = 33;
200    }
201    optional string reverse_domain_name = 1;
202    /* Type of charge adapter, enumerated above. */
203    optional AdapterType adapter_type = 2;
204    /* Max negotiated voltage by charge adapter, in mV. */
205    optional int32 adapter_voltage = 3;
206    /* Max negotiated current by charge adapter current, in mA. */
207    optional int32 adapter_amperage = 4;
208
209    /* Stats at beginning of charge session. */
210    /* System State of Charge, in percent. */
211    optional int32 ssoc_in = 5;
212    /* Voltage in mV. */
213    optional int32 voltage_in = 6;
214
215    /* Stats at end of charge session. */
216    /* System State of Charge, in percent. */
217    optional int32 ssoc_out = 7;
218    /* Voltage in mV. */
219    optional int32 voltage_out = 8;
220
221    /**
222     * These values are  meant to represent status of the charging device, used
223     * to validate the charging algorithm and explain charging performances.
224     * Examples of the content of the register:
225     * - APDO, PDO (power capabilities of the device, eg. 5V3A, 9V2A, 20V2A) for wired charging
226     * - Wireless charging MFG code. This is the value of a register of the WLC integrated
227     *   circuit to identify the vendor and type of WLC pad
228     * - Receiver operating frequency
229     * - Register status
230     */
231    optional int32 adapter_capabilities0 = 9;
232    optional int32 adapter_capabilities1 = 10;
233    optional int32 adapter_capabilities2 = 11;
234    optional int32 adapter_capabilities3 = 12;
235    optional int32 adapter_capabilities4 = 13;
236
237    /**
238     * These are values which reports the state of the wireless receiver, which will help in
239     * debugging charging issues and alternate configurations.
240     */
241    optional int32 receiver_state0 = 14;
242    optional int32 receiver_state1 = 15;
243
244    /* AACR feature to record capacity */
245    optional int32 charge_capacity = 16;
246
247    /* Charging Speed Indicator(CSI) status and type */
248    optional int32 csi_aggregate_status = 17;
249    optional int32 csi_aggregate_type = 18;
250
251    optional int32 aacr_algo = 19;
252    optional int32 aacp_version = 20;
253    optional int32 aacc = 21;
254}
255
256/* A message containing stats from each charge voltage tier. */
257message VoltageTierStats {
258    optional string reverse_domain_name = 1;
259    /* Voltage tier number, custom to implementation, should be <= 3. */
260    optional int32 voltage_tier = 2;
261
262    /* Stats when entering voltage tier. */
263    /* State of charge, in percent. */
264    optional float soc_in = 3;
265    /* Coulomb count, in mAh. */
266    optional int32 cc_in = 4;
267    /* Battery temperature, in deciC. */
268    optional int32 temp_in = 5;
269
270    /* Time spent at various charge speeds, in seconds. */
271    optional int32 time_fast_secs = 6;
272    optional int32 time_taper_secs = 7;
273    optional int32 time_other_secs = 8;
274
275    /* Battery temperature stats, in deciC. */
276    optional int32 temp_min = 9;
277    optional int32 temp_avg = 10;
278    optional int32 temp_max = 11;
279
280    /* Battery current stats, in mA. */
281    optional int32 ibatt_min = 12;
282    optional int32 ibatt_avg = 13;
283    optional int32 ibatt_max = 14;
284
285    /* Input current limit stats, in mA. */
286    optional int32 icl_min = 15;
287    optional int32 icl_avg = 16;
288    optional int32 icl_max = 17;
289
290    /**
291     * Efficiency number, receiver operating frequency in kHz for wireless charging
292     * (alignment)
293     */
294    optional int32 charging_operating_point = 18;
295    /* The minimum power out of the adapter at the given charging tier */
296    optional int32 min_adapter_power_out = 19;
297    /* The time-averaged power out of the adapter at the given charging tier */
298    optional int32 time_avg_adapter_power_out = 20;
299    /* The maximum power out of the adapter at the given charging tier */
300    optional int32 max_adapter_power_out = 21;
301}
302
303/* A message containing an alternate proprietary full battery capacity estimate. */
304message BatteryCapacity {
305    optional string reverse_domain_name = 1;
306    /* Sum of the change in coulomb count. */
307    optional int32 delta_cc_sum = 2;
308    /* Sum of the change in state of charge (battery level). */
309    optional int32 delta_vfsoc_sum = 3;
310}
311
312/* A message containing health values of UFS */
313message StorageUfsHealth {
314    optional string reverse_domain_name = 1;
315    /* The value of lifetimeA for UFS health */
316    optional int32 lifetime_a = 2;
317    /* The value of lifetimeB for UFS health */
318    optional int32 lifetime_b = 3;
319    /* The value of lifetimeC for UFS health */
320    optional int32 lifetime_c = 4;
321}
322
323/* A message containing filesystem stats of F2FS */
324message F2fsStatsInfo {
325    optional string reverse_domain_name = 1;
326    /* The value of dirty segments of f2fs */
327    optional int32 dirty_segments = 2;
328    /* The value of free segments of f2fs */
329    optional int32 free_segments = 3;
330    /* The times of checkpoint function called in foreground*/
331    optional int32 cp_calls_fg = 4;
332    /* The times of checkpoint function called in background */
333    optional int32 cp_calls_bg = 5;
334    /* The times of garbage collection function called in foreground */
335    optional int32 gc_calls_fg = 6;
336    /* The times of garbage collection function called in background */
337    optional int32 gc_calls_bg = 7;
338    /* The amount of blocks been moved by garbage collection in foreground */
339    optional int32 moved_blocks_fg = 8;
340    /* The amount of blocks been moved by garbage collection in background */
341    optional int32 moved_blocks_bg = 9;
342    /* The average of how many valid blocks is in a segment */
343    optional int32 valid_blocks = 10;
344}
345
346message ZramMmStat {
347    optional string reverse_domain_name = 1;
348    /* The value of original memory size */
349    optional int64 orig_data_size = 2;
350    /* The value of compressed memory size */
351    optional int64 compr_data_size = 3;
352    /* The value of consumed memory size to store compressed memory */
353    optional int64 mem_used_total = 4;
354    /* The value of number of page filled with same elements data */
355    optional int64 same_pages = 5;
356    /* The value of number of incompressible page */
357    optional int64 huge_pages = 6;
358    /* The value of number of incompressible pages since boot */
359    optional int64 huge_pages_since_boot = 7;
360}
361
362message ZramBdStat {
363    optional string reverse_domain_name = 1;
364    /* the number of pages in backing device */
365    optional int64 bd_count = 2;
366    /* The number of pages readed from backing device */
367    optional int64 bd_reads = 3;
368    /* The number of pages written to backing device */
369    optional int64 bd_writes = 4;
370}
371
372/* A message containing boot times */
373message BootStatsInfo {
374    optional string reverse_domain_name = 1;
375    /* The F2FS fsck time in secs */
376    optional int32 fsck_time_sec = 2;
377    /* The F2FS mounted time in secs */
378    optional int32 mounted_time_sec = 3;
379    /* The F2FS checkpoint=disable time in secs */
380    optional int32 checkpoint_time_sec = 4;
381}
382
383/* A message containing wireless charging health info. */
384message WirelessChargingStats {
385    /* Captures if a google charger used when start wireless charging */
386    enum ChargerVendor {
387        VENDOR_UNKNOWN = 0;
388        VENDOR_GOOGLE = 1;
389    }
390
391    optional string reverse_domain_name = 1;
392    optional ChargerVendor charger_vendor = 2;
393}
394
395/* Current device Orientation */
396message DeviceOrientation {
397    enum Orientation {
398        ORIENTATION_UNKNOWN = 0;
399        ORIENTATION_0 = 1;
400        ORIENTATION_90 = 2;
401        ORIENTATION_180 = 3;
402        ORIENTATION_270 = 4;
403    }
404
405    optional string reverse_domain_name = 1;
406    /* Device orientation. */
407    optional Orientation orientation = 2;
408}
409
410/* Raw battery capacity stats */
411message BatteryCapacityFG {
412    enum LogReason {
413        LOG_REASON_UNKNOWN = 0;
414        LOG_REASON_CONNECTED = 1;
415        LOG_REASON_DISCONNECTED = 2;
416        LOG_REASON_FULL_CHARGE = 3;
417        LOG_REASON_PERCENT_SKIP = 4;
418        LOG_REASON_DIVERGING_FG = 5;
419    }
420
421    optional string reverse_domain_name = 1;
422    /* Uevent logging reason, enumerated above. */
423    optional LogReason capacity_log_reason = 2;
424
425    /* The battery capacity reported from the FG (fuel gauge) hardware  */
426    optional float capacity_gdf = 3;
427    /* The filtered system battery capacity reported to the UI */
428    optional float capacity_ssoc = 4;
429    /* The fuel gauge capacity curve midpoint FG (fuel gauge) value */
430    optional float capacity_gdf_curve = 5;
431    /* The fuel gauge capacity curve midpoint UI value */
432    optional float capacity_ssoc_curve = 6;
433}
434
435message  PdVidPid {
436    optional string reverse_domain_name = 1;
437    /* Vendor ID of wired charger */
438    optional int32 vid = 2;
439    /* Product ID of wired charger */
440    optional int32 pid = 3;
441}
442
443message BatteryEEPROM {
444    optional string reverse_domain_name = 1;
445   /* The cycle count number; record of charge/discharge times */
446    optional int32 cycle_cnt = 2;
447    /* The current full capacity of the battery under nominal conditions */
448    optional int32 full_cap = 3;
449    /* The battery equivalent series resistance */
450    optional int32 esr = 4;
451    /* Battery resistance related to temperature change */
452    optional int32 rslow = 5;
453    /* Battery health indicator reflecting the battery age state */
454    optional int32 soh = 6;
455    /* The battery temperature */
456    optional int32 batt_temp = 7;
457
458    /* Battery state of charge (SOC) shutdown point */
459    optional int32 cutoff_soc = 8;
460    /* Raw battery state of charge (SOC), based on battery current (CC = Coulomb Counter) */
461    optional int32 cc_soc = 9;
462    /* Estimated battery state of charge (SOC) from batt_soc with endpoint limiting (0% and 100%) */
463    optional int32 sys_soc = 10;
464    /* Filtered monotonic SOC, handles situations where the cutoff_soc is increased and
465     * then decreased from the battery physical properties
466     */
467    optional int32 msoc = 11;
468    /* Estimated SOC derived from cc_soc that provides voltage loop feedback correction using
469     * battery voltage, current, and status values
470     */
471    optional int32 batt_soc = 12;
472
473    /* Field used for data padding in the EEPROM data */
474    optional int32 reserve = 13;
475
476    /* The maximum battery temperature ever seen */
477    optional int32 max_temp = 14;
478    /* The minimum battery temperature ever seen */
479    optional int32 min_temp = 15;
480    /* The maximum battery voltage ever seen */
481    optional int32 max_vbatt = 16;
482    /* The minimum battery voltage ever seen */
483    optional int32 min_vbatt = 17;
484    /* The maximum battery current ever seen */
485    optional int32 max_ibatt = 18;
486    /* The minimum battery current ever seen */
487    optional int32 min_ibatt = 19;
488    /* Field used to verify the integrity of the EEPROM data */
489    optional int32 checksum = 20;
490
491    /* Extend data for P21 */
492    /* Temperature compensation information */
493    optional int32 tempco = 21;
494    /* Learned characterization related to the voltage gauge */
495    optional int32 rcomp0 = 22;
496    /* For time to monitor the life of cell */
497    optional int32 timer_h = 23;
498    /* The full capacity of the battery learning at the end of every charge cycle */
499    optional int32 full_rep = 24;
500
501    enum BattPairingEvent {
502      WRITE_ERROR = -4;
503      READ_ERROR = -3;
504      MISMATCH = -2;
505      DISABLED = -1;
506      ENABLED = 0;
507      PAIRED = 1;
508      RESET = 2;
509    };
510
511    optional BattPairingEvent battery_pairing = 25;
512}
513
514/* A message containing an exceptional event from citadel. */
515message CitadelEvent {
516  enum Event {
517    ALERT = 1;
518    REBOOTED = 2;
519    UPGRADED = 3;
520    ALERT_V2 = 4;
521    SEC_CH_STATE = 5;
522    ALERT_V3 = 6;
523  };
524  optional string reverse_domain_name = 1;
525  optional Event event = 2;
526  optional int32 reset_count = 3;
527  optional int64 uptime_micros = 4;
528  enum Priority {
529    LOW = 0;
530    MEDIUM = 1;
531    HIGH = 2;
532  };
533  optional Priority priority = 5;
534
535  // ALERT-specific fields.  These fields correspond to the interrupt status
536  // bits for alerts within citadel.  When alerts fire one or more of these
537  // bits are set to indicate the alert source.
538  optional int32 intr_sts_0 = 6;
539  optional int32 intr_sts_1 = 7;
540  optional int32 intr_sts_2 = 8;
541
542  // REBOOTED-specific fields.  These fields correspond to the details of how
543  // the hardware reboot occurred.  A reboot is a noteworthy event for citadel,
544  // as it can be triggered by events like stack overflow or other software
545  // bugs.
546  optional int32 rstsrc = 9;
547  optional int32 exitpd = 10;
548  optional int32 which0 = 11;
549  optional int32 which1 = 12;
550
551  // UPGRADED-specific field. This field corresponds to the result of FW
552  // upgrade for citadel.
553  optional int32 upgrade_state = 13;
554
555  // ALERT_V2-specific field. This field corresponds to the GLOBALSEC Log
556  // which contains normal globalsec, camo, temp and buserr.
557  optional int32 alert_grp_0 = 14;
558  optional int32 alert_grp_1 = 15;
559  optional int32 alert_grp_2 = 16;
560  optional int32 alert_grp_3 = 17;
561  optional int32 camo_breaches_0 = 18;
562  optional int32 camo_breaches_1 = 19;
563  optional int32 temp_min = 20;
564  optional int32 temp_max = 21;
565  optional int32 bus_err = 22;
566
567  // SEC_CH_STATE-specific filed. This field corresponds to the state
568  // of GSA-GSC secure channel.
569  optional int32 sec_ch_state = 23;
570
571  // Added ALERT_V3 specific fields
572
573  // bitmask of all the alerts that occurred.
574  repeated bool alert_bitmask = 24;
575
576  // For V3 alerts there are 3 types of alerts - alerts of different types
577  // differ in how they are handled on GSC, with there being 3 types:
578  //  1. Informational - alerts that are not handled
579  //  2. Recoverable - alerts that are handled but SW
580  //  3. Fatal - alert cannot be handled by SW and always reset the chip
581  //  4. Reserved - alert type is not being used right now, may be
582  //     assigned in the future
583
584  // Alert types - used to index into the following fields.
585  enum AlertV3Types {
586    INFORMATIONAL = 0;
587    RECOVERABLE = 1;
588    FATAL = 2;
589    RESERVED = 3;
590  };
591
592  // Amount of time that alerts from each type must be handled in before
593  // escalation occurs.
594  repeated int64 type_escalation_ctrs = 25;
595  // Number of alerts that have occurred for each alert type.
596  repeated int32 type_cnts = 26;
597  // Escalation level for each alert type. A higher escalation level corresponds
598  // to greater severity and need for handling by SW/HW.
599  repeated int32 type_escalation_levels = 27;
600
601  // Invidivual alert fields. Information from single alerts are grouped by
602  // index.
603
604  // Cause of alerts
605  repeated int64 alert_causes = 28;
606  // ID of alerts
607  repeated int32 alerts = 29;
608}
609
610/* A message containing the citadel firmware version. */
611message CitadelVersion {
612   optional string reverse_domain_name = 1;
613   optional string version = 2;
614}
615
616/* A message containing the speaker impedance. */
617 message VendorSpeakerImpedance {
618    optional string reverse_domain_name = 1;
619    optional int32 speaker_location = 2;
620    optional int32 impedance = 3;
621}
622
623/**
624 * Logs the reported vendor speaker health stats.
625 * Logged from: hardware/google/pixel/pixelstats/SysfsCollector.cpp
626 */
627message VendorSpeakerStatsReported {
628  /* Vendor reverse domain name (expecting "com.google.pixel") */
629  optional string reverse_domain_name = 1;
630  /* The location of speaker; 0 = left , 1 = right */
631  optional int32 speaker_location = 2;
632  /* The speaker's impedance value (milliOhm) */
633  optional int32 impedance = 3;
634  /* The speaker's maximum temperature (milliDegree C) */
635  optional int32 max_temperature = 4;
636  /* The speaker's execursion length (micrometer) */
637  optional int32 excursion = 5;
638  /* The speaker's heart beat count */
639  optional int32 heartbeat = 6;
640  /* The speaker's version */
641  optional int32 version = 7;
642}
643
644/* A message containing how many times of ufs host reset */
645message StorageUfsResetCount {
646    optional string reverse_domain_name = 1;
647    /* How many UFS error reset are triggered */
648    optional int32 host_reset_count = 2;
649}
650
651/* A message containing Pixel memory metrics collected hourly. */
652message PixelMmMetricsPerHour {
653    optional string reverse_domain_name = 1;
654    optional int64 free_pages = 2;
655    optional int64 anon_pages = 3;
656    optional int64 file_pages = 4;
657    optional int64 slab_reclaimable = 5;
658    optional int64 zspages = 6;
659    optional int64 unevictable = 7;
660    optional int64 ion_total_pools = 8;
661    optional int64 gpu_memory = 9;
662    optional int64 slab_unreclaimable = 10;
663    optional int64 psi_cpu_some_total = 11;
664    optional int64 psi_io_full_total = 12;
665    optional int64 psi_io_some_total = 13;
666    optional int64 psi_mem_full_total = 14;
667    optional int64 psi_mem_some_total = 15;
668    optional int32 psi_cpu_some_avg10_min = 16;
669    optional int32 psi_cpu_some_avg10_max = 17;
670    optional int32 psi_cpu_some_avg10_avg = 18;
671    optional int32 psi_cpu_some_avg60_min = 19;
672    optional int32 psi_cpu_some_avg60_max = 20;
673    optional int32 psi_cpu_some_avg60_avg = 21;
674    optional int32 psi_cpu_some_avg300_min = 22;
675    optional int32 psi_cpu_some_avg300_max = 23;
676    optional int32 psi_cpu_some_avg300_avg = 24;
677    optional int32 psi_io_full_avg10_min = 25;
678    optional int32 psi_io_full_avg10_max = 26;
679    optional int32 psi_io_full_avg10_avg = 27;
680    optional int32 psi_io_full_avg60_min = 28;
681    optional int32 psi_io_full_avg60_max = 29;
682    optional int32 psi_io_full_avg60_avg = 30;
683    optional int32 psi_io_full_avg300_min = 31;
684    optional int32 psi_io_full_avg300_max = 32;
685    optional int32 psi_io_full_avg300_avg = 33;
686    optional int32 psi_io_some_avg10_min = 34;
687    optional int32 psi_io_some_avg10_max = 35;
688    optional int32 psi_io_some_avg10_avg = 36;
689    optional int32 psi_io_some_avg60_min = 37;
690    optional int32 psi_io_some_avg60_max = 38;
691    optional int32 psi_io_some_avg60_avg = 39;
692    optional int32 psi_io_some_avg300_min = 40;
693    optional int32 psi_io_some_avg300_max = 41;
694    optional int32 psi_io_some_avg300_avg = 42;
695    optional int32 psi_mem_full_avg10_min = 43;
696    optional int32 psi_mem_full_avg10_max = 44;
697    optional int32 psi_mem_full_avg10_avg = 45;
698    optional int32 psi_mem_full_avg60_min = 46;
699    optional int32 psi_mem_full_avg60_max = 47;
700    optional int32 psi_mem_full_avg60_avg = 48;
701    optional int32 psi_mem_full_avg300_min = 49;
702    optional int32 psi_mem_full_avg300_max = 50;
703    optional int32 psi_mem_full_avg300_avg = 51;
704    optional int32 psi_mem_some_avg10_min = 52;
705    optional int32 psi_mem_some_avg10_max = 53;
706    optional int32 psi_mem_some_avg10_avg = 54;
707    optional int32 psi_mem_some_avg60_min = 55;
708    optional int32 psi_mem_some_avg60_max = 56;
709    optional int32 psi_mem_some_avg60_avg = 57;
710    optional int32 psi_mem_some_avg300_min = 58;
711    optional int32 psi_mem_some_avg300_max = 59;
712    optional int32 psi_mem_some_avg300_avg = 60;
713    optional int32 version = 61 [deprecated = true];
714    optional int64 shmem_pages = 62;
715    optional int64 page_table_pages = 63;
716    optional int64 dmabuf_kb = 64;
717}
718
719/* A message containing Pixel memory metrics collected daily. */
720message PixelMmMetricsPerDay {
721    optional string reverse_domain_name = 1;
722    optional int64 workingset_refault = 2;  /* refault_file */
723    optional int64 pswpin = 3;
724    optional int64 pswpout = 4;
725    optional int64 allocstall_dma = 5;
726    optional int64 allocstall_dma32 = 6;
727    optional int64 allocstall_normal = 7;
728    optional int64 allocstall_movable = 8;
729    optional int64 pgalloc_dma = 9;
730    optional int64 pgalloc_dma32 = 10;
731    optional int64 pgalloc_normal = 11;
732    optional int64 pgalloc_movable = 12;
733    optional int64 pgsteal_kswapd = 13;
734    optional int64 pgsteal_direct = 14;
735    optional int64 pgscan_kswapd = 15;
736    optional int64 pgscan_direct = 16;
737    optional int64 oom_kill = 17;
738    optional int64 pgalloc_high = 18;
739    optional int64 pgcache_hit = 19;
740    optional int64 pgcache_miss = 20;
741    optional int64 kswapd_stime_clks = 21;
742    optional int64 kcompactd_stime_clks = 22;
743    optional int64 direct_reclaim_native_latency_total_time = 23;
744    optional int64 direct_reclaim_native_latency0 = 24;
745    optional int64 direct_reclaim_native_latency1 = 25;
746    optional int64 direct_reclaim_native_latency2 = 26;
747    optional int64 direct_reclaim_native_latency3 = 27;
748    optional int64 direct_reclaim_visible_latency_total_time = 28;
749    optional int64 direct_reclaim_visible_latency0 = 29;
750    optional int64 direct_reclaim_visible_latency1 = 30;
751    optional int64 direct_reclaim_visible_latency2 = 31;
752    optional int64 direct_reclaim_visible_latency3 = 32;
753    optional int64 direct_reclaim_top_latency_total_time = 33;
754    optional int64 direct_reclaim_top_latency0 = 34;
755    optional int64 direct_reclaim_top_latency1 = 35;
756    optional int64 direct_reclaim_top_latency2 = 36;
757    optional int64 direct_reclaim_top_latency3 = 37;
758    optional int64 direct_reclaim_other_latency_total_time = 38;
759    optional int64 direct_reclaim_other_latency0 = 39;
760    optional int64 direct_reclaim_other_latency1 = 40;
761    optional int64 direct_reclaim_other_latency2 = 41;
762    optional int64 direct_reclaim_other_latency3 = 42;
763    optional int64 compaction_total_time = 43;
764    optional int64 compaction_ev_count0 = 44;
765    optional int64 compaction_ev_count1 = 45;
766    optional int64 compaction_ev_count2 = 46;
767    optional int64 compaction_ev_count3 = 47;
768    optional int64 compaction_ev_count4 = 48;
769    optional int64 workingset_refault_anon = 49;
770    optional int64 workingset_refault_file = 50;
771    optional int64 compact_success = 51;
772    optional int64 compact_fail = 52;
773    optional int64 kswapd_low_wmark_hq = 53;
774    optional int64 kswapd_high_wmark_hq = 54;
775    optional int64 thp_file_alloc = 55;
776    optional int64 thp_zero_page_alloc = 56;
777    optional int64 thp_split_page = 57;
778    optional int64 thp_migration_split = 58;
779    optional int64 thp_deferred_split_page = 59;
780    optional int64 version = 60 [deprecated = true];
781    optional int64 cpu_total_time_cs = 61;
782    optional int64 cpu_idle_time_cs = 62;
783    optional int64 cpu_io_wait_time_cs = 63;
784    optional int64 kswapd_pageout_run = 64;
785}
786
787/* A message containing CMA metrics collected from dogfooding only. */
788message CmaStatus {
789  optional string reverse_domain_name = 1;
790  optional int32 type = 2;
791  optional int64 cma_alloc_pages_attempts = 3;
792  optional int64 cma_alloc_pages_soft_attempts = 4;
793  optional int64 cma_fail_pages = 5;
794  optional int64 cma_fail_soft_pages = 6;
795  optional int64 migrated_pages = 7;
796  optional string cma_heap_name = 8;
797}
798
799/* A message containing CMA metrics (External). */
800message CmaStatusExt {
801  optional string reverse_domain_name = 1;
802  optional int32 type = 2;
803  optional int64 cma_alloc_latency_low = 3;
804  optional int64 cma_alloc_latency_mid = 4;
805  optional int64 cma_alloc_latency_high = 5;
806  optional string cma_heap_name = 6;
807}
808
809message F2fsCompressionInfo {
810    optional string reverse_domain_name = 1;
811    /* Show the block count written after compression since mount */
812    optional int32 compr_written_blocks = 2;
813    /* Show the saved block count with compression since mount */
814    optional int32 compr_saved_blocks = 3;
815    /* Show the count of inode newly enabled for compression since mount */
816    optional int32 compr_new_inodes = 4;
817}
818
819/**
820 * Log bucketed battery charge cycles.
821 *
822 * Each bucket represents cycles of the battery past
823 * a given charge point.  For example, bucket 1 is the
824 * lowest 1/8th of the battery, and bucket 8 is 100%.
825 *
826 * Logged from:
827 * /sys/class/power_supply/bms/cycle_count, via Vendor.
828 */
829message VendorChargeCycles {
830    optional string reverse_domain_name = 1;
831    optional int32 cycle_bucket_1 = 2;
832    optional int32 cycle_bucket_2 = 3;
833    optional int32 cycle_bucket_3 = 4;
834    optional int32 cycle_bucket_4 = 5;
835    optional int32 cycle_bucket_5 = 6;
836    optional int32 cycle_bucket_6 = 7;
837    optional int32 cycle_bucket_7 = 8;
838    optional int32 cycle_bucket_8 = 9;
839    optional int32 cycle_bucket_9 = 10;
840    optional int32 cycle_bucket_10 = 11;
841}
842
843/**
844 * Logs the report of a failed hardware.
845 *
846 * Logged from:
847 *  Vendor HALs.
848 *
849 */
850message VendorHardwareFailed {
851    enum HardwareType {
852      HARDWARE_FAILED_UNKNOWN = 0;
853      HARDWARE_FAILED_MICROPHONE = 1;
854      HARDWARE_FAILED_CODEC = 2;
855      HARDWARE_FAILED_SPEAKER = 3;
856      HARDWARE_FAILED_FINGERPRINT = 4;
857    }
858    optional string reverse_domain_name = 1;
859    optional HardwareType hardware_type = 2;
860
861    /**
862     * hardware_location allows vendors to differentiate between multiple
863     * instances of the same hardware_type.  The specific locations are vendor
864     * defined integers, referring to board-specific numbering schemes.
865     */
866    optional int32 hardware_location = 3;
867    /**
868     * failure_code is specific to the HardwareType of the failed hardware.
869     * It should use one of the enum values defined below.
870     */
871    enum HardwareErrorCode {
872      UNKNOWN = 0;
873      COMPLETE = 1;
874      SPEAKER_HIGH_Z = 2;
875      SPEAKER_SHORT = 3;
876      FINGERPRINT_SENSOR_BROKEN = 4;
877      FINGERPRINT_TOO_MANY_DEAD_PIXELS = 5;
878      DEGRADE = 6;
879    }
880    optional HardwareErrorCode failure_code = 4;
881
882    enum EventType {
883      UNKNOWN_EVENT = 0;
884      VOICE_CALL = 1;
885      VOIP_CALL = 2;
886    }
887    optional EventType event_type = 5;
888}
889
890/**
891 * Log slow I/O operations on the primary storage.
892 */
893message VendorSlowIo {
894    // Classifications of IO Operations.
895    enum IoOperation {
896      UNKNOWN = 0;
897      READ = 1;
898      WRITE = 2;
899      UNMAP = 3;
900      SYNC = 4;
901    }
902    optional string reverse_domain_name = 1;
903    optional IoOperation operation = 2;
904
905    // The number of slow IO operations of this type over 24 hours.
906    optional int32 count = 3;
907}
908
909/*
910 * Logs the reported speech DSP status.
911 * Logged from: Vendor audio implementation.
912 */
913message VendorSpeechDspStat {
914    optional string reverse_domain_name = 1;
915    // The total Speech DSP uptime in milliseconds.
916    optional int32 total_uptime_millis = 2;
917    // The total Speech DSP downtime in milliseconds.
918    optional int32 total_downtime_millis = 3;
919    optional int32 total_crash_count = 4;
920    optional int32 total_recover_count = 5;
921}
922
923/**
924 * Log an event when the device has been physically dropped.
925 * Reported from the /vendor partition.
926 */
927message VendorPhysicalDropDetected {
928  optional string reverse_domain_name = 1;
929  // Confidence that the event was actually a drop, 0 -> 100
930  optional int32 confidence_pctg = 2;
931  // Peak acceleration of the drop, in 1/1000s of a g.
932  optional int32 accel_peak_thousandths_g = 3;
933  // Duration of freefall in ms
934  optional int32 freefall_time_millis = 4;
935}
936
937/** Represents USB port overheat event. */
938message VendorUsbPortOverheat {
939  optional string reverse_domain_name = 1;
940  /* Temperature of USB port at USB plug event, in 1/10ths of degree C. */
941  optional int32 plug_temperature_deci_c = 2;
942  /* Maximum temperature of USB port during overheat event, in 1/10ths of degree
943   * C. */
944  optional int32 max_temperature_deci_c = 3;
945  /* Time between USB plug event and overheat threshold trip, in seconds. */
946  optional int32 time_to_overheat_secs = 4;
947  /* Time between overheat threshold trip and hysteresis, in seconds. */
948  optional int32 time_to_hysteresis_secs = 5;
949  /* Time between hysteresis and active mitigation ending, in seconds. */
950  optional int32 time_to_inactive_secs = 6;
951}
952
953/**
954 * Log battery health snapshot.
955 *
956 * Resistance, Voltage, Open Circuit Voltage, Temperature, and Charge Level
957 * are snapshotted periodically over 24hrs.
958 */
959message VendorBatteryHealthSnapshot {
960  enum BatterySnapshotType {
961    BATTERY_SNAPSHOT_TYPE_UNKNOWN = 0;
962    BATTERY_SNAPSHOT_TYPE_MIN_TEMP = 1;         // Snapshot at min batt temp over 24hrs.
963    BATTERY_SNAPSHOT_TYPE_MAX_TEMP = 2;         // Snapshot at max batt temp over 24hrs.
964    BATTERY_SNAPSHOT_TYPE_MIN_RESISTANCE = 3;   // Snapshot at min batt resistance over 24hrs.
965    BATTERY_SNAPSHOT_TYPE_MAX_RESISTANCE = 4;   // Snapshot at max batt resistance over 24hrs.
966    BATTERY_SNAPSHOT_TYPE_MIN_VOLTAGE = 5;      // Snapshot at min batt voltage over 24hrs.
967    BATTERY_SNAPSHOT_TYPE_MAX_VOLTAGE = 6;      // Snapshot at max batt voltage over 24hrs.
968    BATTERY_SNAPSHOT_TYPE_MIN_CURRENT = 7;      // Snapshot at min batt current over 24hrs.
969    BATTERY_SNAPSHOT_TYPE_MAX_CURRENT = 8;      // Snapshot at max batt current over 24hrs.
970    BATTERY_SNAPSHOT_TYPE_MIN_BATT_LEVEL = 9;   // Snapshot at min battery level (SoC) over 24hrs.
971    BATTERY_SNAPSHOT_TYPE_MAX_BATT_LEVEL = 10;  // Snapshot at max battery level (SoC) over 24hrs.
972    BATTERY_SNAPSHOT_TYPE_AVG_RESISTANCE = 11;  // Snapshot at average battery resistance over 24hrs.
973  }
974  optional string reverse_domain_name = 1;
975  optional BatterySnapshotType type = 2;
976  // Temperature, in 1/10ths of degree C.
977  optional int32 temperature_deci_celsius = 3;
978  // Voltage Battery Voltage, in microVolts.
979  optional int32 voltage_micro_volt = 4;
980  // Current Battery current, in microAmps.
981  optional int32 current_micro_amps = 5;
982  // OpenCircuitVoltage Battery Open Circuit Voltage, in microVolts.
983  optional int32 open_circuit_micro_volt = 6;
984  // Resistance Battery Resistance, in microOhms.
985  optional int32 resistance_micro_ohm = 7;
986  // Level Battery Level, as % of full.
987  optional int32 level_percent = 8;
988}
989
990/**
991 * Log battery caused shutdown with the last recorded voltage.
992 */
993message VendorBatteryCausedShutdown {
994 optional string reverse_domain_name = 1;
995 // The last recorded battery voltage prior to shutdown.
996 optional int32 last_recorded_micro_volt = 2;
997}
998
999/**
1000 * Log mitigation statistics.
1001 */
1002message PowerMitigationStats {
1003 optional string reverse_domain_name = 1;
1004 // The last triggered count: batoilo.
1005 optional int32 batoilo_count = 2;
1006 // The last triggered count: vdroop1.
1007 optional int32 vdroop1_count = 3;
1008 // The last triggered count: vdroop2.
1009 optional int32 vdroop2_count = 4;
1010 // The last triggered count: smpl_warn.
1011 optional int32 smpl_warn_count = 5;
1012 // The last triggered count: ocp_cpu1.
1013 optional int32 ocp_cpu1_count = 6;
1014 // The last triggered count: ocp_cpu2.
1015 optional int32 ocp_cpu2_count = 7;
1016 // The last triggered count: ocp_gpu.
1017 optional int32 ocp_gpu_count = 8;
1018 // The last triggered count: ocp_tpu.
1019 optional int32 ocp_tpu_count = 9;
1020 // The last triggered count: soft_ocp_cpu1.
1021 optional int32 soft_ocp_cpu1_count = 10;
1022 // The last triggered count: soft_ocp_cpu2.
1023 optional int32 soft_ocp_cpu2_count = 11;
1024 // The last triggered count: soft_ocp_gpu.
1025 optional int32 soft_ocp_gpu_count = 12;
1026 // The last triggered count: soft_ocp_tpu.
1027 optional int32 soft_ocp_tpu_count = 13;
1028 // The last triggered capacity: batoilo.
1029 optional int32 batoilo_cap = 14;
1030 // The last triggered capacity: vdroop1.
1031 optional int32 vdroop1_cap = 15;
1032 // The last triggered capacity: vdroop2.
1033 optional int32 vdroop2_cap = 16;
1034 // The last triggered capacity: smpl_warn.
1035 optional int32 smpl_warn_cap = 17;
1036 // The last triggered capacity: ocp_cpu1.
1037 optional int32 ocp_cpu1_cap = 18;
1038 // The last triggered capacity: ocp_cpu2.
1039 optional int32 ocp_cpu2_cap = 19;
1040 // The last triggered capacity: ocp_gpu.
1041 optional int32 ocp_gpu_cap = 20;
1042 // The last triggered capacity: ocp_tpu.
1043 optional int32 ocp_tpu_cap = 21;
1044 // The last triggered capacity: soft_ocp_cpu1.
1045 optional int32 soft_ocp_cpu1_cap = 22;
1046 // The last triggered capacity: soft_ocp_cpu2.
1047 optional int32 soft_ocp_cpu2_cap = 23;
1048 // The last triggered capacity: soft_ocp_gpu.
1049 optional int32 soft_ocp_gpu_cap = 24;
1050 // The last triggered capacity: soft_ocp_tpu.
1051 optional int32 soft_ocp_tpu_cap = 25;
1052 // The last triggered count: batoilo2.
1053 optional int32 batoilo2_count = 26;
1054 // The last triggered capacity: batoilo2.
1055 optional int32 batoilo2_cap = 27;
1056}
1057
1058/**
1059 * Log thermal statistics.
1060 */
1061message ThermalDfsStats {
1062 optional string reverse_domain_name = 1;
1063 // The last count of BIG cluster dfs triggers
1064 optional int32 big_dfs_count = 2;
1065 // The last count of MID cluster dfs triggers
1066 optional int32 mid_dfs_count = 3;
1067 // The last count of LITTLE cluster dfs triggers
1068 optional int32 little_dfs_count = 4;
1069 // The last count of GPU dfs triggers
1070 optional int32 gpu_dfs_count = 5;
1071 // The last count of TPU dfs triggers
1072 optional int32 tpu_dfs_count = 6;
1073 // The last count of DSP dfs triggers
1074 optional int32 aur_dfs_count = 7;
1075}
1076
1077/**
1078 * Log Display Panel error statistics.
1079 */
1080message DisplayPanelErrorStats {
1081 optional string reverse_domain_name = 1;
1082 // The error count due to Tear Effect on primary display panel.
1083 optional int32 primary_error_count_te = 2;
1084 // The error count due to unknown reason on primary display panel.
1085 optional int32 primary_error_count_unknown = 3;
1086 // The error count due to Tear Effect on primary display panel.
1087 optional int32 secondary_error_count_te = 4;
1088 // The error count due to unknown reason on secondary display panel.
1089 optional int32 secondary_error_count_unknown = 5;
1090}
1091
1092/**
1093 * Log how many segments have been reclaimed in a specific GC mode.
1094 */
1095message F2fsGcSegmentInfo {
1096    optional string reverse_domain_name = 1;
1097    /* Reclaimed segments in GC normal mode */
1098    optional int32 reclaimed_segments_normal = 2;
1099    /* Reclaimed segments in GC urgent high mode */
1100    optional int32 reclaimed_segments_urgent_high = 3;
1101    /* Reclaimed segments in GC urgent low mode */
1102    optional int32 reclaimed_segments_urgent_low = 4;
1103    /* Reclaimed segments in GC urgent mid mode */
1104    optional int32 reclaimed_segments_urgent_mid = 5;
1105}
1106
1107/**
1108 * Logs an event indicating that a nanoapp loading has failed at the HAL.
1109 */
1110message ChreHalNanoappLoadFailed {
1111  // Vendor reverse domain name (expecting "com.google.pixel").
1112  optional string reverse_domain_name = 1;
1113
1114  enum Type {
1115    TYPE_UNKNOWN = 0;
1116    // Corresponds to preloaded nanoapps on the device.
1117    TYPE_PRELOADED = 1;
1118    // Dynamic loading of a nanoapp (e.g. code download).
1119    TYPE_DYNAMIC = 2;
1120  }
1121
1122  enum Reason {
1123    REASON_UNKNOWN = 0;
1124    // A generic error code that does not match any of the others.
1125    REASON_ERROR_GENERIC = 1;
1126    // Failure at the connection between HAL<->CHRE.
1127    REASON_CONNECTION_ERROR = 2;
1128    // System ran out of memory.
1129    REASON_OOM = 3;
1130    // Nanoapp did not have the right signing for loading.
1131    REASON_SIGNATURE_MISMATCH = 4;
1132  }
1133
1134  // The 64-bit unique nanoapp identifier of the nanoapp that failed.
1135  optional int64 nanoapp_id = 2;
1136
1137  // The type of the load event.
1138  optional Type type = 3;
1139
1140  // The reason for the failure.
1141  optional Reason reason = 4;
1142}
1143
1144/**
1145 * An enum describing a module within CHRE.
1146 */
1147enum ChreModuleType {
1148  CHRE_MODULE_TYPE_UNKNOWN = 0;
1149  CHRE_MODULE_TYPE_CHRE = 1; // Core CHRE framework
1150  CHRE_MODULE_TYPE_PAL = 2; // PAL module (could be CHPP)
1151  CHRE_MODULE_TYPE_NANOAPP = 3;
1152}
1153
1154/**
1155 * An enum describing the CHRE PAL type.
1156 */
1157enum ChrePalType {
1158  CHRE_PAL_TYPE_UNKNOWN = 0;
1159  CHRE_PAL_TYPE_SENSOR = 1;
1160  CHRE_PAL_TYPE_WIFI = 2;
1161  CHRE_PAL_TYPE_GNSS = 3;
1162  CHRE_PAL_TYPE_WWAN = 4;
1163  CHRE_PAL_TYPE_AUDIO = 5;
1164  CHRE_PAL_TYPE_BLE = 6;
1165}
1166
1167/**
1168 * Logs an event indicating that a CHRE PAL open has failed.
1169 */
1170message ChrePalOpenFailed {
1171  // Vendor reverse domain name (expecting "com.google.pixel").
1172  optional string reverse_domain_name = 1;
1173
1174  enum Type {
1175    TYPE_UNKNOWN = 0;
1176    // Initial open when CHRE starts.
1177    INITIAL_OPEN = 1;
1178    // Any form of "reopen" event internally in the PAL.
1179    REOPEN = 2;
1180  }
1181
1182  // The PAL this failure event is for.
1183  optional ChrePalType pal = 2;
1184
1185  // The type of failure observed.
1186  optional Type type = 3;
1187}
1188
1189/**
1190 * The type of CHRE API request.
1191 */
1192enum ChreApiType {
1193  CHRE_API_TYPE_UNKNOWN = 0;
1194  CHRE_API_TYPE_WIFI_SCAN_MONITOR = 1;
1195  CHRE_API_TYPE_WIFI_ACTIVE_SCAN = 2;
1196  CHRE_API_TYPE_WIFI_RTT_RANGING = 3;
1197}
1198
1199/**
1200 * The type of CHRE API error.
1201 */
1202enum ChreError {
1203  CHRE_ERROR_UNKNOWN = 0;
1204
1205  // No error occurred.
1206  CHRE_ERROR_NONE = 1;
1207
1208  // An unspecified failure occurred.
1209  CHRE_ERROR = 2;
1210
1211  // One or more supplied arguments are invalid.
1212  CHRE_ERROR_INVALID_ARGUMENT = 3;
1213
1214  // Unable to satisfy request because the system is busy.
1215  CHRE_ERROR_BUSY = 4;
1216
1217  // Unable to allocate memory.
1218  CHRE_ERROR_NO_MEMORY = 5;
1219
1220  // The requested feature is not supported.
1221  CHRE_ERROR_NOT_SUPPORTED = 6;
1222
1223  // A timeout occurred while processing the request.
1224  CHRE_ERROR_TIMEOUT = 7;
1225
1226  // The relevant capability is disabled, for example due to a user
1227  // configuration that takes precedence over this request.
1228  CHRE_ERROR_FUNCTION_DISABLED = 8;
1229}
1230
1231/**
1232 * Distribution of CHRE API error codes.
1233 */
1234message ChreApiErrorCodeDistributionTaken {
1235  // Vendor reverse domain name (expecting "com.google.pixel").
1236  optional string reverse_domain_name = 1;
1237
1238  // The chreGetTime() value when this snapshot was taken, in milliseconds.
1239  optional int32 snapshot_chre_get_time_ms = 2;
1240
1241  // The CHRE API type.
1242  optional ChreApiType api_type = 3;
1243
1244  // Corresponds to the CHRE error code that occurred, as defined in the
1245  // "enum chreError" field in chre_api/chre/common.h.
1246  optional ChreError error_code = 4;
1247  optional int32 num_errors = 5;
1248}
1249
1250/**
1251 * Snapshot of the dynamic memory allocated in CHRE.
1252 */
1253message ChreDynamicMemorySnapshotReported {
1254  // Vendor reverse domain name (expecting "com.google.pixel").
1255  optional string reverse_domain_name = 1;
1256
1257  // The chreGetTime() value when this snapshot was taken, in milliseconds.
1258  optional int32 snapshot_chre_get_time_ms = 2;
1259
1260  // The type of the module.
1261  optional ChreModuleType module_type = 3;
1262
1263  // The unique 64-bit ID for a nanoapp, only used if the module_type is NANOAPP.
1264  // If module_type is PAL, then it represents the ChrePalType enum. If the module_type
1265  // is CHRE, then a zero value should be used.
1266  optional int64 pal_type_or_nanoapp_id = 4;
1267
1268  // The max allocation amount of this module in bytes.
1269  optional int32 max_allocation_bytes = 5;
1270
1271  // The current allocation amount of this module in bytes.
1272  optional int32 current_allocation_bytes = 6;
1273}
1274
1275/**
1276 * Snapshot of the event queue stats in CHRE.
1277 */
1278message ChreEventQueueSnapshotReported {
1279  // Vendor reverse domain name (expecting "com.google.pixel").
1280  optional string reverse_domain_name = 1;
1281
1282  // The chreGetTime() value when this snapshot was taken, in milliseconds.
1283  optional int32 snapshot_chre_get_time_ms = 2;
1284
1285  // The maximum size the event queue got to (i.e. num pending events).
1286  optional int32 max_event_queue_size = 3;
1287
1288  // The average size the event queue got to (i.e. num pending events).
1289  optional int32 mean_event_queue_size = 4;
1290
1291  // The number of events that were dropped due to capacity limits.
1292  optional int32 num_dropped_events = 5;
1293
1294  // The maximum amount of time it took for an event, from when it was received,
1295  // to when it was delivered to all interested modules. This value represents
1296  // the total delay within the CHRE subsystem.
1297  optional int64 max_queue_delay_us = 6;
1298
1299  // The mean value of the delay in microseconds.
1300  optional int64 mean_queue_delay_us = 7;
1301}
1302
1303/**
1304 * Indicates that a nanoapp has woken up the AP.
1305 */
1306message ChreApWakeUpOccurred {
1307  // Vendor reverse domain name (expecting "com.google.pixel").
1308  optional string reverse_domain_name = 1;
1309
1310  // The 64-bit unique nanoapp identifier that describes the entity that has caused an AP wake-up
1311  // from CHRE. Whenever this event occurs, this means that the nanoapp sent a message to
1312  // the AP causing a transition between suspend/wake-up.
1313  optional int64 nanoapp_id = 2;
1314}
1315
1316/**
1317 * Snapshot of the current battery health of the device.
1318 */
1319message BatteryHealthStatus {
1320  // Vendor reverse domain name (expecting "com.google.pixel").
1321  optional string reverse_domain_name = 1;
1322
1323  // The algorithm that computes how the health status and health indexes are calculated.
1324  optional int32 health_algorithm = 2;
1325
1326  enum HealthStatus {
1327    UNKNOWN = -1; // The health status is unknown due to a SW limitation or issue
1328    NOMINAL = 0; // The battery is operating as expected
1329    MARGINAL = 1; // The battery may need replacement soon
1330    NEEDS_REPLACEMENT = 2; // The battery needs replacement
1331    FAILED = 3; // The battery has failed and no longer operates as expected
1332    NOT_AVAILABLE = 4; // This is a temporary state when cycle count is insufficient
1333    INCONSISTENT = 5; // The battery recalibration is pending
1334  }
1335
1336  // HealthStatus calculated using health_index, health_perf_index.
1337  optional HealthStatus health_status = 3;
1338
1339  // A percentage measure of the health of the battery with 100% being perfectly healthy.
1340  optional int32 health_index = 4;
1341
1342  // A percentage measure of the battery capacity of the device, affected by cycle life degradation.
1343  optional int32 health_capacity_index = 5;
1344
1345  // A percentage measure of the max performance of the device, affected by impedance growth with 100% being perfectly healthy.
1346  optional int32 health_impedance_index = 6;
1347
1348  // An index that expresses the likelihood of swelling given the SOC residency stats.
1349  optional int32 swelling_cumulative = 7;
1350
1351  // The battery capacity used to determine the health index. This is the reference value from b/223759710.
1352  optional int32 health_full_capacity = 8;
1353
1354  // This is the Rslow (resistance) value used (in part) to determine the Perf Index. The activation impedance (b/223545817) can be calculated from it using the perf index.
1355  optional int32 current_impedance = 9;
1356
1357  // The (hours) value of TimeH (0xb3), a register value, multiplied by 3.2 hours.
1358  optional int32 battery_age = 10;
1359
1360  // The cycle count at the time of the log event.
1361  optional int32 cycle_count = 11;
1362
1363  enum BattDisconnectStatus {
1364    BPST_BATT_UNKNOWN = 0;
1365    BPST_BATT_CONNECT = 1;
1366    BPST_BATT_DISCONNECT = 2; // Result of single battery disconnect detection
1367    BPST_BATT_CELL_FAULT = 3; // Result of cell fault detection which means actual disconnection
1368  }
1369
1370  // Battery disconnect detection stats.
1371  optional BattDisconnectStatus battery_disconnect_status = 12;
1372}
1373
1374/**
1375 * Log battery SOC/temperature usage data.
1376 *
1377 * Each data represents cumulative time of the battery
1378 * spent over a specific SOC and over a specific temperature
1379 * while charging and while discharging in seconds.
1380 *
1381 * Logged from:
1382 * /sys/class/power_supply/battery/swelling_data, via Vendor.
1383 */
1384message BatteryHealthUsage {
1385  // Vendor reverse domain name (expecting "com.google.pixel").
1386  optional string reverse_domain_name = 1;
1387
1388  // The temperature limit (deg C) used to accumulate the time above this value.
1389  optional int32 temperature_limit_deci_c = 2;
1390
1391  // The SOC limit (%) used to accumulate the time above this value.
1392  optional int32 soc_limit = 3;
1393
1394  // Time (s) accumulated only during charge at the given thresholds.
1395  optional int32 charge_time_secs = 4;
1396
1397  // Time (s) accumulated only during discharge at the given thresholds.
1398  optional int32 discharge_time_secs = 5;
1399}
1400
1401/*
1402 * A Value of F2FS smart idle maintenance feature enabled
1403 */
1404message F2fsSmartIdleMaintEnabledStateChanged {
1405    optional string reverse_domain_name = 1;
1406    /* Smart idle maint is enabled */
1407    optional bool enabled = 2;
1408}
1409
1410/*
1411 * Snapshot of the block layer read write stats
1412 */
1413message BlockStatsReported {
1414    optional string reverse_domain_name = 1;
1415        /* number of read I/Os processed */
1416        optional int64 read_io = 2;
1417        /* number of sectors read */
1418        optional int64 read_sectors = 3;
1419        /* total wait time for read requests */
1420        optional int64 read_ticks = 4;
1421        /* number of write I/Os processed */
1422        optional int64 write_io = 5;
1423        /* number of sectors written */
1424        optional int64 write_sectors = 6;
1425        /* total wait time for write requests */
1426        optional int64 write_ticks = 7;
1427}
1428
1429/**
1430 * Logs the reported vendor audio hardware stats.
1431 */
1432message VendorAudioHardwareStatsReported {
1433  optional string reverse_domain_name = 1;
1434  /* The number of calls in a day where CCA is active.
1435   * CCA can only be applied under some radio bands.
1436   */
1437  optional int32 milli_rate_of_ams_per_day = 2;
1438
1439  // cca_active: obsoleted UI enable & algorithm is active (C1)
1440  // replaced by cca_active_count_per_day
1441  optional int32 rate_of_cca_active_per_day = 3 [deprecated = true];
1442
1443  // cca_enable: obsoleted UI enable & algorithm is inactive field (C2)
1444  // replaced by cca_enable_count_per_day
1445  optional int32 rate_of_cca_enable_per_day = 4 [deprecated = true];
1446
1447  enum Source {
1448    VOIP = 0;
1449    VOICE = 1;
1450  }
1451
1452  /* source: identify whether this atom is for voice or voip case. */
1453  optional Source source = 5;
1454
1455  /* total_call_count_per_day: count total number of call per day. */
1456  optional int32 total_call_count_per_day = 6;
1457
1458  /* cca_active: UI enable & algorithm is active (C1 or C3) */
1459  optional int32 cca_active_count_per_day = 7;
1460
1461  /* cca_enable: UI enable & algorithm is inactive (C2 or C4) */
1462  optional int32 cca_enable_count_per_day = 8;
1463
1464  /* version: version of the data. */
1465  optional int32 version = 9;
1466
1467  /* duration: duration in second of the voice/voip call. */
1468  optional int32 duration_second = 10;
1469
1470  /* band: band value. */
1471  optional int32 band = 11;
1472}
1473
1474/**
1475 * Logs the reported vendor audio PDM stats.
1476 * PDM stats are used to show background noise level during voice/voip calling.
1477 * Each of the atom will show only one type of background noises. There are at most 4 types.
1478 * Thus, this atoms will be reported at most 4 times to show all types.
1479 */
1480message VendorAudioPdmStatsReported {
1481  optional string reverse_domain_name = 1;
1482
1483  /* index of the pdm to report. There are 4 pdm instances. So, the value is in the range 1-4 */
1484  optional int32 pdm_index = 2;
1485
1486  /* State of the pdm to report. There is only two value 1 for good and 0 for bad. */
1487  optional int32 state = 3;
1488}
1489
1490/*
1491 * Logs vendor stats about long IRQs.
1492 *
1493 * IRQ is considered long when it exceeds a threshold (currently 1 ms).
1494 * Stats include top 5 slowest IRQs: their numbers and the worst latency.
1495 * Stats are reset after every report.
1496 */
1497message VendorLongIRQStatsReported {
1498  optional string reverse_domain_name = 1;
1499
1500  // Count of long soft IRQ since last report.
1501  optional int64 long_softirq_count = 2;
1502
1503  optional int64 top1_softirq_num = 3;
1504  optional int64 top1_softirq_latency_us = 4;
1505  optional int64 top2_softirq_num = 5;
1506  optional int64 top2_softirq_latency_us = 6;
1507  optional int64 top3_softirq_num = 7;
1508  optional int64 top3_softirq_latency_us = 8;
1509  optional int64 top4_softirq_num = 9;
1510  optional int64 top4_softirq_latency_us = 10;
1511  optional int64 top5_softirq_num = 11;
1512  optional int64 top5_softirq_latency_us = 12;
1513
1514  // Count of long IRQ since last report.
1515  optional int64 long_irq_count = 13;
1516
1517  optional int64 top1_irq_num = 14;
1518  optional int64 top1_irq_latency_us = 15;
1519  optional int64 top2_irq_num = 16;
1520  optional int64 top2_irq_latency_us = 17;
1521  optional int64 top3_irq_num = 18;
1522  optional int64 top3_irq_latency_us = 19;
1523  optional int64 top4_irq_num = 20;
1524  optional int64 top4_irq_latency_us = 21;
1525  optional int64 top5_irq_num = 22;
1526  optional int64 top5_irq_latency_us = 23;
1527
1528  optional int64 storm_irq_top1_num = 24;
1529  optional int64 storm_irq_top1_count = 25;
1530  optional int64 storm_irq_top2_num = 26;
1531  optional int64 storm_irq_top2_count = 27;
1532  optional int64 storm_irq_top3_num = 28;
1533  optional int64 storm_irq_top3_count = 29;
1534  optional int64 storm_irq_top4_num = 30;
1535  optional int64 storm_irq_top4_count = 31;
1536  optional int64 storm_irq_top5_num= 32;
1537  optional int64 storm_irq_top5_count = 33;
1538}
1539
1540/**
1541 * Logs the Temperature residency stats per thermal zone.
1542 */
1543message VendorTempResidencyStats {
1544  optional string reverse_domain_name = 1;
1545  // Thermal zone name
1546  optional string sensor_name = 2;
1547
1548  // Time since last collect of this thermal zone
1549  optional int64 since_last_update_ms = 3;
1550
1551  // Temperature residency stats is measured by time in ms that a temperature zone's temperature
1552  // lay within some temperature thresholds
1553  // e.g.
1554  // With temperature thresholds predefined as thresholds_i, thresholds_i+1,
1555  // temp_residency_ms_bucket_i measures how much time the sensor lay within this two thresholds
1556  optional int64 temp_residency_ms_bucket_1 = 4;
1557  optional int64 temp_residency_ms_bucket_2 = 5;
1558  optional int64 temp_residency_ms_bucket_3 = 6;
1559  optional int64 temp_residency_ms_bucket_4 = 7;
1560  optional int64 temp_residency_ms_bucket_5 = 8;
1561  optional int64 temp_residency_ms_bucket_6 = 9;
1562  optional int64 temp_residency_ms_bucket_7 = 10;
1563  optional int64 temp_residency_ms_bucket_8 = 11;
1564  optional int64 temp_residency_ms_bucket_9 = 12;
1565  optional int64 temp_residency_ms_bucket_10 = 13;
1566  optional int64 temp_residency_ms_bucket_11 = 14;
1567  optional int64 temp_residency_ms_bucket_12 = 15;
1568  optional int64 temp_residency_ms_bucket_13 = 16;
1569  optional int64 temp_residency_ms_bucket_14 = 17;
1570  optional int64 temp_residency_ms_bucket_15 = 18;
1571  optional int64 temp_residency_ms_bucket_16 = 19;
1572  optional int64 temp_residency_ms_bucket_17 = 20;
1573  optional int64 temp_residency_ms_bucket_18 = 21;
1574  optional int64 temp_residency_ms_bucket_19 = 22;
1575  optional int64 temp_residency_ms_bucket_20 = 23;
1576
1577  // The maximum and minimum temperature observed for the sensor along with the
1578  // timestamp of occurrence in terms of time_t.
1579  optional float max_temp = 24;
1580  optional int64 max_temp_timestamp = 25;
1581  optional float min_temp = 26;
1582  optional int64 min_temp_timestamp = 27;
1583}
1584
1585/**
1586 * Logs the Resume Latency stats.
1587 */
1588message VendorResumeLatencyStats {
1589  optional string reverse_domain_name = 1;
1590  optional int64 max_latency_ms = 2;
1591  optional int64 avg_latency_ms = 3;
1592
1593  // Resume Latency stats is measured by count of resumes that lay within some latency thresholds
1594  // e.g.
1595  // With resume times thresholds predefined as thresholds_i, thresholds_i+1,
1596  // resume_count_bucket_i measures count of resumes that lay within this two thresholds
1597  optional int64 resume_count_bucket_1 = 4;
1598  optional int64 resume_count_bucket_2 = 5;
1599  optional int64 resume_count_bucket_3 = 6;
1600  optional int64 resume_count_bucket_4 = 7;
1601  optional int64 resume_count_bucket_5 = 8;
1602  optional int64 resume_count_bucket_6 = 9;
1603  optional int64 resume_count_bucket_7 = 10;
1604  optional int64 resume_count_bucket_8 = 11;
1605  optional int64 resume_count_bucket_9 = 12;
1606  optional int64 resume_count_bucket_10 = 13;
1607  optional int64 resume_count_bucket_11 = 14;
1608  optional int64 resume_count_bucket_12 = 15;
1609  optional int64 resume_count_bucket_13 = 16;
1610  optional int64 resume_count_bucket_14 = 17;
1611  optional int64 resume_count_bucket_15 = 18;
1612  optional int64 resume_count_bucket_16 = 19;
1613  optional int64 resume_count_bucket_17 = 20;
1614  optional int64 resume_count_bucket_18 = 21;
1615  optional int64 resume_count_bucket_19 = 22;
1616  optional int64 resume_count_bucket_20 = 23;
1617  optional int64 resume_count_bucket_21 = 24;
1618  optional int64 resume_count_bucket_22 = 25;
1619  optional int64 resume_count_bucket_23 = 26;
1620  optional int64 resume_count_bucket_24 = 27;
1621  optional int64 resume_count_bucket_25 = 28;
1622  optional int64 resume_count_bucket_26 = 29;
1623  optional int64 resume_count_bucket_27 = 30;
1624  optional int64 resume_count_bucket_28 = 31;
1625  optional int64 resume_count_bucket_29 = 32;
1626  optional int64 resume_count_bucket_30 = 33;
1627  optional int64 resume_count_bucket_31 = 34;
1628  optional int64 resume_count_bucket_32 = 35;
1629  optional int64 resume_count_bucket_33 = 36;
1630  optional int64 resume_count_bucket_34 = 37;
1631  optional int64 resume_count_bucket_35 = 38;
1632  optional int64 resume_count_bucket_36 = 39;
1633}
1634
1635/*
1636 * Log the Brownout events.
1637 */
1638message BrownoutDetected {
1639    enum IRQType {
1640        UVLO1 = 0;
1641        SMPL_WARN = 1;
1642        UVLO2 = 2;
1643        BATOILO = 3;
1644        BATOILO2 = 4;
1645    }
1646
1647    enum BrownoutReason {
1648        UNKNOWN = 0;
1649        UVLO_IF = 1;
1650        OCP_IF = 2;
1651        UVLO_MAIN = 3;
1652        UVLO_SUB = 4;
1653        OCP_B1M = 5;
1654        OCP_B2M = 6;
1655        OCP_B3M = 7;
1656        OCP_B4M = 8;
1657        OCP_B5M = 9;
1658        OCP_B6M = 10;
1659        OCP_B7M = 11;
1660        OCP_B8M = 12;
1661        OCP_B9M = 13;
1662        OCP_B10M = 14;
1663        OCP_B1S = 15;
1664        OCP_B2S = 16;
1665        OCP_B3S = 17;
1666        OCP_B4S = 18;
1667        OCP_B5S = 19;
1668        OCP_B6S = 20;
1669        OCP_B7S = 21;
1670        OCP_B8S = 22;
1671        OCP_B9S = 23;
1672        OCP_B10S = 24;
1673        OCP_BAS = 25;
1674        OCP_BBS = 26;
1675        OCP_BCS = 27;
1676        OCP_BDS = 28;
1677        OCP2_IF = 29;
1678    }
1679
1680    // Reverse domain name. (e.g. Pixel)
1681    optional string reverse_domain_name = 1;
1682    // Triggered mitigation IRQ
1683    optional IRQType triggered_irq = 2;
1684    // Triggered timestamp
1685    optional int64 triggered_timestamp = 3;
1686    // Triggered battery temperature
1687    optional int32 battery_temp = 4;
1688    // Triggered battery age
1689    optional int32 battery_cycle = 5;
1690    // Triggered battery soc
1691    optional int32 battery_soc = 6;
1692    // Triggered FG Reading: Voltage Now
1693    optional int32 voltage_now = 7;
1694    // Triggered ODPM Reading: Channel 1
1695    optional int32 odpm_channel01 = 8;
1696    // Triggered ODPM Reading: Channel 2
1697    optional int32 odpm_channel02 = 9;
1698    // Triggered ODPM Reading: Channel 3
1699    optional int32 odpm_channel03 = 10;
1700    // Triggered ODPM Reading: Channel 4
1701    optional int32 odpm_channel04 = 11;
1702    // Triggered ODPM Reading: Channel 5
1703    optional int32 odpm_channel05 = 12;
1704    // Triggered ODPM Reading: Channel 6
1705    optional int32 odpm_channel06 = 13;
1706    // Triggered ODPM Reading: Channel 7
1707    optional int32 odpm_channel07 = 14;
1708    // Triggered ODPM Reading: Channel 8
1709    optional int32 odpm_channel08 = 15;
1710    // Triggered ODPM Reading: Channel 9
1711    optional int32 odpm_channel09 = 16;
1712    // Triggered ODPM Reading: Channel 10
1713    optional int32 odpm_channel10 = 17;
1714    // Triggered ODPM Reading: Channel 11
1715    optional int32 odpm_channel11 = 18;
1716    // Triggered ODPM Reading: Channel 12
1717    optional int32 odpm_channel12 = 19;
1718    // Triggered ODPM Reading: Channel 13
1719    optional int32 odpm_channel13 = 20;
1720    // Triggered ODPM Reading: Channel 14
1721    optional int32 odpm_channel14 = 21;
1722    // Triggered ODPM Reading: Channel 15
1723    optional int32 odpm_channel15 = 22;
1724    // Triggered ODPM Reading: Channel 16
1725    optional int32 odpm_channel16 = 23;
1726    // Triggered ODPM Reading: Channel 17
1727    optional int32 odpm_channel17 = 24;
1728    // Triggered ODPM Reading: Channel 18
1729    optional int32 odpm_channel18 = 25;
1730    // Triggered ODPM Reading: Channel 19
1731    optional int32 odpm_channel19 = 26;
1732    // Triggered ODPM Reading: Channel 20
1733    optional int32 odpm_channel20 = 27;
1734    // Triggered ODPM Reading: Channel 21
1735    optional int32 odpm_channel21 = 28;
1736    // Triggered ODPM Reading: Channel 22
1737    optional int32 odpm_channel22 = 29;
1738    // Triggered ODPM Reading: Channel 23
1739    optional int32 odpm_channel23 = 30;
1740    // Triggered ODPM Reading: Channel 24
1741    optional int32 odpm_channel24 = 31;
1742    // Triggered DVFS State: Channel 1
1743    optional int32 dvfs_channel1 = 32;
1744    // Triggered DVFS State: Channel 2
1745    optional int32 dvfs_channel2 = 33;
1746    // Triggered DVFS State: Channel 3
1747    optional int32 dvfs_channel3 = 34;
1748    // Triggered DVFS State: Channel 4
1749    optional int32 dvfs_channel4 = 35;
1750    // Triggered DVFS State: Channel 5
1751    optional int32 dvfs_channel5  = 36;
1752    // Triggered DVFS State: Channel 6
1753    optional int32 dvfs_channel6 = 37;
1754    // brownout reason
1755    optional BrownoutReason brownout_reason = 38;
1756    // max current
1757    optional int32 max_current = 39;
1758    // event counter uvlo1
1759    optional int32 evt_cnt_uvlo1 = 40;
1760    // event counter uvlo2
1761    optional int32 evt_cnt_uvlo2 = 41;
1762    // event counter oilo1
1763    optional int32 evt_cnt_oilo1 = 42;
1764    // event counter oilo2
1765    optional int32 evt_cnt_oilo2 = 43;
1766    // VIMON vbatt
1767    optional int32 vimon_vbatt = 44;
1768    // VIMON ibatt
1769    optional int32 vimon_ibatt = 45;
1770    // Mitigation Method 0
1771    optional int32 mitigation_method_0 = 46;
1772    // Mitigation Method 0 Entry Count
1773    optional int32 mitigation_method_0_count = 47;
1774    // Mitigation Method 0 Entry Time
1775    optional int64 mitigation_method_0_time_us = 48;
1776    // pre ocp cpu1 backup at brownout
1777    optional int32 pre_ocp_cpu1_bckup = 49;
1778    // pre ocp cpu2 backup at brownout
1779    optional int32 pre_ocp_cpu2_bckup = 50;
1780    // pre ocp tpu backup at brownout
1781    optional int32 pre_ocp_tpu_bckup = 51;
1782    // pre ocp gpu backup at brownout
1783    optional int32 pre_ocp_gpu_bckup = 52;
1784    // pre uvlo hit count for m pmic at brownout
1785    optional int32 pre_uvlo_hit_cnt_m = 53;
1786    // pre uvlo hit count for s pmic at brownout
1787    optional int32 pre_uvlo_hit_cnt_s = 54;
1788    // pre uvlo assertion duration at brownout
1789    optional int32 pre_uvlo_dur = 55;
1790    // odpm irq stat 0 main at brownout
1791    optional int32 odpm_irq_stat_0_sys_evt_main_bckup = 56;
1792    // odpm irq stat 1 main at brownout
1793    optional int32 odpm_irq_stat_1_sys_evt_main_bckup = 57;
1794    // odpm irq stat 2 main at brownout
1795    optional int32 odpm_irq_stat_2_sys_evt_main_bckup = 58;
1796    // odpm irq stat 3 main at brownout
1797    optional int32 odpm_irq_stat_3_sys_evt_main_bckup = 59;
1798    // odpm irq stat 4 main at brownout
1799    optional int32 odpm_irq_stat_4_sys_evt_main_bckup = 60;
1800    // odpm irq stat 5 main at brownout
1801    optional int32 odpm_irq_stat_5_sys_evt_main_bckup = 61;
1802    // odpm irq stat 6 main at brownout
1803    optional int32 odpm_irq_stat_6_sys_evt_main_bckup = 62;
1804    // odpm irq stat 7 main at brownout
1805    optional int32 odpm_irq_stat_7_sys_evt_main_bckup = 63;
1806    // odpm irq stat 8 main at brownout
1807    optional int32 odpm_irq_stat_8_sys_evt_main_bckup = 64;
1808    // odpm irq stat 9 main at brownout
1809    optional int32 odpm_irq_stat_9_sys_evt_main_bckup = 65;
1810    // odpm irq stat 10 main at brownout
1811    optional int32 odpm_irq_stat_10_sys_evt_main_bckup = 66;
1812    // odpm irq stat 11 main at brownout
1813    optional int32 odpm_irq_stat_11_sys_evt_main_bckup = 67;
1814    // odpm irq stat 0 sub at brownout
1815    optional int32 odpm_irq_stat_0_sys_evt_sub_bckup = 68;
1816    // odpm irq stat 1 sub at brownout
1817    optional int32 odpm_irq_stat_1_sys_evt_sub_bckup = 69;
1818    // odpm irq stat 2 sub at brownout
1819    optional int32 odpm_irq_stat_2_sys_evt_sub_bckup = 70;
1820    // odpm irq stat 3 sub at brownout
1821    optional int32 odpm_irq_stat_3_sys_evt_sub_bckup = 71;
1822    // odpm irq stat 4 sub at brownout
1823    optional int32 odpm_irq_stat_4_sys_evt_sub_bckup = 72;
1824    // odpm irq stat 5 sub at brownout
1825    optional int32 odpm_irq_stat_5_sys_evt_sub_bckup = 73;
1826    // odpm irq stat 6 sub at brownout
1827    optional int32 odpm_irq_stat_6_sys_evt_sub_bckup = 74;
1828    // odpm irq stat 7 sub at brownout
1829    optional int32 odpm_irq_stat_7_sys_evt_sub_bckup = 75;
1830    // odpm irq stat 8 sub at brownout
1831    optional int32 odpm_irq_stat_8_sys_evt_sub_bckup = 76;
1832    // odpm irq stat 9 sub at brownout
1833    optional int32 odpm_irq_stat_9_sys_evt_sub_bckup = 77;
1834    // odpm irq stat 10 sub at brownout
1835    optional int32 odpm_irq_stat_10_sys_evt_sub_bckup = 78;
1836    // odpm irq stat 11 sub at brownout
1837    optional int32 odpm_irq_stat_11_sys_evt_sub_bckup = 79;
1838    // odpm irq stat ext 0 main at brownout
1839    optional int32 odpm_irq_stat_ext_0_sys_evt_main_bckup = 80;
1840    // odpm irq stat ext 1 main at brownout
1841    optional int32 odpm_irq_stat_ext_1_sys_evt_main_bckup = 81;
1842    // odpm irq stat ext 2 main at brownout
1843    optional int32 odpm_irq_stat_ext_2_sys_evt_main_bckup = 82;
1844    // odpm irq stat ext 3 main at brownout
1845    optional int32 odpm_irq_stat_ext_3_sys_evt_main_bckup = 83;
1846    // odpm irq stat ext 0 sub at brownout
1847    optional int32 odpm_irq_stat_ext_0_sys_evt_sub_bckup = 84;
1848    // odpm irq stat ext 1 sub at brownout
1849    optional int32 odpm_irq_stat_ext_1_sys_evt_sub_bckup = 85;
1850    // odpm irq stat ext 2 sub at brownout
1851    optional int32 odpm_irq_stat_ext_2_sys_evt_sub_bckup = 86;
1852    // odpm irq stat ext 3 sub at brownout
1853    optional int32 odpm_irq_stat_ext_3_sys_evt_sub_bckup = 87;
1854    // odpm irq stat gpu at brownout
1855    optional int32 odpm_irq_stat_gpu_bckup = 88;
1856    // odpm irq stat tpu at brownout
1857    optional int32 odpm_irq_stat_tpu_bckup = 89;
1858    // odpm irq stat cpu1 at brownout
1859    optional int32 odpm_irq_stat_cpu1_bckup = 90;
1860    // odpm irq stat cpu2 at brownout
1861    optional int32 odpm_irq_stat_cpu2_bckup = 91;
1862}
1863
1864/*
1865 * PCIe Link Statistics
1866 */
1867message PcieLinkStatsReported {
1868    /* Vendor reverse domain name (expecting "com.google.pixel"). */
1869    optional string reverse_domain_name = 1;
1870
1871    /* Count of new PCIe Link Down events on the modem interface */
1872    optional int32 modem_pcie_linkdowns = 2;
1873    /* Count of new PCIe Completion Timeout events on the modem interface */
1874    optional int32 modem_pcie_completion_timeouts = 3;
1875    /* Count of new PCIe Link Up Failure events on the modem interface */
1876    optional int32 modem_pcie_linkup_failures = 4;
1877    /* Average pll lock time (uS) during PCIe Link Up on modem interface */
1878    optional int32 modem_pcie_pll_lock_avg = 5;
1879    /* Average time (uS) for successful PCIe Link Up on modem interface */
1880    optional int32 modem_pcie_link_up_avg = 6;
1881
1882    /* Count of new PCIe Link Down events on the wifi interface */
1883    optional int32 wifi_pcie_linkdowns = 7;
1884    /* Count of new PCIe Completion Timeout events on the wifi interface */
1885    optional int32 wifi_pcie_completion_timeouts = 8;
1886    /* Count of new PCIe Link Up Failure events on the wifi interface */
1887    optional int32 wifi_pcie_linkup_failures = 9;
1888    /* Average pll lock time (uS) during PCIe Link Up on wifi interface */
1889    optional int32 wifi_pcie_pll_lock_avg = 10;
1890    /* Average time (uS) for successful PCIe Link Up on wifi interface */
1891    optional int32 wifi_pcie_link_up_avg = 11;
1892
1893    /* Count of new PCIe Link Recovery Failure events on the modem interface */
1894    optional int32 modem_pcie_link_recovery_failures = 12;
1895    /* Count of new PCIe Link Recovery Failure events on the wifi interface */
1896    optional int32 wifi_pcie_link_recovery_failures = 13;
1897}
1898
1899/**
1900 * Log the CDEV request stats per sensor, binded cooling device.
1901 * Logged from: hardware/google/pixel/thermal/utils/thermal_stats_helper.cpp
1902 */
1903message VendorSensorCoolingDeviceStats {
1904 optional string reverse_domain_name = 1;
1905 // Sensor name which is making the cooling device request
1906 optional string  trigger_sensor_name = 2;
1907
1908 // Cooling device name for which request is being made
1909 optional string  cooling_device_name = 3;
1910
1911 // Time duration for which stats are recorded
1912 optional int64 since_last_update_ms = 4;
1913
1914 // Sequence of values corresponding to time spent in each request state
1915 optional int64 time_in_state_ms_bucket_1 = 5;
1916 optional int64 time_in_state_ms_bucket_2 = 6;
1917 optional int64 time_in_state_ms_bucket_3 = 7;
1918 optional int64 time_in_state_ms_bucket_4 = 8;
1919 optional int64 time_in_state_ms_bucket_5 = 9;
1920 optional int64 time_in_state_ms_bucket_6 = 10;
1921 optional int64 time_in_state_ms_bucket_7 = 11;
1922 optional int64 time_in_state_ms_bucket_8 = 12;
1923 optional int64 time_in_state_ms_bucket_9 = 13;
1924 optional int64 time_in_state_ms_bucket_10 = 14;
1925 optional int64 time_in_state_ms_bucket_11 = 15;
1926 optional int64 time_in_state_ms_bucket_12 = 16;
1927 optional int64 time_in_state_ms_bucket_13 = 17;
1928 optional int64 time_in_state_ms_bucket_14 = 18;
1929 optional int64 time_in_state_ms_bucket_15 = 19;
1930 optional int64 time_in_state_ms_bucket_16 = 20;
1931 optional int64 time_in_state_ms_bucket_17 = 21;
1932 optional int64 time_in_state_ms_bucket_18 = 22;
1933 optional int64 time_in_state_ms_bucket_19 = 23;
1934 optional int64 time_in_state_ms_bucket_20 = 24;
1935}
1936
1937/* Log playcount of effects in Vibrator HAL
1938 *
1939 * Logged from:
1940 *     hardware/google/pixel/vibrator/
1941 */
1942message VibratorPlaycountReported {
1943  // Vendor reverse domain name (expecting "com.google.pixel").
1944  optional string reverse_domain_name = 1;
1945
1946  // Playcount for each primitive
1947  // Each index tracks the count for that index in the waveform
1948  repeated int32 waveform_counts = 2;
1949
1950  // Playcount for each 50ms range.
1951  // Each index tracks [50ms * i, 50ms * (i + 1))
1952  repeated int32 duration_counts = 3;
1953}
1954
1955/* Log latency encountered in Vibrator HAL
1956 *
1957 * Logged from:
1958 *     hardware/google/pixel/vibrator/
1959 */
1960message VibratorLatencyReported {
1961  // Vendor reverse domain name (expecting "com.google.pixel").
1962  optional string reverse_domain_name = 1;
1963
1964  // Minimum latency seen
1965  // 0 Prebaked and primitives
1966  // 1 Composed effects
1967  // 2 PWLE effects
1968  repeated int32 min_latencies = 2;
1969
1970  // Maximum latency seen
1971  // 0 Prebaked and primitives
1972  // 1 Composed effects
1973  // 2 PWLE effects
1974  repeated int32 max_latencies = 3;
1975
1976  // Average latency seen
1977  // 0 Prebaked and primitives
1978  // 1 Composed effects
1979  // 2 PWLE effects
1980  repeated int32 avg_latencies = 4;
1981}
1982
1983/* Log errors encountered in Vibrator HAL
1984 *
1985 * Logged from:
1986 *     hardware/google/pixel/vibrator/
1987 */
1988message VibratorErrorsReported {
1989  // Vendor reverse domain name (expecting "com.google.pixel").
1990  optional string reverse_domain_name = 1;
1991
1992  // Count for each error
1993  // 0 HwAPI Error
1994  // 1 HwCAL Error
1995  // 2 Compose Fail Error
1996  // 3 ALSA Fail Error
1997  // 4 Async Fail Error
1998  // 5 Bad Timeout Error
1999  // 6 Bad Amplitude Error
2000  // 7 Bad Effect Error
2001  // 8 Bad Effect Strength Error
2002  // 9 Bad Primitive Error
2003  // 10 Bad Composite Error
2004  // 11 PWLE Construction Fail Error
2005  // 12 Unsupported Method Error
2006  repeated int32 error_counts = 2;
2007}
2008
2009/* A message containing F2FS Atomic Write information */
2010message F2fsAtomicWriteInfo {
2011    /* Vendor reverse domain name (expecting "com.google.pixel"). */
2012    optional string reverse_domain_name = 1;
2013    /* Show the peak value of total current atomic write block count after boot */
2014    optional int32 peak_atomic_write = 2;
2015    /* Show the accumulated total committed atomic write block count after boot */
2016    optional int32 committed_atomic_block = 3;
2017    /* Show the accumulated total revoked atomic write block count after boot */
2018    optional int32 revoked_atomic_block = 4;
2019}
2020
2021/* A message containing Partition Used Spaced information */
2022message PartitionsUsedSpaceReported {
2023    enum Directory {
2024        UNKNOWN = 0;
2025        PERSIST = 1;
2026    }
2027    /* Vendor reverse domain name (expecting "com.google.pixel"). */
2028    optional string reverse_domain_name = 1;
2029
2030    /* used space of directory information */
2031    optional Directory directory = 2;
2032    optional int64 free_bytes = 3;
2033    optional int64 total_bytes = 4;
2034}
2035
2036message GpuEvent {
2037    enum GpuEventType {
2038      MALI_TYPE_NONE = 0;
2039      MALI_KMD_ERROR = 1;
2040      MALI_GPU_RESET = 2;
2041      /* Reserving up to 9 for mali event types */
2042      PVR_KMD_ERROR = 10;
2043    }
2044    enum GpuEventInfo {
2045      MALI_INFO_NONE = 0;
2046      MALI_CSG_REQ_STATUS_UPDATE = 1;
2047      MALI_CSG_SUSPEND = 2;
2048      MALI_CSG_SLOTS_SUSPEND = 3;
2049      MALI_CSG_GROUP_SUSPEND = 4;
2050      MALI_CSG_EP_CFG = 5;
2051      MALI_CSG_SLOTS_START = 6;
2052      MALI_GROUP_TERM = 7;
2053      MALI_QUEUE_START = 8;
2054      MALI_QUEUE_STOP = 9;
2055      MALI_QUEUE_STOP_ACK = 10;
2056      MALI_CSG_SLOT_READY = 11;
2057      MALI_L2_PM_TIMEOUT = 12;
2058      MALI_PM_TIMEOUT = 13;
2059      MALI_CSF_RESET_OK = 14;
2060      MALI_CSF_RESET_FAILED = 15;
2061      MALI_TILER_OOM = 16;
2062      MALI_PROGRESS_TIMER = 17;
2063      MALI_CS_ERROR = 18;
2064      MALI_FW_ERROR = 19;
2065      MALI_PMODE_EXIT_TIMEOUT = 20;
2066      MALI_PMODE_ENTRY_FAILURE = 21;
2067      MALI_GPU_PAGE_FAULT = 22;
2068      MALI_MMU_AS_ACTIVE_STUCK = 23;
2069      MALI_TRACE_BUF_INVALID_SLOT = 24;
2070      /* Reserving up to 49 for mali event info */
2071      PVR_INFO_NONE = 50;
2072      PVR_FW_PAGEFAULT = 51;
2073      PVR_HOST_WDG_FW_ERROR = 52;
2074      PVR_GUILTY_LOCKUP = 53;
2075    }
2076
2077    /* Vendor reverse domain name (expecting "com.google.pixel"). */
2078    optional string reverse_domain_name = 1;
2079    /*
2080     * Type of the GPU event. Possible values depend on the platform GPU.
2081     * Eg, MALI_KMD_ERROR, MALI_GPU_RESET.
2082     */
2083    optional GpuEventType gpu_event_type = 2;
2084    /*
2085     * Additional information about the GPU event. Possible values depend
2086     * on the platform GPU.
2087     * Eg, MALI_PM_TIMEOUT, MALI_CSF_RESET_OK.
2088     */
2089    optional GpuEventInfo gpu_event_info = 3;
2090}
2091/**
2092 * Log mitigation duration.
2093 */
2094message PowerMitigationDurationCounts {
2095 optional string reverse_domain_name = 1;
2096 // Count of UVLO1 greater than threshold without any other concurrent IRQs.
2097 optional int32 greater_than_thresh_uvlo1_none = 2;
2098 // Count of UVLO1 IRQ + MMWAVE IRQ with duration greater than threshold.
2099 optional int32 greater_than_thresh_uvlo1_mmwave = 3;
2100 // Count of UVLO1 IRQ + RFFE IRQ with duration greater than threshold.
2101 optional int32 greater_than_thresh_uvlo1_rffe = 4;
2102 // Count of UVLO2 greater than threshold without any other concurrent IRQs.
2103 optional int32 greater_than_thresh_uvlo2_none = 5;
2104 // Count of UVLO2 IRQ + MMWAVE IRQ with duration greater than threshold.
2105 optional int32 greater_than_thresh_uvlo2_mmwave = 6;
2106 // Count of UVLO2 IRQ + RFFE IRQ with duration greater than threshold.
2107 optional int32 greater_than_thresh_uvlo2_rffe = 7;
2108 // Count of BATOILO greater than threshold without any other concurrent IRQs.
2109 optional int32 greater_than_thresh_batoilo_none = 8;
2110 // Count of BATOILO IRQ + MMWAVE IRQ with duration greater than threshold.
2111 optional int32 greater_than_thresh_batoilo_mmwave = 9;
2112 // Count of BATOILO IRQ + RFFE IRQ with duration greater than threshold.
2113 optional int32 greater_than_thresh_batoilo_rffe = 10;
2114
2115 // IRQ duration of main regulator indices 0-11 greater than threshold.
2116 optional int32 greater_than_thresh_main_0 = 11;
2117 optional int32 greater_than_thresh_main_1 = 12;
2118 optional int32 greater_than_thresh_main_2 = 13;
2119 optional int32 greater_than_thresh_main_3 = 14;
2120 optional int32 greater_than_thresh_main_4 = 15;
2121 optional int32 greater_than_thresh_main_5 = 16;
2122 optional int32 greater_than_thresh_main_6 = 17;
2123 optional int32 greater_than_thresh_main_7 = 18;
2124 optional int32 greater_than_thresh_main_8 = 19;
2125 optional int32 greater_than_thresh_main_9 = 20;
2126 optional int32 greater_than_thresh_main_10 = 21;
2127 optional int32 greater_than_thresh_main_11 = 22;
2128
2129 // IRQ duration of sub regulator indices 0-11 greater than threshold.
2130 optional int32 greater_than_thresh_sub_0 = 23;
2131 optional int32 greater_than_thresh_sub_1 = 24;
2132 optional int32 greater_than_thresh_sub_2 = 25;
2133 optional int32 greater_than_thresh_sub_3 = 26;
2134 optional int32 greater_than_thresh_sub_4 = 27;
2135 optional int32 greater_than_thresh_sub_5 = 28;
2136 optional int32 greater_than_thresh_sub_6 = 29;
2137 optional int32 greater_than_thresh_sub_7 = 30;
2138 optional int32 greater_than_thresh_sub_8 = 31;
2139 optional int32 greater_than_thresh_sub_9 = 32;
2140 optional int32 greater_than_thresh_sub_10 = 33;
2141 optional int32 greater_than_thresh_sub_11 = 34;
2142}
2143
2144/*
2145 * Logs the third party audio effects stats.
2146 * Third party audio effects stats includes duration in milliseconds for each
2147 * instance of the effects (speaker, USB, etc.).
2148 */
2149message VendorAudioThirdPartyEffectStatsReported {
2150    /* Vendor reverse domain name (expecting "com.google.pixel"). */
2151    optional string reverse_domain_name = 1;
2152
2153    enum InstanceId {
2154        OTHER = 0;
2155        SPEAKER = 1;
2156        USB = 2;
2157        BT_A2DP = 3;
2158        BT_LE = 4;
2159    }
2160    /* Instance of the effect. */
2161    optional InstanceId instance = 2;
2162    /* Active duration in milliseconds per day for volume range 0. */
2163    optional int32 volume_range_0_active_ms_per_day = 3;
2164    /* Active duration in milliseconds per day for volume range 1. */
2165    optional int32 volume_range_1_active_ms_per_day = 4;
2166    /* Active duration in milliseconds per day for volume range 2. */
2167    optional int32 volume_range_2_active_ms_per_day = 5;
2168    /* Active duration in milliseconds per day for volume range 3. */
2169    optional int32 volume_range_3_active_ms_per_day = 6;
2170    /* Active duration in milliseconds per day for volume range 4. */
2171    optional int32 volume_range_4_active_ms_per_day = 7;
2172    /* Active duration in milliseconds per day for volume range 5. */
2173    optional int32 volume_range_5_active_ms_per_day = 8;
2174    /* Active duration in milliseconds per day for volume range 6. */
2175    optional int32 volume_range_6_active_ms_per_day = 9;
2176    /* Active duration in milliseconds per day for volume range 7. */
2177    optional int32 volume_range_7_active_ms_per_day = 10;
2178    /* Active duration in milliseconds per day for volume range 8. */
2179    optional int32 volume_range_8_active_ms_per_day = 11;
2180    /* Active duration in milliseconds per day for volume range 9. */
2181    optional int32 volume_range_9_active_ms_per_day = 12;
2182}
2183
2184/*
2185 * Logs the Audio Adapted information stats.
2186 * Two stats are recorded, count and duration (in ms) per features.
2187 */
2188message VendorAudioAdaptedInfoStatsReported {
2189  /* Vendor reverse domain name */
2190  optional string reverse_domain_name = 1;
2191
2192  enum AdaptedInfoFeature {
2193    UNKNOWN = 0;
2194    BATTERY_ADAPTED_AUDIO_CONTROL = 1;
2195    MEDIA_PLAYBACK_THERMAL_THROTTLE = 2;
2196    TELEPHONY_THERMAL_THROTTLE = 3;
2197    ACOUSTIC_SHOCK = 4;
2198    SPATIAL_AUDIO = 5;
2199  };
2200  /* Feature to record the stats */
2201  optional AdaptedInfoFeature feature_id = 2;
2202  /* Number of time the feature is active */
2203  optional int32 active_counts_per_day = 3;
2204  /* Duration the feature is active in milliseconds */
2205  optional int32 active_duration_ms_per_day = 4;
2206}
2207
2208/*
2209 * Logs the audio PCM usage stats.
2210 * PCM usage includes average latency and total active count per day.
2211 */
2212message VendorAudioPcmStatsReported {
2213  /* Vendor reverse domain name */
2214  optional string reverse_domain_name = 1;
2215
2216  enum HalPcmType {
2217    UNKNOWN = 0;
2218    DEEPBUFFER = 1;
2219    LOWLATENCY = 2;
2220    MMAP_PLAY = 3;
2221    RAW_PLAY = 4;
2222    IMMERSIVE = 5;
2223    HAPTIC = 6;
2224    COMPRESS = 7;
2225    MMAP_REC = 8;
2226    RAW_REC = 9;
2227    AUDIO_REC = 10;
2228    HIFI_RX = 11;
2229    HIFI_TX = 12;
2230    IMMUTABLE_RX = 13;
2231    CUSTOM_PCM_1 = 14;
2232    CUSTOM_PCM_2 = 15;
2233    CUSTOM_PCM_3 = 16;
2234    CUSTOM_PCM_4 = 17;
2235    CUSTOM_PCM_5 = 18;
2236  };
2237  /* Type of PCM */
2238  optional HalPcmType type = 2;
2239  /* Average latency in millisecond of the pcm type per day. */
2240  optional int32 pcm_open_latency_avg_ms_per_day = 3;
2241  /* Total active count of the pcm type per day. */
2242  optional int32 pcm_active_counts_per_day = 4;
2243}
2244
2245/**
2246  * Keep track of information about a USB data session, which is defined
2247  * as the period when a port enters a data role (either host or device) to
2248  * when the port exits the data role.
2249  */
2250message VendorUsbDataSessionEvent {
2251  /* Vendor reverse domain name (expecting "com.google.pixel") */
2252  optional string reverse_domain_name = 1;
2253
2254  enum UsbDataRole {
2255    USB_ROLE_UNKNOWN = 0;
2256    USB_ROLE_DEVICE = 1;
2257    USB_ROLE_HOST = 2;
2258  }
2259  /**
2260    * USB device states are key milestones in a USB connection.
2261    * For device data role, a typical transition would be like:
2262    * not attached -> default -> addressed -> configured.
2263    * For host data role, a typical transition would be like
2264    * not attached -> powered -> default -> addressed -> configured.
2265    */
2266  enum UsbDeviceState {
2267    USB_STATE_UNKNOWN = 0;
2268    USB_STATE_NOT_ATTACHED = 1;
2269    USB_STATE_ATTACHED = 2;
2270    USB_STATE_POWERED = 3;
2271    USB_STATE_DEFAULT = 4;
2272    USB_STATE_ADDRESSED = 5;
2273    USB_STATE_CONFIGURED = 6;
2274    USB_STATE_SUSPENDED = 7;
2275  }
2276  /* USB data role of the data session. */
2277  optional UsbDataRole usb_role = 2;
2278  /* Usb device state transitions during the data session. */
2279  repeated UsbDeviceState usb_states = 3;
2280  /**
2281    * Elapsed time from the start of the data session when entering the
2282    * state, mapped 1-1 to the usb_states field.
2283    */
2284  repeated int64 elapsed_time_ms = 4;
2285  // Duration of the data session.
2286  optional int64 duration_ms = 5;
2287}
2288
2289/*
2290 * Logs the thermal sensor abnormal event when detected.
2291 * Logged from:
2292 *    virtual sensors: hardware/google/pixel/thermal/utils/thermal_stats_helper.cpp
2293 *    thermistors & SoC: hardware/google/pixel/pixelstats/UeventListener.cpp
2294 */
2295message ThermalSensorAbnormalityDetected {
2296  enum AbnormalityType {
2297    UNKNOWN = 0;
2298    SENSOR_STUCK = 1;
2299    EXTREME_HIGH_TEMP = 2;
2300    EXTREME_LOW_TEMP = 3;
2301    HIGH_RISING_SPEED = 4;
2302    TEMP_READ_FAIL = 5;
2303  }
2304
2305  /* Vendor reverse domain name */
2306  optional string reverse_domain_name = 1;
2307  /* Type of Thermal Sensor Abnormality */
2308  optional AbnormalityType type = 2;
2309  /* Name of the problematic sensor */
2310  optional string sensor = 3;
2311  /* Abnormal temp reading of sensor */
2312  optional int32 temp = 4;
2313}
2314
2315/**
2316 * Logs the reported vendor audio offloaded effects usage stats.
2317 */
2318message VendorAudioOffloadedEffectStatsReported {
2319  /* Vendor reverse domain name */
2320  optional string reverse_domain_name = 1;
2321
2322  /* UUID most significant bit */
2323  optional int64 effect_uuid_msb = 2;
2324
2325  /* UUID least significant bit */
2326  optional int64 effect_uuid_lsb = 3;
2327
2328  /* Active seconds per day. */
2329  optional int32 effect_active_seconds_per_day = 4;
2330}
2331
2332/*
2333 * Logs the Bluetooth Audio stats.
2334 * Two stats are recorded, count and duration (in ms) per features.
2335 */
2336message VendorAudioBtMediaStatsReported {
2337  /* Vendor reverse domain name */
2338  optional string reverse_domain_name = 1;
2339
2340  enum Codec {
2341    UNKNOWN = 0;
2342    SBC = 1;
2343    AAC = 2;
2344    OPUS = 3;
2345    LC3 = 4;
2346  }
2347  /* Codec to record. */
2348  optional Codec bt_codec_type = 2;
2349  /* Total active seconds to record. */
2350  optional int32 active_seconds_per_day = 3;
2351}
2352
2353/*
2354 * Logs the usage of APIs in Pixel Impulse.
2355 */
2356message PixelImpulseUsageReported {
2357  /* Vendor reverse domain name */
2358  optional string reverse_domain_name = 1;
2359
2360  /* UID of the caller package */
2361  optional int32 caller_uid = 2 [(android.os.statsd.is_uid) = true];
2362
2363  /* UID of the callee package */
2364  optional int32 callee_uid = 3 [(android.os.statsd.is_uid) = true];
2365
2366  enum ApiName {
2367      API_UNKNOWN = 0;
2368      /* Server side */
2369      API_SERVICE_BIND = 1;
2370      API_SERVICE_UNBIND = 2;
2371      API_REGISTER = 3;
2372      API_UNREGISTER = 4;
2373      API_CLEAR_APP_DATA = 100;
2374      /* Client side */
2375      API_SERVER_START = 1001;
2376      API_PIXEL_STATE_CHANGE = 1002;
2377      /* Internal */
2378      INTERNAL_PLATFORM_CONNECTION_CONNECT = 10001;
2379      INTERNAL_PLATFORM_CONNECTION_DISCONNECT = 10002;
2380      INTERNAL_PLATFORM_CONNECTION_CHANGE = 10003;
2381      INTERNAL_CLIENT_LISTENER_ADD = 10004;
2382      INTERNAL_CLIENT_LISTENER_REMOVE = 10005;
2383      INTERNAL_WAIT = 10006;
2384      INTERNAL_COROUTINE_ENQUEUE = 10007;
2385      INTERNAL_COROUTINE_RUN = 10008;
2386  }
2387  /* Invoked API name */
2388  optional ApiName api_name = 4;
2389
2390  enum Tag {
2391      TAG_UNKNOWN = 0;
2392      TAG_TEMPERATURE_READ_DELAY = 1;
2393      TAG_SKIN_TEMPERATURE = 2;
2394      TAG_BUSINESS_SCOPE = 3;
2395      TAG_NON_BUSINESS_SCOPE = 4;
2396  }
2397  /* Tag for debugging purpose */
2398  optional Tag tag = 5;
2399
2400  /* Timestamp of the usage start in epoch time */
2401  optional int64 usage_start_epoch_millis = 6;
2402
2403  /* Timestamp of the usage start since device boot */
2404  optional int64 usage_start_uptime_millis = 7;
2405
2406  /* Duration of the usage */
2407  optional int64 usage_duration_millis = 8;
2408
2409  /* Whether the invocation was successful */
2410  optional bool success = 9;
2411
2412  enum FailReason {
2413      FAIL_REASON_UNKNOWN = 0;
2414      FAIL_REASON_INVALID_ARGUMENT = 1;
2415      FAIL_REASON_UNAUTHORIZED = 2;
2416      FAIL_REASON_TIMEOUT = 3;
2417      FAIL_REASON_NOT_FOUND = 4;
2418      FAIL_REASON_INVALID_STATE = 5;
2419  }
2420  /* Fail reason (if success == false) */
2421  optional FailReason fail_reason = 10;
2422
2423  /* Size of the arguments */
2424  optional int32 request_size = 11;
2425
2426  /* Platform connection usage */
2427  /* Used when api_name == INTERNAL_PLATFORM_CONNECTION_CHANGE */
2428  optional int32 internal_platform_connection_count = 12;
2429
2430  /* Client state source usage */
2431  /* Used when api_name == INTERNAL_CLIENT_LISTENER_* */
2432  optional int32 internal_client_listener_count = 13;
2433
2434  enum StateSource {
2435      STATE_SOURCE_UNKNOWN = 0;
2436      STATE_SOURCE_UID_IMPORTANCE = 1;
2437      STATE_SOURCE_CAMERA_AVAILABILITY = 2;
2438      STATE_SOURCE_DROPBOX_BROADCAST = 3;
2439      STATE_SOURCE_TEMPERATURE = 4;
2440      STATE_SOURCE_THERMAL_STATUS = 5;
2441  }
2442  /* State source involved */
2443  /* Used when api_name == INTERNAL_PLATFORM_CONNECTION_* or
2444   * api_name == INTERNAL_CLIENT_LISTENER_* */
2445  optional StateSource state_source = 14;
2446
2447  /* UID importance cut point */
2448  /* This is the UID importance cutpoint associated with the
2449   * OnUidImportanceListener
2450   */
2451  /* Used when state_source == STATE_SOURCE_UID_IMPORTANCE */
2452  optional android.app.Importance uid_importance_cut_point = 15;
2453
2454  /* Expected value for temperature delta in Celsius */
2455  optional float expected_temperature_celsius = 16;
2456
2457  /* Actual value for temperature delta in Celsius */
2458  optional float actual_temperature_celsius = 17;
2459}
2460
2461/**
2462 * Log DisplayPort link error statistics.
2463 */
2464message DisplayPortErrorStats {
2465  /* Vendor reverse domain name */
2466  optional string reverse_domain_name = 1;
2467
2468  /* The error count due to link training failed. */
2469  optional int32 link_negotiation_failures = 2;
2470  /* The error count due to read EDID failed. */
2471  optional int32 edid_read_failures = 3;
2472  /* The error count due to read dpcd failed. */
2473  optional int32 dpcd_read_failures = 4;
2474  /* The error count due to EDID is invalid. */
2475  optional int32 edid_invalid_failures = 5;
2476  /* The error count due to sink count is invalid. */
2477  optional int32 sink_count_invalid_failures = 6;
2478  /* The error count due to link unstable. */
2479  optional int32 link_unstable_failures = 7;
2480}
2481
2482/**
2483 * Log HDCP authentication type statistics.
2484 */
2485message HDCPAuthTypeStats {
2486  /* Vendor reverse domain name */
2487  optional string reverse_domain_name = 1;
2488
2489  /* The count due to hdcp2 success */
2490  optional int32 hdcp2_success_count = 2;
2491  /* The count due to hdcp2 fallback */
2492  optional int32 hdcp2_fallback_count = 3;
2493  /* The count due to hdcp2 fail */
2494  optional int32 hdcp2_fail_count = 4;
2495  /* The count due to hdcp1 success */
2496  optional int32 hdcp1_success_count = 5;
2497  /* The count due to hdcp1 fail */
2498  optional int32 hdcp1_fail_count = 6;
2499  /* The count due to hdcp0 */
2500  optional int32 hdcp0_count = 7;
2501}
2502
2503/**
2504 * A message containing how DisplayPort is being used in a day.
2505 */
2506message DisplayPortUsage {
2507  /* Vendor reverse domain name */
2508  optional string reverse_domain_name = 1;
2509
2510  /* resolution width */
2511  optional int32 width = 2;
2512  /* resolution height */
2513  optional int32 height = 3;
2514  /* refresh rate */
2515  optional float refresh_rate = 4;
2516  /* vendor ID. */
2517  optional int32 vendor_id = 5;
2518  /* product ID. */
2519  optional int32 product_id = 6;
2520  /* indicated start/stop event of DP usage */
2521  optional bool connected = 7;
2522}
2523
2524/*
2525 * A message containing max77779 fuel gauge abnormal events
2526 * Logged from:
2527 *    hardware/google/pixel/pixelstats/BatteryFGReporter.cpp
2528 */
2529message FuelGaugeAbnormalityReported {
2530  enum Event {
2531    UNKNOWN_EVENT = 0;
2532    FULLCAPNOM_LOW = 1;  // unexpected fullcapnom learning (too low)
2533    FULLCAPNOM_HIGH = 2; // unexpected fullcapnom learning (too high)
2534    REPSOC_EDET = 3;     // empty detect false alarm
2535    REPSOC_FDET = 4;     // full detect false alarm
2536    REPSOC = 5;          // repsoc not accurate
2537    VFOCV = 6;           // vfocv estimation wrong
2538  }
2539  enum EventState {
2540    UNKNOWN_STATE = 0;
2541    UNTRIGGER = 1;
2542    TRIGGER = 2;
2543  }
2544  /* Vendor reverse domain name */
2545  optional string reverse_domain_name = 1;
2546  /* Report by which event */
2547  repeated Event event = 2;
2548  /* State was triggered or untriggered */
2549  repeated EventState event_state = 3;
2550  optional int32 duration_secs = 4;
2551  /* Record fuel gauge registers at the time of the event */
2552  optional int32 fg_register_address_1 = 5;
2553  optional int32 fg_register_data_1 = 6;
2554  optional int32 fg_register_address_2 = 7;
2555  optional int32 fg_register_data_2 = 8;
2556  optional int32 fg_register_address_3 = 9;
2557  optional int32 fg_register_data_3 = 10;
2558  optional int32 fg_register_address_4 = 11;
2559  optional int32 fg_register_data_4 = 12;
2560  optional int32 fg_register_address_5 = 13;
2561  optional int32 fg_register_data_5 = 14;
2562  optional int32 fg_register_address_6 = 15;
2563  optional int32 fg_register_data_6 = 16;
2564  optional int32 fg_register_address_7 = 17;
2565  optional int32 fg_register_data_7 = 18;
2566  optional int32 fg_register_address_8 = 19;
2567  optional int32 fg_register_data_8 = 20;
2568  optional int32 fg_register_address_9 = 21;
2569  optional int32 fg_register_data_9 = 22;
2570  optional int32 fg_register_address_10 = 23;
2571  optional int32 fg_register_data_10 = 24;
2572  optional int32 fg_register_address_11= 25;
2573  optional int32 fg_register_data_11= 26;
2574  optional int32 fg_register_address_12= 27;
2575  optional int32 fg_register_data_12 = 28;
2576  optional int32 fg_register_address_13 = 29;
2577  optional int32 fg_register_data_13 = 30;
2578  optional int32 fg_register_address_14 = 31;
2579  optional int32 fg_register_data_14 = 32;
2580  optional int32 fg_register_address_15 = 33;
2581  optional int32 fg_register_data_15 = 34;
2582  optional int32 fg_register_address_16 = 35;
2583  optional int32 fg_register_data_16 = 36;
2584}
2585
2586/*
2587 *  Process memory usage by Oom groups
2588 */
2589message MmProcessUsageByOomGroupSnapshot {
2590  enum OomGroup {
2591    OOMR_950 = 0;
2592    OOMR_900 = 1;
2593    OOMR_850 = 2;
2594    OOMR_800 = 3;
2595    OOMR_750 = 4;
2596    OOMR_700 = 5;
2597    OOMR_650 = 6;
2598    OOMR_600 = 7;
2599    OOMR_550 = 8;
2600    OOMR_500 = 9;
2601    OOMR_450 = 10;
2602    OOMR_400 = 11;
2603    OOMR_350 = 12;
2604    OOMR_300 = 13;
2605    OOMR_250 = 14;
2606    OOMR_200 = 15;
2607    OOMS_200 = 16;
2608    OOMR_150 = 17;
2609    OOMR_100 = 18;
2610    OOMR_050 = 19;
2611    OOMR_000 = 20;
2612    OOMS_000 = 21;
2613    OOMR_NEGATIVE = 22;
2614    /* reserved for future error handling */
2615    OOM_UNKNOWN = 999;
2616  }
2617  /* Vendor reverse domain name */
2618  optional string reverse_domain_name = 1;
2619  /* Unique ID per knob read */
2620  optional int32 metric_uid = 2;
2621  /*
2622   * This is the dimension: each knob read will create N atoms.
2623   * N = number of groups defined in the enumerate above.
2624   */
2625  optional OomGroup oom_group = 3;
2626  optional int64 nr_task = 4;
2627  optional int64 file_rss = 5;
2628  optional int64 anon_rss = 6;
2629  optional int64 pgtable = 7;
2630  optional int64 swap_ent = 8;
2631  optional int64 shmem_rss = 9;
2632}
2633
2634/*
2635 * GCMA memory hourly snapshot
2636 */
2637message MmGcmaSnapshot {
2638  /* Vendor reverse domain name */
2639  optional string reverse_domain_name = 1;
2640  /* cached memory */
2641  optional int64 cached = 2;
2642}
2643
2644/*
2645 * GCMA memory daily statistics
2646 */
2647message MmGcmaStats {
2648  /* Vendor reverse domain name */
2649  optional string reverse_domain_name = 1;
2650  /* statistics */
2651  optional int64 discarded = 2;
2652  optional int64 evicted = 3;
2653  optional int64 loaded = 4;
2654  optional int64 stored = 5;
2655  repeated int64 latency_histogram = 6;
2656}
2657
2658/*
2659 * A message containing the USB audio capability of the connected accessories.
2660 */
2661message VendorAudioUsbDeviceCapabilityStats {
2662  /* Vendor reverse domain name */
2663  optional string reverse_domain_name = 1;
2664
2665  enum UsbMode {
2666    UNKNOWN_MODE = 0;
2667    ASYNC_MODE = 1;
2668    ADAPTIVE_MODE = 2;
2669    SYNC_MODE = 3;
2670  }
2671  /* USB Modes */
2672  repeated UsbMode playback_supported_modes = 2;
2673  repeated UsbMode capture_supported_modes = 3;
2674
2675  enum UsbSpeed {
2676    OTHER_SPEED = 0;
2677    FULL_SPEED = 1;
2678    HIGH_SPEED = 2;
2679    SUPER_SPEED = 3;
2680  }
2681  /* USB Speed */
2682  optional UsbSpeed usb_speed = 4 [deprecated = true];
2683
2684  /* Data Packets Interval in ms. Expected value is between 125 and 1000.*/
2685  repeated int32 playback_data_packet_interval = 5;
2686  repeated int32 capture_data_packet_interval = 6;
2687
2688  /* List of supported sample rates in increasing order. */
2689  repeated int32 playback_supported_sample_rates = 7;
2690  repeated int32 capture_supported_sample_rates = 8;
2691
2692  /* Maximum number of channels supported */
2693  optional int32 playback_supported_channel_count = 9;
2694  optional int32 capture_supported_channel_count = 10;
2695
2696  enum PcmType {
2697    DEFAULT = 0;
2698    INT16_BIT = 1;
2699    INT32_BIT = 2;
2700    FIXED_Q824 = 3;
2701    FLOAT32_BIT = 4;
2702    INT24_BIT = 5;
2703    DSD32_BIT = 6;
2704  }
2705  /* Supported PCM Type */
2706  repeated PcmType playback_supported_pcm_types = 11;
2707  repeated PcmType capture_supported_pcm_types = 12;
2708
2709  /* Supported endian */
2710  optional bool is_big_endian = 13;
2711
2712  /* Is USB device support playback */
2713  optional bool is_playback = 14;
2714
2715  /* Duration connected */
2716  optional int32 duration_second_connected = 15;
2717};
2718
2719/*
2720 * A message containing battery time to full stats
2721 * Logged from:
2722 *    hardware/google/pixel/pixelstats/BatteryTTFReporter.cpp
2723 */
2724message BatteryTimeToFullStatsReported {
2725  // Vendor reverse domain name (expecting "com.google.pixel").
2726  optional string reverse_domain_name = 1;
2727
2728  // The charge_counter and elap of each soc
2729  optional int32 ttf_type = 2;
2730  optional int32 ttf_range = 3;
2731  optional int32 soc_0 = 4;
2732  optional int32 soc_1 = 5;
2733  optional int32 soc_2 = 6;
2734  optional int32 soc_3 = 7;
2735  optional int32 soc_4 = 8;
2736  optional int32 soc_5 = 9;
2737  optional int32 soc_6 = 10;
2738  optional int32 soc_7 = 11;
2739  optional int32 soc_8 = 12;
2740  optional int32 soc_9 = 13;
2741}
2742
2743/*
2744 * A message containing Direct USB Access event.
2745 */
2746message VendorAudioDirectUsbAccessUsageStats {
2747  /* Vendor reverse domain name */
2748  optional string reverse_domain_name = 1;
2749
2750  optional int32 duration_second = 2;
2751};
2752
2753/*
2754 * A message containing Usb Config event.
2755 */
2756message VendorAudioUsbConfigStats {
2757  /* Vendor reverse domain name */
2758  optional string reverse_domain_name = 1;
2759
2760  /* Is config for playback or capture */
2761  optional bool is_playback = 2;
2762
2763  /* Is config for hifi */
2764  optional bool has_hifi = 3;
2765
2766  /* Sample rate used */
2767  optional int32 sample_rate = 4;
2768
2769  /* Channel used */
2770  optional int32 channel = 5;
2771
2772  /* Pcm Type used */
2773  optional int32 pcm_type = 6;
2774
2775  /* Duration in second */
2776  optional int32 duration_second = 7;
2777};
2778
2779/*
2780 * Per-app GPU DVFS time-in-state data, for each GPU frequency.
2781 * Logging is capped at 15 apps/uids max, per 6 hours.
2782 * Logged from:
2783 *   hardware/google/pixel/pixelstats/
2784 *
2785 * See: b/341045478, b/340834608
2786 *
2787 * Estimated Logging Rate:
2788 * Peak: 15 times in 6 hours | Avg: 15 times in 6 hours
2789 */
2790message GpuFrequencyTimeInStatePerUidReported {
2791  /* Vendor reverse domain name (expecting "com.google.pixel"). */
2792  optional string reverse_domain_name = 1;
2793
2794  /* App UID. */
2795  optional int32 uid = 2 [(android.os.statsd.is_uid) = true];
2796
2797  /*
2798   * Time passed, since the previous push of this atom for this uid, in
2799   * milliseconds.
2800   */
2801  optional int32 reporting_duration_ms = 3;
2802
2803  /*
2804   * Report up to 15 different frequencies, and how much time was spent in each
2805   * frequency, by this app/uid since the previous push of this atom.
2806   * Frequencies are given in KHz, and time is given in milliseconds since the
2807   * previous push of this atom.
2808   * Each individual device will always report the same frequency in the same
2809   * field (for the aggregation in the metric(s) to work). If a frequency had 0
2810   * time spent in it (since the previous atom push) for an app/uid - both
2811   * frequency and duration fields for that frequency will not be set (to save
2812   * space).
2813   */
2814  optional int32 frequency_1_khz = 4;
2815  optional int32 time_1_millis = 5;
2816
2817  optional int32 frequency_2_khz = 6;
2818  optional int32 time_2_millis = 7;
2819
2820  optional int32 frequency_3_khz = 8;
2821  optional int32 time_3_millis = 9;
2822
2823  optional int32 frequency_4_khz = 10;
2824  optional int32 time_4_millis = 11;
2825
2826  optional int32 frequency_5_khz = 12;
2827  optional int32 time_5_millis = 13;
2828
2829  optional int32 frequency_6_khz = 14;
2830  optional int32 time_6_millis = 15;
2831
2832  optional int32 frequency_7_khz = 16;
2833  optional int32 time_7_millis = 17;
2834
2835  optional int32 frequency_8_khz = 18;
2836  optional int32 time_8_millis = 19;
2837
2838  optional int32 frequency_9_khz = 20;
2839  optional int32 time_9_millis = 21;
2840
2841  optional int32 frequency_10_khz = 22;
2842  optional int32 time_10_millis = 23;
2843
2844  optional int32 frequency_11_khz = 24;
2845  optional int32 time_11_millis = 25;
2846
2847  optional int32 frequency_12_khz = 26;
2848  optional int32 time_12_millis = 27;
2849
2850  optional int32 frequency_13_khz = 28;
2851  optional int32 time_13_millis = 29;
2852
2853  optional int32 frequency_14_khz = 30;
2854  optional int32 time_14_millis = 31;
2855
2856  optional int32 frequency_15_khz = 32;
2857  optional int32 time_15_millis = 33;
2858}
2859
2860/* GPU memory allocation information for frozen apps */
2861message GpuFrozenAppsMemoryPerUid {
2862  /* Vendor reverse domain name (expecting "com.google.pixel"). */
2863  optional string reverse_domain_name = 1;
2864
2865  /* UID of the frozen app. */
2866  optional int32 uid = 2 [(android.os.statsd.is_uid) = true];
2867
2868  /* Total amount of GPU memory allocated by this app, in kilobytes. */
2869  optional int64 gpu_memory_kb = 3;
2870}
2871
2872/**
2873 * Logs for repair mode enter
2874 * Logged from:
2875 *   vendor/google/apps/RepairMode/
2876 *
2877 * Estimated Logging Rate:
2878 * Peak: 5 times in 1 min | Avg: 3 times per device per year
2879 */
2880 message RepairModeEntered {
2881  // Vendor reverse domain name (expecting "com.google.pixel").
2882  optional string reverse_domain_name = 1;
2883  // free storage size on device when entering repair mode in megabyte
2884  optional int64 storage_size_mb = 2;
2885}
2886
2887/**
2888 * Logs for repair mode exit
2889 * Logged from:
2890 *   vendor/google/apps/RepairMode/
2891 *
2892 * Estimated Logging Rate:
2893 * Peak: 5 times in 1 min | Avg: 3 times per device per year
2894 */
2895message RepairModeExited {
2896  // Vendor reverse domain name (expecting "com.google.pixel").
2897  optional string reverse_domain_name = 1;
2898  // free storage size on device when exiting repair mode in megabyte
2899  optional int64 storage_size_mb = 2;
2900  // whether diagnostic tool is executed during repair mode
2901  // false if diagnostic tool is never run
2902  // true if diagnostic is run once or more
2903  optional bool is_diagnostic_run = 3;
2904
2905  // how user auth/verify the credential to exit repair mode
2906  enum ExitMethod {
2907    UNSPECIFIED = 0;
2908    // auth by google account
2909    GAUTH = 1;
2910    // auth by screen lock on the device
2911    SCREEN_LOCK = 2;
2912  }
2913  // method for auth when exiting repair mode
2914  optional ExitMethod exit_method = 4;
2915}
2916
2917/**
2918 * Logs when a user cannot enter repair mode due to insufficient storage
2919 * Logged from:
2920 *   vendor/google/apps/RepairMode/
2921 *
2922 * Estimated Logging Rate:
2923 * Peak: 1 time in 5 mins | Avg: 20 times per device per year
2924 */
2925message RepairModeLowStorageReported {
2926  // Vendor reverse domain name (expecting "com.google.pixel").
2927  optional string reverse_domain_name = 1;
2928  // free storage size on the device in megabyte
2929  optional int64 storage_size_mb = 2;
2930}
2931
2932/**
2933 * Logs programmatic error that prevent users from entering repair mode
2934 * Logged from:
2935 *   vendor/google/apps/RepairMode/
2936 *
2937 * Estimated Logging Rate:
2938 * Peak: 1 time in 3 mins | Avg: 2 times per device per year
2939 */
2940message RepairModeErrorReported {
2941  // Vendor reverse domain name (expecting "com.google.pixel").
2942  optional string reverse_domain_name = 1;
2943
2944  // Error type that prevent user from entering repair mode
2945  enum ErrorType {
2946    UNSPECIFIED = 0;
2947    // Dynamic system failed to install image
2948    INSTALLED_FAILED = 1;
2949    // Failed to enable Dynamic system
2950    ENABLE_DYN_FAILED = 2;
2951    // Failed to reboot
2952    REBOOT_FAILED = 3;
2953  }
2954
2955  optional ErrorType error_type = 2;
2956}
2957
2958/*
2959 * Log if a device is plugged into a display that
2960 * supports forward error correction (FEC) and
2961 * display stream compression (DSC)
2962 */
2963message DisplayPortDSCSupportCountStatsReported{
2964  /* Vendor reverse domain name */
2965  optional string reverse_domain_name = 1;
2966
2967  /* Counts of connections where FEC/DSC is
2968   * supported or not
2969   */
2970  optional int32 fec_dsc_supported = 2;
2971  optional int32 fec_dsc_not_supported = 3;
2972}
2973
2974/*
2975* A message containing the use counts of various maximum
2976* resolutions the displays plugged into the phone use.
2977*/
2978message DisplayPortMaxResolutionCountStatsReported{
2979
2980  /* Vendor reverse domain name */
2981  optional string reverse_domain_name = 1;
2982
2983  /* Other Resolutions that don't fit into the current list */
2984  optional int32 max_res_other = 2;
2985
2986  /* Predefined Resolutions */
2987  optional int32 max_res_1366_768 = 3;
2988  optional int32 max_res_1440_900 = 4;
2989  optional int32 max_res_1600_900 = 5;
2990  optional int32 max_res_1920_1080 = 6;
2991  optional int32 max_res_2560_1080 = 7;
2992  optional int32 max_res_2560_1440 = 8;
2993  optional int32 max_res_3440_1440 = 9;
2994  optional int32 max_res_3840_2160 = 10;
2995  optional int32 max_res_5120_2880 = 11;
2996  optional int32 max_res_7680_4320 = 12;
2997}
2998
2999/* Audio Device Interface. */
3000enum AudioDeviceInterface {
3001  UNKNOWN_DEVICE_INTERFACE = 0;
3002
3003  // Built-in speakers
3004  SPEAKER = 1;
3005  SPEAKER_EARPIECE = 2;
3006  SPEAKER_SAFE = 3;
3007
3008  // Built-in microphones
3009  MICROPHONES = 4;
3010  BACK_MICROPHONES = 5;
3011  // internal used microphones
3012  ULTRASOUND_MICROPHONES = 6;
3013  SOUND_TRIGGER_MICROPHONES = 7;
3014
3015  // BT SCO
3016  BLUETOOTH_SCO_DEFAULT = 8;
3017  BLUETOOTH_SCO_HEADSET = 9;
3018  BLUETOOTH_SCO_CAR_KIT = 10;
3019  BLUETOOTH_SCO_HEADSET_MICROPHONES = 11;
3020
3021  // BT A2DP
3022  BLUETOOTH_A2DP_DEVICE = 12;
3023  BLUETOOTH_A2DP_SPEAKER = 13;
3024  BLUETOOTH_A2DP_HEADPHONE = 14;
3025
3026  // BT low energy (BLE)
3027  BLUETOOTH_LOW_ENERGY_SPEAKER = 15;
3028  BLUETOOTH_LOW_ENERGY_HEADSET = 16;
3029  BLUETOOTH_LOW_ENERGY_BROADCAST = 17;
3030  BLUETOOTH_LOW_ENERGY_HEADSET_MICROPHONES = 18;
3031
3032  // USB
3033  USB_DEVICE = 19;
3034  USB_HEADSET = 20;
3035  USB_DOCK = 21;
3036  USB_DEVICE_MICROPHONES = 22;
3037  USB_HEADSET_MICROPHONES = 23;
3038  USB_DOCK_MICROPHONES = 24;
3039
3040  // HDMI
3041  HDMI_DEVICE = 25;
3042
3043  // Telephony
3044  TELEPHONY_TX = 26;
3045  TELEPHONY_RX = 27;
3046  IN_CALL_CAPTURE_SOURCE0 = 28;
3047  IN_CALL_CAPTURE_SOURCE1 = 29;
3048  IN_CALL_CAPTURE_SOURCE2 = 30;
3049
3050  // Null sink and source
3051  NULL_SOURCE = 31;
3052  NULL_SINK = 32;
3053
3054  // Echo reference
3055  ECHO_REFERENCE_DEVICE_INTERFACE = 33;
3056}
3057
3058/* Audio Use Case. */
3059enum AudioUseCase {
3060  UNKNOWN_VENDOR_AUDIO_USECASE = 0;
3061  // playback use cases
3062  PRIMARY_PLAYBACK = 1;
3063  RAW_PLAYBACK = 2;
3064  DEEP_BUFFER_PLAYBACK = 3;
3065  COMPRESS_OFFLOAD_PLAYBACK = 4;
3066  MMAP_PLAYBACK = 5;
3067  HIFI_PLAYBACK = 6;
3068  VOIP_PLAYBACK = 7;
3069  TELEPHONY_PLAYBACK = 8;
3070  IN_CALL_PLAYBACK = 9;
3071  SPATIALIZER_PLAYBACK = 10;
3072  ULTRASOUND_PLAYBACK = 11;
3073  HAPTIC_PLAYBACK = 12;
3074  SPATIALIZER_OFFLOAD_PLAYBACK = 13;
3075  // capture use cases
3076  PRIMARY_CAPTURE = 14;
3077  FAST_CAPTURE = 15;
3078  HIFI_CAPTURE = 16;
3079  MMAP_CAPTURE = 17;
3080  VOIP_CAPTURE = 18;
3081  VOIP_GSENET_CAPTURE = 19;
3082  ULTRASOUND_CAPTURE = 20;
3083  TELEPHONY_CAPTURE = 21;
3084  IN_CALL_CAPTURE = 22;
3085  SOUND_TRIGGER_CAPTURE = 23;
3086  SOUND_TRIGGER_TAP_CAPTURE = 24;
3087  HOTWORD_LOOKBACK_CAPTURE = 25;
3088  ECHO_REFERENCE_CAPTURE = 26;
3089
3090  // voice call use case
3091  VOICE_CALL_DOWNLINK = 27;
3092  VOICE_CALL_UPLINK = 28;
3093}
3094
3095/* Audio source with the original enum value. */
3096enum AudioSource {
3097  DEFAULT = 0;
3098  MIC = 1;
3099  VOICE_UPLINK = 2;
3100  VOICE_DOWNLINK = 3;
3101  VOICE_CALL = 4;
3102  CAMCORDER = 5;
3103  VOICE_RECOGNITION = 6;
3104  VOICE_COMMUNICATION = 7;
3105  REMOTE_SUBMIX = 8;
3106  UNPROCESSED = 9;
3107  VOICE_PERFORMANCE = 10;
3108  ECHO_REFERENCE = 1997;
3109  FM_TUNER = 1998;
3110  HOTWORD = 1999;
3111  ULTRASOUND = 2000;
3112}
3113
3114enum AudioScreenFoldingState {
3115  UNKNOWN_FOLDING_STATE = 0;
3116  CLAMSHELL = 1;
3117  CLOSED = 2;
3118  OPEN = 3;
3119}
3120
3121/*
3122 * A message containing recording usage event.
3123 * Logged from:
3124 *   vendor/google/whitechapel/audio/hal/aidl/audio/metric/suez_data_adapter/statsd_suez_data_adapter.cc
3125 *
3126 * Estimated Logging Rate: Any time during audio recording that screen_orientation / audio device / use case changes.
3127 * It will be aggregated in a count and value metric to keep the resource usage low.
3128 */
3129message VendorAudioDspRecordUsageStatsReported {
3130  /* Vendor reverse domain name */
3131  optional string reverse_domain_name = 1;
3132
3133  enum Type {
3134    UNKNOWN = 0;
3135    UC_AUDIO_RECORD = 1;
3136    UC_LOW_LATENCY_AUDIO_RECORD = 2;
3137    UC_MMAP_RECORD = 3;
3138    IN_HANDSET_MIC = 4;
3139    IN_HANDSET_DUAL_MIC = 5;
3140    IN_HANDSET_TRIPLE_MIC = 6;
3141    IN_CAMCORDER_LANDSCAPE = 7;
3142    IN_CAMCORDER_INVERT_LANDSCAPE = 8;
3143    IN_CAMCORDER_PORTRAIT = 9;
3144    IN_CAMCORDER_SELFIE_LANDSCAPE = 10;
3145    IN_CAMCORDER_SELFIE_INVERT_LANDSCAPE = 11;
3146    IN_CAMCORDER_SELFIE_PORTRAIT = 12;
3147    IN_CAMCORDER_MIC = 13;
3148    IN_CAMCORDER_TIRPLE_MIC = 14;
3149    CUSTOM_IN_PCM1 = 15;
3150    CUSTOM_IN_PCM2 = 16;
3151    CUSTOM_IN_PCM3 = 17;
3152    CUSTOM_IN_PCM4 = 18;
3153    CUSTOM_IN_PCM5 = 19;
3154  }
3155
3156  enum CameraType {
3157    UNKNOWN_CAMERA_TYPE = 0;
3158    FRONT_CAMERA = 1;
3159    BACK_CAMERA = 2;
3160  }
3161
3162  /* Type of Backend used in recording */
3163  optional Type type = 2 [deprecated = true];
3164
3165  /* Duration in second */
3166  optional int32 duration_second = 3;
3167
3168  optional AudioSource audio_source = 4;
3169
3170  /* Device interface used */
3171  optional AudioDeviceInterface audio_device_interface = 5;
3172
3173  /* Usecase used */
3174  optional AudioUseCase vendor_audio_use_case = 6;
3175
3176  /* Camera Type */
3177  optional CameraType camera_type = 7;
3178
3179  /* Screen orientation used. */
3180  optional int32 screen_orientation = 8;
3181
3182  /* True if this atom represent the beginning of recording. If usecase/interfaces/orientation
3183   * changes mid-recording, new atom will be uploaded but this value will be false.
3184   */
3185  optional bool is_beginning_of_recording = 9;
3186
3187  /* Folding state of the phone */
3188  optional AudioScreenFoldingState audio_screen_folding_state = 10;
3189
3190  /* Device screen is on or off */
3191  optional bool is_screen_on = 11;
3192};
3193
3194/*
3195 * Logs the audio media playback usage stats.
3196 * Logged from:
3197 *   vendor/google/whitechapel/audio/hal/aidl/audio/metric/suez_data_adapter/statsd_suez_data_adapter.cc
3198 *
3199 * Estimated Logging Rate: Any time during audia media playback that screen_orientation / audio device / use case changes.
3200 * It will be aggregated in a count and value metric to keep the resource usage low.
3201 */
3202message MediaPlaybackUsageStatsReported {
3203  /* Vendor reverse domain name */
3204  optional string reverse_domain_name = 1;
3205
3206  /* Device interface used */
3207  optional AudioDeviceInterface interface = 2;
3208
3209  /* AudioSource used */
3210  optional AudioSource audio_source = 3;
3211
3212  /* Usecase used */
3213  optional AudioUseCase audio_use_case = 4;
3214
3215    /* Screen orientation used. */
3216  optional int32 screen_orientation = 5;
3217
3218  /* True if this atom represent the end of playback. If usecase/interfaces/orientation
3219   * changes mid-playback, new atom will be uploaded but this value will be false.
3220   */
3221  optional bool is_end_of_playback = 6;
3222
3223    /* Duration in second */
3224  optional int32 duration_second = 7;
3225
3226  /* Folding state of the phone */
3227  optional AudioScreenFoldingState audio_screen_folding_state = 8;
3228
3229  /* Device screen is on or off */
3230  optional bool is_screen_on = 9;
3231
3232  /* Volume of the playback */
3233  optional float volume = 10;
3234
3235  /* Average power in milliwatts. -1 if unavailable. */
3236  optional float average_power = 11;
3237
3238  /* Sample rate used in the media playback. */
3239  optional int32 sample_rate = 12;
3240
3241  /* Sample rate used in the media playback. */
3242  optional int32 channel_count = 13;
3243
3244  /* Sample rate used in the media playback. */
3245  optional int32 audio_format_type = 14;
3246
3247  /* Sample rate used in the media playback. */
3248  optional int32 pcm_type = 15;
3249
3250  enum OffloadEncoding {
3251    UNKNOWN_ENCODING = 0;
3252    NO_ENCODING = 1;
3253    PCM_UINT_8_BIT = 2;
3254    PCM_INT_16_BIT = 3;
3255    PCM_INT_24_BIT = 4;
3256    PCM_FIXED_Q_8_24 = 5;
3257    PCM_INT_32_BIT = 6;
3258    PCM_FLOAT_32_BIT = 7;
3259    MP3 = 8;
3260    AAC = 9;
3261    AAC_LC = 10;
3262    AAC_HE_V1 = 11;
3263    AAC_HE_V2 = 12;
3264    OPUS = 13;
3265  }
3266
3267  /* Offload Encoding used in the media playback. */
3268  optional OffloadEncoding offload_encoding = 16;
3269}
3270
3271/*
3272 * Logs the call usage information stats.
3273 * Logged from:
3274 *   vendor/google/whitechapel/audio/hal/aidl/audio/metric/suez_data_adapter/statsd_suez_data_adapter.cc
3275 *
3276 * Estimated Logging Rate: Every 24 hours round to nearest 5 minutes
3277 */
3278message CallUsageStatsReported {
3279  /* Vendor reverse domain name */
3280  optional string reverse_domain_name = 1;
3281
3282  /* Device interface used */
3283  optional AudioDeviceInterface downlink_interface = 2;
3284
3285  /* AudioSource used */
3286  optional AudioSource downlink_audio_source = 3;
3287
3288  /* Usecase used */
3289  optional AudioUseCase downlink_audio_use_case = 4;
3290
3291  /* Device interface used */
3292  optional AudioDeviceInterface uplink_interface = 5;
3293
3294  /* AudioSource used */
3295  optional AudioSource uplink_audio_source = 6;
3296
3297  /* Usecase used */
3298  optional AudioUseCase uplink_audio_use_case = 7;
3299
3300  /* Number of call in the past 24 hours */
3301  optional int32 call_count = 8;
3302
3303  /* Duration in second (value is round to 5 minutes) */
3304  optional int32 duration_second = 9;
3305
3306  /* Current volume for the downlink playback */
3307  optional float volume = 10;
3308
3309  /* Average power in milliwatts. -1 if unavailable. */
3310  optional float average_power = 11;
3311
3312  /* background noise level from 1 (lowest) to 12 (highest). */
3313  optional float noise_level = 12 [deprecated = true];
3314
3315  // durations list of size 12 representing percentage
3316  // of duration of each background noise level
3317  // from -1 (lowest) to 12 (highest).
3318  repeated float noise_level_percentages = 13;
3319}
3320
3321/*
3322 * A message containing USB audio connection error event.
3323 * Logged from:
3324 *   vendor/google/whitechapel/audio/hal/aidl/audio/metric/suez_data_adapter/statsd_suez_data_adapter.cc
3325 *
3326 * Estimated Logging Rate: Very low, around once a month per user.
3327 */
3328message VendorAudioUsbConnectionState {
3329  /* Vendor reverse domain name */
3330  optional string reverse_domain_name = 1;
3331
3332  enum ConnectionState {
3333    UNKNOWN_CONNECTION_STATE = 0;
3334    FAILED_TO_READ_CARD_ID_PCM_ID = 1;
3335    FAILED_TO_READ_USB_ID = 2;
3336    FAILED_TO_READ_BUS_ID_DEVICE_ID = 3;
3337    FAILED_TO_ADD_NEW_DEVICE = 4;
3338    FAILED_TO_PARSE_USB_CAPABILITY = 5;
3339    FAILED_TO_PARSE_USB_CAPABILITY_IS_EMPTY = 6;
3340    FAILED_TO_ADD_NEW_DEVICE_CAPABILITY = 7;
3341    FAILED_TO_ADD_ALREADY_CONNECTED_PORT_ID = 8;
3342    CONNECTION_SUCCESS = 9;
3343  }
3344
3345  enum DisconnectionState {
3346    UNKNOWN_DISCONNECTION_STATE = 0;
3347    FAILED_PORT_ID_NOT_CONNECTED = 1;
3348    DISCONNECTION_SUCCESS = 2;
3349  }
3350
3351  /* Connection State. UNKNOWN_CONNECTION_STATE in disconnection event. */
3352  optional ConnectionState connection_error = 2;
3353
3354  /* Disconnection State. UNKNOWN_DISCONNECTION_STATE in connection event. */
3355  optional DisconnectionState disconnection_error = 3;
3356};
3357
3358/*
3359 * Logs the Audio Speaker Power information stats.
3360 * Logged from:
3361 *   vendor/google/whitechapel/audio/hal/aidl/audio/metric/suez_data_adapter/statsd_suez_data_adapter.cc
3362 *
3363 * Estimated Logging Rate: Once per audio playback through speaker.
3364 */
3365message VendorAudioSpeakerPowerStatsReported {
3366  /* Vendor reverse domain name */
3367  optional string reverse_domain_name = 1;
3368  /* The average power of the speaker. i-th value represent i-th speaker. There are at most 4 speakers. */
3369  repeated float average_power = 2;
3370  /* Duration in second that speaker is using the average power. i-th value represent i-th speaker. There are at most 4 speakers. */
3371  repeated int32 duration_second = 3;
3372}
3373
3374/*
3375 * A message containing how many sectors read from
3376 * the dm verity protected partitions
3377 */
3378message DmVerityPartitionReadAmountReported {
3379  enum DmPartition {
3380    SYSTEM = 0;
3381    SYSTEM_EXT = 1;
3382    PRODUCT = 2;
3383    VENDOR = 3;
3384    ODM = 4;
3385    UNKNOWN = 5;
3386  }
3387  /* Vendor reverse domain name */
3388  optional string reverse_domain_name = 1;
3389  /* Identifies the dm-verity protected partition accessed. */
3390  optional DmPartition dm_partition = 2;
3391  /* Number of sectors read from the dm-verity protected partition. */
3392  optional int64 read_sectors = 3;
3393}
3394
3395/*
3396 * Event showing the state of the sensor when a Water Intrusion Event occurs
3397 */
3398message WaterEventReported {
3399  enum FuseState {
3400    FUSE_STATE_UNKNOWN = 0;
3401    INTACT = 1; /* fuse has not blown */
3402    BLOWN = 2;   /* fuse has blown */
3403  }
3404  enum EventPoint {
3405    EVENT_POINT_UNKNOWN = 0;
3406    BOOT = 1;
3407    IRQ = 2;
3408  }
3409  enum SensorState {
3410    SENSOR_STATE_UNKNOWN = 0;
3411    WET = 1;
3412    DRY = 2;
3413    INVALID = 3;
3414    DISABLED = 4;
3415  }
3416
3417  enum CircuitState {
3418    CIRCUIT_ENABLED_UNKNOWN = 0;
3419    CIRCUIT_ENABLED = 1;
3420    CIRCUIT_DISABLED = 2;
3421  }
3422  /* Vendor reverse domain name */
3423  optional string reverse_domain_name = 1;
3424  /*
3425   * Event details
3426   */
3427  /* The lifecycle point at which event was collected */
3428  optional EventPoint collection_event = 13;
3429
3430  /* state of the intrusion detection fuse */
3431  optional FuseState fuse_state = 2;
3432  /* Was the fuse enabled */
3433  optional CircuitState fuse_enabled = 3;
3434
3435  /* The state of the reference sensor. */
3436  optional SensorState reference_state = 4;
3437  /* The threshold of the reference in mV. */
3438  optional int32 reference_threshold_mv = 8 [deprecated = true];
3439
3440  /* The state of sensor 0. */
3441  optional SensorState sensor0_state = 5;
3442  /* The threshold of sensor 0 in mV. */
3443  repeated int32 sensor0_threshold_mv = 9 [packed = true, deprecated = true];
3444
3445  /* The state of sensor 1. */
3446  optional SensorState sensor1_state = 6;
3447  /* The threshold of sensor1 in mv. */
3448  repeated int32 sensor1_threshold_mv = 10 [packed = true, deprecated = true];
3449
3450  /* The state of sensor 2. */
3451  optional SensorState sensor2_state = 7;
3452  /* The threshold of the sensor 2 in mv. */
3453  repeated int32 sensor2_threshold_mv = 11 [packed = true, deprecated = true];
3454
3455  /* Was system fault enabled */
3456  optional CircuitState fault_enabled = 12;
3457}
3458
3459/**
3460 * A message containing battery related firmware update stats
3461 * Logged from:
3462 *    hardware/google/pixel/pixelstats/BatteryFwUpdateReporter.cpp
3463 */
3464message BatteryFirmwareUpdateReported {
3465  /* Vendor reverse domain name */
3466  optional string reverse_domain_name = 1;
3467  optional int32 msg_type = 2;
3468  optional int32 msg_category = 3;
3469  /* current firmware version */
3470  optional int32 major_version_from = 4;
3471  optional int32 minor_version_from = 5;
3472  /* target firmware version */
3473  optional int32 major_version_to = 6;
3474  optional int32 minor_version_to = 7;
3475  optional int32 update_status = 8;
3476  optional int32 attempts = 9;
3477  optional int32 unix_time_sec = 10;
3478  /* additional firmware data */
3479  optional int32 fw_data0 = 11;
3480  optional int32 fw_data1 = 12;
3481  optional int32 fw_data2 = 13;
3482  optional int32 fw_data3 = 14;
3483}
3484
3485
3486/*
3487 * A message containing a list of 30 elements representing the battery history
3488 * of milliwatts, and milliwatt durations which can be used to analyze battery
3489 * behavior over time. The elements are ordered from oldest to newest.
3490 * The history window is not measured in days but rather fluctuates between
3491 * 100s of milliseconds and a few minutes based on the device's power state.
3492 */
3493message PowerFifoDump {
3494  /* Vendor reverse domain name */
3495  optional string reverse_domain_name = 1;
3496  /* The estimated milliwatts.*/
3497  repeated int32 milliwatts = 2;
3498  /* The estimated duration in milliseconds. */
3499  repeated int32 duration_ms = 3;
3500  /* The elapsed time in milliseconds, from when the final sample was taken. */
3501  required int64 elapsed_time_ms = 4;
3502}
3503
3504/*
3505 * A message containing a TTFF, aiding data and related satellite information.
3506 * Logged from:
3507 *   vendor/google/gnss/aidl_service/GnssAtomsReporter.cpp
3508 *
3509 * Estimated Logging Rate:
3510 * Any time that user turn on location function (only first location calculated).
3511 * Peak: 1 times in 3 min | Avg: 48 times per device per day
3512 */
3513message GnssTtffReported {
3514  enum TtffType {
3515    TTFF_UNKNOWN = 0;
3516    TTFF_COLD = 1;
3517    TTFF_WARM = 2;
3518    TTFF_HOT = 3;
3519  }
3520  /* Vendor reverse domain name */
3521  optional string reverse_domain_name = 1;
3522  /* The start type at which each TTFF event was collected. */
3523  optional TtffType ttff_type = 2;
3524  /* Time To First Fix in milliseconds. */
3525  optional int32 ttff_milliseconds = 3;
3526  /* Estimated position accuracy (meters). */
3527  optional int32 ttff_horizontal_position_accuracy = 4;
3528  /* The number of satellites used. */
3529  optional int32 ttff_used_in_fix_sv_count = 5;
3530  /* The L1 satellite constellations in view. */
3531  repeated int32 ttff_l1_constellation_list = 6;
3532  /* The L1 satellite PRNs in view. */
3533  repeated int32 ttff_l1_prn_list = 7;
3534  /* The L1 CN0 for each satellite. */
3535  repeated int32 ttff_l1_cn0_list = 8;
3536  /* The L5 satellite constellations in view. */
3537  repeated int32 ttff_l5_constellation_list = 9;
3538  /* The L5 PRN satellite in view. */
3539  repeated int32 ttff_l5_prn_list = 10;
3540  /* The L5 CN0 for each satelltie. */
3541  repeated int32 ttff_l5_cn0_list = 11;
3542  /*
3543   * Aiding data provided by framework.
3544   * Time elapsed since a location request was initiated.
3545   * Zero indicates no request/inject was made.
3546   */
3547  optional int32 reference_location_request_milliseconds = 12;
3548  optional int32 reference_location_inject_milliseconds = 13;
3549  optional int32 reference_time_request_milliseconds = 14;
3550  optional int32 reference_time_inject_milliseconds = 15;
3551  optional int32 supl_aiding_request_milliseconds = 16;
3552  optional int32 supl_aiding_inject_milliseconds = 17;
3553  optional int32 vendor_aiding_request_milliseconds = 18;
3554  optional int32 vendor_aiding_inject_milliseconds = 19;
3555  /* The aiding data without precise timestamp */
3556  optional bool reference_frequency_used = 20;
3557  optional bool almanac_used = 21;
3558  optional bool ephemeris_used = 22;
3559}
3560