106f6ba60Sopenharmony_ci/* 206f6ba60Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd. 306f6ba60Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 406f6ba60Sopenharmony_ci * you may not use this file except in compliance with the License. 506f6ba60Sopenharmony_ci * You may obtain a copy of the License at 606f6ba60Sopenharmony_ci * 706f6ba60Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 806f6ba60Sopenharmony_ci * 906f6ba60Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1006f6ba60Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1106f6ba60Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1206f6ba60Sopenharmony_ci * See the License for the specific language governing permissions and 1306f6ba60Sopenharmony_ci * limitations under the License. 1406f6ba60Sopenharmony_ci */ 1506f6ba60Sopenharmony_ci#ifndef BY_TRACE_H 1606f6ba60Sopenharmony_ci#define BY_TRACE_H 1706f6ba60Sopenharmony_ci#include "common.h" 1806f6ba60Sopenharmony_cinamespace OHOS { 1906f6ba60Sopenharmony_cinamespace SmartPerf { 2006f6ba60Sopenharmony_ciclass ByTrace { 2106f6ba60Sopenharmony_cipublic: 2206f6ba60Sopenharmony_ci static ByTrace &GetInstance() 2306f6ba60Sopenharmony_ci { 2406f6ba60Sopenharmony_ci static ByTrace instance; 2506f6ba60Sopenharmony_ci return instance; 2606f6ba60Sopenharmony_ci } 2706f6ba60Sopenharmony_ci // trace配置 2806f6ba60Sopenharmony_ci void SetTraceConfig(int mSum, int mInterval, long long mThreshold, int mLowfps, int mCurNum) const; 2906f6ba60Sopenharmony_ci // 开始抓trace线程 3006f6ba60Sopenharmony_ci void ThreadGetTrace() const; 3106f6ba60Sopenharmony_ci // 校验fps-jitters 3206f6ba60Sopenharmony_ci TraceStatus CheckFpsJitters(std::vector<long long> jitters, int cfps) const; 3306f6ba60Sopenharmony_ci // 触发trace 3406f6ba60Sopenharmony_ci void TriggerCatch(long long curTime) const; 3506f6ba60Sopenharmony_ci bool CheckHitraceId() const; 3606f6ba60Sopenharmony_ci 3706f6ba60Sopenharmony_ciprivate: 3806f6ba60Sopenharmony_ci ByTrace() {}; 3906f6ba60Sopenharmony_ci ByTrace(const ByTrace &); 4006f6ba60Sopenharmony_ci ByTrace &operator = (const ByTrace &); 4106f6ba60Sopenharmony_ci 4206f6ba60Sopenharmony_ci // 抓trace总次数 默认2次 4306f6ba60Sopenharmony_ci mutable int sum = 2; 4406f6ba60Sopenharmony_ci // 当前触发的次数 4506f6ba60Sopenharmony_ci mutable int curNum = 1; 4606f6ba60Sopenharmony_ci // 抓trace间隔(两次抓取的间隔时间 默认60*1000 ms) 4706f6ba60Sopenharmony_ci mutable int interval = 60000; 4806f6ba60Sopenharmony_ci // 抓trace触发条件:默认 某一帧的某个jitter>100 ms触发 4906f6ba60Sopenharmony_ci mutable long long threshold = 100; 5006f6ba60Sopenharmony_ci // 上一次触发时间 5106f6ba60Sopenharmony_ci mutable long long lastTriggerTime = -1; 5206f6ba60Sopenharmony_ci // 当前是否触发 5306f6ba60Sopenharmony_ci mutable long long currentTrigger = -1; 5406f6ba60Sopenharmony_ci // 低帧触发 5506f6ba60Sopenharmony_ci mutable int lowfps = -1; 5606f6ba60Sopenharmony_ci // 前2秒采的不准 5706f6ba60Sopenharmony_ci mutable int times = 0; 5806f6ba60Sopenharmony_ci}; 5906f6ba60Sopenharmony_ci} 6006f6ba60Sopenharmony_ci} 6106f6ba60Sopenharmony_ci#endif