// 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: 10
    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;
      CAST_PRODUCT_TYPE_LITE = 9;
    }
    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: 26
  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;

    // List of event ids belonging to a particular interaction. One interaction
    // could receive multiple assistant outputs, hence multiple event ids.
    repeated string event_id_list = 23;

    // Duo core version.
    optional fixed64 duo_core_version = 24;

    // Model version of hotword detector.
    optional string hotword_model_id = 25;
  }
  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: 13
  message CastDeviceMutableInfo {
    // This is the last type of reboot the device encountered
    // Next tag: 14
    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;
      // The device got into a state such that it needs to regenerate the cloud
      // device id.
      REBOOT_TYPE_REGENERATE_CLOUD_ID = 12;
      // Reboot triggered due to successive OOM events.
      REBOOT_TYPE_REPEATED_OOM = 13;
    }
    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;

    // Station ID of the device if connected to Google WiFi network
    optional string google_wifi_station_shmac = 9;

    // Optional field to log installed manifest platform version.
    optional string installed_manifest_platform_version = 10;

    // Optional field to log installed manifest version.
    optional uint32 installed_manifest_version = 11;

    // Optional field to log the system bundle version.
    optional string system_bundle_version = 12;
  }
  // The device sends this information at least once per day.
  optional CastDeviceMutableInfo cast_device_mutable_info = 5;

  optional fixed64 receiver_metrics_id = 6;
}
