• Home
  • History
  • Annotate
  • 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 
17 syntax = "proto2";
18 
19 // C++ namespace: android::hardware::google::pixel::PixelAtoms
20 package android.hardware.google.pixel.PixelAtoms;
21 
22 option optimize_for = LITE_RUNTIME;
23 
24 option java_package = "android.hardware.google.pixel";
25 option java_outer_classname = "PixelAtoms";
26 
27 import "frameworks/proto_logging/stats/atom_field_options.proto";
28 import "frameworks/proto_logging/stats/enums/app/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. */
39 message 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; // 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;
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;
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;
105       VibratorLatencyReported vibrator_latency_reported = 105050;
106       VibratorErrorsReported vibrator_errors_reported = 105051;
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;
113       VendorAudioAdaptedInfoStatsReported vendor_audio_adapted_info_stats_reported = 105058;
114       GpuEvent gpu_event = 105059;
115       VendorAudioPcmStatsReported vendor_audio_pcm_stats_reported = 105060;
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;
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     }
133     // AOSP atom ID range ends at 109999
134     reserved 109997; // reserved for VtsVendorAtomJavaTest test atom
135     reserved 109998; // reserved for VtsVendorAtomJavaTest test atom
136     reserved 109999; // reserved for VtsVendorAtomJavaTest test atom
137 }
138 
139 /* Supported reverse domain names. */
140 message ReverseDomainNames {
141     optional string pixel = 1 [default = "com.google.pixel"];
142 }
143 
144 /* A message containing detailed statistics and debug information about a charge session. */
145 message ChargeStats {
146     /* Charge Adapter stats. */
147     enum AdapterType {
148         ADAPTER_TYPE_UNKNOWN = 0;
149         ADAPTER_TYPE_USB = 1;
150         ADAPTER_TYPE_USB_SDP = 2;
151         ADAPTER_TYPE_USB_DCP = 3;
152         ADAPTER_TYPE_USB_CDP = 4;
153         ADAPTER_TYPE_USB_ACA = 5;
154         ADAPTER_TYPE_USB_C = 6;
155         ADAPTER_TYPE_USB_PD = 7;
156         ADAPTER_TYPE_USB_PD_DRP = 8;
157         ADAPTER_TYPE_USB_PD_PPS = 9;
158         ADAPTER_TYPE_USB_PD_BRICKID = 10;
159         ADAPTER_TYPE_HVDCP = 11;
160         ADAPTER_TYPE_HVDCP3 = 12;
161         ADAPTER_TYPE_FLOAT = 13;
162         ADAPTER_TYPE_WLC  = 14;
163         ADAPTER_TYPE_WLC_EPP = 15;
164         ADAPTER_TYPE_WLC_SPP = 16;
165         ADAPTER_TYPE_GPP = 17;
166         ADAPTER_TYPE_10W = 18;
167         ADAPTER_TYPE_L7 = 19;
168         ADAPTER_TYPE_DL = 20;
169         ADAPTER_TYPE_WPC_EPP = 21;
170         ADAPTER_TYPE_WPC_GPP = 22;
171         ADAPTER_TYPE_WPC_10W = 23;
172         ADAPTER_TYPE_WPC_BPP = 24;
173         ADAPTER_TYPE_WPC_L7 = 25;
174         ADAPTER_TYPE_EXT = 26;
175         ADAPTER_TYPE_EXT1 = 27;
176         ADAPTER_TYPE_EXT2 = 28;
177         ADAPTER_TYPE_EXT_UNKNOWN = 29;
178         ADAPTER_TYPE_USB_UNKNOWN = 30;
179         ADAPTER_TYPE_WLC_UNKNOWN = 31;
180     }
181     optional string reverse_domain_name = 1;
182     /* Type of charge adapter, enumerated above. */
183     optional AdapterType adapter_type = 2;
184     /* Max negotiated voltage by charge adapter, in mV. */
185     optional int32 adapter_voltage = 3;
186     /* Max negotiated current by charge adapter current, in mA. */
187     optional int32 adapter_amperage = 4;
188 
189     /* Stats at beginning of charge session. */
190     /* System State of Charge, in percent. */
191     optional int32 ssoc_in = 5;
192     /* Voltage in mV. */
193     optional int32 voltage_in = 6;
194 
195     /* Stats at end of charge session. */
196     /* System State of Charge, in percent. */
197     optional int32 ssoc_out = 7;
198     /* Voltage in mV. */
199     optional int32 voltage_out = 8;
200 
201     /**
202      * These values are  meant to represent status of the charging device, used
203      * to validate the charging algorithm and explain charging performances.
204      * Examples of the content of the register:
205      * - APDO, PDO (power capabilities of the device, eg. 5V3A, 9V2A, 20V2A) for wired charging
206      * - Wireless charging MFG code. This is the value of a register of the WLC integrated
207      *   circuit to identify the vendor and type of WLC pad
208      * - Receiver operating frequency
209      * - Register status
210      */
211     optional int32 adapter_capabilities0 = 9;
212     optional int32 adapter_capabilities1 = 10;
213     optional int32 adapter_capabilities2 = 11;
214     optional int32 adapter_capabilities3 = 12;
215     optional int32 adapter_capabilities4 = 13;
216 
217     /**
218      * These are values which reports the state of the wireless receiver, which will help in
219      * debugging charging issues and alternate configurations.
220      */
221     optional int32 receiver_state0 = 14;
222     optional int32 receiver_state1 = 15;
223 
224     /* AACR feature to record capacity */
225     optional int32 charge_capacity = 16;
226 
227     /* Charging Speed Indicator(CSI) status and type */
228     optional int32 csi_aggregate_status = 17;
229     optional int32 csi_aggregate_type = 18;
230 }
231 
232 /* A message containing stats from each charge voltage tier. */
233 message VoltageTierStats {
234     optional string reverse_domain_name = 1;
235     /* Voltage tier number, custom to implementation, should be <= 3. */
236     optional int32 voltage_tier = 2;
237 
238     /* Stats when entering voltage tier. */
239     /* State of charge, in percent. */
240     optional float soc_in = 3;
241     /* Coulomb count, in mAh. */
242     optional int32 cc_in = 4;
243     /* Battery temperature, in deciC. */
244     optional int32 temp_in = 5;
245 
246     /* Time spent at various charge speeds, in seconds. */
247     optional int32 time_fast_secs = 6;
248     optional int32 time_taper_secs = 7;
249     optional int32 time_other_secs = 8;
250 
251     /* Battery temperature stats, in deciC. */
252     optional int32 temp_min = 9;
253     optional int32 temp_avg = 10;
254     optional int32 temp_max = 11;
255 
256     /* Battery current stats, in mA. */
257     optional int32 ibatt_min = 12;
258     optional int32 ibatt_avg = 13;
259     optional int32 ibatt_max = 14;
260 
261     /* Input current limit stats, in mA. */
262     optional int32 icl_min = 15;
263     optional int32 icl_avg = 16;
264     optional int32 icl_max = 17;
265 
266     /**
267      * Efficiency number, receiver operating frequency in kHz for wireless charging
268      * (alignment)
269      */
270     optional int32 charging_operating_point = 18;
271     /* The minimum power out of the adapter at the given charging tier */
272     optional int32 min_adapter_power_out = 19;
273     /* The time-averaged power out of the adapter at the given charging tier */
274     optional int32 time_avg_adapter_power_out = 20;
275     /* The maximum power out of the adapter at the given charging tier */
276     optional int32 max_adapter_power_out = 21;
277 }
278 
279 /* A message containing an alternate proprietary full battery capacity estimate. */
280 message BatteryCapacity {
281     optional string reverse_domain_name = 1;
282     /* Sum of the change in coulomb count. */
283     optional int32 delta_cc_sum = 2;
284     /* Sum of the change in state of charge (battery level). */
285     optional int32 delta_vfsoc_sum = 3;
286 }
287 
288 /* A message containing health values of UFS */
289 message StorageUfsHealth {
290     optional string reverse_domain_name = 1;
291     /* The value of lifetimeA for UFS health */
292     optional int32 lifetime_a = 2;
293     /* The value of lifetimeB for UFS health */
294     optional int32 lifetime_b = 3;
295     /* The value of lifetimeC for UFS health */
296     optional int32 lifetime_c = 4;
297 }
298 
299 /* A message containing filesystem stats of F2FS */
300 message F2fsStatsInfo {
301     optional string reverse_domain_name = 1;
302     /* The value of dirty segments of f2fs */
303     optional int32 dirty_segments = 2;
304     /* The value of free segments of f2fs */
305     optional int32 free_segments = 3;
306     /* The times of checkpoint function called in foreground*/
307     optional int32 cp_calls_fg = 4;
308     /* The times of checkpoint function called in background */
309     optional int32 cp_calls_bg = 5;
310     /* The times of garbage collection function called in foreground */
311     optional int32 gc_calls_fg = 6;
312     /* The times of garbage collection function called in background */
313     optional int32 gc_calls_bg = 7;
314     /* The amount of blocks been moved by garbage collection in foreground */
315     optional int32 moved_blocks_fg = 8;
316     /* The amount of blocks been moved by garbage collection in background */
317     optional int32 moved_blocks_bg = 9;
318     /* The average of how many valid blocks is in a segment */
319     optional int32 valid_blocks = 10;
320 }
321 
322 message ZramMmStat {
323     optional string reverse_domain_name = 1;
324     /* The value of original memory size */
325     optional int64 orig_data_size = 2;
326     /* The value of compressed memory size */
327     optional int64 compr_data_size = 3;
328     /* The value of consumed memory size to store compressed memory */
329     optional int64 mem_used_total = 4;
330     /* The value of number of page filled with same elements data */
331     optional int64 same_pages = 5;
332     /* The value of number of incompressible page */
333     optional int64 huge_pages = 6;
334     /* The value of number of incompressible pages since boot */
335     optional int64 huge_pages_since_boot = 7;
336 }
337 
338 message ZramBdStat {
339     optional string reverse_domain_name = 1;
340     /* the number of pages in backing device */
341     optional int64 bd_count = 2;
342     /* The number of pages readed from backing device */
343     optional int64 bd_reads = 3;
344     /* The number of pages written to backing device */
345     optional int64 bd_writes = 4;
346 }
347 
348 /* A message containing boot times */
349 message BootStatsInfo {
350     optional string reverse_domain_name = 1;
351     /* The F2FS fsck time in secs */
352     optional int32 fsck_time_sec = 2;
353     /* The F2FS mounted time in secs */
354     optional int32 mounted_time_sec = 3;
355     /* The F2FS checkpoint=disable time in secs */
356     optional int32 checkpoint_time_sec = 4;
357 }
358 
359 /* A message containing wireless charging health info. */
360 message WirelessChargingStats {
361     /* Captures if a google charger used when start wireless charging */
362     enum ChargerVendor {
363         VENDOR_UNKNOWN = 0;
364         VENDOR_GOOGLE = 1;
365     }
366 
367     optional string reverse_domain_name = 1;
368     optional ChargerVendor charger_vendor = 2;
369 }
370 
371 /* Current device Orientation */
372 message DeviceOrientation {
373     enum Orientation {
374         ORIENTATION_UNKNOWN = 0;
375         ORIENTATION_0 = 1;
376         ORIENTATION_90 = 2;
377         ORIENTATION_180 = 3;
378         ORIENTATION_270 = 4;
379     }
380 
381     optional string reverse_domain_name = 1;
382     /* Device orientation. */
383     optional Orientation orientation = 2;
384 }
385 
386 /* Raw battery capacity stats */
387 message BatteryCapacityFG {
388     enum LogReason {
389         LOG_REASON_UNKNOWN = 0;
390         LOG_REASON_CONNECTED = 1;
391         LOG_REASON_DISCONNECTED = 2;
392         LOG_REASON_FULL_CHARGE = 3;
393         LOG_REASON_PERCENT_SKIP = 4;
394         LOG_REASON_DIVERGING_FG = 5;
395     }
396 
397     optional string reverse_domain_name = 1;
398     /* Uevent logging reason, enumerated above. */
399     optional LogReason capacity_log_reason = 2;
400 
401     /* The battery capacity reported from the FG (fuel gauge) hardware  */
402     optional float capacity_gdf = 3;
403     /* The filtered system battery capacity reported to the UI */
404     optional float capacity_ssoc = 4;
405     /* The fuel gauge capacity curve midpoint FG (fuel gauge) value */
406     optional float capacity_gdf_curve = 5;
407     /* The fuel gauge capacity curve midpoint UI value */
408     optional float capacity_ssoc_curve = 6;
409 }
410 
411 message  PdVidPid {
412     optional string reverse_domain_name = 1;
413     /* Vendor ID of wired charger */
414     optional int32 vid = 2;
415     /* Product ID of wired charger */
416     optional int32 pid = 3;
417 }
418 
419 message BatteryEEPROM {
420     optional string reverse_domain_name = 1;
421    /* The cycle count number; record of charge/discharge times */
422     optional int32 cycle_cnt = 2;
423     /* The current full capacity of the battery under nominal conditions */
424     optional int32 full_cap = 3;
425     /* The battery equivalent series resistance */
426     optional int32 esr = 4;
427     /* Battery resistance related to temperature change */
428     optional int32 rslow = 5;
429     /* Battery health indicator reflecting the battery age state */
430     optional int32 soh = 6;
431     /* The battery temperature */
432     optional int32 batt_temp = 7;
433 
434     /* Battery state of charge (SOC) shutdown point */
435     optional int32 cutoff_soc = 8;
436     /* Raw battery state of charge (SOC), based on battery current (CC = Coulomb Counter) */
437     optional int32 cc_soc = 9;
438     /* Estimated battery state of charge (SOC) from batt_soc with endpoint limiting (0% and 100%) */
439     optional int32 sys_soc = 10;
440     /* Filtered monotonic SOC, handles situations where the cutoff_soc is increased and
441      * then decreased from the battery physical properties
442      */
443     optional int32 msoc = 11;
444     /* Estimated SOC derived from cc_soc that provides voltage loop feedback correction using
445      * battery voltage, current, and status values
446      */
447     optional int32 batt_soc = 12;
448 
449     /* Field used for data padding in the EEPROM data */
450     optional int32 reserve = 13;
451 
452     /* The maximum battery temperature ever seen */
453     optional int32 max_temp = 14;
454     /* The minimum battery temperature ever seen */
455     optional int32 min_temp = 15;
456     /* The maximum battery voltage ever seen */
457     optional int32 max_vbatt = 16;
458     /* The minimum battery voltage ever seen */
459     optional int32 min_vbatt = 17;
460     /* The maximum battery current ever seen */
461     optional int32 max_ibatt = 18;
462     /* The minimum battery current ever seen */
463     optional int32 min_ibatt = 19;
464     /* Field used to verify the integrity of the EEPROM data */
465     optional int32 checksum = 20;
466 
467     /* Extend data for P21 */
468     /* Temperature compensation information */
469     optional int32 tempco = 21;
470     /* Learned characterization related to the voltage gauge */
471     optional int32 rcomp0 = 22;
472     /* For time to monitor the life of cell */
473     optional int32 timer_h = 23;
474     /* The full capacity of the battery learning at the end of every charge cycle */
475     optional int32 full_rep = 24;
476 }
477 
478 /* A message containing an exceptional event from citadel. */
479 message CitadelEvent {
480   enum Event {
481     ALERT = 1;
482     REBOOTED = 2;
483     UPGRADED = 3;
484     ALERT_V2 = 4;
485     SEC_CH_STATE = 5;
486   };
487   optional string reverse_domain_name = 1;
488   optional Event event = 2;
489   optional int32 reset_count = 3;
490   optional int64 uptime_micros = 4;
491   enum Priority {
492     LOW = 0;
493     MEDIUM = 1;
494     HIGH = 2;
495   };
496   optional Priority priority = 5;
497 
498   // ALERT-specific fields.  These fields correspond to the interrupt status
499   // bits for alerts within citadel.  When alerts fire one or more of these
500   // bits are set to indicate the alert source.
501   optional int32 intr_sts_0 = 6;
502   optional int32 intr_sts_1 = 7;
503   optional int32 intr_sts_2 = 8;
504 
505   // REBOOTED-specific fields.  These fields correspond to the details of how
506   // the hardware reboot occurred.  A reboot is a noteworthy event for citadel,
507   // as it can be triggered by events like stack overflow or other software
508   // bugs.
509   optional int32 rstsrc = 9;
510   optional int32 exitpd = 10;
511   optional int32 which0 = 11;
512   optional int32 which1 = 12;
513 
514   // UPGRADED-specific field. This field corresponds to the result of FW
515   // upgrade for citadel.
516   optional int32 upgrade_state = 13;
517 
518   // ALERT_V2-specific field. This field corresponds to the GLOBALSEC Log
519   // which contains normal globalsec, camo, temp and buserr.
520   optional int32 alert_grp_0 = 14;
521   optional int32 alert_grp_1 = 15;
522   optional int32 alert_grp_2 = 16;
523   optional int32 alert_grp_3 = 17;
524   optional int32 camo_breaches_0 = 18;
525   optional int32 camo_breaches_1 = 19;
526   optional int32 temp_min = 20;
527   optional int32 temp_max = 21;
528   optional int32 bus_err = 22;
529 
530   // SEC_CH_STATE-specific filed. This field corresponds to the state
531   // of GSA-GSC secure channel.
532   optional int32 sec_ch_state = 23;
533 }
534 
535 /* A message containing the citadel firmware version. */
536 message CitadelVersion {
537    optional string reverse_domain_name = 1;
538    optional string version = 2;
539 }
540 
541 /* A message containing the speaker impedance. */
542  message VendorSpeakerImpedance {
543     optional string reverse_domain_name = 1;
544     optional int32 speaker_location = 2;
545     optional int32 impedance = 3;
546 }
547 
548 /**
549  * Logs the reported vendor speaker health stats.
550  * Logged from: hardware/google/pixel/pixelstats/SysfsCollector.cpp
551  */
552 message VendorSpeakerStatsReported {
553   /* Vendor reverse domain name (expecting "com.google.pixel") */
554   optional string reverse_domain_name = 1;
555   /* The location of speaker; 0 = left , 1 = right */
556   optional int32 speaker_location = 2;
557   /* The speaker's impedance value (milliOhm) */
558   optional int32 impedance = 3;
559   /* The speaker's maximum temperature (milliDegree C) */
560   optional int32 max_temperature = 4;
561   /* The speaker's execursion length (micrometer) */
562   optional int32 excursion = 5;
563   /* The speaker's heart beat count */
564   optional int32 heartbeat = 6;
565   /* The speaker's version */
566   optional int32 version = 7;
567 }
568 
569 /* A message containing how many times of ufs host reset */
570 message StorageUfsResetCount {
571     optional string reverse_domain_name = 1;
572     /* How many UFS error reset are triggered */
573     optional int32 host_reset_count = 2;
574 }
575 
576 /* A message containing Pixel memory metrics collected hourly. */
577 message PixelMmMetricsPerHour {
578     optional string reverse_domain_name = 1;
579     optional int64 free_pages = 2;
580     optional int64 anon_pages = 3;
581     optional int64 file_pages = 4;
582     optional int64 slab_reclaimable = 5;
583     optional int64 zspages = 6;
584     optional int64 unevictable = 7;
585     optional int64 ion_total_pools = 8;
586     optional int64 gpu_memory = 9;
587     optional int64 slab_unreclaimable = 10;
588     optional int64 psi_cpu_some_total = 11;
589     optional int64 psi_io_full_total = 12;
590     optional int64 psi_io_some_total = 13;
591     optional int64 psi_mem_full_total = 14;
592     optional int64 psi_mem_some_total = 15;
593     optional int32 psi_cpu_some_avg10_min = 16;
594     optional int32 psi_cpu_some_avg10_max = 17;
595     optional int32 psi_cpu_some_avg10_avg = 18;
596     optional int32 psi_cpu_some_avg60_min = 19;
597     optional int32 psi_cpu_some_avg60_max = 20;
598     optional int32 psi_cpu_some_avg60_avg = 21;
599     optional int32 psi_cpu_some_avg300_min = 22;
600     optional int32 psi_cpu_some_avg300_max = 23;
601     optional int32 psi_cpu_some_avg300_avg = 24;
602     optional int32 psi_io_full_avg10_min = 25;
603     optional int32 psi_io_full_avg10_max = 26;
604     optional int32 psi_io_full_avg10_avg = 27;
605     optional int32 psi_io_full_avg60_min = 28;
606     optional int32 psi_io_full_avg60_max = 29;
607     optional int32 psi_io_full_avg60_avg = 30;
608     optional int32 psi_io_full_avg300_min = 31;
609     optional int32 psi_io_full_avg300_max = 32;
610     optional int32 psi_io_full_avg300_avg = 33;
611     optional int32 psi_io_some_avg10_min = 34;
612     optional int32 psi_io_some_avg10_max = 35;
613     optional int32 psi_io_some_avg10_avg = 36;
614     optional int32 psi_io_some_avg60_min = 37;
615     optional int32 psi_io_some_avg60_max = 38;
616     optional int32 psi_io_some_avg60_avg = 39;
617     optional int32 psi_io_some_avg300_min = 40;
618     optional int32 psi_io_some_avg300_max = 41;
619     optional int32 psi_io_some_avg300_avg = 42;
620     optional int32 psi_mem_full_avg10_min = 43;
621     optional int32 psi_mem_full_avg10_max = 44;
622     optional int32 psi_mem_full_avg10_avg = 45;
623     optional int32 psi_mem_full_avg60_min = 46;
624     optional int32 psi_mem_full_avg60_max = 47;
625     optional int32 psi_mem_full_avg60_avg = 48;
626     optional int32 psi_mem_full_avg300_min = 49;
627     optional int32 psi_mem_full_avg300_max = 50;
628     optional int32 psi_mem_full_avg300_avg = 51;
629     optional int32 psi_mem_some_avg10_min = 52;
630     optional int32 psi_mem_some_avg10_max = 53;
631     optional int32 psi_mem_some_avg10_avg = 54;
632     optional int32 psi_mem_some_avg60_min = 55;
633     optional int32 psi_mem_some_avg60_max = 56;
634     optional int32 psi_mem_some_avg60_avg = 57;
635     optional int32 psi_mem_some_avg300_min = 58;
636     optional int32 psi_mem_some_avg300_max = 59;
637     optional int32 psi_mem_some_avg300_avg = 60;
638     optional int32 version = 61 [deprecated = true];
639     optional int64 shmem_pages = 62;
640     optional int64 page_table_pages = 63;
641     optional int64 dmabuf_kb = 64;
642 }
643 
644 /* A message containing Pixel memory metrics collected daily. */
645 message PixelMmMetricsPerDay {
646     optional string reverse_domain_name = 1;
647     optional int64 workingset_refault = 2;  /* refault_file */
648     optional int64 pswpin = 3;
649     optional int64 pswpout = 4;
650     optional int64 allocstall_dma = 5;
651     optional int64 allocstall_dma32 = 6;
652     optional int64 allocstall_normal = 7;
653     optional int64 allocstall_movable = 8;
654     optional int64 pgalloc_dma = 9;
655     optional int64 pgalloc_dma32 = 10;
656     optional int64 pgalloc_normal = 11;
657     optional int64 pgalloc_movable = 12;
658     optional int64 pgsteal_kswapd = 13;
659     optional int64 pgsteal_direct = 14;
660     optional int64 pgscan_kswapd = 15;
661     optional int64 pgscan_direct = 16;
662     optional int64 oom_kill = 17;
663     optional int64 pgalloc_high = 18;
664     optional int64 pgcache_hit = 19;
665     optional int64 pgcache_miss = 20;
666     optional int64 kswapd_stime_clks = 21;
667     optional int64 kcompactd_stime_clks = 22;
668     optional int64 direct_reclaim_native_latency_total_time = 23;
669     optional int64 direct_reclaim_native_latency0 = 24;
670     optional int64 direct_reclaim_native_latency1 = 25;
671     optional int64 direct_reclaim_native_latency2 = 26;
672     optional int64 direct_reclaim_native_latency3 = 27;
673     optional int64 direct_reclaim_visible_latency_total_time = 28;
674     optional int64 direct_reclaim_visible_latency0 = 29;
675     optional int64 direct_reclaim_visible_latency1 = 30;
676     optional int64 direct_reclaim_visible_latency2 = 31;
677     optional int64 direct_reclaim_visible_latency3 = 32;
678     optional int64 direct_reclaim_top_latency_total_time = 33;
679     optional int64 direct_reclaim_top_latency0 = 34;
680     optional int64 direct_reclaim_top_latency1 = 35;
681     optional int64 direct_reclaim_top_latency2 = 36;
682     optional int64 direct_reclaim_top_latency3 = 37;
683     optional int64 direct_reclaim_other_latency_total_time = 38;
684     optional int64 direct_reclaim_other_latency0 = 39;
685     optional int64 direct_reclaim_other_latency1 = 40;
686     optional int64 direct_reclaim_other_latency2 = 41;
687     optional int64 direct_reclaim_other_latency3 = 42;
688     optional int64 compaction_total_time = 43;
689     optional int64 compaction_ev_count0 = 44;
690     optional int64 compaction_ev_count1 = 45;
691     optional int64 compaction_ev_count2 = 46;
692     optional int64 compaction_ev_count3 = 47;
693     optional int64 compaction_ev_count4 = 48;
694     optional int64 workingset_refault_anon = 49;
695     optional int64 workingset_refault_file = 50;
696     optional int64 compact_success = 51;
697     optional int64 compact_fail = 52;
698     optional int64 kswapd_low_wmark_hq = 53;
699     optional int64 kswapd_high_wmark_hq = 54;
700     optional int64 thp_file_alloc = 55;
701     optional int64 thp_zero_page_alloc = 56;
702     optional int64 thp_split_page = 57;
703     optional int64 thp_migration_split = 58;
704     optional int64 thp_deferred_split_page = 59;
705     optional int64 version = 60 [deprecated = true];
706     optional int64 cpu_total_time_cs = 61;
707     optional int64 cpu_idle_time_cs = 62;
708     optional int64 cpu_io_wait_time_cs = 63;
709     optional int64 kswapd_pageout_run = 64;
710 }
711 
712 /* A message containing CMA metrics collected from dogfooding only. */
713 message CmaStatus {
714   optional string reverse_domain_name = 1;
715   optional int32 type = 2;
716   optional int64 cma_alloc_pages_attempts = 3;
717   optional int64 cma_alloc_pages_soft_attempts = 4;
718   optional int64 cma_fail_pages = 5;
719   optional int64 cma_fail_soft_pages = 6;
720   optional int64 migrated_pages = 7;
721   optional string cma_heap_name = 8;
722 }
723 
724 /* A message containing CMA metrics (External). */
725 message CmaStatusExt {
726   optional string reverse_domain_name = 1;
727   optional int32 type = 2;
728   optional int64 cma_alloc_latency_low = 3;
729   optional int64 cma_alloc_latency_mid = 4;
730   optional int64 cma_alloc_latency_high = 5;
731   optional string cma_heap_name = 6;
732 }
733 
734 message F2fsCompressionInfo {
735     optional string reverse_domain_name = 1;
736     /* Show the block count written after compression since mount */
737     optional int32 compr_written_blocks = 2;
738     /* Show the saved block count with compression since mount */
739     optional int32 compr_saved_blocks = 3;
740     /* Show the count of inode newly enabled for compression since mount */
741     optional int32 compr_new_inodes = 4;
742 }
743 
744 /**
745  * Log bucketed battery charge cycles.
746  *
747  * Each bucket represents cycles of the battery past
748  * a given charge point.  For example, bucket 1 is the
749  * lowest 1/8th of the battery, and bucket 8 is 100%.
750  *
751  * Logged from:
752  * /sys/class/power_supply/bms/cycle_count, via Vendor.
753  */
754 message VendorChargeCycles {
755     optional string reverse_domain_name = 1;
756     optional int32 cycle_bucket_1 = 2;
757     optional int32 cycle_bucket_2 = 3;
758     optional int32 cycle_bucket_3 = 4;
759     optional int32 cycle_bucket_4 = 5;
760     optional int32 cycle_bucket_5 = 6;
761     optional int32 cycle_bucket_6 = 7;
762     optional int32 cycle_bucket_7 = 8;
763     optional int32 cycle_bucket_8 = 9;
764     optional int32 cycle_bucket_9 = 10;
765     optional int32 cycle_bucket_10 = 11;
766 }
767 
768 /**
769  * Logs the report of a failed hardware.
770  *
771  * Logged from:
772  *  Vendor HALs.
773  *
774  */
775 message VendorHardwareFailed {
776     enum HardwareType {
777       HARDWARE_FAILED_UNKNOWN = 0;
778       HARDWARE_FAILED_MICROPHONE = 1;
779       HARDWARE_FAILED_CODEC = 2;
780       HARDWARE_FAILED_SPEAKER = 3;
781       HARDWARE_FAILED_FINGERPRINT = 4;
782     }
783     optional string reverse_domain_name = 1;
784     optional HardwareType hardware_type = 2;
785 
786     /**
787      * hardware_location allows vendors to differentiate between multiple
788      * instances of the same hardware_type.  The specific locations are vendor
789      * defined integers, referring to board-specific numbering schemes.
790      */
791     optional int32 hardware_location = 3;
792     /**
793      * failure_code is specific to the HardwareType of the failed hardware.
794      * It should use one of the enum values defined below.
795      */
796     enum HardwareErrorCode {
797       UNKNOWN = 0;
798       COMPLETE = 1;
799       SPEAKER_HIGH_Z = 2;
800       SPEAKER_SHORT = 3;
801       FINGERPRINT_SENSOR_BROKEN = 4;
802       FINGERPRINT_TOO_MANY_DEAD_PIXELS = 5;
803       DEGRADE = 6;
804     }
805     optional int32 failure_code = 4;
806 }
807 
808 /**
809  * Log slow I/O operations on the primary storage.
810  */
811 message VendorSlowIo {
812     // Classifications of IO Operations.
813     enum IoOperation {
814       UNKNOWN = 0;
815       READ = 1;
816       WRITE = 2;
817       UNMAP = 3;
818       SYNC = 4;
819     }
820     optional string reverse_domain_name = 1;
821     optional IoOperation operation = 2;
822 
823     // The number of slow IO operations of this type over 24 hours.
824     optional int32 count = 3;
825 }
826 
827 /*
828  * Logs the reported speech DSP status.
829  * Logged from: Vendor audio implementation.
830  */
831 message VendorSpeechDspStat {
832     optional string reverse_domain_name = 1;
833     // The total Speech DSP uptime in milliseconds.
834     optional int32 total_uptime_millis = 2;
835     // The total Speech DSP downtime in milliseconds.
836     optional int32 total_downtime_millis = 3;
837     optional int32 total_crash_count = 4;
838     optional int32 total_recover_count = 5;
839 }
840 
841 /**
842  * Log an event when the device has been physically dropped.
843  * Reported from the /vendor partition.
844  */
845 message VendorPhysicalDropDetected {
846   optional string reverse_domain_name = 1;
847   // Confidence that the event was actually a drop, 0 -> 100
848   optional int32 confidence_pctg = 2;
849   // Peak acceleration of the drop, in 1/1000s of a g.
850   optional int32 accel_peak_thousandths_g = 3;
851   // Duration of freefall in ms
852   optional int32 freefall_time_millis = 4;
853 }
854 
855 /** Represents USB port overheat event. */
856 message VendorUsbPortOverheat {
857   optional string reverse_domain_name = 1;
858   /* Temperature of USB port at USB plug event, in 1/10ths of degree C. */
859   optional int32 plug_temperature_deci_c = 2;
860   /* Maximum temperature of USB port during overheat event, in 1/10ths of degree
861    * C. */
862   optional int32 max_temperature_deci_c = 3;
863   /* Time between USB plug event and overheat threshold trip, in seconds. */
864   optional int32 time_to_overheat_secs = 4;
865   /* Time between overheat threshold trip and hysteresis, in seconds. */
866   optional int32 time_to_hysteresis_secs = 5;
867   /* Time between hysteresis and active mitigation ending, in seconds. */
868   optional int32 time_to_inactive_secs = 6;
869 }
870 
871 /**
872  * Log battery health snapshot.
873  *
874  * Resistance, Voltage, Open Circuit Voltage, Temperature, and Charge Level
875  * are snapshotted periodically over 24hrs.
876  */
877 message VendorBatteryHealthSnapshot {
878   enum BatterySnapshotType {
879     BATTERY_SNAPSHOT_TYPE_UNKNOWN = 0;
880     BATTERY_SNAPSHOT_TYPE_MIN_TEMP = 1;         // Snapshot at min batt temp over 24hrs.
881     BATTERY_SNAPSHOT_TYPE_MAX_TEMP = 2;         // Snapshot at max batt temp over 24hrs.
882     BATTERY_SNAPSHOT_TYPE_MIN_RESISTANCE = 3;   // Snapshot at min batt resistance over 24hrs.
883     BATTERY_SNAPSHOT_TYPE_MAX_RESISTANCE = 4;   // Snapshot at max batt resistance over 24hrs.
884     BATTERY_SNAPSHOT_TYPE_MIN_VOLTAGE = 5;      // Snapshot at min batt voltage over 24hrs.
885     BATTERY_SNAPSHOT_TYPE_MAX_VOLTAGE = 6;      // Snapshot at max batt voltage over 24hrs.
886     BATTERY_SNAPSHOT_TYPE_MIN_CURRENT = 7;      // Snapshot at min batt current over 24hrs.
887     BATTERY_SNAPSHOT_TYPE_MAX_CURRENT = 8;      // Snapshot at max batt current over 24hrs.
888     BATTERY_SNAPSHOT_TYPE_MIN_BATT_LEVEL = 9;   // Snapshot at min battery level (SoC) over 24hrs.
889     BATTERY_SNAPSHOT_TYPE_MAX_BATT_LEVEL = 10;  // Snapshot at max battery level (SoC) over 24hrs.
890     BATTERY_SNAPSHOT_TYPE_AVG_RESISTANCE = 11;  // Snapshot at average battery resistance over 24hrs.
891   }
892   optional string reverse_domain_name = 1;
893   optional BatterySnapshotType type = 2;
894   // Temperature, in 1/10ths of degree C.
895   optional int32 temperature_deci_celsius = 3;
896   // Voltage Battery Voltage, in microVolts.
897   optional int32 voltage_micro_volt = 4;
898   // Current Battery current, in microAmps.
899   optional int32 current_micro_amps = 5;
900   // OpenCircuitVoltage Battery Open Circuit Voltage, in microVolts.
901   optional int32 open_circuit_micro_volt = 6;
902   // Resistance Battery Resistance, in microOhms.
903   optional int32 resistance_micro_ohm = 7;
904   // Level Battery Level, as % of full.
905   optional int32 level_percent = 8;
906 }
907 
908 /**
909  * Log battery caused shutdown with the last recorded voltage.
910  */
911 message VendorBatteryCausedShutdown {
912  optional string reverse_domain_name = 1;
913  // The last recorded battery voltage prior to shutdown.
914  optional int32 last_recorded_micro_volt = 2;
915 }
916 
917 /**
918  * Log mitigation statistics.
919  */
920 message PowerMitigationStats {
921  optional string reverse_domain_name = 1;
922  // The last triggered count: batoilo.
923  optional int32 batoilo_count = 2;
924  // The last triggered count: vdroop1.
925  optional int32 vdroop1_count = 3;
926  // The last triggered count: vdroop2.
927  optional int32 vdroop2_count = 4;
928  // The last triggered count: smpl_warn.
929  optional int32 smpl_warn_count = 5;
930  // The last triggered count: ocp_cpu1.
931  optional int32 ocp_cpu1_count = 6;
932  // The last triggered count: ocp_cpu2.
933  optional int32 ocp_cpu2_count = 7;
934  // The last triggered count: ocp_gpu.
935  optional int32 ocp_gpu_count = 8;
936  // The last triggered count: ocp_tpu.
937  optional int32 ocp_tpu_count = 9;
938  // The last triggered count: soft_ocp_cpu1.
939  optional int32 soft_ocp_cpu1_count = 10;
940  // The last triggered count: soft_ocp_cpu2.
941  optional int32 soft_ocp_cpu2_count = 11;
942  // The last triggered count: soft_ocp_gpu.
943  optional int32 soft_ocp_gpu_count = 12;
944  // The last triggered count: soft_ocp_tpu.
945  optional int32 soft_ocp_tpu_count = 13;
946  // The last triggered capacity: batoilo.
947  optional int32 batoilo_cap = 14;
948  // The last triggered capacity: vdroop1.
949  optional int32 vdroop1_cap = 15;
950  // The last triggered capacity: vdroop2.
951  optional int32 vdroop2_cap = 16;
952  // The last triggered capacity: smpl_warn.
953  optional int32 smpl_warn_cap = 17;
954  // The last triggered capacity: ocp_cpu1.
955  optional int32 ocp_cpu1_cap = 18;
956  // The last triggered capacity: ocp_cpu2.
957  optional int32 ocp_cpu2_cap = 19;
958  // The last triggered capacity: ocp_gpu.
959  optional int32 ocp_gpu_cap = 20;
960  // The last triggered capacity: ocp_tpu.
961  optional int32 ocp_tpu_cap = 21;
962  // The last triggered capacity: soft_ocp_cpu1.
963  optional int32 soft_ocp_cpu1_cap = 22;
964  // The last triggered capacity: soft_ocp_cpu2.
965  optional int32 soft_ocp_cpu2_cap = 23;
966  // The last triggered capacity: soft_ocp_gpu.
967  optional int32 soft_ocp_gpu_cap = 24;
968  // The last triggered capacity: soft_ocp_tpu.
969  optional int32 soft_ocp_tpu_cap = 25;
970  // The last triggered count: batoilo2.
971  optional int32 batoilo2_count = 26;
972  // The last triggered capacity: batoilo2.
973  optional int32 batoilo2_cap = 27;
974 }
975 
976 /**
977  * Log thermal statistics.
978  */
979 message ThermalDfsStats {
980  optional string reverse_domain_name = 1;
981  // The last count of BIG cluster dfs triggers
982  optional int32 big_dfs_count = 2;
983  // The last count of MID cluster dfs triggers
984  optional int32 mid_dfs_count = 3;
985  // The last count of LITTLE cluster dfs triggers
986  optional int32 little_dfs_count = 4;
987  // The last count of GPU dfs triggers
988  optional int32 gpu_dfs_count = 5;
989  // The last count of TPU dfs triggers
990  optional int32 tpu_dfs_count = 6;
991  // The last count of DSP dfs triggers
992  optional int32 aur_dfs_count = 7;
993 }
994 
995 /**
996  * Log Display Panel error statistics.
997  */
998 message DisplayPanelErrorStats {
999  optional string reverse_domain_name = 1;
1000  // The error count due to Tear Effect on primary display panel.
1001  optional int32 primary_error_count_te = 2;
1002  // The error count due to unknown reason on primary display panel.
1003  optional int32 primary_error_count_unknown = 3;
1004  // The error count due to Tear Effect on primary display panel.
1005  optional int32 secondary_error_count_te = 4;
1006  // The error count due to unknown reason on secondary display panel.
1007  optional int32 secondary_error_count_unknown = 5;
1008 }
1009 
1010 /**
1011  * Log how many segments have been reclaimed in a specific GC mode.
1012  */
1013 message F2fsGcSegmentInfo {
1014     optional string reverse_domain_name = 1;
1015     /* Reclaimed segments in GC normal mode */
1016     optional int32 reclaimed_segments_normal = 2;
1017     /* Reclaimed segments in GC urgent high mode */
1018     optional int32 reclaimed_segments_urgent_high = 3;
1019     /* Reclaimed segments in GC urgent low mode */
1020     optional int32 reclaimed_segments_urgent_low = 4;
1021     /* Reclaimed segments in GC urgent mid mode */
1022     optional int32 reclaimed_segments_urgent_mid = 5;
1023 }
1024 
1025 /**
1026  * Logs an event indicating that a nanoapp loading has failed at the HAL.
1027  */
1028 message ChreHalNanoappLoadFailed {
1029   // Vendor reverse domain name (expecting "com.google.pixel").
1030   optional string reverse_domain_name = 1;
1031 
1032   enum Type {
1033     TYPE_UNKNOWN = 0;
1034     // Corresponds to preloaded nanoapps on the device.
1035     TYPE_PRELOADED = 1;
1036     // Dynamic loading of a nanoapp (e.g. code download).
1037     TYPE_DYNAMIC = 2;
1038   }
1039 
1040   enum Reason {
1041     REASON_UNKNOWN = 0;
1042     // A generic error code that does not match any of the others.
1043     REASON_ERROR_GENERIC = 1;
1044     // Failure at the connection between HAL<->CHRE.
1045     REASON_CONNECTION_ERROR = 2;
1046     // System ran out of memory.
1047     REASON_OOM = 3;
1048     // Nanoapp did not have the right signing for loading.
1049     REASON_SIGNATURE_MISMATCH = 4;
1050   }
1051 
1052   // The 64-bit unique nanoapp identifier of the nanoapp that failed.
1053   optional int64 nanoapp_id = 2;
1054 
1055   // The type of the load event.
1056   optional Type type = 3;
1057 
1058   // The reason for the failure.
1059   optional Reason reason = 4;
1060 }
1061 
1062 /**
1063  * An enum describing a module within CHRE.
1064  */
1065 enum ChreModuleType {
1066   CHRE_MODULE_TYPE_UNKNOWN = 0;
1067   CHRE_MODULE_TYPE_CHRE = 1; // Core CHRE framework
1068   CHRE_MODULE_TYPE_PAL = 2; // PAL module (could be CHPP)
1069   CHRE_MODULE_TYPE_NANOAPP = 3;
1070 }
1071 
1072 /**
1073  * An enum describing the CHRE PAL type.
1074  */
1075 enum ChrePalType {
1076   CHRE_PAL_TYPE_UNKNOWN = 0;
1077   CHRE_PAL_TYPE_SENSOR = 1;
1078   CHRE_PAL_TYPE_WIFI = 2;
1079   CHRE_PAL_TYPE_GNSS = 3;
1080   CHRE_PAL_TYPE_WWAN = 4;
1081   CHRE_PAL_TYPE_AUDIO = 5;
1082   CHRE_PAL_TYPE_BLE = 6;
1083 }
1084 
1085 /**
1086  * Logs an event indicating that a CHRE PAL open has failed.
1087  */
1088 message ChrePalOpenFailed {
1089   // Vendor reverse domain name (expecting "com.google.pixel").
1090   optional string reverse_domain_name = 1;
1091 
1092   enum Type {
1093     TYPE_UNKNOWN = 0;
1094     // Initial open when CHRE starts.
1095     INITIAL_OPEN = 1;
1096     // Any form of "reopen" event internally in the PAL.
1097     REOPEN = 2;
1098   }
1099 
1100   // The PAL this failure event is for.
1101   optional ChrePalType pal = 2;
1102 
1103   // The type of failure observed.
1104   optional Type type = 3;
1105 }
1106 
1107 /**
1108  * The type of CHRE API request.
1109  */
1110 enum ChreApiType {
1111   CHRE_API_TYPE_UNKNOWN = 0;
1112   CHRE_API_TYPE_WIFI_SCAN_MONITOR = 1;
1113   CHRE_API_TYPE_WIFI_ACTIVE_SCAN = 2;
1114   CHRE_API_TYPE_WIFI_RTT_RANGING = 3;
1115 }
1116 
1117 /**
1118  * The type of CHRE API error.
1119  */
1120 enum ChreError {
1121   CHRE_ERROR_UNKNOWN = 0;
1122 
1123   // No error occurred.
1124   CHRE_ERROR_NONE = 1;
1125 
1126   // An unspecified failure occurred.
1127   CHRE_ERROR = 2;
1128 
1129   // One or more supplied arguments are invalid.
1130   CHRE_ERROR_INVALID_ARGUMENT = 3;
1131 
1132   // Unable to satisfy request because the system is busy.
1133   CHRE_ERROR_BUSY = 4;
1134 
1135   // Unable to allocate memory.
1136   CHRE_ERROR_NO_MEMORY = 5;
1137 
1138   // The requested feature is not supported.
1139   CHRE_ERROR_NOT_SUPPORTED = 6;
1140 
1141   // A timeout occurred while processing the request.
1142   CHRE_ERROR_TIMEOUT = 7;
1143 
1144   // The relevant capability is disabled, for example due to a user
1145   // configuration that takes precedence over this request.
1146   CHRE_ERROR_FUNCTION_DISABLED = 8;
1147 }
1148 
1149 /**
1150  * Distribution of CHRE API error codes.
1151  */
1152 message ChreApiErrorCodeDistributionTaken {
1153   // Vendor reverse domain name (expecting "com.google.pixel").
1154   optional string reverse_domain_name = 1;
1155 
1156   // The chreGetTime() value when this snapshot was taken, in milliseconds.
1157   optional int32 snapshot_chre_get_time_ms = 2;
1158 
1159   // The CHRE API type.
1160   optional ChreApiType api_type = 3;
1161 
1162   // Corresponds to the CHRE error code that occurred, as defined in the
1163   // "enum chreError" field in chre_api/chre/common.h.
1164   optional ChreError error_code = 4;
1165   optional int32 num_errors = 5;
1166 }
1167 
1168 /**
1169  * Snapshot of the dynamic memory allocated in CHRE.
1170  */
1171 message ChreDynamicMemorySnapshotReported {
1172   // Vendor reverse domain name (expecting "com.google.pixel").
1173   optional string reverse_domain_name = 1;
1174 
1175   // The chreGetTime() value when this snapshot was taken, in milliseconds.
1176   optional int32 snapshot_chre_get_time_ms = 2;
1177 
1178   // The type of the module.
1179   optional ChreModuleType module_type = 3;
1180 
1181   // The unique 64-bit ID for a nanoapp, only used if the module_type is NANOAPP.
1182   // If module_type is PAL, then it represents the ChrePalType enum. If the module_type
1183   // is CHRE, then a zero value should be used.
1184   optional int64 pal_type_or_nanoapp_id = 4;
1185 
1186   // The max allocation amount of this module in bytes.
1187   optional int32 max_allocation_bytes = 5;
1188 
1189   // The current allocation amount of this module in bytes.
1190   optional int32 current_allocation_bytes = 6;
1191 }
1192 
1193 /**
1194  * Snapshot of the event queue stats in CHRE.
1195  */
1196 message ChreEventQueueSnapshotReported {
1197   // Vendor reverse domain name (expecting "com.google.pixel").
1198   optional string reverse_domain_name = 1;
1199 
1200   // The chreGetTime() value when this snapshot was taken, in milliseconds.
1201   optional int32 snapshot_chre_get_time_ms = 2;
1202 
1203   // The maximum size the event queue got to (i.e. num pending events).
1204   optional int32 max_event_queue_size = 3;
1205 
1206   // The average size the event queue got to (i.e. num pending events).
1207   optional int32 mean_event_queue_size = 4;
1208 
1209   // The number of events that were dropped due to capacity limits.
1210   optional int32 num_dropped_events = 5;
1211 
1212   // The maximum amount of time it took for an event, from when it was received,
1213   // to when it was delivered to all interested modules. This value represents
1214   // the total delay within the CHRE subsystem.
1215   optional int64 max_queue_delay_us = 6;
1216 
1217   // The mean value of the delay in microseconds.
1218   optional int64 mean_queue_delay_us = 7;
1219 }
1220 
1221 /**
1222  * Indicates that a nanoapp has woken up the AP.
1223  */
1224 message ChreApWakeUpOccurred {
1225   // Vendor reverse domain name (expecting "com.google.pixel").
1226   optional string reverse_domain_name = 1;
1227 
1228   // The 64-bit unique nanoapp identifier that describes the entity that has caused an AP wake-up
1229   // from CHRE. Whenever this event occurs, this means that the nanoapp sent a message to
1230   // the AP causing a transition between suspend/wake-up.
1231   optional int64 nanoapp_id = 2;
1232 }
1233 
1234 /**
1235  * Snapshot of the current battery health of the device.
1236  */
1237 message BatteryHealthStatus {
1238   // Vendor reverse domain name (expecting "com.google.pixel").
1239   optional string reverse_domain_name = 1;
1240 
1241   // The algorithm that computes how the health status and health indexes are calculated.
1242   optional int32 health_algorithm = 2;
1243 
1244   enum HealthStatus {
1245     UNKNOWN = -1; // The health status is unknown due to a SW limitation or issue
1246     NOMINAL = 0; // The battery is operating as expected
1247     MARGINAL = 1; // The battery may need replacement soon
1248     NEEDS_REPLACEMENT = 2; // The battery needs replacement
1249     FAILED = 3; // The battery has failed and no longer operates as expected
1250     NOT_AVAILABLE = 4; // This is a temporary state when cycle count is insufficient
1251     INCONSISTENT = 5; // The battery recalibration is pending
1252   }
1253 
1254   // HealthStatus calculated using health_index, health_perf_index.
1255   optional HealthStatus health_status = 3;
1256 
1257   // A percentage measure of the health of the battery with 100% being perfectly healthy.
1258   optional int32 health_index = 4;
1259 
1260   // A percentage measure of the battery capacity of the device, affected by cycle life degradation.
1261   optional int32 health_capacity_index = 5;
1262 
1263   // A percentage measure of the max performance of the device, affected by impedance growth with 100% being perfectly healthy.
1264   optional int32 health_impedance_index = 6;
1265 
1266   // An index that expresses the likelihood of swelling given the SOC residency stats.
1267   optional int32 swelling_cumulative = 7;
1268 
1269   // The battery capacity used to determine the health index. This is the reference value from b/223759710.
1270   optional int32 health_full_capacity = 8;
1271 
1272   // 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.
1273   optional int32 current_impedance = 9;
1274 
1275   // The (hours) value of TimeH (0xb3), a register value, multiplied by 3.2 hours.
1276   optional int32 battery_age = 10;
1277 
1278   // The cycle count at the time of the log event.
1279   optional int32 cycle_count = 11;
1280 
1281   enum BattDisconnectStatus {
1282     BPST_BATT_UNKNOWN = 0;
1283     BPST_BATT_CONNECT = 1;
1284     BPST_BATT_DISCONNECT = 2; // Result of single battery disconnect detection
1285     BPST_BATT_CELL_FAULT = 3; // Result of cell fault detection which means actual disconnection
1286   }
1287 
1288   // Battery disconnect detection stats.
1289   optional BattDisconnectStatus battery_disconnect_status = 12;
1290 }
1291 
1292 /**
1293  * Log battery SOC/temperature usage data.
1294  *
1295  * Each data represents cumulative time of the battery
1296  * spent over a specific SOC and over a specific temperature
1297  * while charging and while discharging in seconds.
1298  *
1299  * Logged from:
1300  * /sys/class/power_supply/battery/swelling_data, via Vendor.
1301  */
1302 message BatteryHealthUsage {
1303   // Vendor reverse domain name (expecting "com.google.pixel").
1304   optional string reverse_domain_name = 1;
1305 
1306   // The temperature limit (deg C) used to accumulate the time above this value.
1307   optional int32 temperature_limit_deci_c = 2;
1308 
1309   // The SOC limit (%) used to accumulate the time above this value.
1310   optional int32 soc_limit = 3;
1311 
1312   // Time (s) accumulated only during charge at the given thresholds.
1313   optional int32 charge_time_secs = 4;
1314 
1315   // Time (s) accumulated only during discharge at the given thresholds.
1316   optional int32 discharge_time_secs = 5;
1317 }
1318 
1319 /*
1320  * A Value of F2FS smart idle maintenance feature enabled
1321  */
1322 message F2fsSmartIdleMaintEnabledStateChanged {
1323     optional string reverse_domain_name = 1;
1324     /* Smart idle maint is enabled */
1325     optional bool enabled = 2;
1326 }
1327 
1328 /*
1329  * Snapshot of the block layer read write stats
1330  */
1331 message BlockStatsReported {
1332     optional string reverse_domain_name = 1;
1333         /* number of read I/Os processed */
1334         optional int64 read_io = 2;
1335         /* number of sectors read */
1336         optional int64 read_sectors = 3;
1337         /* total wait time for read requests */
1338         optional int64 read_ticks = 4;
1339         /* number of write I/Os processed */
1340         optional int64 write_io = 5;
1341         /* number of sectors written */
1342         optional int64 write_sectors = 6;
1343         /* total wait time for write requests */
1344         optional int64 write_ticks = 7;
1345 }
1346 
1347 /**
1348  * Logs the reported vendor audio hardware stats.
1349  */
1350 message VendorAudioHardwareStatsReported {
1351   optional string reverse_domain_name = 1;
1352   /* The number of calls in a day where CCA is active.
1353    * CCA can only be applied under some radio bands.
1354    */
1355   optional int32 milli_rate_of_ams_per_day = 2;
1356 
1357   // cca_active: obsoleted UI enable & algorithm is active (C1)
1358   // replaced by cca_active_count_per_day
1359   optional int32 rate_of_cca_active_per_day = 3 [deprecated = true];
1360 
1361   // cca_enable: obsoleted UI enable & algorithm is inactive field (C2)
1362   // replaced by cca_enable_count_per_day
1363   optional int32 rate_of_cca_enable_per_day = 4 [deprecated = true];
1364 
1365   enum Source {
1366     VOIP = 0;
1367     VOICE = 1;
1368   }
1369 
1370   /* source: identify whether this atom is for voice or voip case. */
1371   optional Source source = 5;
1372 
1373   /* total_call_count_per_day: count total number of call per day. */
1374   optional int32 total_call_count_per_day = 6;
1375 
1376   /* cca_active: UI enable & algorithm is active (C1 or C3) */
1377   optional int32 cca_active_count_per_day = 7;
1378 
1379   /* cca_enable: UI enable & algorithm is inactive (C2 or C4) */
1380   optional int32 cca_enable_count_per_day = 8;
1381 }
1382 
1383 /**
1384  * Logs the reported vendor audio PDM stats.
1385  * PDM stats are used to show background noise level during voice/voip calling.
1386  * Each of the atom will show only one type of background noises. There are at most 4 types.
1387  * Thus, this atoms will be reported at most 4 times to show all types.
1388  */
1389 message VendorAudioPdmStatsReported {
1390   optional string reverse_domain_name = 1;
1391 
1392   /* index of the pdm to report. There are 4 pdm instances. So, the value is in the range 1-4 */
1393   optional int32 pdm_index = 2;
1394 
1395   /* State of the pdm to report. There is only two value 1 for good and 0 for bad. */
1396   optional int32 state = 3;
1397 }
1398 
1399 /*
1400  * Logs vendor stats about long IRQs.
1401  *
1402  * IRQ is considered long when it exceeds a threshold (currently 1 ms).
1403  * Stats include top 5 slowest IRQs: their numbers and the worst latency.
1404  * Stats are reset after every report.
1405  */
1406 message VendorLongIRQStatsReported {
1407   optional string reverse_domain_name = 1;
1408 
1409   // Count of long soft IRQ since last report.
1410   optional int64 long_softirq_count = 2;
1411 
1412   optional int64 top1_softirq_num = 3;
1413   optional int64 top1_softirq_latency_us = 4;
1414   optional int64 top2_softirq_num = 5;
1415   optional int64 top2_softirq_latency_us = 6;
1416   optional int64 top3_softirq_num = 7;
1417   optional int64 top3_softirq_latency_us = 8;
1418   optional int64 top4_softirq_num = 9;
1419   optional int64 top4_softirq_latency_us = 10;
1420   optional int64 top5_softirq_num = 11;
1421   optional int64 top5_softirq_latency_us = 12;
1422 
1423   // Count of long IRQ since last report.
1424   optional int64 long_irq_count = 13;
1425 
1426   optional int64 top1_irq_num = 14;
1427   optional int64 top1_irq_latency_us = 15;
1428   optional int64 top2_irq_num = 16;
1429   optional int64 top2_irq_latency_us = 17;
1430   optional int64 top3_irq_num = 18;
1431   optional int64 top3_irq_latency_us = 19;
1432   optional int64 top4_irq_num = 20;
1433   optional int64 top4_irq_latency_us = 21;
1434   optional int64 top5_irq_num = 22;
1435   optional int64 top5_irq_latency_us = 23;
1436 
1437   optional int64 storm_irq_top1_num = 24;
1438   optional int64 storm_irq_top1_count = 25;
1439   optional int64 storm_irq_top2_num = 26;
1440   optional int64 storm_irq_top2_count = 27;
1441   optional int64 storm_irq_top3_num = 28;
1442   optional int64 storm_irq_top3_count = 29;
1443   optional int64 storm_irq_top4_num = 30;
1444   optional int64 storm_irq_top4_count = 31;
1445   optional int64 storm_irq_top5_num= 32;
1446   optional int64 storm_irq_top5_count = 33;
1447 }
1448 
1449 /**
1450  * Logs the Temperature residency stats per thermal zone.
1451  */
1452 message VendorTempResidencyStats {
1453   optional string reverse_domain_name = 1;
1454   // Thermal zone name
1455   optional string sensor_name = 2;
1456 
1457   // Time since last collect of this thermal zone
1458   optional int64 since_last_update_ms = 3;
1459 
1460   // Temperature residency stats is measured by time in ms that a temperature zone's temperature
1461   // lay within some temperature thresholds
1462   // e.g.
1463   // With temperature thresholds predefined as thresholds_i, thresholds_i+1,
1464   // temp_residency_ms_bucket_i measures how much time the sensor lay within this two thresholds
1465   optional int64 temp_residency_ms_bucket_1 = 4;
1466   optional int64 temp_residency_ms_bucket_2 = 5;
1467   optional int64 temp_residency_ms_bucket_3 = 6;
1468   optional int64 temp_residency_ms_bucket_4 = 7;
1469   optional int64 temp_residency_ms_bucket_5 = 8;
1470   optional int64 temp_residency_ms_bucket_6 = 9;
1471   optional int64 temp_residency_ms_bucket_7 = 10;
1472   optional int64 temp_residency_ms_bucket_8 = 11;
1473   optional int64 temp_residency_ms_bucket_9 = 12;
1474   optional int64 temp_residency_ms_bucket_10 = 13;
1475   optional int64 temp_residency_ms_bucket_11 = 14;
1476   optional int64 temp_residency_ms_bucket_12 = 15;
1477   optional int64 temp_residency_ms_bucket_13 = 16;
1478   optional int64 temp_residency_ms_bucket_14 = 17;
1479   optional int64 temp_residency_ms_bucket_15 = 18;
1480   optional int64 temp_residency_ms_bucket_16 = 19;
1481   optional int64 temp_residency_ms_bucket_17 = 20;
1482   optional int64 temp_residency_ms_bucket_18 = 21;
1483   optional int64 temp_residency_ms_bucket_19 = 22;
1484   optional int64 temp_residency_ms_bucket_20 = 23;
1485 
1486   // The maximum and minimum temperature observed for the sensor along with the
1487   // timestamp of occurrence in terms of time_t.
1488   optional float max_temp = 24;
1489   optional int64 max_temp_timestamp = 25;
1490   optional float min_temp = 26;
1491   optional int64 min_temp_timestamp = 27;
1492 }
1493 
1494 /**
1495  * Logs the Resume Latency stats.
1496  */
1497 message VendorResumeLatencyStats {
1498   optional string reverse_domain_name = 1;
1499   optional int64 max_latency_ms = 2;
1500   optional int64 avg_latency_ms = 3;
1501 
1502   // Resume Latency stats is measured by count of resumes that lay within some latency thresholds
1503   // e.g.
1504   // With resume times thresholds predefined as thresholds_i, thresholds_i+1,
1505   // resume_count_bucket_i measures count of resumes that lay within this two thresholds
1506   optional int64 resume_count_bucket_1 = 4;
1507   optional int64 resume_count_bucket_2 = 5;
1508   optional int64 resume_count_bucket_3 = 6;
1509   optional int64 resume_count_bucket_4 = 7;
1510   optional int64 resume_count_bucket_5 = 8;
1511   optional int64 resume_count_bucket_6 = 9;
1512   optional int64 resume_count_bucket_7 = 10;
1513   optional int64 resume_count_bucket_8 = 11;
1514   optional int64 resume_count_bucket_9 = 12;
1515   optional int64 resume_count_bucket_10 = 13;
1516   optional int64 resume_count_bucket_11 = 14;
1517   optional int64 resume_count_bucket_12 = 15;
1518   optional int64 resume_count_bucket_13 = 16;
1519   optional int64 resume_count_bucket_14 = 17;
1520   optional int64 resume_count_bucket_15 = 18;
1521   optional int64 resume_count_bucket_16 = 19;
1522   optional int64 resume_count_bucket_17 = 20;
1523   optional int64 resume_count_bucket_18 = 21;
1524   optional int64 resume_count_bucket_19 = 22;
1525   optional int64 resume_count_bucket_20 = 23;
1526   optional int64 resume_count_bucket_21 = 24;
1527   optional int64 resume_count_bucket_22 = 25;
1528   optional int64 resume_count_bucket_23 = 26;
1529   optional int64 resume_count_bucket_24 = 27;
1530   optional int64 resume_count_bucket_25 = 28;
1531   optional int64 resume_count_bucket_26 = 29;
1532   optional int64 resume_count_bucket_27 = 30;
1533   optional int64 resume_count_bucket_28 = 31;
1534   optional int64 resume_count_bucket_29 = 32;
1535   optional int64 resume_count_bucket_30 = 33;
1536   optional int64 resume_count_bucket_31 = 34;
1537   optional int64 resume_count_bucket_32 = 35;
1538   optional int64 resume_count_bucket_33 = 36;
1539   optional int64 resume_count_bucket_34 = 37;
1540   optional int64 resume_count_bucket_35 = 38;
1541   optional int64 resume_count_bucket_36 = 39;
1542 }
1543 
1544 /*
1545  * Log the Brownout events.
1546  */
1547 message BrownoutDetected {
1548     enum IRQType {
1549         UVLO1 = 0;
1550         SMPL_WARN = 1;
1551         UVLO2 = 2;
1552         BATOILO = 3;
1553         BATOILO2 = 4;
1554     }
1555 
1556     enum BrownoutReason {
1557         UNKNOWN = 0;
1558         UVLO_IF = 1;
1559         OCP_IF = 2;
1560         UVLO_MAIN = 3;
1561         UVLO_SUB = 4;
1562         OCP_B1M = 5;
1563         OCP_B2M = 6;
1564         OCP_B3M = 7;
1565         OCP_B4M = 8;
1566         OCP_B5M = 9;
1567         OCP_B6M = 10;
1568         OCP_B7M = 11;
1569         OCP_B8M = 12;
1570         OCP_B9M = 13;
1571         OCP_B10M = 14;
1572         OCP_B1S = 15;
1573         OCP_B2S = 16;
1574         OCP_B3S = 17;
1575         OCP_B4S = 18;
1576         OCP_B5S = 19;
1577         OCP_B6S = 20;
1578         OCP_B7S = 21;
1579         OCP_B8S = 22;
1580         OCP_B9S = 23;
1581         OCP_B10S = 24;
1582         OCP_BAS = 25;
1583         OCP_BBS = 26;
1584         OCP_BCS = 27;
1585         OCP_BDS = 28;
1586         OCP2_IF = 29;
1587     }
1588 
1589     // Reverse domain name. (e.g. Pixel)
1590     optional string reverse_domain_name = 1;
1591     // Triggered mitigation IRQ
1592     optional IRQType triggered_irq = 2;
1593     // Triggered timestamp
1594     optional int64 triggered_timestamp = 3;
1595     // Triggered battery temperature
1596     optional int32 battery_temp = 4;
1597     // Triggered battery age
1598     optional int32 battery_cycle = 5;
1599     // Triggered battery soc
1600     optional int32 battery_soc = 6;
1601     // Triggered FG Reading: Voltage Now
1602     optional int32 voltage_now = 7;
1603     // Triggered ODPM Reading: Channel 1
1604     optional int32 odpm_channel01 = 8;
1605     // Triggered ODPM Reading: Channel 2
1606     optional int32 odpm_channel02 = 9;
1607     // Triggered ODPM Reading: Channel 3
1608     optional int32 odpm_channel03 = 10;
1609     // Triggered ODPM Reading: Channel 4
1610     optional int32 odpm_channel04 = 11;
1611     // Triggered ODPM Reading: Channel 5
1612     optional int32 odpm_channel05 = 12;
1613     // Triggered ODPM Reading: Channel 6
1614     optional int32 odpm_channel06 = 13;
1615     // Triggered ODPM Reading: Channel 7
1616     optional int32 odpm_channel07 = 14;
1617     // Triggered ODPM Reading: Channel 8
1618     optional int32 odpm_channel08 = 15;
1619     // Triggered ODPM Reading: Channel 9
1620     optional int32 odpm_channel09 = 16;
1621     // Triggered ODPM Reading: Channel 10
1622     optional int32 odpm_channel10 = 17;
1623     // Triggered ODPM Reading: Channel 11
1624     optional int32 odpm_channel11 = 18;
1625     // Triggered ODPM Reading: Channel 12
1626     optional int32 odpm_channel12 = 19;
1627     // Triggered ODPM Reading: Channel 13
1628     optional int32 odpm_channel13 = 20;
1629     // Triggered ODPM Reading: Channel 14
1630     optional int32 odpm_channel14 = 21;
1631     // Triggered ODPM Reading: Channel 15
1632     optional int32 odpm_channel15 = 22;
1633     // Triggered ODPM Reading: Channel 16
1634     optional int32 odpm_channel16 = 23;
1635     // Triggered ODPM Reading: Channel 17
1636     optional int32 odpm_channel17 = 24;
1637     // Triggered ODPM Reading: Channel 18
1638     optional int32 odpm_channel18 = 25;
1639     // Triggered ODPM Reading: Channel 19
1640     optional int32 odpm_channel19 = 26;
1641     // Triggered ODPM Reading: Channel 20
1642     optional int32 odpm_channel20 = 27;
1643     // Triggered ODPM Reading: Channel 21
1644     optional int32 odpm_channel21 = 28;
1645     // Triggered ODPM Reading: Channel 22
1646     optional int32 odpm_channel22 = 29;
1647     // Triggered ODPM Reading: Channel 23
1648     optional int32 odpm_channel23 = 30;
1649     // Triggered ODPM Reading: Channel 24
1650     optional int32 odpm_channel24 = 31;
1651     // Triggered DVFS State: Channel 1
1652     optional int32 dvfs_channel1 = 32;
1653     // Triggered DVFS State: Channel 2
1654     optional int32 dvfs_channel2 = 33;
1655     // Triggered DVFS State: Channel 3
1656     optional int32 dvfs_channel3 = 34;
1657     // Triggered DVFS State: Channel 4
1658     optional int32 dvfs_channel4 = 35;
1659     // Triggered DVFS State: Channel 5
1660     optional int32 dvfs_channel5  = 36;
1661     // Triggered DVFS State: Channel 6
1662     optional int32 dvfs_channel6 = 37;
1663     // brownout reason
1664     optional BrownoutReason brownout_reason = 38;
1665     // max current
1666     optional int32 max_current = 39;
1667     // event counter uvlo1
1668     optional int32 evt_cnt_uvlo1 = 40;
1669     // event counter uvlo2
1670     optional int32 evt_cnt_uvlo2 = 41;
1671     // event counter oilo1
1672     optional int32 evt_cnt_oilo1 = 42;
1673     // event counter oilo2
1674     optional int32 evt_cnt_oilo2 = 43;
1675     // VIMON vbatt
1676     optional int32 vimon_vbatt = 44;
1677     // VIMON ibatt
1678     optional int32 vimon_ibatt = 45;
1679     // Mitigation Method 0
1680     optional int32 mitigation_method_0 = 46;
1681     // Mitigation Method 0 Entry Count
1682     optional int32 mitigation_method_0_count = 47;
1683     // Mitigation Method 0 Entry Time
1684     optional int64 mitigation_method_0_time_us = 48;
1685 }
1686 
1687 /*
1688  * PCIe Link Statistics
1689  */
1690 message PcieLinkStatsReported {
1691     /* Vendor reverse domain name (expecting "com.google.pixel"). */
1692     optional string reverse_domain_name = 1;
1693 
1694     /* Count of new PCIe Link Down events on the modem interface */
1695     optional int32 modem_pcie_linkdowns = 2;
1696     /* Count of new PCIe Completion Timeout events on the modem interface */
1697     optional int32 modem_pcie_completion_timeouts = 3;
1698     /* Count of new PCIe Link Up Failure events on the modem interface */
1699     optional int32 modem_pcie_linkup_failures = 4;
1700     /* Average pll lock time (uS) during PCIe Link Up on modem interface */
1701     optional int32 modem_pcie_pll_lock_avg = 5;
1702     /* Average time (uS) for successful PCIe Link Up on modem interface */
1703     optional int32 modem_pcie_link_up_avg = 6;
1704 
1705     /* Count of new PCIe Link Down events on the wifi interface */
1706     optional int32 wifi_pcie_linkdowns = 7;
1707     /* Count of new PCIe Completion Timeout events on the wifi interface */
1708     optional int32 wifi_pcie_completion_timeouts = 8;
1709     /* Count of new PCIe Link Up Failure events on the wifi interface */
1710     optional int32 wifi_pcie_linkup_failures = 9;
1711     /* Average pll lock time (uS) during PCIe Link Up on wifi interface */
1712     optional int32 wifi_pcie_pll_lock_avg = 10;
1713     /* Average time (uS) for successful PCIe Link Up on wifi interface */
1714     optional int32 wifi_pcie_link_up_avg = 11;
1715 
1716     /* Count of new PCIe Link Recovery Failure events on the modem interface */
1717     optional int32 modem_pcie_link_recovery_failures = 12;
1718     /* Count of new PCIe Link Recovery Failure events on the wifi interface */
1719     optional int32 wifi_pcie_link_recovery_failures = 13;
1720 }
1721 
1722 /**
1723  * Log the CDEV request stats per sensor, binded cooling device.
1724  * Logged from: hardware/google/pixel/thermal/utils/thermal_stats_helper.cpp
1725  */
1726 message VendorSensorCoolingDeviceStats {
1727  optional string reverse_domain_name = 1;
1728  // Sensor name which is making the cooling device request
1729  optional string  trigger_sensor_name = 2;
1730 
1731  // Cooling device name for which request is being made
1732  optional string  cooling_device_name = 3;
1733 
1734  // Time duration for which stats are recorded
1735  optional int64 since_last_update_ms = 4;
1736 
1737  // Sequence of values corresponding to time spent in each request state
1738  optional int64 time_in_state_ms_bucket_1 = 5;
1739  optional int64 time_in_state_ms_bucket_2 = 6;
1740  optional int64 time_in_state_ms_bucket_3 = 7;
1741  optional int64 time_in_state_ms_bucket_4 = 8;
1742  optional int64 time_in_state_ms_bucket_5 = 9;
1743  optional int64 time_in_state_ms_bucket_6 = 10;
1744  optional int64 time_in_state_ms_bucket_7 = 11;
1745  optional int64 time_in_state_ms_bucket_8 = 12;
1746  optional int64 time_in_state_ms_bucket_9 = 13;
1747  optional int64 time_in_state_ms_bucket_10 = 14;
1748  optional int64 time_in_state_ms_bucket_11 = 15;
1749  optional int64 time_in_state_ms_bucket_12 = 16;
1750  optional int64 time_in_state_ms_bucket_13 = 17;
1751  optional int64 time_in_state_ms_bucket_14 = 18;
1752  optional int64 time_in_state_ms_bucket_15 = 19;
1753  optional int64 time_in_state_ms_bucket_16 = 20;
1754  optional int64 time_in_state_ms_bucket_17 = 21;
1755  optional int64 time_in_state_ms_bucket_18 = 22;
1756  optional int64 time_in_state_ms_bucket_19 = 23;
1757  optional int64 time_in_state_ms_bucket_20 = 24;
1758 }
1759 
1760 /* Log playcount of effects in Vibrator HAL
1761  *
1762  * Logged from:
1763  *     hardware/google/pixel/vibrator/
1764  */
1765 message VibratorPlaycountReported {
1766   // Vendor reverse domain name (expecting "com.google.pixel").
1767   optional string reverse_domain_name = 1;
1768 
1769   // Playcount for each primitive
1770   // Each index tracks the count for that index in the waveform
1771   repeated int32 waveform_counts = 2;
1772 
1773   // Playcount for each 50ms range.
1774   // Each index tracks [50ms * i, 50ms * (i + 1))
1775   repeated int32 duration_counts = 3;
1776 }
1777 
1778 /* Log latency encountered in Vibrator HAL
1779  *
1780  * Logged from:
1781  *     hardware/google/pixel/vibrator/
1782  */
1783 message VibratorLatencyReported {
1784   // Vendor reverse domain name (expecting "com.google.pixel").
1785   optional string reverse_domain_name = 1;
1786 
1787   // Minimum latency seen
1788   // 0 Prebaked and primitives
1789   // 1 Composed effects
1790   // 2 PWLE effects
1791   repeated int32 min_latencies = 2;
1792 
1793   // Maximum latency seen
1794   // 0 Prebaked and primitives
1795   // 1 Composed effects
1796   // 2 PWLE effects
1797   repeated int32 max_latencies = 3;
1798 
1799   // Average latency seen
1800   // 0 Prebaked and primitives
1801   // 1 Composed effects
1802   // 2 PWLE effects
1803   repeated int32 avg_latencies = 4;
1804 }
1805 
1806 /* Log errors encountered in Vibrator HAL
1807  *
1808  * Logged from:
1809  *     hardware/google/pixel/vibrator/
1810  */
1811 message VibratorErrorsReported {
1812   // Vendor reverse domain name (expecting "com.google.pixel").
1813   optional string reverse_domain_name = 1;
1814 
1815   // Count for each error
1816   // 0 HwAPI Error
1817   // 1 HwCAL Error
1818   // 2 Compose Fail Error
1819   // 3 ALSA Fail Error
1820   // 4 Async Fail Error
1821   // 5 Bad Timeout Error
1822   // 6 Bad Amplitude Error
1823   // 7 Bad Effect Error
1824   // 8 Bad Effect Strength Error
1825   // 9 Bad Primitive Error
1826   // 10 Bad Composite Error
1827   // 11 PWLE Construction Fail Error
1828   // 12 Unsupported Method Error
1829   repeated int32 error_counts = 2;
1830 }
1831 
1832 /* A message containing F2FS Atomic Write information */
1833 message F2fsAtomicWriteInfo {
1834     /* Vendor reverse domain name (expecting "com.google.pixel"). */
1835     optional string reverse_domain_name = 1;
1836     /* Show the peak value of total current atomic write block count after boot */
1837     optional int32 peak_atomic_write = 2;
1838     /* Show the accumulated total committed atomic write block count after boot */
1839     optional int32 committed_atomic_block = 3;
1840     /* Show the accumulated total revoked atomic write block count after boot */
1841     optional int32 revoked_atomic_block = 4;
1842 }
1843 
1844 /* A message containing Partition Used Spaced information */
1845 message PartitionsUsedSpaceReported {
1846     enum Directory {
1847         UNKNOWN = 0;
1848         PERSIST = 1;
1849     }
1850     /* Vendor reverse domain name (expecting "com.google.pixel"). */
1851     optional string reverse_domain_name = 1;
1852 
1853     /* used space of directory information */
1854     optional Directory directory = 2;
1855     optional int64 free_bytes = 3;
1856     optional int64 total_bytes = 4;
1857 }
1858 
1859 message GpuEvent {
1860     enum GpuEventType {
1861       MALI_TYPE_NONE = 0;
1862       MALI_KMD_ERROR = 1;
1863       MALI_GPU_RESET = 2;
1864     }
1865     enum GpuEventInfo {
1866       MALI_INFO_NONE = 0;
1867       MALI_CSG_REQ_STATUS_UPDATE = 1;
1868       MALI_CSG_SUSPEND = 2;
1869       MALI_CSG_SLOTS_SUSPEND = 3;
1870       MALI_CSG_GROUP_SUSPEND = 4;
1871       MALI_CSG_EP_CFG = 5;
1872       MALI_CSG_SLOTS_START = 6;
1873       MALI_GROUP_TERM = 7;
1874       MALI_QUEUE_START = 8;
1875       MALI_QUEUE_STOP = 9;
1876       MALI_QUEUE_STOP_ACK = 10;
1877       MALI_CSG_SLOT_READY = 11;
1878       MALI_L2_PM_TIMEOUT = 12;
1879       MALI_PM_TIMEOUT = 13;
1880       MALI_CSF_RESET_OK = 14;
1881       MALI_CSF_RESET_FAILED = 15;
1882       MALI_TILER_OOM = 16;
1883       MALI_PROGRESS_TIMER = 17;
1884       MALI_CS_ERROR = 18;
1885       MALI_FW_ERROR = 19;
1886       MALI_PMODE_EXIT_TIMEOUT = 20;
1887       MALI_PMODE_ENTRY_FAILURE = 21;
1888       MALI_GPU_PAGE_FAULT = 22;
1889       MALI_MMU_AS_ACTIVE_STUCK = 23;
1890     }
1891 
1892     /* Vendor reverse domain name (expecting "com.google.pixel"). */
1893     optional string reverse_domain_name = 1;
1894     /*
1895      * Type of the GPU event. Possible values depend on the platform GPU.
1896      * Eg, MALI_KMD_ERROR, MALI_GPU_RESET.
1897      */
1898     optional GpuEventType gpu_event_type = 2;
1899     /*
1900      * Additional information about the GPU event. Possible values depend
1901      * on the platform GPU.
1902      * Eg, MALI_PM_TIMEOUT, MALI_CSF_RESET_OK.
1903      */
1904     optional GpuEventInfo gpu_event_info = 3;
1905 }
1906 /**
1907  * Log mitigation duration.
1908  */
1909 message PowerMitigationDurationCounts {
1910  optional string reverse_domain_name = 1;
1911  // Count of UVLO1 greater than threshold without any other concurrent IRQs.
1912  optional int32 greater_than_thresh_uvlo1_none = 2;
1913  // Count of UVLO1 IRQ + MMWAVE IRQ with duration greater than threshold.
1914  optional int32 greater_than_thresh_uvlo1_mmwave = 3;
1915  // Count of UVLO1 IRQ + RFFE IRQ with duration greater than threshold.
1916  optional int32 greater_than_thresh_uvlo1_rffe = 4;
1917  // Count of UVLO2 greater than threshold without any other concurrent IRQs.
1918  optional int32 greater_than_thresh_uvlo2_none = 5;
1919  // Count of UVLO2 IRQ + MMWAVE IRQ with duration greater than threshold.
1920  optional int32 greater_than_thresh_uvlo2_mmwave = 6;
1921  // Count of UVLO2 IRQ + RFFE IRQ with duration greater than threshold.
1922  optional int32 greater_than_thresh_uvlo2_rffe = 7;
1923  // Count of BATOILO greater than threshold without any other concurrent IRQs.
1924  optional int32 greater_than_thresh_batoilo_none = 8;
1925  // Count of BATOILO IRQ + MMWAVE IRQ with duration greater than threshold.
1926  optional int32 greater_than_thresh_batoilo_mmwave = 9;
1927  // Count of BATOILO IRQ + RFFE IRQ with duration greater than threshold.
1928  optional int32 greater_than_thresh_batoilo_rffe = 10;
1929 
1930  // IRQ duration of main regulator indices 0-11 greater than threshold.
1931  optional int32 greater_than_thresh_main_0 = 11;
1932  optional int32 greater_than_thresh_main_1 = 12;
1933  optional int32 greater_than_thresh_main_2 = 13;
1934  optional int32 greater_than_thresh_main_3 = 14;
1935  optional int32 greater_than_thresh_main_4 = 15;
1936  optional int32 greater_than_thresh_main_5 = 16;
1937  optional int32 greater_than_thresh_main_6 = 17;
1938  optional int32 greater_than_thresh_main_7 = 18;
1939  optional int32 greater_than_thresh_main_8 = 19;
1940  optional int32 greater_than_thresh_main_9 = 20;
1941  optional int32 greater_than_thresh_main_10 = 21;
1942  optional int32 greater_than_thresh_main_11 = 22;
1943 
1944  // IRQ duration of sub regulator indices 0-11 greater than threshold.
1945  optional int32 greater_than_thresh_sub_0 = 23;
1946  optional int32 greater_than_thresh_sub_1 = 24;
1947  optional int32 greater_than_thresh_sub_2 = 25;
1948  optional int32 greater_than_thresh_sub_3 = 26;
1949  optional int32 greater_than_thresh_sub_4 = 27;
1950  optional int32 greater_than_thresh_sub_5 = 28;
1951  optional int32 greater_than_thresh_sub_6 = 29;
1952  optional int32 greater_than_thresh_sub_7 = 30;
1953  optional int32 greater_than_thresh_sub_8 = 31;
1954  optional int32 greater_than_thresh_sub_9 = 32;
1955  optional int32 greater_than_thresh_sub_10 = 33;
1956  optional int32 greater_than_thresh_sub_11 = 34;
1957 }
1958 
1959 /*
1960  * Logs the third party audio effects stats.
1961  * Third party audio effects stats includes duration in milliseconds for each
1962  * instance of the effects (speaker, USB, etc.).
1963  */
1964 message VendorAudioThirdPartyEffectStatsReported {
1965     /* Vendor reverse domain name (expecting "com.google.pixel"). */
1966     optional string reverse_domain_name = 1;
1967 
1968     enum InstanceId {
1969         OTHER = 0;
1970         SPEAKER = 1;
1971         USB = 2;
1972         BT_A2DP = 3;
1973         BT_LE = 4;
1974     }
1975     /* Instance of the effect. */
1976     optional InstanceId instance = 2;
1977     /* Active duration in milliseconds per day for volume range 0. */
1978     optional int32 volume_range_0_active_ms_per_day = 3;
1979     /* Active duration in milliseconds per day for volume range 1. */
1980     optional int32 volume_range_1_active_ms_per_day = 4;
1981     /* Active duration in milliseconds per day for volume range 2. */
1982     optional int32 volume_range_2_active_ms_per_day = 5;
1983     /* Active duration in milliseconds per day for volume range 3. */
1984     optional int32 volume_range_3_active_ms_per_day = 6;
1985     /* Active duration in milliseconds per day for volume range 4. */
1986     optional int32 volume_range_4_active_ms_per_day = 7;
1987     /* Active duration in milliseconds per day for volume range 5. */
1988     optional int32 volume_range_5_active_ms_per_day = 8;
1989     /* Active duration in milliseconds per day for volume range 6. */
1990     optional int32 volume_range_6_active_ms_per_day = 9;
1991     /* Active duration in milliseconds per day for volume range 7. */
1992     optional int32 volume_range_7_active_ms_per_day = 10;
1993     /* Active duration in milliseconds per day for volume range 8. */
1994     optional int32 volume_range_8_active_ms_per_day = 11;
1995     /* Active duration in milliseconds per day for volume range 9. */
1996     optional int32 volume_range_9_active_ms_per_day = 12;
1997 }
1998 
1999 /*
2000  * Logs the Audio Adapted information stats.
2001  * Two stats are recorded, count and duration (in ms) per features.
2002  */
2003 message VendorAudioAdaptedInfoStatsReported {
2004   /* Vendor reverse domain name */
2005   optional string reverse_domain_name = 1;
2006 
2007   enum AdaptedInfoFeature {
2008     UNKNOWN = 0;
2009     BATTERY_ADAPTED_AUDIO_CONTROL = 1;
2010     MEDIA_PLAYBACK_THERMAL_THROTTLE = 2;
2011     TELEPHONY_THERMAL_THROTTLE = 3;
2012     ACOUSTIC_SHOCK = 4;
2013     SPATIAL_AUDIO = 5;
2014   };
2015   /* Feature to record the stats */
2016   optional AdaptedInfoFeature feature_id = 2;
2017   /* Number of time the feature is active */
2018   optional int32 active_counts_per_day = 3;
2019   /* Duration the feature is active in milliseconds */
2020   optional int32 active_duration_ms_per_day = 4;
2021 }
2022 
2023 /*
2024  * Logs the audio PCM usage stats.
2025  * PCM usage includes average latency and total active count per day.
2026  */
2027 message VendorAudioPcmStatsReported {
2028   /* Vendor reverse domain name */
2029   optional string reverse_domain_name = 1;
2030 
2031   enum HalPcmType {
2032     UNKNOWN = 0;
2033     DEEPBUFFER = 1;
2034     LOWLATENCY = 2;
2035     MMAP_PLAY = 3;
2036     RAW_PLAY = 4;
2037     IMMERSIVE = 5;
2038     HAPTIC = 6;
2039     COMPRESS = 7;
2040     MMAP_REC = 8;
2041     RAW_REC = 9;
2042     AUDIO_REC = 10;
2043     HIFI_RX = 11;
2044     HIFI_TX = 12;
2045     IMMUTABLE_RX = 13;
2046     CUSTOM_PCM_1 = 14;
2047     CUSTOM_PCM_2 = 15;
2048     CUSTOM_PCM_3 = 16;
2049     CUSTOM_PCM_4 = 17;
2050     CUSTOM_PCM_5 = 18;
2051   };
2052   /* Type of PCM */
2053   optional HalPcmType type = 2;
2054   /* Average latency in millisecond of the pcm type per day. */
2055   optional int32 pcm_open_latency_avg_ms_per_day = 3;
2056   /* Total active count of the pcm type per day. */
2057   optional int32 pcm_active_counts_per_day = 4;
2058 }
2059 
2060 /**
2061   * Keep track of information about a USB data session, which is defined
2062   * as the period when a port enters a data role (either host or device) to
2063   * when the port exits the data role.
2064   */
2065 message VendorUsbDataSessionEvent {
2066   /* Vendor reverse domain name (expecting "com.google.pixel") */
2067   optional string reverse_domain_name = 1;
2068 
2069   enum UsbDataRole {
2070     USB_ROLE_UNKNOWN = 0;
2071     USB_ROLE_DEVICE = 1;
2072     USB_ROLE_HOST = 2;
2073   }
2074   /**
2075     * USB device states are key milestones in a USB connection.
2076     * For device data role, a typical transition would be like:
2077     * not attached -> default -> addressed -> configured.
2078     * For host data role, a typical transition would be like
2079     * not attached -> powered -> default -> addressed -> configured.
2080     */
2081   enum UsbDeviceState {
2082     USB_STATE_UNKNOWN = 0;
2083     USB_STATE_NOT_ATTACHED = 1;
2084     USB_STATE_ATTACHED = 2;
2085     USB_STATE_POWERED = 3;
2086     USB_STATE_DEFAULT = 4;
2087     USB_STATE_ADDRESSED = 5;
2088     USB_STATE_CONFIGURED = 6;
2089     USB_STATE_SUSPENDED = 7;
2090   }
2091   /* USB data role of the data session. */
2092   optional UsbDataRole usb_role = 2;
2093   /* Usb device state transitions during the data session. */
2094   repeated UsbDeviceState usb_states = 3;
2095   /**
2096     * Elapsed time from the start of the data session when entering the
2097     * state, mapped 1-1 to the usb_states field.
2098     */
2099   repeated int64 elapsed_time_ms = 4;
2100   // Duration of the data session.
2101   optional int64 duration_ms = 5;
2102 }
2103 
2104 /*
2105  * Logs the thermal sensor abnormal event when detected.
2106  * Logged from:
2107  *    virtual sensors: hardware/google/pixel/thermal/utils/thermal_stats_helper.cpp
2108  *    thermistors & SoC: hardware/google/pixel/pixelstats/UeventListener.cpp
2109  */
2110 message ThermalSensorAbnormalityDetected {
2111   enum AbnormalityType {
2112     UNKNOWN = 0;
2113     SENSOR_STUCK = 1;
2114     EXTREME_HIGH_TEMP = 2;
2115     EXTREME_LOW_TEMP = 3;
2116     HIGH_RISING_SPEED = 4;
2117     TEMP_READ_FAIL = 5;
2118   }
2119 
2120   /* Vendor reverse domain name */
2121   optional string reverse_domain_name = 1;
2122   /* Type of Thermal Sensor Abnormality */
2123   optional AbnormalityType type = 2;
2124   /* Name of the problematic sensor */
2125   optional string sensor = 3;
2126   /* Abnormal temp reading of sensor */
2127   optional int32 temp = 4;
2128 }
2129 
2130 /**
2131  * Logs the reported vendor audio offloaded effects usage stats.
2132  */
2133 message VendorAudioOffloadedEffectStatsReported {
2134   /* Vendor reverse domain name */
2135   optional string reverse_domain_name = 1;
2136 
2137   /* UUID most significant bit */
2138   optional int64 effect_uuid_msb = 2;
2139 
2140   /* UUID least significant bit */
2141   optional int64 effect_uuid_lsb = 3;
2142 
2143   /* Active seconds per day. */
2144   optional int32 effect_active_seconds_per_day = 4;
2145 }
2146 
2147 /*
2148  * Logs the Bluetooth Audio stats.
2149  * Two stats are recorded, count and duration (in ms) per features.
2150  */
2151 message VendorAudioBtMediaStatsReported {
2152   /* Vendor reverse domain name */
2153   optional string reverse_domain_name = 1;
2154 
2155   enum Codec {
2156     UNKNOWN = 0;
2157     SBC = 1;
2158     AAC = 2;
2159     OPUS = 3;
2160     LC3 = 4;
2161   }
2162   /* Codec to record. */
2163   optional Codec bt_codec_type = 2;
2164   /* Total active seconds to record. */
2165   optional int32 active_seconds_per_day = 3;
2166 }
2167 
2168 /*
2169  * Logs the usage of APIs in Pixel Impulse.
2170  */
2171 message PixelImpulseUsageReported {
2172   /* Vendor reverse domain name */
2173   optional string reverse_domain_name = 1;
2174 
2175   /* UID of the caller package */
2176   optional int32 caller_uid = 2 [(android.os.statsd.is_uid) = true];
2177 
2178   /* UID of the callee package */
2179   optional int32 callee_uid = 3 [(android.os.statsd.is_uid) = true];
2180 
2181   enum ApiName {
2182       API_UNKNOWN = 0;
2183       /* Server side */
2184       API_SERVICE_BIND = 1;
2185       API_SERVICE_UNBIND = 2;
2186       API_REGISTER = 3;
2187       API_UNREGISTER = 4;
2188       API_CLEAR_APP_DATA = 100;
2189       /* Client side */
2190       API_SERVER_START = 1001;
2191       API_PIXEL_STATE_CHANGE = 1002;
2192       /* Internal */
2193       INTERNAL_PLATFORM_CONNECTION_CONNECT = 10001;
2194       INTERNAL_PLATFORM_CONNECTION_DISCONNECT = 10002;
2195       INTERNAL_PLATFORM_CONNECTION_CHANGE = 10003;
2196       INTERNAL_CLIENT_LISTENER_ADD = 10004;
2197       INTERNAL_CLIENT_LISTENER_REMOVE = 10005;
2198       INTERNAL_WAIT = 10006;
2199   }
2200   /* Invoked API name */
2201   optional ApiName api_name = 4;
2202 
2203   enum Tag {
2204       TAG_UNKNOWN = 0;
2205       TAG_TEMPERATURE_READ_DELAY = 1;
2206   }
2207   /* Tag for debugging purpose */
2208   optional Tag tag = 5;
2209 
2210   /* Timestamp of the usage start in epoch time */
2211   optional int64 usage_start_epoch_millis = 6;
2212 
2213   /* Timestamp of the usage start since device boot */
2214   optional int64 usage_start_uptime_millis = 7;
2215 
2216   /* Duration of the usage */
2217   optional int64 usage_duration_millis = 8;
2218 
2219   /* Whether the invocation was successful */
2220   optional bool success = 9;
2221 
2222   enum FailReason {
2223       FAIL_REASON_UNKNOWN = 0;
2224       FAIL_REASON_INVALID_ARGUMENT = 1;
2225       FAIL_REASON_UNAUTHORIZED = 2;
2226       FAIL_REASON_TIMEOUT = 3;
2227       FAIL_REASON_NOT_FOUND = 4;
2228       FAIL_REASON_INVALID_STATE = 5;
2229   }
2230   /* Fail reason (if success == false) */
2231   optional FailReason fail_reason = 10;
2232 
2233   /* Size of the arguments */
2234   optional int32 request_size = 11;
2235 
2236   /* Platform connection usage */
2237   /* Used when api_name == INTERNAL_PLATFORM_CONNECTION_CHANGE */
2238   optional int32 internal_platform_connection_count = 12;
2239 
2240   /* Client state source usage */
2241   /* Used when api_name == INTERNAL_CLIENT_LISTENER_* */
2242   optional int32 internal_client_listener_count = 13;
2243 
2244   enum StateSource {
2245       STATE_SOURCE_UNKNOWN = 0;
2246       STATE_SOURCE_UID_IMPORTANCE = 1;
2247       STATE_SOURCE_CAMERA_AVAILABILITY = 2;
2248       STATE_SOURCE_DROPBOX_BROADCAST = 3;
2249       STATE_SOURCE_TEMPERATURE = 4;
2250       STATE_SOURCE_THERMAL_STATUS = 5;
2251   }
2252   /* State source involved */
2253   /* Used when api_name == INTERNAL_PLATFORM_CONNECTION_* or
2254    * api_name == INTERNAL_CLIENT_LISTENER_* */
2255   optional StateSource state_source = 14;
2256 
2257   /* UID importance cut point */
2258   /* This is the UID importance cutpoint associated with the
2259    * OnUidImportanceListener
2260    */
2261   /* Used when state_source == STATE_SOURCE_UID_IMPORTANCE */
2262   optional android.app.Importance uid_importance_cut_point = 15;
2263 }
2264 
2265 /**
2266  * Log DisplayPort link error statistics.
2267  */
2268 message DisplayPortErrorStats {
2269   /* Vendor reverse domain name */
2270   optional string reverse_domain_name = 1;
2271 
2272   /* The error count due to link training failed. */
2273   optional int32 link_negotiation_failures = 2;
2274   /* The error count due to read EDID failed. */
2275   optional int32 edid_read_failures = 3;
2276   /* The error count due to read dpcd failed. */
2277   optional int32 dpcd_read_failures = 4;
2278   /* The error count due to EDID is invalid. */
2279   optional int32 edid_invalid_failures = 5;
2280   /* The error count due to sink count is invalid. */
2281   optional int32 sink_count_invalid_failures = 6;
2282   /* The error count due to link unstable. */
2283   optional int32 link_unstable_failures = 7;
2284 }
2285 
2286 /**
2287  * Log HDCP authentication type statistics.
2288  */
2289 message HDCPAuthTypeStats {
2290   /* Vendor reverse domain name */
2291   optional string reverse_domain_name = 1;
2292 
2293   /* The count due to hdcp2 success */
2294   optional int32 hdcp2_success_count = 2;
2295   /* The count due to hdcp2 fallback */
2296   optional int32 hdcp2_fallback_count = 3;
2297   /* The count due to hdcp2 fail */
2298   optional int32 hdcp2_fail_count = 4;
2299   /* The count due to hdcp1 success */
2300   optional int32 hdcp1_success_count = 5;
2301   /* The count due to hdcp1 fail */
2302   optional int32 hdcp1_fail_count = 6;
2303   /* The count due to hdcp0 */
2304   optional int32 hdcp0_count = 7;
2305 }
2306 
2307 /**
2308  * A message containing how DisplayPort is being used in a day.
2309  */
2310 message DisplayPortUsage {
2311   /* Vendor reverse domain name */
2312   optional string reverse_domain_name = 1;
2313 
2314   /* resolution width */
2315   optional int32 width = 2;
2316   /* resolution height */
2317   optional int32 height = 3;
2318   /* refresh rate */
2319   optional float refresh_rate = 4;
2320   /* vendor ID. */
2321   optional int32 vendor_id = 5;
2322   /* product ID. */
2323   optional int32 product_id = 6;
2324   /* indicated start/stop event of DP usage */
2325   optional bool connected = 7;
2326 }
2327 
2328 /*
2329  * A message containing max77779 fuel gauge abnormal events
2330  * Logged from:
2331  *    hardware/google/pixel/pixelstats/BatteryFGReporter.cpp
2332  */
2333 message FuelGaugeAbnormalityReported {
2334   enum Event {
2335     UNKNOWN_EVENT = 0;
2336     FULLCAPNOM_LOW = 1;  // unexpected fullcapnom learning (too low)
2337     FULLCAPNOM_HIGH = 2; // unexpected fullcapnom learning (too high)
2338     REPSOC_EDET = 3;     // empty detect false alarm
2339     REPSOC_FDET = 4;     // full detect false alarm
2340     REPSOC = 5;          // repsoc not accurate
2341     VFOCV = 6;           // vfocv estimation wrong
2342   }
2343   enum EventState {
2344     UNKNOWN_STATE = 0;
2345     UNTRIGGER = 1;
2346     TRIGGER = 2;
2347   }
2348   /* Vendor reverse domain name */
2349   optional string reverse_domain_name = 1;
2350   /* Report by which event */
2351   repeated Event event = 2;
2352   /* State was triggered or untriggered */
2353   repeated EventState event_state = 3;
2354   optional int32 duration_secs = 4;
2355   /* Record fuel gauge registers at the time of the event */
2356   optional int32 fg_register_address_1 = 5;
2357   optional int32 fg_register_data_1 = 6;
2358   optional int32 fg_register_address_2 = 7;
2359   optional int32 fg_register_data_2 = 8;
2360   optional int32 fg_register_address_3 = 9;
2361   optional int32 fg_register_data_3 = 10;
2362   optional int32 fg_register_address_4 = 11;
2363   optional int32 fg_register_data_4 = 12;
2364   optional int32 fg_register_address_5 = 13;
2365   optional int32 fg_register_data_5 = 14;
2366   optional int32 fg_register_address_6 = 15;
2367   optional int32 fg_register_data_6 = 16;
2368   optional int32 fg_register_address_7 = 17;
2369   optional int32 fg_register_data_7 = 18;
2370   optional int32 fg_register_address_8 = 19;
2371   optional int32 fg_register_data_8 = 20;
2372   optional int32 fg_register_address_9 = 21;
2373   optional int32 fg_register_data_9 = 22;
2374   optional int32 fg_register_address_10 = 23;
2375   optional int32 fg_register_data_10 = 24;
2376   optional int32 fg_register_address_11= 25;
2377   optional int32 fg_register_data_11= 26;
2378   optional int32 fg_register_address_12= 27;
2379   optional int32 fg_register_data_12 = 28;
2380   optional int32 fg_register_address_13 = 29;
2381   optional int32 fg_register_data_13 = 30;
2382   optional int32 fg_register_address_14 = 31;
2383   optional int32 fg_register_data_14 = 32;
2384   optional int32 fg_register_address_15 = 33;
2385   optional int32 fg_register_data_15 = 34;
2386   optional int32 fg_register_address_16 = 35;
2387   optional int32 fg_register_data_16 = 36;
2388 }
2389 
2390 /*
2391  *  Process memory usage by Oom groups
2392  */
2393 message MmProcessUsageByOomGroupSnapshot {
2394   enum OomGroup {
2395     OOMR_950 = 0;
2396     OOMR_900 = 1;
2397     OOMR_850 = 2;
2398     OOMR_800 = 3;
2399     OOMR_750 = 4;
2400     OOMR_700 = 5;
2401     OOMR_650 = 6;
2402     OOMR_600 = 7;
2403     OOMR_550 = 8;
2404     OOMR_500 = 9;
2405     OOMR_450 = 10;
2406     OOMR_400 = 11;
2407     OOMR_350 = 12;
2408     OOMR_300 = 13;
2409     OOMR_250 = 14;
2410     OOMR_200 = 15;
2411     OOMS_200 = 16;
2412     OOMR_150 = 17;
2413     OOMR_100 = 18;
2414     OOMR_050 = 19;
2415     OOMR_000 = 20;
2416     OOMS_000 = 21;
2417     OOMR_NEGATIVE = 22;
2418     /* reserved for future error handling */
2419     OOM_UNKNOWN = 999;
2420   }
2421   /* Vendor reverse domain name */
2422   optional string reverse_domain_name = 1;
2423   /* Unique ID per knob read */
2424   optional int32 metric_uid = 2;
2425   /*
2426    * This is the dimension: each knob read will create N atoms.
2427    * N = number of groups defined in the enumerate above.
2428    */
2429   optional OomGroup oom_group = 3;
2430   optional int64 nr_task = 4;
2431   optional int64 file_rss = 5;
2432   optional int64 anon_rss = 6;
2433   optional int64 pgtable = 7;
2434   optional int64 swap_ent = 8;
2435   optional int64 shmem_rss = 9;
2436 }
2437 
2438 /*
2439  * GCMA memory hourly snapshot
2440  */
2441 message MmGcmaSnapshot {
2442   /* Vendor reverse domain name */
2443   optional string reverse_domain_name = 1;
2444   /* cached memory */
2445   optional int64 cached = 2;
2446 }
2447 
2448 /*
2449  * GCMA memory daily statistics
2450  */
2451 message MmGcmaStats {
2452   /* Vendor reverse domain name */
2453   optional string reverse_domain_name = 1;
2454   /* statistics */
2455   optional int64 discarded = 2;
2456   optional int64 evicted = 3;
2457   optional int64 loaded = 4;
2458   optional int64 stored = 5;
2459   repeated int64 latency_histogram = 6;
2460 }
2461 
2462 /*
2463  * A message containing the USB audio capability of the connected accessories.
2464  */
2465 message VendorAudioUsbDeviceCapabilityStats {
2466   /* Vendor reverse domain name */
2467   optional string reverse_domain_name = 1;
2468 
2469   enum UsbMode {
2470     UNKNOWN_MODE = 0;
2471     ASYNC_MODE = 1;
2472     ADAPTIVE_MODE = 2;
2473     SYNC_MODE = 3;
2474   }
2475   /* USB Modes */
2476   repeated UsbMode playback_supported_modes = 2;
2477   repeated UsbMode capture_supported_modes = 3;
2478 
2479   enum UsbSpeed {
2480     OTHER_SPEED = 0;
2481     FULL_SPEED = 1;
2482     HIGH_SPEED = 2;
2483     SUPER_SPEED = 3;
2484   }
2485   /* USB Speed */
2486   optional UsbSpeed usb_speed = 4 [deprecated = true];
2487 
2488   /* Data Packets Interval in ms. Expected value is between 125 and 1000.*/
2489   repeated int32 playback_data_packet_interval = 5;
2490   repeated int32 capture_data_packet_interval = 6;
2491 
2492   /* List of supported sample rates in increasing order. */
2493   repeated int32 playback_supported_sample_rates = 7;
2494   repeated int32 capture_supported_sample_rates = 8;
2495 
2496   /* Maximum number of channels supported */
2497   optional int32 playback_supported_channel_count = 9;
2498   optional int32 capture_supported_channel_count = 10;
2499 
2500   enum PcmType {
2501     DEFAULT = 0;
2502     INT16_BIT = 1;
2503     INT32_BIT = 2;
2504     FIXED_Q824 = 3;
2505     FLOAT32_BIT = 4;
2506     INT24_BIT = 5;
2507     DSD32_BIT = 6;
2508   }
2509   /* Supported PCM Type */
2510   repeated PcmType playback_supported_pcm_types = 11;
2511   repeated PcmType capture_supported_pcm_types = 12;
2512 
2513   /* Supported endian */
2514   optional bool is_big_endian = 13;
2515 
2516   /* Is USB device support playback */
2517   optional bool is_playback = 14;
2518 
2519   /* Duration connected */
2520   optional int32 duration_second_connected = 15;
2521 };
2522 
2523 /*
2524  * A message containing battery time to full stats
2525  * Logged from:
2526  *    hardware/google/pixel/pixelstats/BatteryTTFReporter.cpp
2527  */
2528 message BatteryTimeToFullStatsReported {
2529   // Vendor reverse domain name (expecting "com.google.pixel").
2530   optional string reverse_domain_name = 1;
2531 
2532   // The charge_counter and elap of each soc
2533   optional int32 ttf_type = 2;
2534   optional int32 ttf_range = 3;
2535   optional int32 soc_0 = 4;
2536   optional int32 soc_1 = 5;
2537   optional int32 soc_2 = 6;
2538   optional int32 soc_3 = 7;
2539   optional int32 soc_4 = 8;
2540   optional int32 soc_5 = 9;
2541   optional int32 soc_6 = 10;
2542   optional int32 soc_7 = 11;
2543   optional int32 soc_8 = 12;
2544   optional int32 soc_9 = 13;
2545 }
2546 
2547 /*
2548  * A message containing Direct USB Access event.
2549  */
2550 message VendorAudioDirectUsbAccessUsageStats {
2551   /* Vendor reverse domain name */
2552   optional string reverse_domain_name = 1;
2553 
2554   optional int32 duration_second = 2;
2555 };
2556 
2557 /*
2558  * A message containing Usb Config event.
2559  */
2560 message VendorAudioUsbConfigStats {
2561   /* Vendor reverse domain name */
2562   optional string reverse_domain_name = 1;
2563 
2564   /* Is config for playback or capture */
2565   optional bool is_playback = 2;
2566 
2567   /* Is config for hifi */
2568   optional bool has_hifi = 3;
2569 
2570   /* Sample rate used */
2571   optional int32 sample_rate = 4;
2572 
2573   /* Channel used */
2574   optional int32 channel = 5;
2575 
2576   /* Pcm Type used */
2577   optional int32 pcm_type = 6;
2578 
2579   /* Duration in second */
2580   optional int32 duration_second = 7;
2581 };
2582