| // |
| // Copyright (C) 2018 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 com_android_server_wifi; |
| |
| option java_package = "com.android.server.wifi.proto"; |
| option java_outer_classname = "WifiScoreCardProto"; |
| |
| message NetworkList { |
| optional int64 start_time_millis = 1; // Start of collection period |
| optional int64 end_time_millis = 2; // End of collection period |
| // A collection of network descriptions |
| repeated Network networks = 3; |
| }; |
| |
| // Describes a network, consisting of a collection of access points that share |
| // the same SSID, the same security type, and (hopefully) the same L3 subnet. |
| // This message is not stored in the MemoryStore. It is used to package |
| // the access points of a network together in dumpsys output or similar. |
| // For this purpose, the network_config_id and network_agent_id may be useful |
| // for cross-referencing with other parts of the bug report. Neither of these |
| // are meaningful across reboots. |
| message Network { |
| optional string ssid = 1; // The SSID (not stored) |
| optional SecurityType security_type = 2; // Wireless security type |
| repeated AccessPoint access_points = 3; // The list of related APs |
| optional int32 network_config_id = 4; // The networkId of WifiConfiguration |
| optional int32 network_agent_id = 5; // Latest NetworkAgent netId |
| optional NetworkStats network_stats = 6; // Network stats of current SSID |
| }; |
| |
| // Describes an access point (single BSSID) |
| // |
| // Beyond the BSSID, a concise id is assigned to track references |
| // among APs. These ids are local to the device, but unique among all APs |
| // known to the device. The BSSID itself is not stored in persistent storage. |
| message AccessPoint { |
| optional int32 id = 1; // Concise id |
| optional bytes bssid = 2; // BSSID of the access point (not stored) |
| optional SecurityType security_type = 6; // Wireless security type |
| reserved 3; |
| repeated Signal event_stats = 4; // Statistics taken at specific events |
| reserved 5; |
| }; |
| |
| // Describes the IEEE 802.11 security type |
| enum SecurityType { |
| OPEN = 0; // Open - no encryption |
| WEP = 1; // Should not be used |
| PSK = 2; // WPA2 |
| EAP = 3; // Extensible Authentication Protocol |
| SAE = 4; // WPA3 |
| EAP_SUITE_B = 5; |
| OWE = 6; // Opportunistic Wireless Encryption |
| }; |
| |
| // Records statistics gathered at various points in the life-cycle of |
| // a connection, e.g., at disconnections of various flavors. May be |
| // further split out by frequency. |
| // |
| message Signal { |
| optional Event event = 1; // Type of the event |
| optional int32 frequency = 2; // Frequency (MHz) |
| optional UnivariateStatistic rssi = 3; // Signal strength (dBm) of beacons |
| optional UnivariateStatistic linkspeed = 4; // Link speed (Mbits/sec) |
| optional UnivariateStatistic elapsed_ms = 5; // Milliseconds since connection attempt |
| }; |
| |
| // Statistics about a real value |
| message UnivariateStatistic { |
| // Short-term statistics (for current collection period) |
| optional int64 count = 1; // Number of events |
| optional double sum = 2; // Sum of values |
| optional double sum_of_squares = 3; // Sum of squares of values |
| optional double min_value = 4; // Minimum value during period |
| optional double max_value = 5; // Maximum value during period |
| |
| // Long-term statistics |
| // These are accumulated over a longer time span, and are aged so that |
| // more recent measurements get a higher weight. |
| optional double historical_mean = 6; // Long-term average |
| optional double historical_variance = 7; // Long-term variance |
| |
| // Arranged by increasing value |
| repeated HistogramBucket buckets = 8; |
| }; |
| |
| message HistogramBucket { |
| // Lower bound (inclusive) for values falling in this bucket. |
| // Compact signed encoding used here, because rssi values are negative. |
| // The upper bound is not stored explicitly. |
| optional sint64 low = 1; |
| // Number of occurences for this value or bucket. |
| optional int64 number = 2; |
| } |
| |
| // Events where statistics may be collected |
| enum Event { |
| SIGNAL_POLL = 1; |
| SCAN_BEFORE_SUCCESSFUL_CONNECTION = 2; |
| FIRST_POLL_AFTER_CONNECTION = 3; |
| IP_CONFIGURATION_SUCCESS = 4; |
| SCAN_BEFORE_FAILED_CONNECTION = 5; |
| CONNECTION_FAILURE = 6; |
| IP_REACHABILITY_LOST = 7; |
| LAST_POLL_BEFORE_ROAM = 8; |
| ROAM_SUCCESS = 9; |
| WIFI_DISABLED = 10; |
| ROAM_FAILURE = 11; |
| LAST_POLL_BEFORE_SWITCH = 12; |
| VALIDATION_SUCCESS = 13; |
| DISCONNECTION = 14; |
| CONNECTION_ATTEMPT = 15; |
| VALIDATION_FAILURE = 16; |
| }; |
| |
| message SystemInfoStats { |
| // Current software build information |
| optional SoftwareBuildInfo curr_software_build_info = 1; |
| // Previous software build information |
| optional SoftwareBuildInfo prev_software_build_info = 2; |
| // Most recent WiFi scan time |
| optional int64 last_scan_time_ms = 3; |
| // Number of access points found in most recent WiFi scan at 2G |
| optional int32 num_bssid_last_scan_2g = 4; |
| // Number of access points found in most recent WiFi scan above 2G |
| optional int32 num_bssid_last_scan_above_2g = 5; |
| } |
| |
| message SoftwareBuildInfo { |
| // Android OS build version |
| optional string os_build_version = 1; |
| // WiFi stack APK version, 0 means not available. |
| optional int64 wifi_stack_version = 2; |
| // WiFi driver version |
| optional string wifi_driver_version = 3; |
| // WiFi firmware version |
| optional string wifi_firmware_version = 4; |
| } |
| |
| message NetworkStats { |
| optional int32 id = 1; // Concise id |
| // The most recent connection stats with current SW build that may be collected over days |
| optional ConnectionStats recent_stats = 2; |
| // Accumulated connection stats with current SW build |
| optional ConnectionStats stats_curr_build = 3; |
| // Accumulated connection stats with previous SW build |
| optional ConnectionStats stats_prev_build = 4; |
| // List of frequencies observed for this network from scan results, sorted by most recent first. |
| repeated int32 frequencies = 5; |
| |
| }; |
| |
| message ConnectionStats { |
| // Number of connection attempts at high RSSI |
| optional int32 num_connection_attempt = 1; |
| // Number of connection failures at high RSSI |
| // Does not include wrong password but does include DHCP |
| optional int32 num_connection_failure = 2; |
| // Total connection duration in seconds |
| optional int32 connection_duration_sec = 3; |
| // Number of association rejections at high RSSI |
| optional int32 num_association_rejection = 4; |
| // Number of association timeouts at high RSSI |
| optional int32 num_association_timeout = 5; |
| // Number of authentication failures (excluding wrong password) at high RSSI |
| optional int32 num_authentication_failure = 6; |
| // Number of short connections caused by nonlocal disconnection at high RSSI |
| // or at high Tx speed with a recent RSSI poll |
| optional int32 num_short_connection_nonlocal = 7; |
| // Number of non-locally generated disconnections at high RSSI or Tx speed |
| // with a recent RSSI poll |
| optional int32 num_disconnection_nonlocal = 8; |
| // Number of disconnections with a recent RSSI poll |
| optional int32 num_disconnection = 9; |
| } |