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 
16 #include "dp_radar_helper.h"
17 #include <errors.h>
18 #include "hisysevent.h"
19 #include "device_profile_log.h"
20 
21 namespace OHOS {
22 namespace DeviceProfile {
23 IMPLEMENT_SINGLE_INSTANCE(DpRadarHelper);
ReportCheckDpSa(struct RadarInfo info)24 bool DpRadarHelper::ReportCheckDpSa(struct RadarInfo info)
25 {
26     int32_t res = ERR_OK;
27     if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_SUCC)) {
28         res = HiSysEventWrite(
29             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
30             DP_DATA_OPERATE_BEHAVIOR,
31             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
32             "ORG_PKG", ORGPKGNAME,
33             "FUNC", info.funcName,
34             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_GET_SA),
35             "BIZ_STAGE", static_cast<int32_t>(GetSaStage::DP_CHECK_SA),
36             "STAGE_RES", info.stageRes,
37             "BIZ_STATE", info.bizState,
38             "TO_CALL_PKG", info.toCallPkg);
39     } else {
40         res = HiSysEventWrite(
41             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
42             DP_DATA_OPERATE_BEHAVIOR,
43             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
44             "ORG_PKG", ORGPKGNAME,
45             "FUNC", info.funcName,
46             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_GET_SA),
47             "BIZ_STAGE", static_cast<int32_t>(GetSaStage::DP_CHECK_SA),
48             "STAGE_RES", info.stageRes,
49             "BIZ_STATE", info.bizState,
50             "TO_CALL_PKG", info.toCallPkg,
51             "ERROR_CODE", info.errCode);
52     }
53     if (res != ERR_OK) {
54         return false;
55     }
56     return true;
57 }
58 
ReportLoadDpSa(struct RadarInfo info)59 bool DpRadarHelper::ReportLoadDpSa(struct RadarInfo info)
60 {
61     int32_t res = ERR_OK;
62     if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_IDLE)) {
63         res = HiSysEventWrite(
64             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
65             DP_DATA_OPERATE_BEHAVIOR,
66             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
67             "ORG_PKG", ORGPKGNAME,
68             "FUNC", info.funcName,
69             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_GET_SA),
70             "BIZ_STAGE", static_cast<int32_t>(GetSaStage::DP_LOAD_SA),
71             "STAGE_RES", info.stageRes,
72             "TO_CALL_PKG", info.toCallPkg);
73     } else {
74         res = HiSysEventWrite(
75             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
76             DP_DATA_OPERATE_BEHAVIOR,
77             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
78             "ORG_PKG", ORGPKGNAME,
79             "FUNC", info.funcName,
80             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_GET_SA),
81             "BIZ_STAGE", static_cast<int32_t>(GetSaStage::DP_LOAD_SA),
82             "STAGE_RES", info.stageRes,
83             "BIZ_STATE", info.bizState,
84             "TO_CALL_PKG", info.toCallPkg,
85             "ERROR_CODE", info.errCode);
86     }
87     if (res != ERR_OK) {
88         return false;
89     }
90     return true;
91 }
92 
ReportLoadDpSaCb(struct RadarInfo info)93 bool DpRadarHelper::ReportLoadDpSaCb(struct RadarInfo info)
94 {
95     int32_t res = ERR_OK;
96     if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_IDLE)) {
97         res = HiSysEventWrite(
98             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
99             DP_DATA_OPERATE_BEHAVIOR,
100             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
101             "ORG_PKG", ORGPKGNAME,
102             "FUNC", info.funcName,
103             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_GET_SA),
104             "BIZ_STAGE", static_cast<int32_t>(GetSaStage::DP_LOAD_SA),
105             "STAGE_RES", info.stageRes,
106             "HOST_NAME", info.hostName);
107     } else {
108         res = HiSysEventWrite(
109             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
110             DP_DATA_OPERATE_BEHAVIOR,
111             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
112             "ORG_PKG", ORGPKGNAME,
113             "FUNC", info.funcName,
114             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_GET_SA),
115             "BIZ_STAGE", static_cast<int32_t>(GetSaStage::DP_LOAD_SA),
116             "STAGE_RES", info.stageRes,
117             "BIZ_STATE", info.bizState,
118             "HOST_NAME", info.hostName,
119             "ERROR_CODE", info.errCode);
120     }
121     if (res != ERR_OK) {
122         return false;
123     }
124     return true;
125 }
126 
ReportSaCheckAuth(struct RadarInfo info)127 bool DpRadarHelper::ReportSaCheckAuth(struct RadarInfo info)
128 {
129     int res = ERR_OK;
130     if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_SUCC)) {
131         res = HiSysEventWrite(
132             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
133             DP_DATA_OPERATE_BEHAVIOR,
134             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
135             "ORG_PKG", ORGPKGNAME,
136             "FUNC", info.funcName,
137             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_GET_SA),
138             "BIZ_STAGE", static_cast<int32_t>(GetSaStage::DP_SA_CHACK_AUTH),
139             "STAGE_RES", info.stageRes,
140             "BIZ_STATE", info.bizState);
141     } else {
142         res = HiSysEventWrite(
143             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
144             DP_DATA_OPERATE_BEHAVIOR,
145             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
146             "ORG_PKG", ORGPKGNAME,
147             "FUNC", info.funcName,
148             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_GET_SA),
149             "BIZ_STAGE", static_cast<int32_t>(GetSaStage::DP_SA_CHACK_AUTH),
150             "STAGE_RES", info.stageRes,
151             "BIZ_STATE", info.bizState,
152             "ERROR_CODE", info.errCode);
153     }
154     if (res != ERR_OK) {
155         return false;
156     }
157     return true;
158 }
159 
ReportGetData(struct RadarInfo info)160 bool DpRadarHelper::ReportGetData(struct RadarInfo info)
161 {
162     int res = ERR_OK;
163     if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_SUCC)) {
164         res = HiSysEventWrite(
165             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
166             DP_DATA_OPERATE_BEHAVIOR,
167             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
168             "ORG_PKG", ORGPKGNAME,
169             "FUNC", info.funcName,
170             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_GET_DATA),
171             "BIZ_STAGE", static_cast<int32_t>(GetDataStage::DP_GET_DATA),
172             "STAGE_RES", info.stageRes,
173             "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
174             "HOST_PKG", info.hostName,
175             "TO_CALL_PKG", info.toCallPkg,
176             "LOCAL_UDID", GetAnonyUdid(info.localUdid));
177     } else {
178         res = HiSysEventWrite(
179             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
180             DP_DATA_OPERATE_BEHAVIOR,
181             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
182             "ORG_PKG", ORGPKGNAME,
183             "FUNC", info.funcName,
184             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_GET_DATA),
185             "BIZ_STAGE", static_cast<int32_t>(GetDataStage::DP_GET_DATA),
186             "STAGE_RES", info.stageRes,
187             "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
188             "LOCAL_UDID", GetAnonyUdid(info.localUdid),
189             "HOST_PKG", info.hostName,
190             "TO_CALL_PKG", info.toCallPkg,
191             "ERROR_CODE", info.errCode);
192     }
193     if (res != ERR_OK) {
194         return false;
195     }
196     return true;
197 }
198 
ReportAddData(struct RadarInfo info)199 bool DpRadarHelper::ReportAddData(struct RadarInfo info)
200 {
201     int res = ERR_OK;
202     if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_SUCC)) {
203         res = HiSysEventWrite(
204             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
205             DP_DATA_OPERATE_BEHAVIOR,
206             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
207             "ORG_PKG", ORGPKGNAME,
208             "FUNC", info.funcName,
209             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_ADD_DATA),
210             "BIZ_STAGE", static_cast<int32_t>(AddDataStage::DP_ADD_DATA),
211             "STAGE_RES", info.stageRes,
212             "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
213             "LOCAL_UDID", GetAnonyUdid(info.localUdid),
214             "HOST_PKG", info.hostName,
215             "TO_CALL_PKG", info.toCallPkg);
216     } else {
217         res = HiSysEventWrite(
218             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
219             DP_DATA_OPERATE_BEHAVIOR,
220             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
221             "ORG_PKG", ORGPKGNAME,
222             "FUNC", info.funcName,
223             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_ADD_DATA),
224             "BIZ_STAGE", static_cast<int32_t>(AddDataStage::DP_ADD_DATA),
225             "STAGE_RES", info.stageRes,
226             "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
227             "LOCAL_UDID", GetAnonyUdid(info.localUdid),
228             "HOST_PKG", info.hostName,
229             "TO_CALL_PKG", info.toCallPkg,
230             "ERROR_CODE", info.errCode);
231     }
232     if (res != ERR_OK) {
233         return false;
234     }
235     return true;
236 }
237 
ReportDeleteData(struct RadarInfo info)238 bool DpRadarHelper::ReportDeleteData(struct RadarInfo info)
239 {
240     int res = ERR_OK;
241     if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_SUCC)) {
242         res = HiSysEventWrite(
243             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
244             DP_DATA_OPERATE_BEHAVIOR,
245             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
246             "ORG_PKG", ORGPKGNAME,
247             "FUNC", info.funcName,
248             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_DELET_DATA),
249             "BIZ_STAGE", static_cast<int32_t>(static_cast<int32_t>(DelDataStage::DP_DELET_DATA)),
250             "STAGE_RES", info.stageRes,
251             "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
252             "HOST_PKG", info.hostName,
253             "TO_CALL_PKG", info.toCallPkg,
254             "LOCAL_UDID", GetAnonyUdid(info.localUdid));
255     } else {
256         res = HiSysEventWrite(
257             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
258             DP_DATA_OPERATE_BEHAVIOR,
259             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
260             "ORG_PKG", ORGPKGNAME,
261             "FUNC", info.funcName,
262             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_DELET_DATA),
263             "BIZ_STAGE", static_cast<int32_t>(static_cast<int32_t>(DelDataStage::DP_DELET_DATA)),
264             "STAGE_RES", info.stageRes,
265             "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
266             "LOCAL_UDID", GetAnonyUdid(info.localUdid),
267             "HOST_PKG", info.hostName,
268             "TO_CALL_PKG", info.toCallPkg,
269             "ERROR_CODE", info.errCode);
270     }
271     if (res != ERR_OK) {
272         return false;
273     }
274     return true;
275 }
276 
ReportSubscribeData(struct RadarInfo info)277 bool DpRadarHelper::ReportSubscribeData(struct RadarInfo info)
278 {
279     int res = ERR_OK;
280     if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_IDLE)) {
281         res = HiSysEventWrite(
282             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
283             DP_DATA_OPERATE_BEHAVIOR,
284             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
285             "ORG_PKG", ORGPKGNAME,
286             "FUNC", "SubscribeProfileEvents",
287             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_SUBSCRIBE_DATA),
288             "BIZ_STAGE", static_cast<int32_t>(SubscribeDataStage::DP_SUBSCRIBE_DATA),
289             "STAGE_RES", info.stageRes,
290             "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_START),
291             "TO_CALL_PKG", kvNAME);
292     } else {
293         res = HiSysEventWrite(
294             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
295             DP_DATA_OPERATE_BEHAVIOR,
296             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
297             "ORG_PKG", ORGPKGNAME,
298             "FUNC", "SubscribeProfileEvents",
299             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_SUBSCRIBE_DATA),
300             "BIZ_STAGE", static_cast<int32_t>(SubscribeDataStage::DP_SUBSCRIBE_DATA),
301             "STAGE_RES", info.stageRes,
302             "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
303             "TO_CALL_PKG", kvNAME,
304             "ERROR_CODE", info.errCode);
305     }
306     if (res != ERR_OK) {
307         return false;
308     }
309     return true;
310 }
311 
ReportNotifyDataChange(struct RadarInfo info)312 bool DpRadarHelper::ReportNotifyDataChange(struct RadarInfo info)
313 {
314     int32_t res = HiSysEventWrite(
315         OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
316         DP_DATA_OPERATE_BEHAVIOR,
317         HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
318         "ORG_PKG", ORGPKGNAME,
319         "FUNC", info.funcName,
320         "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_SUBSCRIBE_DATA),
321         "BIZ_STAGE", static_cast<int32_t>(SubscribeDataStage::DP_RECIVE_DATA_CHANGE),
322         "STAGE_RES", info.stageRes,
323         "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END));
324     if (res != ERR_OK) {
325         return false;
326     }
327     return true;
328 }
329 
ReportUnsbscribeData(struct RadarInfo info)330 bool DpRadarHelper::ReportUnsbscribeData(struct RadarInfo info)
331 {
332     int res = ERR_OK;
333     if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_SUCC)) {
334         res = HiSysEventWrite(
335             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
336             DP_DATA_OPERATE_BEHAVIOR,
337             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
338             "ORG_PKG", ORGPKGNAME,
339             "FUNC", info.funcName,
340             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_UNSUBSCRIBE_DATA),
341             "BIZ_STAGE", static_cast<int32_t>(UnSubscribeDataStage::DP_UNSUBSCRIBE_DATA),
342             "STAGE_RES", info.stageRes,
343             "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
344             "HOST_PKG", info.hostName,
345             "TO_CALL_PKG", info.toCallPkg);
346     } else {
347         res = HiSysEventWrite(
348             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
349             DP_DATA_OPERATE_BEHAVIOR,
350             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
351             "ORG_PKG", ORGPKGNAME,
352             "FUNC", info.funcName,
353             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_UNSUBSCRIBE_DATA),
354             "BIZ_STAGE", static_cast<int32_t>(UnSubscribeDataStage::DP_UNSUBSCRIBE_DATA),
355             "STAGE_RES", info.stageRes,
356             "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
357             "HOST_PKG", info.hostName,
358             "TO_CALL_PKG", info.toCallPkg,
359             "ERROR_CODE", info.errCode);
360     }
361     if (res != ERR_OK) {
362         return false;
363     }
364     return true;
365 }
366 
ReportSyncData(struct RadarInfo info)367 bool DpRadarHelper::ReportSyncData(struct RadarInfo info)
368 {
369     int res = ERR_OK;
370     if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_IDLE)) {
371         res = HiSysEventWrite(
372             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
373             DP_DATA_OPERATE_BEHAVIOR,
374             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
375             "ORG_PKG", ORGPKGNAME,
376             "FUNC", "SyncDeviceProfile",
377             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_SYNC_DATA),
378             "BIZ_STAGE", static_cast<int32_t>(SyncDataStage::DP_SYNC_DATA),
379             "STAGE_RES", info.stageRes,
380             "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_START),
381             "HOST_PKG", info.hostName,
382             "PEER_UDID", GetAnonyUdid(info.peerUdid),
383             "TO_CALL_PKG", kvNAME);
384     } else {
385         res = HiSysEventWrite(
386             OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
387             DP_DATA_OPERATE_BEHAVIOR,
388             HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
389             "ORG_PKG", ORGPKGNAME,
390             "FUNC", "SyncDeviceProfile",
391             "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_SYNC_DATA),
392             "BIZ_STAGE", static_cast<int32_t>(SyncDataStage::DP_SYNC_DATA),
393             "STAGE_RES", info.stageRes,
394             "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
395             "HOST_PKG", info.hostName,
396             "PEER_UDID", GetAnonyUdid(info.peerUdid),
397             "TO_CALL_PKG", kvNAME,
398             "ERROR_CODE", info.errCode);
399     }
400     if (res != ERR_OK) {
401         return false;
402     }
403     return true;
404 }
405 
ReportSyncDataCb(struct RadarInfo info)406 bool DpRadarHelper::ReportSyncDataCb(struct RadarInfo info)
407 {
408     int32_t res = HiSysEventWrite(
409         OHOS::HiviewDFX::HiSysEvent::Domain::DEVICE_PROFILE,
410         DP_DATA_OPERATE_BEHAVIOR,
411         HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
412         "ORG_PKG", ORGPKGNAME,
413         "FUNC", info.funcName,
414         "BIZ_SCENE", static_cast<int32_t>(BizScene::DP_SYNC_DATA),
415         "BIZ_STAGE", static_cast<int32_t>(SyncDataStage::DP_RECIVE_SYNC_CALLBACK),
416         "STAGE_RES", info.stageRes,
417         "BIZ_STATE", info.bizState,
418         "LOCAL_UDID", GetAnonyUdid(info.localUdid));
419     if (res != ERR_OK) {
420         return false;
421     }
422     return true;
423 }
424 
GetHostNameByServiceId(std::string serviceId)425 std::string DpRadarHelper::GetHostNameByServiceId(std::string serviceId)
426 {
427     return hostNameMap_[serviceId];
428 }
429 
GetStringUdidList(std::list<std::string> & udidList)430 std::string DpRadarHelper::GetStringUdidList(std::list<std::string> &udidList)
431 {
432     std::string ret = "";
433     for (auto it = udidList.begin(); it != udidList.end(); it++) {
434         if ((*it).compare(udidList.back()) == 0) {
435             ret += GetAnonyUdid(*it);
436         } else {
437             ret += GetAnonyUdid(*it);
438             ret += ",";
439         }
440     }
441     return ret;
442 }
443 
GetErrorCode(int32_t errCode,int32_t module)444 int32_t DpRadarHelper::GetErrorCode(int32_t errCode, int32_t module)
445 {
446     return ErrCodeOffset(SUBSYS_DISTRIBUTEDHARDWARE_DP, module) + errCode;
447 }
448 
GetAnonyUdid(std::string udid)449 std::string DpRadarHelper::GetAnonyUdid(std::string udid)
450 {
451     if (udid.empty() || udid.length() < INVALID_UDID_LENGTH) {
452         return "";
453     }
454     return udid.substr(0, SUBSTR_UDID_LENGTH) + "**" + udid.substr(udid.length() - SUBSTR_UDID_LENGTH);
455 }
456 } // namespace DeviceProfile
457 } // namespace OHOS