blob: 53e3ba965120f79073ee9d5bdea43a6d017d09c8 [file] [log] [blame]
Kweku Adams61e03292017-10-19 14:27:12 -07001/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17syntax = "proto2";
18
19import "frameworks/base/core/proto/android/app/alarmmanager.proto";
20import "frameworks/base/core/proto/android/app/pendingintent.proto";
21import "frameworks/base/core/proto/android/internal/locallog.proto";
22import "frameworks/base/core/proto/android/os/worksource.proto";
Makoto Onuki2206af32017-11-21 16:25:35 -080023import "frameworks/base/core/proto/android/server/forceappstandbytracker.proto";
Kweku Adamsce9ab2d2018-01-25 15:49:34 -080024import "frameworks/base/libs/incident/proto/android/privacy.proto";
Kweku Adams61e03292017-10-19 14:27:12 -070025
26package com.android.server;
27
28option java_multiple_files = true;
29
Makoto Onukiadb50d82018-01-29 16:20:30 -080030// next ID: 43
Yi Jin2b30f322018-02-20 15:41:47 -080031message AlarmManagerServiceDumpProto {
Kweku Adamsce9ab2d2018-01-25 15:49:34 -080032 option (.android.msg_privacy).dest = DEST_AUTOMATIC;
33
Kweku Adams61e03292017-10-19 14:27:12 -070034 optional int64 current_time = 1;
35 optional int64 elapsed_realtime = 2;
36 optional int64 last_time_change_clock_time = 3;
37 optional int64 last_time_change_realtime = 4;
38 // Current settings
39 optional ConstantsProto settings = 5;
Makoto Onuki2206af32017-11-21 16:25:35 -080040
41 // Dump from ForceAppStandbyTracker.
42 optional ForceAppStandbyTrackerProto force_app_standby_tracker = 6;
Kweku Adams61e03292017-10-19 14:27:12 -070043
Kweku Adams923ec432017-12-11 18:05:38 -080044 optional bool is_interactive = 7;
Kweku Adams61e03292017-10-19 14:27:12 -070045 // Only valid if is_interactive is false.
Kweku Adams923ec432017-12-11 18:05:38 -080046 optional int64 time_since_non_interactive_ms = 8;
Kweku Adams61e03292017-10-19 14:27:12 -070047 // Only valid if is_interactive is false.
Kweku Adams923ec432017-12-11 18:05:38 -080048 optional int64 max_wakeup_delay_ms = 9;
Kweku Adams61e03292017-10-19 14:27:12 -070049 // Only valid if is_interactive is false.
Kweku Adams923ec432017-12-11 18:05:38 -080050 optional int64 time_since_last_dispatch_ms = 10;
Kweku Adams61e03292017-10-19 14:27:12 -070051 // Only valid if is_interactive is false.
Kweku Adams923ec432017-12-11 18:05:38 -080052 optional int64 time_until_next_non_wakeup_delivery_ms = 11;
Kweku Adams61e03292017-10-19 14:27:12 -070053
Kweku Adamsf2e67df2018-01-23 16:47:12 -080054 // Can be negative if the non-wakeup alarm time is in the past (non-wakeup
55 // alarms aren't delivered unil the next time the device wakes up).
Kweku Adams923ec432017-12-11 18:05:38 -080056 optional int64 time_until_next_non_wakeup_alarm_ms = 12;
57 optional int64 time_until_next_wakeup_ms = 13;
58 optional int64 time_since_last_wakeup_ms = 14;
Kweku Adams61e03292017-10-19 14:27:12 -070059 // Time since the last wakeup was set.
Kweku Adams923ec432017-12-11 18:05:38 -080060 optional int64 time_since_last_wakeup_set_ms = 15;
61 optional int64 time_change_event_count = 16;
Kweku Adams61e03292017-10-19 14:27:12 -070062 // The current set of user whitelisted apps for device idle mode, meaning
63 // these are allowed to freely schedule alarms. These are app IDs, not UIDs.
Kweku Adams923ec432017-12-11 18:05:38 -080064 repeated int32 device_idle_user_whitelist_app_ids = 17;
Kweku Adams61e03292017-10-19 14:27:12 -070065
Kweku Adams923ec432017-12-11 18:05:38 -080066 repeated AlarmClockMetadataProto next_alarm_clock_metadata = 18;
Kweku Adams61e03292017-10-19 14:27:12 -070067
Kweku Adams923ec432017-12-11 18:05:38 -080068 repeated BatchProto pending_alarm_batches = 19;
Kweku Adams61e03292017-10-19 14:27:12 -070069
70 // List of alarms per uid deferred due to user applied background restrictions
71 // on the source app.
Kweku Adams923ec432017-12-11 18:05:38 -080072 repeated AlarmProto pending_user_blocked_background_alarms = 20;
Kweku Adams61e03292017-10-19 14:27:12 -070073
74 // When idling mode will end. Will be empty if the device is not currently
75 // idling.
Kweku Adams923ec432017-12-11 18:05:38 -080076 optional AlarmProto pending_idle_until = 21;
Kweku Adams61e03292017-10-19 14:27:12 -070077
78 // Any alarms that we don't want to run during idle mode. Will be empty if the
79 // device is not currently idling.
Kweku Adams923ec432017-12-11 18:05:38 -080080 repeated AlarmProto pending_while_idle_alarms = 22;
Kweku Adams61e03292017-10-19 14:27:12 -070081
82 // This is a special alarm that will put the system into idle until it goes
83 // off. The caller has given the time they want this to happen at.
Kweku Adams923ec432017-12-11 18:05:38 -080084 optional AlarmProto next_wake_from_idle = 23;
Kweku Adams61e03292017-10-19 14:27:12 -070085
Kweku Adams923ec432017-12-11 18:05:38 -080086 repeated AlarmProto past_due_non_wakeup_alarms = 24;
Kweku Adams61e03292017-10-19 14:27:12 -070087
88 // Number of delayed alarms.
Kweku Adams923ec432017-12-11 18:05:38 -080089 optional int32 delayed_alarm_count = 25;
Kweku Adams61e03292017-10-19 14:27:12 -070090 // The total amount of time alarms had been delayed. Overlapping alarms are
91 // only counted once (ie. If two alarms were meant to trigger at the same time
92 // but were delayed by 5 seconds, the total time would be 5 seconds).
Kweku Adams923ec432017-12-11 18:05:38 -080093 optional int64 total_delay_time_ms = 26;
94 optional int64 max_delay_duration_ms = 27;
95 optional int64 max_non_interactive_duration_ms = 28;
Kweku Adams61e03292017-10-19 14:27:12 -070096
Kweku Adams923ec432017-12-11 18:05:38 -080097 optional int32 broadcast_ref_count = 29;
Kweku Adams61e03292017-10-19 14:27:12 -070098 // Canonical count of (operation.send() - onSendFinished()) and listener
99 // send/complete/timeout invocations.
Kweku Adams923ec432017-12-11 18:05:38 -0800100 optional int32 pending_intent_send_count = 30;
101 optional int32 pending_intent_finish_count = 31;
102 optional int32 listener_send_count = 32;
103 optional int32 listener_finish_count = 33;
Kweku Adams61e03292017-10-19 14:27:12 -0700104
Kweku Adams923ec432017-12-11 18:05:38 -0800105 repeated InFlightProto outstanding_deliveries = 34;
Kweku Adams61e03292017-10-19 14:27:12 -0700106
Kweku Adams61e03292017-10-19 14:27:12 -0700107 message LastAllowWhileIdleDispatch {
Kweku Adamsce9ab2d2018-01-25 15:49:34 -0800108 option (.android.msg_privacy).dest = DEST_AUTOMATIC;
109
Kweku Adams61e03292017-10-19 14:27:12 -0700110 optional int32 uid = 1;
111 // In the 'elapsed' timebase.
112 optional int64 time_ms = 2;
Makoto Onukiadb50d82018-01-29 16:20:30 -0800113
114 // Time when the next while-idle is allowed, in the 'elapsed' timebase.
115 optional int64 next_allowed_ms = 3;
Kweku Adams61e03292017-10-19 14:27:12 -0700116 }
Makoto Onukiadb50d82018-01-29 16:20:30 -0800117
118 // Whether the short or long while-idle timeout should be used for each UID.
Kweku Adams6f552752018-02-06 16:04:14 -0800119 repeated int32 use_allow_while_idle_short_time = 35;
Makoto Onukiadb50d82018-01-29 16:20:30 -0800120
Kweku Adams61e03292017-10-19 14:27:12 -0700121 // For each uid, this is the last time we dispatched an "allow while idle"
122 // alarm, used to determine the earliest we can dispatch the next such alarm.
Kweku Adams923ec432017-12-11 18:05:38 -0800123 repeated LastAllowWhileIdleDispatch last_allow_while_idle_dispatch_times = 36;
Kweku Adams61e03292017-10-19 14:27:12 -0700124
Kweku Adams923ec432017-12-11 18:05:38 -0800125 optional com.android.internal.util.LocalLogProto recent_problems = 37;
Kweku Adams61e03292017-10-19 14:27:12 -0700126
127 message TopAlarm {
Kweku Adamsce9ab2d2018-01-25 15:49:34 -0800128 option (.android.msg_privacy).dest = DEST_AUTOMATIC;
129
Kweku Adams61e03292017-10-19 14:27:12 -0700130 optional int32 uid = 1;
131 optional string package_name = 2;
132 optional FilterStatsProto filter = 3;
133 }
Kweku Adams923ec432017-12-11 18:05:38 -0800134 repeated TopAlarm top_alarms = 38;
Kweku Adams61e03292017-10-19 14:27:12 -0700135
136 message AlarmStat {
Kweku Adamsce9ab2d2018-01-25 15:49:34 -0800137 option (.android.msg_privacy).dest = DEST_AUTOMATIC;
138
Kweku Adams61e03292017-10-19 14:27:12 -0700139 optional BroadcastStatsProto broadcast = 1;
140 repeated FilterStatsProto filters = 2;
141 }
Kweku Adams923ec432017-12-11 18:05:38 -0800142 repeated AlarmStat alarm_stats = 39;
Kweku Adams61e03292017-10-19 14:27:12 -0700143
Kweku Adams923ec432017-12-11 18:05:38 -0800144 repeated IdleDispatchEntryProto allow_while_idle_dispatches = 40;
145 repeated WakeupEventProto recent_wakeup_history = 41;
Kweku Adams61e03292017-10-19 14:27:12 -0700146}
147
148// This is a soft wrapper for alarm clock information. It is not representative
149// of an android.app.AlarmManager.AlarmClockInfo object.
150message AlarmClockMetadataProto {
Kweku Adamsce9ab2d2018-01-25 15:49:34 -0800151 option (.android.msg_privacy).dest = DEST_AUTOMATIC;
152
Kweku Adams61e03292017-10-19 14:27:12 -0700153 optional int32 user = 1;
154 optional bool is_pending_send = 2;
155 // This value is UTC wall clock time in milliseconds, as returned by
156 // System#currentTimeMillis() for example.
157 optional int64 trigger_time_ms = 3;
158}
159
160// A com.android.server.AlarmManagerService.Alarm object.
161message AlarmProto {
Kweku Adamsce9ab2d2018-01-25 15:49:34 -0800162 option (.android.msg_privacy).dest = DEST_AUTOMATIC;
163
164 optional string tag = 1 [ (.android.privacy).dest = DEST_EXPLICIT ];
Kweku Adams61e03292017-10-19 14:27:12 -0700165 optional .android.app.AlarmManagerProto.AlarmType type = 2;
Kweku Adams923ec432017-12-11 18:05:38 -0800166 // How long until the alarm goes off, in the 'elapsed' timebase. Can be
167 // negative if 'when' is in the past.
168 optional int64 time_until_when_elapsed_ms = 3;
Kweku Adams61e03292017-10-19 14:27:12 -0700169 optional int64 window_length_ms = 4;
170 optional int64 repeat_interval_ms = 5;
171 optional int32 count = 6;
172 optional int32 flags = 7;
173 optional .android.app.AlarmClockInfoProto alarm_clock = 8;
174 optional .android.app.PendingIntentProto operation = 9;
Kweku Adamsce9ab2d2018-01-25 15:49:34 -0800175 optional string listener = 10 [ (.android.privacy).dest = DEST_EXPLICIT ];
Kweku Adams61e03292017-10-19 14:27:12 -0700176}
177
178// A com.android.server.AlarmManagerService.Batch object.
179message BatchProto {
Kweku Adamsce9ab2d2018-01-25 15:49:34 -0800180 option (.android.msg_privacy).dest = DEST_AUTOMATIC;
181
Kweku Adams61e03292017-10-19 14:27:12 -0700182 // Start time in terms of elapsed realtime.
183 optional int64 start_realtime = 1;
184 // End time in terms of elapsed realtime.
185 optional int64 end_realtime = 2;
186 optional int32 flags = 3;
187 repeated AlarmProto alarms = 4;
188}
189
190// A com.android.server.AlarmManagerService.BroadcastStats object.
191message BroadcastStatsProto {
Kweku Adamsce9ab2d2018-01-25 15:49:34 -0800192 option (.android.msg_privacy).dest = DEST_AUTOMATIC;
193
Kweku Adams61e03292017-10-19 14:27:12 -0700194 optional int32 uid = 1;
195 optional string package_name = 2;
196 // The total amount of time this broadcast was in flight.
197 optional int64 total_flight_duration_ms = 3;
198 optional int32 count = 4;
199 optional int32 wakeup_count = 5;
200 // The last time this first became active (when nesting changed from 0 to 1)
201 // in terms of elapsed realtime.
202 optional int64 start_time_realtime = 6;
203 // The broadcast is active if nesting > 0.
204 optional int32 nesting = 7;
205}
206
207// A com.android.server.AlarmManagerService.Constants object.
208message ConstantsProto {
Kweku Adamsce9ab2d2018-01-25 15:49:34 -0800209 option (.android.msg_privacy).dest = DEST_AUTOMATIC;
210
Kweku Adams61e03292017-10-19 14:27:12 -0700211 // Minimum futurity of a new alarm.
212 optional int64 min_futurity_duration_ms = 1;
213 // Minimum alarm recurrence interval.
214 optional int64 min_interval_duration_ms = 2;
215 // Direct alarm listener callback timeout.
216 optional int64 listener_timeout_duration_ms = 3;
217 // Minimum time between ALLOW_WHILE_IDLE alarms when system is not idle.
218 optional int64 allow_while_idle_short_duration_ms = 4;
219 // Minimum time between ALLOW_WHILE_IDLE alarms when system is idling.
220 optional int64 allow_while_idle_long_duration_ms = 5;
221 // BroadcastOptions.setTemporaryAppWhitelistDuration() to use for FLAG_ALLOW_WHILE_IDLE.
222 optional int64 allow_while_idle_whitelist_duration_ms = 6;
Christopher Tate22e919d2018-02-16 16:16:50 -0800223 // Maximum alarm recurrence interval.
224 optional int64 max_interval_duration_ms = 7;
Kweku Adams61e03292017-10-19 14:27:12 -0700225}
226
227// A com.android.server.AlarmManagerService.FilterStats object.
228message FilterStatsProto {
Kweku Adamsce9ab2d2018-01-25 15:49:34 -0800229 option (.android.msg_privacy).dest = DEST_AUTOMATIC;
230
231 optional string tag = 1 [ (.android.privacy).dest = DEST_EXPLICIT ];
Kweku Adams61e03292017-10-19 14:27:12 -0700232 // The last time this filter when in flight, in terms of elapsed realtime.
233 optional int64 last_flight_time_realtime = 2;
234 // The total amount of time this filter was in flight.
235 optional int64 total_flight_duration_ms = 3;
236 optional int32 count = 4;
237 optional int32 wakeup_count = 5;
238 // The last time this first became active (when nesting changed from 0 to 1)
239 // in terms of elapsed realtime.
240 optional int64 start_time_realtime = 6;
241 // The filter is active if nesting > 0.
242 optional int32 nesting = 7;
243}
244
245// A com.android.server.AlarmManagerService.IdleDispatchEntry object.
246message IdleDispatchEntryProto {
Kweku Adamsce9ab2d2018-01-25 15:49:34 -0800247 option (.android.msg_privacy).dest = DEST_AUTOMATIC;
248
Kweku Adams61e03292017-10-19 14:27:12 -0700249 optional int32 uid = 1;
250 optional string pkg = 2;
Kweku Adamsce9ab2d2018-01-25 15:49:34 -0800251 optional string tag = 3 [ (.android.privacy).dest = DEST_EXPLICIT ];
Kweku Adams61e03292017-10-19 14:27:12 -0700252 optional string op = 4;
253 // Time when this entry was created, in terms of elapsed realtime.
254 optional int64 entry_creation_realtime = 5;
255 // For a RESCHEDULED op, this is the last time we dispatched an "allow while
256 // idle" alarm for the UID. For a SET op, this is when the alarm was
257 // triggered. Times are in the 'elapsed' timebase.
258 optional int64 arg_realtime = 6;
259}
260
261// A com.android.server.AlarmManagerService.InFlight object.
262message InFlightProto {
Kweku Adamsce9ab2d2018-01-25 15:49:34 -0800263 option (.android.msg_privacy).dest = DEST_AUTOMATIC;
264
Kweku Adams61e03292017-10-19 14:27:12 -0700265 optional int32 uid = 1;
Kweku Adamsce9ab2d2018-01-25 15:49:34 -0800266 optional string tag = 2 [ (.android.privacy).dest = DEST_EXPLICIT ];
Kweku Adams61e03292017-10-19 14:27:12 -0700267 optional int64 when_elapsed_ms = 3;
268 optional .android.app.AlarmManagerProto.AlarmType alarm_type = 4;
269 optional .android.app.PendingIntentProto pending_intent = 5;
270 optional BroadcastStatsProto broadcast_stats = 6;
271 optional FilterStatsProto filter_stats = 7;
272 optional .android.os.WorkSourceProto work_source = 8;
273}
274
275// A com.android.server.AlarmManagerService.WakeupEvent object.
276message WakeupEventProto {
Kweku Adamsce9ab2d2018-01-25 15:49:34 -0800277 option (.android.msg_privacy).dest = DEST_AUTOMATIC;
278
Kweku Adams61e03292017-10-19 14:27:12 -0700279 optional int32 uid = 1;
280 optional string action = 2;
281 optional int64 when = 3;
282}