blob: d351c56664d0c11af883ad350ac59b33cfe562e6 [file] [log] [blame]
//
// 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;
}