From 0142e8b5745541fc457c7bb8dac1255d1f510e4e Mon Sep 17 00:00:00 2001 From: Jimmy Chen Date: Fri, 23 Nov 2018 16:25:57 +0800 Subject: p2p: add proto for P2P metrics Add P2P metrics listed below: * general information * the number of scanning * saved persistent groups * p2p connection * connection type: fresh/reinvoke/local * connecting time * failure reason * p2p group * channel used * group role * connected clients * session duration * idle duration Bug: 119998319 Test: collect bugreport to check metrics Test: Unit Test - atest frameworks/opt/net/wifi/tests/wifitests Change-Id: I921398fae5a77b7ce7f72e555b423972ef2fcef3 --- proto/src/wifi.proto | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) diff --git a/proto/src/wifi.proto b/proto/src/wifi.proto index 79b63bc55102..cdec95cf1135 100644 --- a/proto/src/wifi.proto +++ b/proto/src/wifi.proto @@ -491,6 +491,9 @@ message WifiLog { // List of PNO scan stats, one element for each mobility state repeated DeviceMobilityStatePnoScanStats mobility_state_pno_stats_list = 128; + + // Wifi p2p statistics + optional WifiP2pStats wifi_p2p_stats = 129; } // Information that gets logged for every WiFi connection. @@ -1849,3 +1852,135 @@ message DeviceMobilityStatePnoScanStats { // the total duration elapsed while in this mobility state with PNO scans running, in ms optional int64 pno_duration_ms = 4; } + +// The information about the Wifi P2p events. +message WifiP2pStats { + + // Group event list tracking sessions and client counts in tethered mode. + repeated GroupEvent group_event = 1; + + // Session information that gets logged for every Wifi P2p connection. + repeated P2pConnectionEvent connection_event = 2; + + // Number of persistent group in the user profile. + optional int32 num_persistent_group = 3; + + // Number of peer scan. + optional int32 num_total_peer_scans = 4; + + // Number of service scan. + optional int32 num_total_service_scans = 5; +} + +message P2pConnectionEvent { + + enum ConnectionType { + + // fresh new connection. + CONNECTION_FRESH = 0; + + // reinvoke a group. + CONNECTION_REINVOKE = 1; + + // create a group with the current device as the group owner locally. + CONNECTION_LOCAL = 2; + + // create a group or join a group with config. + CONNECTION_FAST = 3; + } + + enum ConnectivityLevelFailure { + + // Failure is unknown. + CLF_UNKNOWN = 0; + + // No failure. + CLF_NONE = 1; + + // Timeout for current connecting request. + CLF_TIMEOUT = 2; + + // The connecting request is canceled by the user. + CLF_CANCEL = 3; + + // Provision discovery failure, e.g. no pin code, timeout, rejected by the peer. + CLF_PROV_DISC_FAIL = 4; + + // Invitation failure, e.g. rejected by the peer. + CLF_INVITATION_FAIL = 5; + + // Incoming request is rejected by the user. + CLF_USER_REJECT = 6; + + // New connection request is issued before ending previous connecting request. + CLF_NEW_CONNECTION_ATTEMPT = 7; + } + + // WPS method. + enum WpsMethod { + // WPS is skipped for Group Reinvoke. + WPS_NA = -1; + + // Push button configuration. + WPS_PBC = 0; + + // Display pin method configuration - pin is generated and displayed on device. + WPS_DISPLAY = 1; + + // Keypad pin method configuration - pin is entered on device. + WPS_KEYPAD = 2; + + // Label pin method configuration - pin is labelled on device. + WPS_LABEL = 3; + } + + // Start time of the connection. + optional int64 start_time_millis = 1; + + // Type of the connection. + optional ConnectionType connection_type = 2; + + // WPS method. + optional WpsMethod wps_method = 3 [default = WPS_NA]; + + // Duration to connect. + optional int32 duration_taken_to_connect_millis = 4; + + // Failures that happen at the connectivity layer. + optional ConnectivityLevelFailure connectivity_level_failure_code = 5; +} + +// GroupEvent tracking group information from GroupStarted to GroupRemoved. +message GroupEvent { + + enum GroupRole { + + GROUP_OWNER = 0; + + GROUP_CLIENT = 1; + } + + // The ID of network in supplicant for this group. + optional int32 net_id = 1; + + // Start time of the group. + optional int64 start_time_millis = 2; + + // Channel frequency used for Group. + optional int32 channel_frequency = 3; + + // Is group owner or group client. + optional GroupRole group_role = 5; + + // Number of connected clients. + optional int32 num_connected_clients = 6; + + // Cumulative number of connected clients. + optional int32 num_cumulative_clients = 7; + + // The session duration. + optional int32 session_duration_millis = 8; + + // The idle duration. A group without any client is in idle. + optional int32 idle_duration_millis = 9; +} -- cgit v1.2.3-59-g8ed1b