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

################################################################################
# Cobalt Project: power
################################################################################

metric_definitions:

#####################################################################
# thermal_limiting_elapsed_time
#
# Records the duration in seconds of a period of thermal limiting
# (where the thermal load is greater than 0). The duration is
# reported after the device exits thermal limiting, either due to
# mitigation or system shutdown.
#####################################################################
- id: 1
  replacement_metric_id: 101
  metric_name: thermal_limiting_elapsed_time
  metric_type: ELAPSED_TIME
  reports:
    - report_name: thermal_limiting_elapsed_time_agg
      id: 3
      report_type: NUMERIC_AGGREGATION
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, ARCH, SYSTEM_VERSION, OS, CHANNEL]
    - report_name: thermal_limiting_elapsed_time_hist
      id: 4
      report_type: PER_DEVICE_HISTOGRAM
      window_size:
      - 1
      aggregation_type: MAX
      int_buckets: &tleth_buckets
        linear:
          floor: 0
          step_size: 10   # 10 seconds
          num_buckets: 360   # 1 hour
  meta_data:
    max_release_stage: GA
    expiration_date: "2022/02/13"

- id: 101
  metric_name: thermal_limiting_elapsed_time_migrated
  metric_type: INTEGER
  metric_units_other: "seconds"
  metric_semantics: [LATENCY]
  reports:
    - report_name: thermal_limiting_elapsed_time_fleetwide_hist
      id: 1
      report_type: FLEETWIDE_HISTOGRAMS
      int_buckets: *tleth_buckets
      privacy_level: NO_ADDED_PRIVACY
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, ARCH, SYSTEM_VERSION, OS, CHANNEL]
    - report_name: thermal_limiting_elapsed_time_hist
      id: 2
      report_type: UNIQUE_DEVICE_HISTOGRAMS
      local_aggregation_period: WINDOW_1_DAY
      local_aggregation_procedure: MAX_PROCEDURE
      int_buckets: *tleth_buckets
      privacy_level: NO_ADDED_PRIVACY
  meta_data:
    max_release_stage: GA
    expiration_date: "2022/02/13"


#####################################################################
# thermal_limit_result
#
# Log the result of thermal mitigation. When the device is being
# thermally limited, we will either exit limiting after successful
# mitigation, or by device reboot if mitigation was not successful.
# Entering thermal mitigation indicates the device is operating at a
# higher temperature than is desired or expected, and should
# therefore be considered a generally rare event without an estimate
# on frequency.
#####################################################################
- id: 5
  replacement_metric_id: 105
  metric_name: thermal_limit_result
  metric_type: EVENT_OCCURRED
  metric_dimensions: &tlr_dimensions
    - dimension: result
      event_codes:
        0: Mitigated
        1: Shutdown
      max_event_code: 7
  reports:
    - report_name: thermal_limit_result_count
      id: 1
      report_type: SIMPLE_OCCURRENCE_COUNT
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, ARCH, SYSTEM_VERSION, OS, CHANNEL]
      local_privacy_noise_level: NONE
  meta_data:
    max_release_stage: GA
    expiration_date: "2022/02/13"

- id: 105
  metric_name: thermal_limit_result_migrated
  metric_type: OCCURRENCE
  metric_semantics: [OUTSIDE_ENVIRONMENT, USAGE_COUNTING]
  metric_dimensions: *tlr_dimensions
  reports:
    - report_name: thermal_limit_result_count
      id: 1
      report_type: FLEETWIDE_OCCURRENCE_COUNTS
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, ARCH, SYSTEM_VERSION, OS, CHANNEL]
      privacy_level: NO_ADDED_PRIVACY
  meta_data:
    max_release_stage: GA
    expiration_date: "2022/02/13"


#####################################################################
# raw_temperature
#
# Records the raw temperature as seen by the PowerManager at each
# iteration of the thermal policy. The 'sensor' dimension is used to
# select and identify which temperature sensor the metric is referring
# to. The histogram data is flushed to Cobalt after 100 iterations
# (100 seconds).
#####################################################################
- id: 6
  replacement_metric_id: 106
  metric_name: raw_temperature
  metric_type: INT_HISTOGRAM
  metric_dimensions: &rt_dimensions
    - dimension: sensor
      event_codes:
        0: Ambient
        1: ThermalPolicyInput1
      max_event_code: 15
  int_buckets: &rt_buckets
    linear:
      floor: 20         # 20C
      num_buckets: 80   # 20C - 100C
      step_size: 1
  reports:
    - report_name: raw_temperature_histogram
      id: 1
      report_type: INT_RANGE_HISTOGRAM
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, ARCH, SYSTEM_VERSION, OS, CHANNEL]
  meta_data:
    max_release_stage: GA
    expiration_date: "2022/02/13"

- id: 106
  metric_name: raw_temperature_migrated
  metric_type: INTEGER_HISTOGRAM
  metric_units_other: "°C"
  metric_semantics: [OUTSIDE_ENVIRONMENT]
  metric_dimensions: *rt_dimensions
  int_buckets: *rt_buckets
  reports:
    - report_name: raw_temperature_histogram
      id: 1
      report_type: FLEETWIDE_HISTOGRAMS
      privacy_level: NO_ADDED_PRIVACY
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, ARCH, SYSTEM_VERSION, OS, CHANNEL]
  meta_data:
    max_release_stage: GA
    expiration_date: "2022/02/13"
