Merge "Proto for energy estimation breakdown"
diff --git a/Android.bp b/Android.bp
index 40002a0..f042ed4 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1887,6 +1887,7 @@
genrule {
name: "perfetto_protos_perfetto_common_cpp_gen",
srcs: [
+ "protos/perfetto/common/android_energy_consumer_descriptor.proto",
"protos/perfetto/common/android_log_constants.proto",
"protos/perfetto/common/builtin_clock.proto",
"protos/perfetto/common/commit_data_request.proto",
@@ -1907,6 +1908,7 @@
],
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_cppgen_plugin) --plugin_out=wrapper_namespace=gen:$(genDir)/external/perfetto/ $(in)",
out: [
+ "external/perfetto/protos/perfetto/common/android_energy_consumer_descriptor.gen.cc",
"external/perfetto/protos/perfetto/common/android_log_constants.gen.cc",
"external/perfetto/protos/perfetto/common/builtin_clock.gen.cc",
"external/perfetto/protos/perfetto/common/commit_data_request.gen.cc",
@@ -1927,6 +1929,7 @@
genrule {
name: "perfetto_protos_perfetto_common_cpp_gen_headers",
srcs: [
+ "protos/perfetto/common/android_energy_consumer_descriptor.proto",
"protos/perfetto/common/android_log_constants.proto",
"protos/perfetto/common/builtin_clock.proto",
"protos/perfetto/common/commit_data_request.proto",
@@ -1947,6 +1950,7 @@
],
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_cppgen_plugin) --plugin_out=wrapper_namespace=gen:$(genDir)/external/perfetto/ $(in)",
out: [
+ "external/perfetto/protos/perfetto/common/android_energy_consumer_descriptor.gen.h",
"external/perfetto/protos/perfetto/common/android_log_constants.gen.h",
"external/perfetto/protos/perfetto/common/builtin_clock.gen.h",
"external/perfetto/protos/perfetto/common/commit_data_request.gen.h",
@@ -1971,6 +1975,7 @@
genrule {
name: "perfetto_protos_perfetto_common_lite_gen",
srcs: [
+ "protos/perfetto/common/android_energy_consumer_descriptor.proto",
"protos/perfetto/common/android_log_constants.proto",
"protos/perfetto/common/builtin_clock.proto",
"protos/perfetto/common/commit_data_request.proto",
@@ -1990,6 +1995,7 @@
],
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(in)",
out: [
+ "external/perfetto/protos/perfetto/common/android_energy_consumer_descriptor.pb.cc",
"external/perfetto/protos/perfetto/common/android_log_constants.pb.cc",
"external/perfetto/protos/perfetto/common/builtin_clock.pb.cc",
"external/perfetto/protos/perfetto/common/commit_data_request.pb.cc",
@@ -2010,6 +2016,7 @@
genrule {
name: "perfetto_protos_perfetto_common_lite_gen_headers",
srcs: [
+ "protos/perfetto/common/android_energy_consumer_descriptor.proto",
"protos/perfetto/common/android_log_constants.proto",
"protos/perfetto/common/builtin_clock.proto",
"protos/perfetto/common/commit_data_request.proto",
@@ -2029,6 +2036,7 @@
],
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(in)",
out: [
+ "external/perfetto/protos/perfetto/common/android_energy_consumer_descriptor.pb.h",
"external/perfetto/protos/perfetto/common/android_log_constants.pb.h",
"external/perfetto/protos/perfetto/common/builtin_clock.pb.h",
"external/perfetto/protos/perfetto/common/commit_data_request.pb.h",
@@ -2053,6 +2061,7 @@
genrule {
name: "perfetto_protos_perfetto_common_zero_gen",
srcs: [
+ "protos/perfetto/common/android_energy_consumer_descriptor.proto",
"protos/perfetto/common/android_log_constants.proto",
"protos/perfetto/common/builtin_clock.proto",
"protos/perfetto/common/commit_data_request.proto",
@@ -2073,6 +2082,7 @@
],
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(in)",
out: [
+ "external/perfetto/protos/perfetto/common/android_energy_consumer_descriptor.pbzero.cc",
"external/perfetto/protos/perfetto/common/android_log_constants.pbzero.cc",
"external/perfetto/protos/perfetto/common/builtin_clock.pbzero.cc",
"external/perfetto/protos/perfetto/common/commit_data_request.pbzero.cc",
@@ -2093,6 +2103,7 @@
genrule {
name: "perfetto_protos_perfetto_common_zero_gen_headers",
srcs: [
+ "protos/perfetto/common/android_energy_consumer_descriptor.proto",
"protos/perfetto/common/android_log_constants.proto",
"protos/perfetto/common/builtin_clock.proto",
"protos/perfetto/common/commit_data_request.proto",
@@ -2113,6 +2124,7 @@
],
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(in)",
out: [
+ "external/perfetto/protos/perfetto/common/android_energy_consumer_descriptor.pbzero.h",
"external/perfetto/protos/perfetto/common/android_log_constants.pbzero.h",
"external/perfetto/protos/perfetto/common/builtin_clock.pbzero.h",
"external/perfetto/protos/perfetto/common/commit_data_request.pbzero.h",
@@ -2323,6 +2335,7 @@
genrule {
name: "perfetto_protos_perfetto_config_descriptor",
srcs: [
+ "protos/perfetto/common/android_energy_consumer_descriptor.proto",
"protos/perfetto/common/android_log_constants.proto",
"protos/perfetto/common/builtin_clock.proto",
"protos/perfetto/common/commit_data_request.proto",
@@ -5360,6 +5373,7 @@
genrule {
name: "perfetto_protos_perfetto_trace_power_cpp_gen",
srcs: [
+ "protos/perfetto/trace/power/android_energy_estimation_breakdown.proto",
"protos/perfetto/trace/power/battery_counters.proto",
"protos/perfetto/trace/power/power_rails.proto",
],
@@ -5369,6 +5383,7 @@
],
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_cppgen_plugin) --plugin_out=wrapper_namespace=gen:$(genDir)/external/perfetto/ $(in)",
out: [
+ "external/perfetto/protos/perfetto/trace/power/android_energy_estimation_breakdown.gen.cc",
"external/perfetto/protos/perfetto/trace/power/battery_counters.gen.cc",
"external/perfetto/protos/perfetto/trace/power/power_rails.gen.cc",
],
@@ -5378,6 +5393,7 @@
genrule {
name: "perfetto_protos_perfetto_trace_power_cpp_gen_headers",
srcs: [
+ "protos/perfetto/trace/power/android_energy_estimation_breakdown.proto",
"protos/perfetto/trace/power/battery_counters.proto",
"protos/perfetto/trace/power/power_rails.proto",
],
@@ -5387,6 +5403,7 @@
],
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_cppgen_plugin) --plugin_out=wrapper_namespace=gen:$(genDir)/external/perfetto/ $(in)",
out: [
+ "external/perfetto/protos/perfetto/trace/power/android_energy_estimation_breakdown.gen.h",
"external/perfetto/protos/perfetto/trace/power/battery_counters.gen.h",
"external/perfetto/protos/perfetto/trace/power/power_rails.gen.h",
],
@@ -5400,6 +5417,7 @@
genrule {
name: "perfetto_protos_perfetto_trace_power_lite_gen",
srcs: [
+ "protos/perfetto/trace/power/android_energy_estimation_breakdown.proto",
"protos/perfetto/trace/power/battery_counters.proto",
"protos/perfetto/trace/power/power_rails.proto",
],
@@ -5408,6 +5426,7 @@
],
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(in)",
out: [
+ "external/perfetto/protos/perfetto/trace/power/android_energy_estimation_breakdown.pb.cc",
"external/perfetto/protos/perfetto/trace/power/battery_counters.pb.cc",
"external/perfetto/protos/perfetto/trace/power/power_rails.pb.cc",
],
@@ -5417,6 +5436,7 @@
genrule {
name: "perfetto_protos_perfetto_trace_power_lite_gen_headers",
srcs: [
+ "protos/perfetto/trace/power/android_energy_estimation_breakdown.proto",
"protos/perfetto/trace/power/battery_counters.proto",
"protos/perfetto/trace/power/power_rails.proto",
],
@@ -5425,6 +5445,7 @@
],
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(in)",
out: [
+ "external/perfetto/protos/perfetto/trace/power/android_energy_estimation_breakdown.pb.h",
"external/perfetto/protos/perfetto/trace/power/battery_counters.pb.h",
"external/perfetto/protos/perfetto/trace/power/power_rails.pb.h",
],
@@ -5438,6 +5459,7 @@
genrule {
name: "perfetto_protos_perfetto_trace_power_zero_gen",
srcs: [
+ "protos/perfetto/trace/power/android_energy_estimation_breakdown.proto",
"protos/perfetto/trace/power/battery_counters.proto",
"protos/perfetto/trace/power/power_rails.proto",
],
@@ -5447,6 +5469,7 @@
],
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(in)",
out: [
+ "external/perfetto/protos/perfetto/trace/power/android_energy_estimation_breakdown.pbzero.cc",
"external/perfetto/protos/perfetto/trace/power/battery_counters.pbzero.cc",
"external/perfetto/protos/perfetto/trace/power/power_rails.pbzero.cc",
],
@@ -5456,6 +5479,7 @@
genrule {
name: "perfetto_protos_perfetto_trace_power_zero_gen_headers",
srcs: [
+ "protos/perfetto/trace/power/android_energy_estimation_breakdown.proto",
"protos/perfetto/trace/power/battery_counters.proto",
"protos/perfetto/trace/power/power_rails.proto",
],
@@ -5465,6 +5489,7 @@
],
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(in)",
out: [
+ "external/perfetto/protos/perfetto/trace/power/android_energy_estimation_breakdown.pbzero.h",
"external/perfetto/protos/perfetto/trace/power/battery_counters.pbzero.h",
"external/perfetto/protos/perfetto/trace/power/power_rails.pbzero.h",
],
diff --git a/BUILD b/BUILD
index e5d78d3..f210bbe 100644
--- a/BUILD
+++ b/BUILD
@@ -1724,6 +1724,7 @@
perfetto_proto_library(
name = "protos_perfetto_common_protos",
srcs = [
+ "protos/perfetto/common/android_energy_consumer_descriptor.proto",
"protos/perfetto/common/android_log_constants.proto",
"protos/perfetto/common/builtin_clock.proto",
"protos/perfetto/common/commit_data_request.proto",
@@ -2795,12 +2796,16 @@
perfetto_proto_library(
name = "protos_perfetto_trace_power_protos",
srcs = [
+ "protos/perfetto/trace/power/android_energy_estimation_breakdown.proto",
"protos/perfetto/trace/power/battery_counters.proto",
"protos/perfetto/trace/power/power_rails.proto",
],
visibility = [
PERFETTO_CONFIG.proto_library_visibility,
],
+ deps = [
+ ":protos_perfetto_common_protos",
+ ],
)
# GN target: //protos/perfetto/trace/power:zero
diff --git a/protos/perfetto/common/BUILD.gn b/protos/perfetto/common/BUILD.gn
index 9dfde1b..6197405 100644
--- a/protos/perfetto/common/BUILD.gn
+++ b/protos/perfetto/common/BUILD.gn
@@ -19,6 +19,7 @@
# a C++ counterpart in tracing/core (i.e. are used also for the non-IPC cases).
perfetto_proto_library("@TYPE@") {
sources = [
+ "android_energy_consumer_descriptor.proto",
"android_log_constants.proto",
"builtin_clock.proto",
"commit_data_request.proto",
diff --git a/protos/perfetto/common/android_energy_consumer_descriptor.proto b/protos/perfetto/common/android_energy_consumer_descriptor.proto
new file mode 100644
index 0000000..3e72cc0
--- /dev/null
+++ b/protos/perfetto/common/android_energy_consumer_descriptor.proto
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 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;
+
+// Energy consumer based on aidl class:
+// android.hardware.power.stats.EnergyConsumer.
+message AndroidEnergyConsumer {
+ // Unique ID of this energy consumer. Matches the ID in a
+ // AndroidEnergyEstimationBreakdown.
+ optional int32 energy_consumer_id = 1;
+
+ // For a group of energy consumers of the same logical type, sorting by
+ // ordinal gives their physical order. Ordinals must be consecutive integers
+ // starting from 0.
+ optional int32 ordinal = 2;
+
+ // Type of this energy consumer.
+ optional string type = 3;
+
+ // Unique name of this energy consumer. Vendor/device specific. Opaque to
+ // framework.
+ optional string name = 4;
+}
+
+message AndroidEnergyConsumerDescriptor {
+ repeated AndroidEnergyConsumer energy_consumers = 1;
+}
diff --git a/protos/perfetto/trace/power/BUILD.gn b/protos/perfetto/trace/power/BUILD.gn
index 5664f2d..ec595de 100644
--- a/protos/perfetto/trace/power/BUILD.gn
+++ b/protos/perfetto/trace/power/BUILD.gn
@@ -15,7 +15,9 @@
import("../../../../gn/proto_library.gni")
perfetto_proto_library("@TYPE@") {
+ deps = [ "../../common:@TYPE@" ]
sources = [
+ "android_energy_estimation_breakdown.proto",
"battery_counters.proto",
"power_rails.proto",
]
diff --git a/protos/perfetto/trace/power/android_energy_estimation_breakdown.proto b/protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
new file mode 100644
index 0000000..2ad4dd1
--- /dev/null
+++ b/protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2021 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;
+
+import "protos/perfetto/common/android_energy_consumer_descriptor.proto";
+
+// Energy data retrieve using the ODPM(On Device Power Monitor) API.
+// This proto represents the aidl class:
+// android.hardware.power.stats.EnergyConsumerResult.
+message AndroidEnergyEstimationBreakdown {
+ // The first trace packet of each session should include a energy consumer
+ // descriptor.
+ optional AndroidEnergyConsumerDescriptor energy_consumer_descriptor = 1;
+
+ // ID of the AndroidEnergyConsumer associated with this result. Matches
+ // the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
+ // should be sent at the beginning of a trace.
+ optional int32 energy_consumer_id = 2;
+
+ // Total accumulated energy since boot in microwatt-seconds (uWs)
+ optional int64 energy_uws = 3;
+
+ message EnergyUidBreakdown {
+ // Android ID/Linux UID, the accumulated energy is attributed to.
+ optional int32 uid = 1;
+
+ // Accumulated energy since boot in microwatt-seconds (uWs).
+ optional int64 energy_uws = 2;
+ }
+ // Optional attributed energy per Android ID / Linux UID for this
+ // EnergyConsumer. Sum total of attributed energy must be less than or equal
+ // to total accumulated energy.
+ repeated EnergyUidBreakdown per_uid_breakdown = 4;
+}