aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simonmacm@google.com>2024-04-18 17:48:47 +0000
committerSimon MacMullen <simonmacm@google.com>2024-04-18 17:48:47 +0000
commit1071596d251d18dd4e3f3578073362244dc83f70 (patch)
treee39afe65993b5c1f45bf44e1ea5a23ddb470e89f
parent03193a44ad24c622338c62df57073ef06511fc06 (diff)
downloadperfetto-1071596d251d18dd4e3f3578073362244dc83f70.tar.gz
Proto definitions for modem custom data source.
Bug: 335603768 Change-Id: I4ab81e338f499d3974ec47a0c5b413f9eeeaab66
-rw-r--r--Android.bp24
-rw-r--r--BUILD2
-rw-r--r--protos/perfetto/config/android/BUILD.gn1
-rw-r--r--protos/perfetto/config/android/pixel_modem_config.proto41
-rw-r--r--protos/perfetto/config/data_source_config.proto6
-rw-r--r--protos/perfetto/config/perfetto_config.proto31
-rw-r--r--protos/perfetto/trace/android/BUILD.gn1
-rw-r--r--protos/perfetto/trace/android/pixel_modem_events.proto36
-rw-r--r--protos/perfetto/trace/perfetto_trace.proto57
-rw-r--r--protos/perfetto/trace/trace_packet.proto6
10 files changed, 200 insertions, 5 deletions
diff --git a/Android.bp b/Android.bp
index b7f79bc40..f8e8b65d9 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1320,6 +1320,7 @@ java_library {
"protos/perfetto/config/android/android_system_property_config.proto",
"protos/perfetto/config/android/network_trace_config.proto",
"protos/perfetto/config/android/packages_list_config.proto",
+ "protos/perfetto/config/android/pixel_modem_config.proto",
"protos/perfetto/config/android/protolog_config.proto",
"protos/perfetto/config/android/surfaceflinger_layers_config.proto",
"protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
@@ -2890,6 +2891,7 @@ filegroup {
"protos/perfetto/config/android/android_system_property_config.proto",
"protos/perfetto/config/android/network_trace_config.proto",
"protos/perfetto/config/android/packages_list_config.proto",
+ "protos/perfetto/config/android/pixel_modem_config.proto",
"protos/perfetto/config/android/protolog_config.proto",
"protos/perfetto/config/android/surfaceflinger_layers_config.proto",
"protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
@@ -2917,6 +2919,7 @@ genrule {
"external/perfetto/protos/perfetto/config/android/android_system_property_config.gen.cc",
"external/perfetto/protos/perfetto/config/android/network_trace_config.gen.cc",
"external/perfetto/protos/perfetto/config/android/packages_list_config.gen.cc",
+ "external/perfetto/protos/perfetto/config/android/pixel_modem_config.gen.cc",
"external/perfetto/protos/perfetto/config/android/protolog_config.gen.cc",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_layers_config.gen.cc",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_transactions_config.gen.cc",
@@ -2944,6 +2947,7 @@ genrule {
"external/perfetto/protos/perfetto/config/android/android_system_property_config.gen.h",
"external/perfetto/protos/perfetto/config/android/network_trace_config.gen.h",
"external/perfetto/protos/perfetto/config/android/packages_list_config.gen.h",
+ "external/perfetto/protos/perfetto/config/android/pixel_modem_config.gen.h",
"external/perfetto/protos/perfetto/config/android/protolog_config.gen.h",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_layers_config.gen.h",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_transactions_config.gen.h",
@@ -2966,6 +2970,7 @@ filegroup {
"protos/perfetto/config/android/android_system_property_config.proto",
"protos/perfetto/config/android/network_trace_config.proto",
"protos/perfetto/config/android/packages_list_config.proto",
+ "protos/perfetto/config/android/pixel_modem_config.proto",
"protos/perfetto/config/android/protolog_config.proto",
"protos/perfetto/config/android/surfaceflinger_layers_config.proto",
"protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
@@ -2992,6 +2997,7 @@ genrule {
"external/perfetto/protos/perfetto/config/android/android_system_property_config.pb.cc",
"external/perfetto/protos/perfetto/config/android/network_trace_config.pb.cc",
"external/perfetto/protos/perfetto/config/android/packages_list_config.pb.cc",
+ "external/perfetto/protos/perfetto/config/android/pixel_modem_config.pb.cc",
"external/perfetto/protos/perfetto/config/android/protolog_config.pb.cc",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_layers_config.pb.cc",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_transactions_config.pb.cc",
@@ -3018,6 +3024,7 @@ genrule {
"external/perfetto/protos/perfetto/config/android/android_system_property_config.pb.h",
"external/perfetto/protos/perfetto/config/android/network_trace_config.pb.h",
"external/perfetto/protos/perfetto/config/android/packages_list_config.pb.h",
+ "external/perfetto/protos/perfetto/config/android/pixel_modem_config.pb.h",
"external/perfetto/protos/perfetto/config/android/protolog_config.pb.h",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_layers_config.pb.h",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_transactions_config.pb.h",
@@ -3040,6 +3047,7 @@ filegroup {
"protos/perfetto/config/android/android_system_property_config.proto",
"protos/perfetto/config/android/network_trace_config.proto",
"protos/perfetto/config/android/packages_list_config.proto",
+ "protos/perfetto/config/android/pixel_modem_config.proto",
"protos/perfetto/config/android/protolog_config.proto",
"protos/perfetto/config/android/surfaceflinger_layers_config.proto",
"protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
@@ -3067,6 +3075,7 @@ genrule {
"external/perfetto/protos/perfetto/config/android/android_system_property_config.pbzero.cc",
"external/perfetto/protos/perfetto/config/android/network_trace_config.pbzero.cc",
"external/perfetto/protos/perfetto/config/android/packages_list_config.pbzero.cc",
+ "external/perfetto/protos/perfetto/config/android/pixel_modem_config.pbzero.cc",
"external/perfetto/protos/perfetto/config/android/protolog_config.pbzero.cc",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_layers_config.pbzero.cc",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_transactions_config.pbzero.cc",
@@ -3094,6 +3103,7 @@ genrule {
"external/perfetto/protos/perfetto/config/android/android_system_property_config.pbzero.h",
"external/perfetto/protos/perfetto/config/android/network_trace_config.pbzero.h",
"external/perfetto/protos/perfetto/config/android/packages_list_config.pbzero.h",
+ "external/perfetto/protos/perfetto/config/android/pixel_modem_config.pbzero.h",
"external/perfetto/protos/perfetto/config/android/protolog_config.pbzero.h",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_layers_config.pbzero.h",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_transactions_config.pbzero.h",
@@ -3227,6 +3237,7 @@ genrule {
"protos/perfetto/config/android/android_system_property_config.proto",
"protos/perfetto/config/android/network_trace_config.proto",
"protos/perfetto/config/android/packages_list_config.proto",
+ "protos/perfetto/config/android/pixel_modem_config.proto",
"protos/perfetto/config/android/protolog_config.proto",
"protos/perfetto/config/android/surfaceflinger_layers_config.proto",
"protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
@@ -5395,6 +5406,7 @@ filegroup {
"protos/perfetto/trace/android/initial_display_state.proto",
"protos/perfetto/trace/android/network_trace.proto",
"protos/perfetto/trace/android/packages_list.proto",
+ "protos/perfetto/trace/android/pixel_modem_events.proto",
"protos/perfetto/trace/android/protolog.proto",
"protos/perfetto/trace/android/shell_transition.proto",
"protos/perfetto/trace/android/surfaceflinger_common.proto",
@@ -5427,6 +5439,7 @@ genrule {
"external/perfetto/protos/perfetto/trace/android/initial_display_state.gen.cc",
"external/perfetto/protos/perfetto/trace/android/network_trace.gen.cc",
"external/perfetto/protos/perfetto/trace/android/packages_list.gen.cc",
+ "external/perfetto/protos/perfetto/trace/android/pixel_modem_events.gen.cc",
"external/perfetto/protos/perfetto/trace/android/protolog.gen.cc",
"external/perfetto/protos/perfetto/trace/android/shell_transition.gen.cc",
"external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.gen.cc",
@@ -5459,6 +5472,7 @@ genrule {
"external/perfetto/protos/perfetto/trace/android/initial_display_state.gen.h",
"external/perfetto/protos/perfetto/trace/android/network_trace.gen.h",
"external/perfetto/protos/perfetto/trace/android/packages_list.gen.h",
+ "external/perfetto/protos/perfetto/trace/android/pixel_modem_events.gen.h",
"external/perfetto/protos/perfetto/trace/android/protolog.gen.h",
"external/perfetto/protos/perfetto/trace/android/shell_transition.gen.h",
"external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.gen.h",
@@ -5486,6 +5500,7 @@ filegroup {
"protos/perfetto/trace/android/initial_display_state.proto",
"protos/perfetto/trace/android/network_trace.proto",
"protos/perfetto/trace/android/packages_list.proto",
+ "protos/perfetto/trace/android/pixel_modem_events.proto",
"protos/perfetto/trace/android/protolog.proto",
"protos/perfetto/trace/android/shell_transition.proto",
"protos/perfetto/trace/android/surfaceflinger_common.proto",
@@ -5517,6 +5532,7 @@ genrule {
"external/perfetto/protos/perfetto/trace/android/initial_display_state.pb.cc",
"external/perfetto/protos/perfetto/trace/android/network_trace.pb.cc",
"external/perfetto/protos/perfetto/trace/android/packages_list.pb.cc",
+ "external/perfetto/protos/perfetto/trace/android/pixel_modem_events.pb.cc",
"external/perfetto/protos/perfetto/trace/android/protolog.pb.cc",
"external/perfetto/protos/perfetto/trace/android/shell_transition.pb.cc",
"external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.pb.cc",
@@ -5548,6 +5564,7 @@ genrule {
"external/perfetto/protos/perfetto/trace/android/initial_display_state.pb.h",
"external/perfetto/protos/perfetto/trace/android/network_trace.pb.h",
"external/perfetto/protos/perfetto/trace/android/packages_list.pb.h",
+ "external/perfetto/protos/perfetto/trace/android/pixel_modem_events.pb.h",
"external/perfetto/protos/perfetto/trace/android/protolog.pb.h",
"external/perfetto/protos/perfetto/trace/android/shell_transition.pb.h",
"external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.pb.h",
@@ -5612,6 +5629,7 @@ filegroup {
"protos/perfetto/trace/android/initial_display_state.proto",
"protos/perfetto/trace/android/network_trace.proto",
"protos/perfetto/trace/android/packages_list.proto",
+ "protos/perfetto/trace/android/pixel_modem_events.proto",
"protos/perfetto/trace/android/protolog.proto",
"protos/perfetto/trace/android/shell_transition.proto",
"protos/perfetto/trace/android/surfaceflinger_common.proto",
@@ -5644,6 +5662,7 @@ genrule {
"external/perfetto/protos/perfetto/trace/android/initial_display_state.pbzero.cc",
"external/perfetto/protos/perfetto/trace/android/network_trace.pbzero.cc",
"external/perfetto/protos/perfetto/trace/android/packages_list.pbzero.cc",
+ "external/perfetto/protos/perfetto/trace/android/pixel_modem_events.pbzero.cc",
"external/perfetto/protos/perfetto/trace/android/protolog.pbzero.cc",
"external/perfetto/protos/perfetto/trace/android/shell_transition.pbzero.cc",
"external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.pbzero.cc",
@@ -5676,6 +5695,7 @@ genrule {
"external/perfetto/protos/perfetto/trace/android/initial_display_state.pbzero.h",
"external/perfetto/protos/perfetto/trace/android/network_trace.pbzero.h",
"external/perfetto/protos/perfetto/trace/android/packages_list.pbzero.h",
+ "external/perfetto/protos/perfetto/trace/android/pixel_modem_events.pbzero.h",
"external/perfetto/protos/perfetto/trace/android/protolog.pbzero.h",
"external/perfetto/protos/perfetto/trace/android/shell_transition.pbzero.h",
"external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.pbzero.h",
@@ -5883,6 +5903,7 @@ genrule {
"protos/perfetto/config/android/android_system_property_config.proto",
"protos/perfetto/config/android/network_trace_config.proto",
"protos/perfetto/config/android/packages_list_config.proto",
+ "protos/perfetto/config/android/pixel_modem_config.proto",
"protos/perfetto/config/android/protolog_config.proto",
"protos/perfetto/config/android/surfaceflinger_layers_config.proto",
"protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
@@ -5921,6 +5942,7 @@ genrule {
"protos/perfetto/trace/android/initial_display_state.proto",
"protos/perfetto/trace/android/network_trace.proto",
"protos/perfetto/trace/android/packages_list.proto",
+ "protos/perfetto/trace/android/pixel_modem_events.proto",
"protos/perfetto/trace/android/protolog.proto",
"protos/perfetto/trace/android/shell_transition.proto",
"protos/perfetto/trace/android/surfaceflinger_common.proto",
@@ -13786,6 +13808,7 @@ java_library {
"protos/perfetto/config/android/android_system_property_config.proto",
"protos/perfetto/config/android/network_trace_config.proto",
"protos/perfetto/config/android/packages_list_config.proto",
+ "protos/perfetto/config/android/pixel_modem_config.proto",
"protos/perfetto/config/android/protolog_config.proto",
"protos/perfetto/config/android/surfaceflinger_layers_config.proto",
"protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
@@ -13824,6 +13847,7 @@ java_library {
"protos/perfetto/trace/android/initial_display_state.proto",
"protos/perfetto/trace/android/network_trace.proto",
"protos/perfetto/trace/android/packages_list.proto",
+ "protos/perfetto/trace/android/pixel_modem_events.proto",
"protos/perfetto/trace/android/protolog.proto",
"protos/perfetto/trace/android/shell_transition.proto",
"protos/perfetto/trace/android/surfaceflinger_common.proto",
diff --git a/BUILD b/BUILD
index 2f6b52667..12fe725b0 100644
--- a/BUILD
+++ b/BUILD
@@ -3893,6 +3893,7 @@ perfetto_proto_library(
"protos/perfetto/config/android/android_system_property_config.proto",
"protos/perfetto/config/android/network_trace_config.proto",
"protos/perfetto/config/android/packages_list_config.proto",
+ "protos/perfetto/config/android/pixel_modem_config.proto",
"protos/perfetto/config/android/protolog_config.proto",
"protos/perfetto/config/android/surfaceflinger_layers_config.proto",
"protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
@@ -4604,6 +4605,7 @@ perfetto_proto_library(
"protos/perfetto/trace/android/initial_display_state.proto",
"protos/perfetto/trace/android/network_trace.proto",
"protos/perfetto/trace/android/packages_list.proto",
+ "protos/perfetto/trace/android/pixel_modem_events.proto",
"protos/perfetto/trace/android/protolog.proto",
"protos/perfetto/trace/android/shell_transition.proto",
"protos/perfetto/trace/android/surfaceflinger_common.proto",
diff --git a/protos/perfetto/config/android/BUILD.gn b/protos/perfetto/config/android/BUILD.gn
index 0af8024d7..ec4f7ce39 100644
--- a/protos/perfetto/config/android/BUILD.gn
+++ b/protos/perfetto/config/android/BUILD.gn
@@ -26,6 +26,7 @@ perfetto_proto_library("@TYPE@") {
"android_system_property_config.proto",
"network_trace_config.proto",
"packages_list_config.proto",
+ "pixel_modem_config.proto",
"protolog_config.proto",
"surfaceflinger_layers_config.proto",
"surfaceflinger_transactions_config.proto",
diff --git a/protos/perfetto/config/android/pixel_modem_config.proto b/protos/perfetto/config/android/pixel_modem_config.proto
new file mode 100644
index 000000000..d3efc5967
--- /dev/null
+++ b/protos/perfetto/config/android/pixel_modem_config.proto
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+// Data source that records events from the modem.
+message PixelModemConfig {
+ // Event group to record, as defined by the modem.
+ enum EventGroup {
+ EVENT_GROUP_UNKNOWN = 0;
+
+ // Events suitable for low bandwidth tracing only.
+ EVENT_GROUP_LOW_BANDWIDTH = 1;
+
+ // Events suitable for high and low bandwidth tracing.
+ EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH = 2;
+ }
+
+ optional EventGroup event_group = 1;
+
+ // If set, record only events with these hashes.
+ repeated int64 pigweed_hash_allow_list = 2;
+
+ // If set and allow_list is not set, deny events with these hashes.
+ repeated int64 pigweed_hash_deny_list = 3;
+}
diff --git a/protos/perfetto/config/data_source_config.proto b/protos/perfetto/config/data_source_config.proto
index e9a259444..3b8e860d9 100644
--- a/protos/perfetto/config/data_source_config.proto
+++ b/protos/perfetto/config/data_source_config.proto
@@ -26,6 +26,7 @@ import "protos/perfetto/config/android/android_system_property_config.proto";
import "protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto";
import "protos/perfetto/config/android/network_trace_config.proto";
import "protos/perfetto/config/android/packages_list_config.proto";
+import "protos/perfetto/config/android/pixel_modem_config.proto";
import "protos/perfetto/config/android/protolog_config.proto";
import "protos/perfetto/config/android/surfaceflinger_layers_config.proto";
import "protos/perfetto/config/android/surfaceflinger_transactions_config.proto";
@@ -49,7 +50,7 @@ import "protos/perfetto/config/track_event/track_event_config.proto";
import "protos/perfetto/config/system_info/system_info.proto";
// The configuration that is passed to each data source when starting tracing.
-// Next id: 129
+// Next id: 130
message DataSourceConfig {
enum SessionInitiator {
SESSION_INITIATOR_UNSPECIFIED = 0;
@@ -197,6 +198,9 @@ message DataSourceConfig {
// Data source name: android.input.inputevent
optional AndroidInputEventConfig android_input_event_config = 128 [lazy = true];
+ // Data source name: android.pixel.modem
+ optional PixelModemConfig pixel_modem_config = 129 [lazy = true];
+
// This is a fallback mechanism to send a free-form text config to the
// producer. In theory this should never be needed. All the code that
// is part of the platform (i.e. traced service) is supposed to *not* truncate
diff --git a/protos/perfetto/config/perfetto_config.proto b/protos/perfetto/config/perfetto_config.proto
index 2fd3c55ac..7777d1c8d 100644
--- a/protos/perfetto/config/perfetto_config.proto
+++ b/protos/perfetto/config/perfetto_config.proto
@@ -660,6 +660,32 @@ message PackagesListConfig {
// End of protos/perfetto/config/android/packages_list_config.proto
+// Begin of protos/perfetto/config/android/pixel_modem_config.proto
+
+// Data source that records events from the modem.
+message PixelModemConfig {
+ // Event group to record, as defined by the modem.
+ enum EventGroup {
+ EVENT_GROUP_UNKNOWN = 0;
+
+ // Events suitable for low bandwidth tracing only.
+ EVENT_GROUP_LOW_BANDWIDTH = 1;
+
+ // Events suitable for high and low bandwidth tracing.
+ EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH = 2;
+ }
+
+ optional EventGroup event_group = 1;
+
+ // If set, record only events with these hashes.
+ repeated int64 pigweed_hash_allow_list = 2;
+
+ // If set and allow_list is not set, deny events with these hashes.
+ repeated int64 pigweed_hash_deny_list = 3;
+}
+
+// End of protos/perfetto/config/android/pixel_modem_config.proto
+
// Begin of protos/perfetto/common/protolog_common.proto
enum ProtoLogLevel {
@@ -3231,7 +3257,7 @@ message TrackEventConfig {
// Begin of protos/perfetto/config/data_source_config.proto
// The configuration that is passed to each data source when starting tracing.
-// Next id: 129
+// Next id: 130
message DataSourceConfig {
enum SessionInitiator {
SESSION_INITIATOR_UNSPECIFIED = 0;
@@ -3379,6 +3405,9 @@ message DataSourceConfig {
// Data source name: android.input.inputevent
optional AndroidInputEventConfig android_input_event_config = 128 [lazy = true];
+ // Data source name: android.pixel.modem
+ optional PixelModemConfig pixel_modem_config = 129 [lazy = true];
+
// This is a fallback mechanism to send a free-form text config to the
// producer. In theory this should never be needed. All the code that
// is part of the platform (i.e. traced service) is supposed to *not* truncate
diff --git a/protos/perfetto/trace/android/BUILD.gn b/protos/perfetto/trace/android/BUILD.gn
index c88ca2897..1910078f3 100644
--- a/protos/perfetto/trace/android/BUILD.gn
+++ b/protos/perfetto/trace/android/BUILD.gn
@@ -29,6 +29,7 @@ perfetto_proto_library("@TYPE@") {
"initial_display_state.proto",
"network_trace.proto",
"packages_list.proto",
+ "pixel_modem_events.proto",
"protolog.proto",
"shell_transition.proto",
"surfaceflinger_common.proto",
diff --git a/protos/perfetto/trace/android/pixel_modem_events.proto b/protos/perfetto/trace/android/pixel_modem_events.proto
new file mode 100644
index 000000000..f01431133
--- /dev/null
+++ b/protos/perfetto/trace/android/pixel_modem_events.proto
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+message PixelModemEvents {
+ // Pigweed-format dehydrated events.
+ repeated bytes events = 1;
+
+ // Timestamps of the events, converted to CLOCK_BOOTTIME. The first
+ // timestamp is the absolute timestamp of the first event. Subsequent
+ // timestamps are deltas from the previous timestamp.
+ // The nth entry from `events` gets the nth entry here.
+ repeated uint64 event_time_nanos = 2;
+}
+
+// NB: this is not emitted in the trace but can be prepended later.
+message PixelModemTokenDatabase {
+ // Pigweed-format database to allow event rehydration.
+ optional bytes database = 1;
+}
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index f949e6992..81977bfa4 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -660,6 +660,32 @@ message PackagesListConfig {
// End of protos/perfetto/config/android/packages_list_config.proto
+// Begin of protos/perfetto/config/android/pixel_modem_config.proto
+
+// Data source that records events from the modem.
+message PixelModemConfig {
+ // Event group to record, as defined by the modem.
+ enum EventGroup {
+ EVENT_GROUP_UNKNOWN = 0;
+
+ // Events suitable for low bandwidth tracing only.
+ EVENT_GROUP_LOW_BANDWIDTH = 1;
+
+ // Events suitable for high and low bandwidth tracing.
+ EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH = 2;
+ }
+
+ optional EventGroup event_group = 1;
+
+ // If set, record only events with these hashes.
+ repeated int64 pigweed_hash_allow_list = 2;
+
+ // If set and allow_list is not set, deny events with these hashes.
+ repeated int64 pigweed_hash_deny_list = 3;
+}
+
+// End of protos/perfetto/config/android/pixel_modem_config.proto
+
// Begin of protos/perfetto/common/protolog_common.proto
enum ProtoLogLevel {
@@ -3231,7 +3257,7 @@ message TrackEventConfig {
// Begin of protos/perfetto/config/data_source_config.proto
// The configuration that is passed to each data source when starting tracing.
-// Next id: 129
+// Next id: 130
message DataSourceConfig {
enum SessionInitiator {
SESSION_INITIATOR_UNSPECIFIED = 0;
@@ -3379,6 +3405,9 @@ message DataSourceConfig {
// Data source name: android.input.inputevent
optional AndroidInputEventConfig android_input_event_config = 128 [lazy = true];
+ // Data source name: android.pixel.modem
+ optional PixelModemConfig pixel_modem_config = 129 [lazy = true];
+
// This is a fallback mechanism to send a free-form text config to the
// producer. In theory this should never be needed. All the code that
// is part of the platform (i.e. traced service) is supposed to *not* truncate
@@ -4996,6 +5025,27 @@ message PackagesList {
// End of protos/perfetto/trace/android/packages_list.proto
+// Begin of protos/perfetto/trace/android/pixel_modem_events.proto
+
+message PixelModemEvents {
+ // Pigweed-format dehydrated events.
+ repeated bytes events = 1;
+
+ // Timestamps of the events, converted to CLOCK_BOOTTIME. The first
+ // timestamp is the absolute timestamp of the first event. Subsequent
+ // timestamps are deltas from the previous timestamp.
+ // The nth entry from `events` gets the nth entry here.
+ repeated uint64 event_time_nanos = 2;
+}
+
+// NB: this is not emitted in the trace but can be prepended later.
+message PixelModemTokenDatabase {
+ // Pigweed-format database to allow event rehydration.
+ optional bytes database = 1;
+}
+
+// End of protos/perfetto/trace/android/pixel_modem_events.proto
+
// Begin of protos/perfetto/trace/android/protolog.proto
/* represents a single log entry */
@@ -14721,7 +14771,7 @@ message UiState {
// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
//
// Next reserved id: 14 (up to 15).
-// Next id: 109.
+// Next id: 112.
message TracePacket {
// The timestamp of the TracePacket.
// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
@@ -14861,6 +14911,9 @@ message TracePacket {
// Clock synchronization with remote machines.
RemoteClockSync remote_clock_sync = 107;
+ PixelModemEvents pixel_modem_events = 110;
+ PixelModemTokenDatabase pixel_modem_token_database = 111;
+
// This field is only used for testing.
// In previous versions of this proto this field had the id 268435455
// This caused many problems:
diff --git a/protos/perfetto/trace/trace_packet.proto b/protos/perfetto/trace/trace_packet.proto
index 93fb7d3e9..62d7e6fc2 100644
--- a/protos/perfetto/trace/trace_packet.proto
+++ b/protos/perfetto/trace/trace_packet.proto
@@ -30,6 +30,7 @@ import "protos/perfetto/trace/android/graphics_frame_event.proto";
import "protos/perfetto/trace/android/initial_display_state.proto";
import "protos/perfetto/trace/android/network_trace.proto";
import "protos/perfetto/trace/android/packages_list.proto";
+import "protos/perfetto/trace/android/pixel_modem_events.proto";
import "protos/perfetto/trace/android/protolog.proto";
import "protos/perfetto/trace/android/shell_transition.proto";
import "protos/perfetto/trace/android/surfaceflinger_layers.proto";
@@ -103,7 +104,7 @@ package perfetto.protos;
// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
//
// Next reserved id: 14 (up to 15).
-// Next id: 109.
+// Next id: 112.
message TracePacket {
// The timestamp of the TracePacket.
// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
@@ -243,6 +244,9 @@ message TracePacket {
// Clock synchronization with remote machines.
RemoteClockSync remote_clock_sync = 107;
+ PixelModemEvents pixel_modem_events = 110;
+ PixelModemTokenDatabase pixel_modem_token_database = 111;
+
// This field is only used for testing.
// In previous versions of this proto this field had the id 268435455
// This caused many problems: