/*
 * Copyright (C) 2022 Huawei Device Co., Ltd.
 * 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 = "proto3";

message SphCpuData {
  int32 process_id = 1;
  int32 cpu = 2;
  int32 tid = 3;
  int32 id = 4;
  int64 dur = 5;
  int64 start_time = 6;
}

message SphCpuFreqData{
  int32 cpu = 1;
  int32 value = 2;
  int64 dur = 3;
  int64 start_ns = 4;
}

message SphProcessData{
  int32 cpu = 1;
  int64 dur = 2;
  int64 start_time = 3;
}

message SphCpuFreqLimitData{
  int32 max = 1;
  int32 min = 2;
  int32 value = 3;
  int64 dur = 4;
  int64 start_ns = 5;
}

message SphCpuStateData{
  int32 value = 1;
  int64 dur = 2;
  int64 start_ts = 3;
}

message SphProcessMemData{
  int32 track_id = 1;
  int64 value = 2;
  int64 start_time = 3;
  int64 ts = 4;
}

message SphProcessSoInitData{
  int32 depth = 1;
  int32 pid = 2;
  int32 tid = 3;
  int32 itid = 4;
  int64 start_time = 5;
  int64 dur = 6;
  int32 id = 7;
}

message SphProcessStartupData{
  int32 pid = 1;
  int32 tid = 2;
  int32 itid = 3;
  int64 start_time = 4;
  int64 dur = 5;
  int32 startName = 6;
}

message SphClockData{
  int32 filter_id = 1;
  int32 value = 2;
  int64 start_ns = 3;
}

message SphIrqData{
  int64 start_ns = 1;
  int64 dur = 2;
  int32 depth = 3;
  int32 arg_set_id = 4;
  int32 id = 5;
}

message SphHiSysEventData{
  int32 id = 1;
  int64 ts = 2;
  int32 pid = 3;
  int32 tid = 4;
  int32 uid = 5;
  string seq = 6;
  int32 depth = 7;
  int64 dur = 8;
}

message SphLogData{
  int32 id = 1;
  int32 pid = 2;
  int32 tid = 3;
  int64 start_ts = 4;
  int32 depth = 5;
  int64 dur = 6;
}

message SphVirtualMemData{
  int64 start_time = 1;
  int32 filter_id = 2;
  int64 value = 3;
  int32 duration = 4;
  int64 max_value = 5;
  int32 delta = 6;
}

message SphEnergyData{
  int32 id = 1;
  int64 start_ns = 2;
  string event_name = 3;
  string app_key = 4;
  string event_value = 5;
}

message SphFrameData{
  int32 id = 1;
  string frame_type = 2;
  int32 ipid = 3;
  int32 name = 4;
  int64 app_dur = 5;
  int64 dur = 6;
  int64 ts = 7;
  string type = 8;
  int32 jank_tag = 9;
  int32 pid = 10;
  string cmdline = 11;
  int64 rs_ts = 12;
  int32 rs_vsync = 13;
  int64 rs_dur = 14;
  int32 rs_ipid = 15;
  int32 rs_pid = 16;
  int32 rs_name = 17;
}

message SphFrameAnimationData{
  int32 animation_id = 1;
  int32 status = 2;
  int64 start_ts = 3;
  int64 end_ts = 4;
  string name = 5;
}

message SphFrameDynamicData{
  int32 id = 1;
  string x = 2;
  string y = 3;
  string width = 4;
  string height = 5;
  string alpha = 6;
  int64 ts = 7;
  string app_name = 8;
}

message SphFrameSpacingData{
  int32 id = 1;
  string x = 2;
  string y = 3;
  string current_frame_width = 4;
  string current_frame_height = 5;
  int64 current_ts = 6;
  string name_id = 7;
}

message SphEbpfData{
  int64 start_ns = 1;
  int64 end_ns = 2;
  int64 dur = 3;
  int64 size = 4;
}

message SphTrackerData{
  int64 start_ns = 1;
  int64 value = 2;
}

message SphAbilityData{
  int64 value = 1;
  int64 start_ns = 2;
  int32 dur = 3;
}

message SphHiperfData{
  int64 start_ns = 1;
  int64 event_count = 2;
  int64 sample_count = 3;
  int64 event_type_id = 4;
  int64 callchain_id = 5;
}

message SphHiperfCallChartData{
  int64 callchain_id = 1;
  int64 start_ts = 2;
  int64 event_count = 3;
  int64 thread_id = 4;
  int64 cpu_id = 5;
  int64 event_type_id = 6;
}

message SphHiperfCallStackData{
  int64 callchain_id = 1;
  int64 file_id = 2;
  int64 depth = 3;
  int64 symbol_id = 4;
  int64 name = 5;
}

message SphProcessThreadData{
  int32 cpu = 1;
  int64 dur = 2;
  int64 id = 3;
  int64 tid = 4;
  string state = 5;
  int64 pid = 6;
  int64 start_time = 7;
  int64 arg_set_id = 8;
}

message SphProcessFuncData{
  int64 start_ts = 1;
  int64 dur = 2;
  int64 argsetid = 3;
  int32 depth = 4;
  int64 id = 5;
  int32 itid = 6;
  int32 ipid = 7;
}

message SphProcessInputEventData{
  int64 start_ts = 1;
  int64 dur = 2;
  int64 argsetid = 3;
  int32 tid = 4;
  int32 pid = 5;
  int32 is_main_thread = 6;
  int32 track_id = 7;
  int32 parent_id = 8;
  int32 id = 9;
  int32 cookie = 10;
  int32 depth = 11;
}

message SphProcessJanksFramesData{
  int64 ts = 1;
  int64 dur = 2;
  int32 pid = 3;
  int32 id = 4;
  int32 name = 5;
  int32 type = 6;
  int32 depth = 7;
}

message SphProcessJanksActualData{
  int64 ts = 1;
  int64 dur = 2;
  int32 pid = 3;
  int32 id = 4;
  int32 name = 5;
  int32 type = 6;
  int32 jank_tag = 7;
  int32 dst_slice = 8;
  int32 depth = 9;
}

message SphNativeMemoryNormalData{
  int64 start_time = 1;
  int64 heap_size = 2;
  int64 event_type = 3;
  int64 ipid = 4;
}

message SphNativeMemoryStatisticData{
  int64 callchain_id = 1;
  int64 start_ts = 2;
  int64 apply_count = 3;
  int64 apply_size = 4;
  int64 release_count = 5;
  int64 release_size = 6;
  int64 ipid = 7;
  int64 type = 8;
}

message SphHeapFilesData{
    int64 id = 1;
    string name = 2;
    int64 start_ts = 3;
    int64 end_ts = 4;
    int64 size = 5;
    int32 pid = 6;
}

message SphCpuProfilerData{
    int64 id = 1;
    int64 function_id = 2;
    int64 start_time = 3;
    int64 end_time = 4;
    int64 dur = 5;
    int64 name_id = 6;
    int64 url_id = 7;
    int64 line = 8;
    int64 column = 9;
    int64 hit_count = 10;
    int64 children_string = 11;
    int64 parent_id = 12;
}

message SphCpuAbilityData{
    string value = 1;
    int64 start_ns = 2;
    int32 dur = 3;
}

message SphData {
  oneof event {
    SphCpuData cpu_data = 1;
    SphCpuStateData cpu_state_data = 2;
    SphCpuFreqData cpu_freq_data = 3;
    SphCpuFreqLimitData cpu_freq_limit_data = 4;
    SphClockData clock_data = 5;
    SphIrqData irq_data = 6;
    SphProcessData process_data = 7;
    SphProcessMemData process_mem_data = 8;
    SphProcessStartupData process_startup_data = 9;
    SphProcessSoInitData process_soInit_data = 10;
    SphHiSysEventData hi_sys_event_data = 11;
    SphLogData log_data = 12;
    SphVirtualMemData virtual_mem_data = 13;
    SphEnergyData energy_data = 14;
    SphFrameData frame_data = 15;
    SphFrameAnimationData frame_animation_data = 16;
    SphFrameDynamicData frame_dynamic_data = 17;
    SphFrameSpacingData frame_spacing_data = 18;
    SphEbpfData ebpf_data = 19;
    SphTrackerData tracker_data = 20;
    SphAbilityData ability_data = 21;
    SphProcessThreadData process_thread_data = 22;
    SphProcessFuncData process_func_data = 23;
    SphHiperfData hiperf_data = 24;
    SphHiperfCallChartData hiperf_call_chart_data = 25;
    SphHiperfCallStackData hiperf_call_stack_data = 26;
    SphProcessJanksFramesData process_janks_frames_data = 27;
    SphProcessJanksActualData process_janks_actual_data = 28;
    SphProcessInputEventData process_input_event_data = 29;
    SphHeapFilesData heap_files_data = 30;
    SphCpuProfilerData cpu_profiler_data = 31;
    SphNativeMemoryNormalData native_memory_normal = 32;
    SphNativeMemoryStatisticData native_memory_statistic = 33;
     SphCpuAbilityData cpu_ability_data = 34;
  }
}

message BatchSphData {
  repeated SphData values = 1;
}