/*
 * Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

syntax = "proto2";

package android.os.statsd;

option java_package = "com.android.os";
option java_outer_classname = "StatsLog";

import "frameworks/base/cmds/statsd/src/atoms.proto";

message DimensionsValue {
  optional int32 field = 1;

  oneof value {
    string value_str = 2;
    int32 value_int = 3;
    int64 value_long = 4;
    bool value_bool = 5;
    float value_float = 6;
    DimensionsValueTuple value_tuple = 7;
    uint64 value_str_hash = 8;
  }
}

message DimensionsValueTuple {
  repeated DimensionsValue dimensions_value = 1;
}

message EventMetricData {
  optional int64 elapsed_timestamp_nanos = 1;

  optional Atom atom = 2;

  optional int64 wall_clock_timestamp_nanos = 3 [deprecated = true];
}

message CountBucketInfo {
  optional int64 start_bucket_elapsed_nanos = 1;

  optional int64 end_bucket_elapsed_nanos = 2;

  optional int64 count = 3;

  optional int64 bucket_num = 4;

  optional int64 start_bucket_elapsed_millis = 5;

  optional int64 end_bucket_elapsed_millis = 6;
}

message CountMetricData {
  optional DimensionsValue dimensions_in_what = 1;

  optional DimensionsValue dimensions_in_condition = 2;

  repeated CountBucketInfo bucket_info = 3;

  repeated DimensionsValue dimension_leaf_values_in_what = 4;

  repeated DimensionsValue dimension_leaf_values_in_condition = 5;
}

message DurationBucketInfo {
  optional int64 start_bucket_elapsed_nanos = 1;

  optional int64 end_bucket_elapsed_nanos = 2;

  optional int64 duration_nanos = 3;

  optional int64 bucket_num = 4;

  optional int64 start_bucket_elapsed_millis = 5;

  optional int64 end_bucket_elapsed_millis = 6;
}

message DurationMetricData {
  optional DimensionsValue dimensions_in_what = 1;

  optional DimensionsValue dimensions_in_condition = 2;

  repeated DurationBucketInfo bucket_info = 3;

  repeated DimensionsValue dimension_leaf_values_in_what = 4;

  repeated DimensionsValue dimension_leaf_values_in_condition = 5;
}

message ValueBucketInfo {
  optional int64 start_bucket_elapsed_nanos = 1;

  optional int64 end_bucket_elapsed_nanos = 2;

  optional int64 value = 3 [deprecated = true];

  oneof values {
      int64 value_long = 7;

      double value_double = 8;
  }

  optional int64 bucket_num = 4;

  optional int64 start_bucket_elapsed_millis = 5;

  optional int64 end_bucket_elapsed_millis = 6;
}

message ValueMetricData {
  optional DimensionsValue dimensions_in_what = 1;

  optional DimensionsValue dimensions_in_condition = 2;

  repeated ValueBucketInfo bucket_info = 3;

  repeated DimensionsValue dimension_leaf_values_in_what = 4;

  repeated DimensionsValue dimension_leaf_values_in_condition = 5;
}

message GaugeBucketInfo {
  optional int64 start_bucket_elapsed_nanos = 1;

  optional int64 end_bucket_elapsed_nanos = 2;

  repeated Atom atom = 3;

  repeated int64 elapsed_timestamp_nanos = 4;

  repeated int64 wall_clock_timestamp_nanos = 5 [deprecated = true];

  optional int64 bucket_num = 6;

  optional int64 start_bucket_elapsed_millis = 7;

  optional int64 end_bucket_elapsed_millis = 8;
}

message GaugeMetricData {
  optional DimensionsValue dimensions_in_what = 1;

  optional DimensionsValue dimensions_in_condition = 2;

  repeated GaugeBucketInfo bucket_info = 3;

  repeated DimensionsValue dimension_leaf_values_in_what = 4;

  repeated DimensionsValue dimension_leaf_values_in_condition = 5;
}

message StatsLogReport {
  optional int64 metric_id = 1;

  // Fields 2 and 3 are reserved.

  message SkippedBuckets {
      optional int64 start_bucket_elapsed_nanos = 1;
      optional int64 end_bucket_elapsed_nanos = 2;
      optional int64 start_bucket_elapsed_millis = 3;
      optional int64 end_bucket_elapsed_millis = 4;
  }

  message EventMetricDataWrapper {
    repeated EventMetricData data = 1;
  }
  message CountMetricDataWrapper {
    repeated CountMetricData data = 1;
  }
  message DurationMetricDataWrapper {
    repeated DurationMetricData data = 1;
  }
  message ValueMetricDataWrapper {
    repeated ValueMetricData data = 1;
    repeated SkippedBuckets skipped = 2;
  }

  message GaugeMetricDataWrapper {
    repeated GaugeMetricData data = 1;
    repeated SkippedBuckets skipped = 2;
  }

  oneof data {
    EventMetricDataWrapper event_metrics = 4;
    CountMetricDataWrapper count_metrics = 5;
    DurationMetricDataWrapper duration_metrics = 6;
    ValueMetricDataWrapper value_metrics = 7;
    GaugeMetricDataWrapper gauge_metrics = 8;
  }

  optional int64 time_base_elapsed_nano_seconds = 9;

  optional int64 bucket_size_nano_seconds = 10;

  optional DimensionsValue dimensions_path_in_what = 11;

  optional DimensionsValue dimensions_path_in_condition = 12;
}

message UidMapping {
    message PackageInfoSnapshot {
        message PackageInfo {
            optional string name = 1;

            optional int64 version = 2;

            optional int32 uid = 3;

            optional bool deleted = 4;

            optional uint64 name_hash = 5;
        }
        optional int64 elapsed_timestamp_nanos = 1;

        repeated PackageInfo package_info = 2;
    }
    repeated PackageInfoSnapshot snapshots = 1;

    message Change {
        optional bool deletion = 1;

        optional int64 elapsed_timestamp_nanos = 2;
        optional string app = 3;
        optional int32 uid = 4;

        optional int64 new_version = 5;
        optional int64 prev_version = 6;
        optional uint64 app_hash = 7;
    }
    repeated Change changes = 2;
}

message ConfigMetricsReport {
  repeated StatsLogReport metrics = 1;

  optional UidMapping uid_map = 2;

  optional int64 last_report_elapsed_nanos = 3;

  optional int64 current_report_elapsed_nanos = 4;

  optional int64 last_report_wall_clock_nanos = 5;

  optional int64 current_report_wall_clock_nanos = 6;

  message Annotation {
      optional int64 field_int64 = 1;
      optional int32 field_int32 = 2;
  }
  repeated Annotation annotation = 7;

  enum DumpReportReason {
      DEVICE_SHUTDOWN = 1;
      CONFIG_UPDATED = 2;
      CONFIG_REMOVED = 3;
      GET_DATA_CALLED = 4;
      ADB_DUMP = 5;
      CONFIG_RESET = 6;
      STATSCOMPANION_DIED = 7;
  }
  optional DumpReportReason dump_report_reason = 8;

  repeated string strings = 9;
}

message ConfigMetricsReportList {
  message ConfigKey {
    optional int32 uid = 1;
    optional int64 id = 2;
  }
  optional ConfigKey config_key = 1;

  repeated ConfigMetricsReport reports = 2;

  reserved 10;
}

message StatsdStatsReport {
    optional int32 stats_begin_time_sec = 1;

    optional int32 stats_end_time_sec = 2;

    message MatcherStats {
        optional int64 id = 1;
        optional int32 matched_times = 2;
    }

    message ConditionStats {
        optional int64 id = 1;
        optional int32 max_tuple_counts = 2;
    }

    message MetricStats {
        optional int64 id = 1;
        optional int32 max_tuple_counts = 2;
    }

    message AlertStats {
        optional int64 id = 1;
        optional int32 alerted_times = 2;
    }

    message ConfigStats {
        optional int32 uid = 1;
        optional int64 id = 2;
        optional int32 creation_time_sec = 3;
        optional int32 deletion_time_sec = 4;
        optional int32 reset_time_sec = 19;
        optional int32 metric_count = 5;
        optional int32 condition_count = 6;
        optional int32 matcher_count = 7;
        optional int32 alert_count = 8;
        optional bool is_valid = 9;
        repeated int32 broadcast_sent_time_sec = 10;
        repeated int32 data_drop_time_sec = 11;
        repeated int32 dump_report_time_sec = 12;
        repeated int32 dump_report_data_size = 20;
        repeated MatcherStats matcher_stats = 13;
        repeated ConditionStats condition_stats = 14;
        repeated MetricStats metric_stats = 15;
        repeated AlertStats alert_stats = 16;
        repeated MetricStats metric_dimension_in_condition_stats = 17;
        message Annotation {
            optional int64 field_int64 = 1;
            optional int32 field_int32 = 2;
        }
        repeated Annotation annotation = 18;
    }

    repeated ConfigStats config_stats = 3;

    message AtomStats {
        optional int32 tag = 1;
        optional int32 count = 2;
    }

    repeated AtomStats atom_stats = 7;

    message UidMapStats {
        optional int32 changes = 1;
        optional int32 bytes_used = 2;
        optional int32 dropped_changes = 3;
        optional int32 deleted_apps = 4;
    }
    optional UidMapStats uidmap_stats = 8;

    message AnomalyAlarmStats {
        optional int32 alarms_registered = 1;
    }
    optional AnomalyAlarmStats anomaly_alarm_stats = 9;

    message PulledAtomStats {
        optional int32 atom_id = 1;
        optional int64 total_pull = 2;
        optional int64 total_pull_from_cache = 3;
        optional int64 min_pull_interval_sec = 4;
    }
    repeated PulledAtomStats pulled_atom_stats = 10;

    message LoggerErrorStats {
        optional int32 logger_disconnection_sec = 1;
        optional int32 error_code = 2;
    }
    repeated LoggerErrorStats logger_error_stats = 11;

    message PeriodicAlarmStats {
        optional int32 alarms_registered = 1;
    }
    optional PeriodicAlarmStats periodic_alarm_stats = 12;

    message  SkippedLogEventStats {
        optional int32 tag = 1;
        optional int64 elapsed_timestamp_nanos = 2;
    }
    repeated SkippedLogEventStats skipped_log_event_stats = 13;

    repeated int64 log_loss_stats = 14;

    repeated int32 system_restart_sec = 15;
}
