• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #ifndef HIVIEWDFX_HIVIEW_UC_TELEMETRY_CALLBACK_H
16 #define HIVIEWDFX_HIVIEW_UC_TELEMETRY_CALLBACK_H
17 #include "plugin.h"
18 #include "trace_common.h"
19 #include "power_status_manager.h"
20 #include "uc_telemetry_listener.h"
21 
22 namespace OHOS::HiviewDFX {
23 
24 class UcTelemetryCallback : public TelemetryCallback {
25 public:
UcTelemetryCallback(const TelemetryParams & params)26     explicit UcTelemetryCallback(const TelemetryParams &params)
27         : traceDuration_(params.traceDuration),
28           telemetryId_(params.telemetryId),
29           appFilterName_(params.appFilterName),
30           saParams_(params.saParams) {}
31 
32     void OnTelemetryStart() override;
33     void OnTelemetryFinish() override;
34     void OnTelemetryTraceOn() override;
35     void OnTelemetryTraceOff() override;
36 
37 protected:
38     uint64_t traceOnStartTime_ = 0;
39     std::mutex timeMutex_;
40     bool isTraceOn_ = false;
41     bool isTaskOn_ = false;
42     int64_t traceDuration_;
43     std::string telemetryId_;
44     std::string appFilterName_;
45     std::vector<std::string> saParams_;
46 
47     void RunTraceOnTimeTask();
48     bool UpdateAndCheckTimeOut(int64_t timeCost);
49 };
50 
51 class ManualCallback : public UcTelemetryCallback {
52 public:
ManualCallback(const TelemetryParams & params)53     explicit ManualCallback(const TelemetryParams &params) : UcTelemetryCallback(params) {}
54     void OnTelemetryStart() override;
55 };
56 
57 class PowerTelemetryListener : public UCollectUtil::PowerListener {
58 public:
59     void OnScreenOn() override;
60     void OnScreenOff() override;
61 };
62 
63 class PowerCallback : public UcTelemetryCallback {
64 public:
PowerCallback(const TelemetryParams & params)65     explicit PowerCallback(const TelemetryParams &params) : UcTelemetryCallback(params)
66     {
67         powerListener_ = std::make_shared<PowerTelemetryListener>();
68     }
69     void OnTelemetryStart() override;
70     void OnTelemetryFinish() override;
71 
72 private:
73     std::shared_ptr<UCollectUtil::PowerListener> powerListener_;
74 };
75 }
76 #endif //HIVIEWDFX_HIVIEW_UC_TELEMETRY_CALLBACK_H
77