# Copyright 2021 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: radar
################################################################################

metric_definitions:

################################################################################
# Next Metric ID: 4
################################################################################

################################################################################
# radar_timeout_error_per_million
#
# The percentage of bursts that the device failed to read due to timeout errors,
# multiplied by one million and rounded up to the nearest integer. The radar
# sensor generates a bursts every 33 ms, so this is approximately the number of
# timeout errors the device encounters every nine hours. This metric logged by
# the radar driver via Lapis every hour.
################################################################################
- id: 1
  metric_name: radar_timeout_error_per_million
  metric_units_other: "errors_per_million"
  metric_type: INTEGER
  metric_semantics: [METRIC_SEMANTICS_UNSPECIFIED]
  reports:
    - report_name: histogram
      id: 1
      report_type: HOURLY_VALUE_HISTOGRAMS
      system_profile_selection: SELECT_LAST
      privacy_level: NO_ADDED_PRIVACY
      local_aggregation_procedure: MAX_PROCEDURE
      # (-inf, 1) [1, 11) [11, 51) [51, 251) [251, 1251) [1251, 6251)
      #   [6251, 31251) [31251, 156251) [156251, 781251) [781251, inf)
      int_buckets: &radar_error_buckets
        exponential:
          floor: 1
          num_buckets: 8
          initial_step: 10
          step_multiplier: 5
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL]
    - report_name: histogram_daily
      id: 2
      report_type: UNIQUE_DEVICE_HISTOGRAMS
      system_profile_selection: SELECT_LAST
      local_aggregation_period: WINDOW_1_DAY
      privacy_level: NO_ADDED_PRIVACY
      local_aggregation_procedure: MAX_PROCEDURE
      int_buckets: *radar_error_buckets
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL]
    - report_name: histogram_30day
      id: 3
      report_type: UNIQUE_DEVICE_HISTOGRAMS
      system_profile_selection: SELECT_LAST
      local_aggregation_period: WINDOW_30_DAYS
      privacy_level: NO_ADDED_PRIVACY
      local_aggregation_procedure: MAX_PROCEDURE
      int_buckets: *radar_error_buckets
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL]
  meta_data:
    max_release_stage: GA
    expiration_date: "2022/08/03"

################################################################################
# radar_fifo_overflow_error_per_million
#
# Same as radar_timeout_error_per_million, but for FIFO overflow errors instead
# of timeout errors.
################################################################################
- id: 2
  metric_name: radar_fifo_overflow_error_per_million
  metric_units_other: "errors_per_million"
  metric_type: INTEGER
  metric_semantics: [METRIC_SEMANTICS_UNSPECIFIED]
  reports:
    - report_name: histogram
      id: 1
      report_type: HOURLY_VALUE_HISTOGRAMS
      system_profile_selection: SELECT_LAST
      privacy_level: NO_ADDED_PRIVACY
      local_aggregation_procedure: MAX_PROCEDURE
      int_buckets: *radar_error_buckets
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL]
    - report_name: histogram_daily
      id: 2
      report_type: UNIQUE_DEVICE_HISTOGRAMS
      system_profile_selection: SELECT_LAST
      local_aggregation_period: WINDOW_1_DAY
      privacy_level: NO_ADDED_PRIVACY
      local_aggregation_procedure: MAX_PROCEDURE
      int_buckets: *radar_error_buckets
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL]
    - report_name: histogram_30day
      id: 3
      report_type: UNIQUE_DEVICE_HISTOGRAMS
      system_profile_selection: SELECT_LAST
      local_aggregation_period: WINDOW_30_DAYS
      privacy_level: NO_ADDED_PRIVACY
      local_aggregation_procedure: MAX_PROCEDURE
      int_buckets: *radar_error_buckets
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL]
  meta_data:
    max_release_stage: GA
    expiration_date: "2022/08/03"

################################################################################
# radar_other_error
#
# Same as radar_timeout_error_per_million, but for all other errors instead of
# timeout errors.
################################################################################
- id: 3
  metric_name: radar_other_error
  metric_units_other: "errors_per_million"
  metric_type: INTEGER
  metric_semantics: [METRIC_SEMANTICS_UNSPECIFIED]
  reports:
    - report_name: histogram
      id: 1
      report_type: HOURLY_VALUE_HISTOGRAMS
      system_profile_selection: SELECT_LAST
      privacy_level: NO_ADDED_PRIVACY
      local_aggregation_procedure: MAX_PROCEDURE
      int_buckets: *radar_error_buckets
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL]
    - report_name: histogram_daily
      id: 2
      report_type: UNIQUE_DEVICE_HISTOGRAMS
      system_profile_selection: SELECT_LAST
      local_aggregation_period: WINDOW_1_DAY
      privacy_level: NO_ADDED_PRIVACY
      local_aggregation_procedure: MAX_PROCEDURE
      int_buckets: *radar_error_buckets
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL]
    - report_name: histogram_30day
      id: 3
      report_type: UNIQUE_DEVICE_HISTOGRAMS
      system_profile_selection: SELECT_LAST
      local_aggregation_period: WINDOW_30_DAYS
      privacy_level: NO_ADDED_PRIVACY
      local_aggregation_procedure: MAX_PROCEDURE
      int_buckets: *radar_error_buckets
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL]
  meta_data:
    max_release_stage: GA
    expiration_date: "2022/08/03"
