/*
 * Copyright (C) 2019 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";

import "frameworks/base/packages/SystemUI/src/com/android/systemui/tracing/sysui_trace.proto";

package com.android.systemui.tracing;

option java_multiple_files = true;

/* represents a file full of system ui trace entries.
   Encoded, it should start with 0x9 0x53 0x59 0x53 0x55 0x49 0x54 0x52 0x43 (.SYSUITRC), such
   that they can be easily identified. */
message SystemUiTraceFileProto {

    /* constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 | MagicNumber.MAGIC_NUMBER_L
       (this is needed because enums have to be 32 bits and there's no nice way to put 64bit
        constants into .proto files. */
    enum MagicNumber {
        INVALID = 0;
        MAGIC_NUMBER_L = 0x55535953;  /* SYSU (little-endian ASCII) */
        MAGIC_NUMBER_H = 0x43525449;  /* ITRC (little-endian ASCII) */
    }

    optional fixed64 magic_number = 1;  /* Must be the first field, set to value in MagicNumber */
    repeated SystemUiTraceEntryProto entry = 2;
}

/* one system ui trace entry. */
message SystemUiTraceEntryProto {
    /* required: elapsed realtime in nanos since boot of when this entry was logged */
    optional fixed64 elapsed_realtime_nanos = 1;

    optional SystemUiTraceProto system_ui = 3;
}
