Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0142e8b5 authored by Jimmy Chen's avatar Jimmy Chen
Browse files

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
parent 035808ee
Loading
Loading
Loading
Loading
+135 −0
Original line number Diff line number Diff line
@@ -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;
}