1 /* 2 * Copyright (C) 2016 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 package clearcut.connectivity; 20 21 option java_package = "com.android.server.wifi"; 22 option java_outer_classname = "WifiMetricsProto"; 23 24 // The information about the Wifi events. 25 message WifiLog { 26 27 // Session information that gets logged for every Wifi connection. 28 repeated ConnectionEvent connection_event = 1; 29 30 // Number of saved networks in the user profile. 31 optional int32 num_saved_networks = 2; 32 33 // Number of open networks in the saved networks. 34 optional int32 num_open_networks = 3; 35 36 // Number of personal networks. 37 optional int32 num_personal_networks = 4; 38 39 // Number of enterprise networks. 40 optional int32 num_enterprise_networks = 5; 41 42 // Does the user have location setting enabled. 43 optional bool is_location_enabled = 6; 44 45 // Does the user have scanning enabled. 46 optional bool is_scanning_always_enabled = 7; 47 48 // Number of times user toggled wifi using the settings menu. 49 optional int32 num_wifi_toggled_via_settings = 8; 50 51 // Number of times user toggled wifi using the airplane menu. 52 optional int32 num_wifi_toggled_via_airplane = 9; 53 54 // Number of networks added by the user. 55 optional int32 num_networks_added_by_user = 10; 56 57 // Number of networks added by applications. 58 optional int32 num_networks_added_by_apps = 11; 59 60 // Number scans that returned empty results. 61 optional int32 num_empty_scan_results = 12; 62 63 // Number scans that returned at least one result. 64 optional int32 num_non_empty_scan_results = 13; 65 66 // Number of scans that were one time. 67 optional int32 num_oneshot_scans = 14; 68 69 // Number of repeated background scans that were scheduled to the chip. 70 optional int32 num_background_scans = 15; 71 72 // Error codes that a scan can result in. 73 enum ScanReturnCode { 74 75 // Return Code is unknown. 76 SCAN_UNKNOWN = 0; 77 78 // Scan was successful. 79 SCAN_SUCCESS = 1; 80 81 // Scan was successfully started, but was interrupted. 82 SCAN_FAILURE_INTERRUPTED = 2; 83 84 // Scan failed to start because of invalid configuration 85 // (bad channel, etc). 86 SCAN_FAILURE_INVALID_CONFIGURATION = 3; 87 88 // Could not start a scan because wifi is disabled. 89 FAILURE_WIFI_DISABLED = 4; 90 91 } 92 93 // Mapping of error codes to the number of times that scans resulted 94 // in that error. 95 repeated ScanReturnEntry scan_return_entries = 16; 96 97 message ScanReturnEntry { 98 99 // Return code of the scan. 100 optional ScanReturnCode scan_return_code = 1; 101 102 // Number of entries that were found in the scan. 103 optional int32 scan_results_count = 2; 104 } 105 106 // State of the Wifi. 107 enum WifiState { 108 109 // State is unknown. 110 WIFI_UNKNOWN = 0; 111 112 // Wifi is disabled. 113 WIFI_DISABLED = 1; 114 115 // Wifi is enabled. 116 WIFI_DISCONNECTED = 2; 117 118 // Wifi is enabled and associated with an AP. 119 WIFI_ASSOCIATED = 3; 120 } 121 122 // Mapping of system state to the number of times that scans were requested in 123 // that state 124 repeated WifiSystemStateEntry wifi_system_state_entries = 17; 125 126 message WifiSystemStateEntry { 127 128 // Current WiFi state. 129 optional WifiState wifi_state = 1; 130 131 // Count of scans in state. 132 optional int32 wifi_state_count = 2; 133 134 // Is screen on. 135 optional bool is_screen_on = 3; 136 } 137 138 // Mapping of Error/Success codes to the number of background scans that resulted in it 139 repeated ScanReturnEntry background_scan_return_entries = 18; 140 141 // Mapping of system state to the number of times that Background scans were requested in that 142 // state 143 repeated WifiSystemStateEntry background_scan_request_state = 19; 144 145 // Total number of times the Watchdog of Last Resort triggered, resetting the wifi stack 146 optional int32 num_last_resort_watchdog_triggers = 20; 147 148 // Total number of networks over bad association threshold when watchdog triggered 149 optional int32 num_last_resort_watchdog_bad_association_networks_total = 21; 150 151 // Total number of networks over bad authentication threshold when watchdog triggered 152 optional int32 num_last_resort_watchdog_bad_authentication_networks_total = 22; 153 154 // Total number of networks over bad dhcp threshold when watchdog triggered 155 optional int32 num_last_resort_watchdog_bad_dhcp_networks_total = 23; 156 157 // Total number of networks over bad other threshold when watchdog triggered 158 optional int32 num_last_resort_watchdog_bad_other_networks_total = 24; 159 160 // Total count of networks seen when watchdog triggered 161 optional int32 num_last_resort_watchdog_available_networks_total = 25; 162 163 // Total count of triggers with atleast one bad association network 164 optional int32 num_last_resort_watchdog_triggers_with_bad_association = 26; 165 166 // Total count of triggers with atleast one bad authentication network 167 optional int32 num_last_resort_watchdog_triggers_with_bad_authentication = 27; 168 169 // Total count of triggers with atleast one bad dhcp network 170 optional int32 num_last_resort_watchdog_triggers_with_bad_dhcp = 28; 171 172 // Total count of triggers with atleast one bad other network 173 optional int32 num_last_resort_watchdog_triggers_with_bad_other = 29; 174 175 // Count of times connectivity watchdog confirmed pno is working 176 optional int32 num_connectivity_watchdog_pno_good = 30; 177 178 // Count of times connectivity watchdog found pno not working 179 optional int32 num_connectivity_watchdog_pno_bad = 31; 180 181 // Count of times connectivity watchdog confirmed background scan is working 182 optional int32 num_connectivity_watchdog_background_good = 32; 183 184 // Count of times connectivity watchdog found background scan not working 185 optional int32 num_connectivity_watchdog_background_bad = 33; 186 187 // The time duration represented by this wifi log, from start to end of capture 188 optional int32 record_duration_sec = 34; 189 } 190 191 // Information that gets logged for every WiFi connection. 192 message RouterFingerPrint { 193 194 enum RoamType { 195 196 // Type is unknown. 197 ROAM_TYPE_UNKNOWN = 0; 198 199 // No roaming - usually happens on a single band (2.4 GHz) router. 200 ROAM_TYPE_NONE = 1; 201 202 // Enterprise router. 203 ROAM_TYPE_ENTERPRISE = 2; 204 205 // DBDC => Dual Band Dual Concurrent essentially a router that 206 // supports both 2.4 GHz and 5 GHz bands. 207 ROAM_TYPE_DBDC = 3; 208 } 209 210 enum Auth { 211 212 // Auth is unknown. 213 AUTH_UNKNOWN = 0; 214 215 // No authentication. 216 AUTH_OPEN = 1; 217 218 // If the router uses a personal authentication. 219 AUTH_PERSONAL = 2; 220 221 // If the router is setup for enterprise authentication. 222 AUTH_ENTERPRISE = 3; 223 } 224 225 enum RouterTechnology { 226 227 // Router is unknown. 228 ROUTER_TECH_UNKNOWN = 0; 229 230 // Router Channel A. 231 ROUTER_TECH_A = 1; 232 233 // Router Channel B. 234 ROUTER_TECH_B = 2; 235 236 // Router Channel G. 237 ROUTER_TECH_G = 3; 238 239 // Router Channel N. 240 ROUTER_TECH_N = 4; 241 242 // Router Channel AC. 243 ROUTER_TECH_AC = 5; 244 245 // When the channel is not one of the above. 246 ROUTER_TECH_OTHER = 6; 247 } 248 249 optional RoamType roam_type = 1; 250 251 // Channel on which the connection takes place. 252 optional int32 channel_info = 2; 253 254 // DTIM setting of the router. 255 optional int32 dtim = 3; 256 257 // Authentication scheme of the router. 258 optional Auth authentication = 4; 259 260 // If the router is hidded. 261 optional bool hidden = 5; 262 263 // Channel information. 264 optional RouterTechnology router_technology = 6; 265 266 // whether ipv6 is supported. 267 optional bool supports_ipv6 = 7; 268 } 269 270 message ConnectionEvent { 271 272 // Roam Type. 273 enum RoamType { 274 275 // Type is unknown. 276 ROAM_UNKNOWN = 0; 277 278 // No roaming. 279 ROAM_NONE = 1; 280 281 // DBDC roaming. 282 ROAM_DBDC = 2; 283 284 // Enterprise roaming. 285 ROAM_ENTERPRISE = 3; 286 287 // User selected roaming. 288 ROAM_USER_SELECTED = 4; 289 290 // Unrelated. 291 ROAM_UNRELATED = 5; 292 } 293 294 // Connectivity Level Failure. 295 enum ConnectivityLevelFailure { 296 297 // Failure is unknown. 298 HLF_UNKNOWN = 0; 299 300 // No failure. 301 HLF_NONE = 1; 302 303 // DHCP failure. 304 HLF_DHCP = 2; 305 306 // No internet connection. 307 HLF_NO_INTERNET = 3; 308 309 // No internet connection. 310 HLF_UNWANTED = 4; 311 } 312 313 // Start time of the connection. 314 optional int64 start_time_millis = 1;// [(datapol.semantic_type) = ST_TIMESTAMP]; 315 316 // Duration to connect. 317 optional int32 duration_taken_to_connect_millis = 2; 318 319 // Router information. 320 optional RouterFingerPrint router_fingerprint = 3; 321 322 // RSSI at the start of the connection. 323 optional int32 signal_strength = 4; 324 325 // Roam Type. 326 optional RoamType roam_type = 5; 327 328 // Result of the connection. 329 optional int32 connection_result = 6; 330 331 // Reasons for level 2 failure (needs to be coordinated with wpa-supplicant). 332 optional int32 level_2_failure_code = 7; 333 334 // Failures that happen at the connectivity layer. 335 optional ConnectivityLevelFailure connectivity_level_failure_code = 8; 336 337 // Has bug report been taken. 338 optional bool automatic_bug_report_taken = 9; 339 } 340