1syntax = "proto2"; 2 3package com.android.server.telecom; 4 5option java_package = "com.android.server.telecom"; 6option java_outer_classname = "TelecomLogClass"; 7 8// The information about the telecom events. 9message TelecomLog { 10 11 // Information about each call. 12 repeated CallLog call_logs = 1; 13 14 // Timing information for the logging sessions 15 repeated LogSessionTiming session_timings = 2; 16 17 // Hardware revision (EVT, DVT, PVT etc.) 18 optional string hardware_revision = 3; 19 20 // Carrier ID that the device is associated to 21 optional int32 carrier_id = 4; 22} 23 24message LogSessionTiming { 25 enum SessionEntryPoint { 26 ENTRY_POINT_UNSPECIFIED = 0; 27 ICA_ANSWER_CALL = 1; 28 ICA_REJECT_CALL = 2; 29 ICA_DISCONNECT_CALL = 3; 30 ICA_HOLD_CALL = 4; 31 ICA_UNHOLD_CALL = 5; 32 ICA_MUTE = 6; 33 ICA_SET_AUDIO_ROUTE = 7; 34 ICA_CONFERENCE = 8; 35 36 CSW_HANDLE_CREATE_CONNECTION_COMPLETE = 100; 37 CSW_SET_ACTIVE = 101; 38 CSW_SET_RINGING = 102; 39 CSW_SET_DIALING = 103; 40 CSW_SET_DISCONNECTED = 104; 41 CSW_SET_ON_HOLD = 105; 42 CSW_REMOVE_CALL = 106; 43 CSW_SET_IS_CONFERENCED = 107; 44 CSW_ADD_CONFERENCE_CALL = 108; 45 } 46 47 // The entry point into Telecom code that this session tracks. 48 optional SessionEntryPoint sessionEntryPoint = 1; 49 // The time it took for this session to finish. 50 optional int64 time_millis = 2; 51} 52 53message Event { 54 // From android.telecom.ParcelableAnalytics 55 enum EventName { 56 EVENT_NAME_UNSPECIFIED = 9999; 57 SET_SELECT_PHONE_ACCOUNT = 0; 58 SET_ACTIVE = 1; 59 SET_DISCONNECTED = 2; 60 START_CONNECTION = 3; 61 SET_DIALING = 4; 62 BIND_CS = 5; 63 CS_BOUND = 6; 64 REQUEST_ACCEPT = 7; 65 REQUEST_REJECT = 8; 66 67 SCREENING_SENT = 100; 68 SCREENING_COMPLETED = 101; 69 DIRECT_TO_VM_INITIATED = 102; 70 DIRECT_TO_VM_FINISHED = 103; 71 BLOCK_CHECK_INITIATED = 104; 72 BLOCK_CHECK_FINISHED = 105; 73 FILTERING_INITIATED = 106; 74 FILTERING_COMPLETED = 107; 75 FILTERING_TIMED_OUT = 108; 76 77 SKIP_RINGING = 200; 78 SILENCE = 201; 79 MUTE = 202; 80 UNMUTE = 203; 81 AUDIO_ROUTE_BT = 204; 82 AUDIO_ROUTE_EARPIECE = 205; 83 AUDIO_ROUTE_HEADSET = 206; 84 AUDIO_ROUTE_SPEAKER = 207; 85 86 CONFERENCE_WITH = 300; 87 SPLIT_CONFERENCE = 301; 88 SET_PARENT = 302; 89 90 REQUEST_HOLD = 400; 91 REQUEST_UNHOLD = 401; 92 REMOTELY_HELD = 402; 93 REMOTELY_UNHELD = 403; 94 SET_HOLD = 404; 95 SWAP = 405; 96 97 REQUEST_PULL = 500; 98 } 99 100 // The ID of the event. 101 optional EventName event_name = 1; 102 103 // The elapsed time since the last event, rounded to one significant digit. 104 // If the event is the first, this will be negative. 105 optional int64 time_since_last_event_millis = 2; 106} 107 108message VideoEvent { 109 // From android.telecom.ParcelableCallAnalytics 110 enum VideoEventName { 111 VIDEO_EVENT_NAME_UNSPECIFIED = 9999; 112 SEND_LOCAL_SESSION_MODIFY_REQUEST = 0; 113 SEND_LOCAL_SESSION_MODIFY_RESPONSE = 1; 114 RECEIVE_REMOTE_SESSION_MODIFY_REQUEST = 2; 115 RECEIVE_REMOTE_SESSION_MODIFY_RESPONSE = 3; 116 } 117 118 // From android.telecom.VideoProfile 119 enum VideoState { 120 // No unspecified field to define. This enum to be used only as values for a bitmask. 121 STATE_AUDIO_ONLY = 0; 122 STATE_TX_ENABLED = 1; 123 STATE_RX_ENABLED = 2; 124 STATE_BIDIRECTIONAL = 3; 125 STATE_PAUSED = 4; 126 } 127 128 // The ID of the event. 129 optional VideoEventName event_name = 1; 130 131 // The elapsed time since the last event, rounded to one significant digit. 132 // If the event is the first, this will be negative. 133 optional int64 time_since_last_event_millis = 2; 134 135 // The video state 136 optional int32 video_state = 3; 137} 138 139message EventTimingEntry { 140 enum EventTimingName { 141 EVENT_TIMING_NAME_UNSPECIFIED = 9999; 142 ACCEPT_TIMING = 0; 143 REJECT_TIMING = 1; 144 DISCONNECT_TIMING = 2; 145 HOLD_TIMING = 3; 146 UNHOLD_TIMING = 4; 147 OUTGOING_TIME_TO_DIALING_TIMING = 5; 148 BIND_CS_TIMING = 6; 149 SCREENING_COMPLETED_TIMING = 7; 150 DIRECT_TO_VM_FINISHED_TIMING = 8; 151 BLOCK_CHECK_FINISHED_TIMING = 9; 152 FILTERING_COMPLETED_TIMING = 10; 153 FILTERING_TIMED_OUT_TIMING = 11; 154 START_CONNECTION_TO_REQUEST_DISCONNECT_TIMING = 12; 155 } 156 157 // The name of the event timing. 158 optional EventTimingName timing_name = 1; 159 160 // The number of milliseconds that this event pair took. 161 optional int64 time_millis = 2; 162} 163 164message InCallServiceInfo { 165 // Keep this up-to-date with com.android.server.telecom.InCallController. 166 enum InCallServiceType { 167 IN_CALL_SERVICE_TYPE_UNSPECIFIED = 9999; 168 IN_CALL_SERVICE_TYPE_INVALID = 0; 169 IN_CALL_SERVICE_TYPE_DIALER_UI = 1; 170 IN_CALL_SERVICE_TYPE_SYSTEM_UI = 2; 171 IN_CALL_SERVICE_TYPE_CAR_MODE_UI = 3; 172 IN_CALL_SERVICE_TYPE_NON_UI = 4; 173 } 174 175 // The shortened component name of the in-call service. 176 optional string in_call_service_name = 1; 177 178 // The type of the in-call service 179 optional InCallServiceType in_call_service_type = 2; 180 181 // The number of milliseconds that the in call service remained bound between binding and 182 // disconnection. 183 optional int64 bound_duration_millis = 3; 184 185 // True if the in call service has ever crashed during a call. 186 optional bool is_null_binding = 4; 187} 188 189// Information about each call. 190message CallLog { 191 192 // Information on call-types. 193 enum CallType { 194 195 // Call type is not known. 196 CALLTYPE_UNKNOWN = 0; 197 198 // Incoming call. 199 CALLTYPE_INCOMING = 1; 200 201 // Outgoing call. 202 CALLTYPE_OUTGOING = 2; 203 } 204 205 // Termination code. 206 enum CallTerminationCode { 207 208 // Disconnected because of an unknown or unspecified reason. 209 CALL_TERMINATION_CODE_UNKNOWN = 0; 210 211 // Disconnected because there was an error, such as a problem 212 // with the network. 213 CALL_TERMINATION_CODE_ERROR = 1; 214 215 // Disconnected because of a local user-initiated action, 216 // such as hanging up. 217 CALL_TERMINATION_CODE_LOCAL = 2; 218 219 // Disconnected because of a remote user-initiated action, 220 // such as the other party hanging up. 221 CALL_TERMINATION_CODE_REMOTE = 3; 222 223 // Disconnected because it has been canceled. 224 CALL_TERMINATION_CODE_CANCELED = 4; 225 226 // Disconnected because there was no response to an incoming call. 227 CALL_TERMINATION_CODE_MISSED = 5; 228 229 // Disconnected because the user rejected an incoming call. 230 CALL_TERMINATION_CODE_REJECTED = 6; 231 232 // Disconnected because the other party was busy. 233 CALL_TERMINATION_CODE_BUSY = 7; 234 235 // Disconnected because of a restriction on placing the call, 236 // such as dialing in airplane mode. 237 CALL_TERMINATION_CODE_RESTRICTED = 8; 238 239 // Disconnected for reason not described by other disconnect codes. 240 CALL_TERMINATION_CODE_OTHER = 9; 241 242 // Disconnected because the connection manager did not support the call. 243 // The call will be tried again without a connection manager. 244 CONNECTION_MANAGER_NOT_SUPPORTED = 10; 245 } 246 247 // The source where user initiated this call. 248 enum CallSource { 249 // Call source is not specified. 250 CALL_SOURCE_UNSPECIFIED = 0; 251 252 // Dialpad at emergency dialer. 253 CALL_SOURCE_EMERGENCY_DIALPAD = 1; 254 255 // Shortcut button at emergency dialer. 256 CALL_SOURCE_EMERGENCY_SHORTCUT = 2; 257 } 258 259 // Start time of the connection. 260 // Rounded to the nearest 5 minute interval. 261 optional int64 start_time_5min = 1; 262 263 // Duration in millis. 264 optional int64 call_duration_millis = 2; 265 266 // Call type. 267 optional CallType type = 3; 268 269 // True if the call interrupted an in-progress call, whether it was the 270 // user dialing out during a call or an incoming call during another call. 271 optional bool is_additional_call = 4 [default = false]; 272 273 // True if the call was interrupted by another call. 274 optional bool is_interrupted = 5 [default = false]; 275 276 // A bitmask with bits corresponding to call technologies that were used 277 // during the call. The ones that we will record are CDMA, GSM, IMS, SIP, 278 // and third-party. 279 // See the com.android.server.telecom.Analytics.*_PHONE constants. 280 optional int32 call_technologies = 6; 281 282 // Indicates the call termination code. 283 optional CallTerminationCode call_termination_code = 7; 284 285 // A list of the package names of connection services used. 286 repeated string connection_service = 9; 287 288 // Set to true if the call was created from createCallForExistingConnection. 289 optional bool is_created_from_existing_connection = 10 [default = false]; 290 291 // Set to true if its an emergency call. 292 optional bool is_emergency_call = 11 [default = false]; 293 294 // A list of the events that occur during the call. 295 repeated Event call_events = 12; 296 297 // A map from the names of latency timings to the timings. 298 repeated EventTimingEntry call_timings = 13; 299 300 // Whether this call has ever been a video call 301 optional bool is_video_call = 14 [default = false]; 302 303 // A list of the video events during the call. 304 repeated VideoEvent video_events = 15; 305 306 // A list of the in-call services bound during the call. 307 repeated InCallServiceInfo in_call_services = 16; 308 309 // A bitmask of the properties that were set at any point during the call. 310 // Bits are defined by android.telecom.Connection.PROPERTY_* constants. 311 optional int32 connection_properties = 17; 312 313 // Call source. 314 optional CallSource call_source = 18; 315} 316