// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

option java_outer_classname = "CastLogsProtos";
option java_package = "org.chromium.components.metrics";

package metrics;  // Cast-enabled device specific log data included in ChromeUserMetricsExtension.

// Next tag: 7
message CastLogsProto {
  // Cast specific device information.
  // Next tag: 7
  message CastDeviceInfo {
    // The product type of Cast device sent from Cast-enabled devices.
    // Next tag: 9
    enum CastProductType {
      CAST_PRODUCT_TYPE_UNKNOWN = 0;
      CAST_PRODUCT_TYPE_CHROMECAST = 1;
      CAST_PRODUCT_TYPE_TV = 2;
      CAST_PRODUCT_TYPE_AUDIO = 3;
      CAST_PRODUCT_TYPE_ANDROID_TV = 4;
      CAST_PRODUCT_TYPE_ASSISTANT = 5;
      CAST_PRODUCT_TYPE_ANDROID_THINGS = 6;
      CAST_PRODUCT_TYPE_CHROME_OS = 7;
      CAST_PRODUCT_TYPE_FUCHSIA_OS = 8;
    }
    optional CastProductType type = 1;

    // The hardware revision of each product.
    optional string hardware_revision = 2;

    // The manufacturer of Cast device, this value is empty when the device
    // is manufactured by Google.
    optional string manufacturer = 3;

    // The model of the Cast device.
    optional string model = 4;

    // The serial number.
    optional string serial_number = 5;

    // Hardware information stored in factory partition.
    // Next Tag: 12
    message HardwareInfo {
      optional string color = 1;

      optional string mic = 2;

      optional string memory = 3;

      optional string nand = 4;

      optional string mfg_date = 5;

      optional string build_name = 6;

      optional string config = 7;

      optional string emmc = 8;

      optional string display = 9;

      optional string amp = 10;

      optional string board_name = 11;
    }
    optional HardwareInfo hardware_info = 6;
  }
  // The device sends this information at least once per day.
  optional CastDeviceInfo cast_device_info = 1;

  // Information about Cast V2 API connection between sender application and
  // Cast-enabled device.
  // Next tag: 4
  message CastConnectionInfo {
    optional fixed32 transport_connection_id = 1;

    optional fixed32 virtual_connection_id = 2;

    // This message describes a detail sender device and sdk.
    // Next tag: 10
    message SenderInfo {
      // The identifier for the sender device, that is pseudonymous and can be
      // reset.  This id has no link to a specific user or device.
      optional fixed64 sender_device_id = 1;

      // SDK type the sender application was using.
      // Next tag: 3
      enum SDKType {
        SDK_UNKNOWN = 0;

        // Native SDK type,
        // E.G. Android sdk, iOS sdk.
        SDK_NATIVE = 1;

        // SDK via Chrome extension.
        SDK_CHROME_EXTENSION = 2;
      }
      optional SDKType sdk_type = 2;

      // Version of sender sdk/extension used to connection. The format varies
      // by each platform.
      optional string version = 3;

      // Chrome browser version where the Chrome extension running.
      // Only Chrome extension sends this information.
      optional string chrome_browser_version = 4;

      // Platform of sender device.
      // Next tag: 8
      enum Platform {
        // Any platform other then cases below.
        PLATFORM_OTHER = 0;

        PLATFORM_ANDROID = 1;
        PLATFORM_IOS = 2;
        PLATFORM_WINDOWS = 3;
        PLATFORM_OSX = 4;
        PLATFORM_CHROMEOS = 5;
        PLATFORM_LINUX = 6;

        // The sender is Cast device - including itself.
        PLATFORM_CAST = 7;
      }
      optional Platform platform = 5;

      // Sender device system version.
      optional string system_version = 6;

      // What type of connection type used to establish between sender and
      // receiver.
      enum ConnectionType {
        CONNECTION_TYPE_UNKNOWN = 0;

        // A connection established directly between sender and receiver.
        CONNECTION_TYPE_LOCAL = 1;

        // A connection created by opencast to the device via the cloud relay.
        CONNECTION_TYPE_RELAY = 2;

        // A connection created by receiver itself internally.
        CONNECTION_TYPE_INTERNAL = 3;
      }
      optional ConnectionType transport_connection_type = 7;

      // Sender device model.
      optional string model = 8;

      // Last 2 bytes of the sender’s local IP addresses (both IP4/IP6) when
      // the sender connected. This field stores ip fragment to last 2 bytes and
      // first 2 bytes won't be used.
      optional int32 sender_local_ip_fragment = 9;
    }
    optional SenderInfo sender_info = 3;
  }

  // Virtual connection established between sender application and Cast device.
  repeated CastConnectionInfo cast_connection_info = 2;

  // Stores Cast-enabled device specific events with a various context data.
  // Next tag: 23
  message CastEventProto {
    // The name of the action, hashed by same logic used to hash user action
    // event and histogram.
    optional fixed64 name_hash = 1;

    // The timestamp for the event, in milliseconds.
    optional int64 time_msec = 2;

    // The Cast receiver app ID related with this event.
    optional fixed32 app_id = 3;

    // The app ID of a remote Cast receiver associated with this event.
    optional fixed32 remote_app_id = 19;

    // The identifier for receiver application session.
    optional fixed64 application_session_id = 4;

    // Receiver side Cast SDK version.
    optional fixed64 cast_receiver_version = 5;

    // Cast MPL version.
    optional fixed64 cast_mpl_version = 9;

    // transport_connection_id related with this event.
    optional fixed32 transport_connection_id = 6;

    // virtual_connection_id related with this event.
    optional fixed32 virtual_connection_id = 7;

    // An optional value for the associated event, often a measurement in
    // milliseconds.
    optional int64 value = 8;

    // Group id of Multizone Audio.
    optional fixed64 group_uuid = 10;

    optional string conversation_key = 11;

    // Request id of V2 Application Protocol
    optional fixed32 request_id = 12;

    optional string event_id = 13;

    optional string aogh_request_id = 16;

    optional int64 aogh_local_device_id = 18;

    optional string aogh_agent_id = 21;

    // Optional value associated with the event. For example, may be used for
    // error codes.
    message Metadata {
      optional fixed64 name_hash = 1;
      optional int64 value = 2;
    }
    repeated Metadata metadata = 14;

    // Optional values associated with the event.
    repeated float feature_vector = 15;

    // Optional value associated with timezone update event.
    optional string timezone_id = 17;

    // Optional value to log ui version.
    optional string ui_version = 20;

    // Optional field to log SELINUX audit detail.
    optional string selinux_audit_detail = 22;
  }
  repeated CastEventProto cast_event = 3;

  // Virtual release track for releases sent to partners, trusted beta testers,
  // developers, etc.
  optional fixed32 virtual_release_track = 4;

  // Cast specific device information which is expected to change over time.
  // Next tag: 9
  message CastDeviceMutableInfo {
    // This is the last type of reboot the device encountered
    // Next tag: 12
    enum RebootType {
      REBOOT_TYPE_UNKNOWN = 0;  // Fail to get reboot type from system property
      REBOOT_TYPE_FORCED = 1;   // Power removed from device
      REBOOT_TYPE_API = 2;      // Requested from reboot setup api
      REBOOT_TYPE_NIGHTLY = 3;
      REBOOT_TYPE_OTA = 4;
      REBOOT_TYPE_WATCHDOG = 5;  // Reboot caused by a watchdog process.
      REBOOT_TYPE_PROCESS_MANAGER = 6;
      REBOOT_TYPE_CRASH_UPLOADER = 7;
      REBOOT_TYPE_FDR = 8;
      REBOOT_TYPE_HW_WATCHDOG = 9;
      REBOOT_TYPE_SW_OTHER = 10;
      REBOOT_TYPE_OVERHEAT = 11;
    }
    optional RebootType last_reboot_type = 1;

    // System version which the cast_shell is running.
    optional fixed64 system_build_number = 2;

    // An identifier that is specific to the combination of app and device, in
    // this case the one used by backdrop.
    optional string backdrop_app_device_id = 3;

    // Chromecast release version like "1.23", "1.24". The format is "X.Y"
    // where X is major version and Y is sub major version.
    optional fixed32 release_version = 4;

    // IP version of the primary network interface.
    enum NetifIPVersion {
      IP_UNKNOWN = 0;
      IP_V4 = 1;
      IP_V6 = 2;
      IP_DUAL_STACK = 3;
    }
    optional NetifIPVersion netif_ip_version = 5;

    // True if the system which cast_shell is running on, supports ip dual stack
    // sockets.
    optional bool ip_dual_stack_supported = 6;

    // Current timezone which the device is using.
    optional string timezone_id = 7;
    // Optional value to log latest ui version.
    optional string latest_ui_version = 8;
  }
  // The device sends this information at least once per day.
  optional CastDeviceMutableInfo cast_device_mutable_info = 5;

  optional fixed64 receiver_metrics_id = 6;
}
